/*

	autor: Adrian Zurkiewicz (mail: adrian.zurkiewicz@gmail.com)
	
	version: 0.3.0.0
	
	28/12/2010 - Soporte para 'radio'
	17/03/2010 - postForm_x1 -> postForm_once
	


*/





String.prototype.trim = function(){ return this.replace(/^\s+|\s+$/g,''); }




function spinner(txt) {
	
	if (!txt) { txt = 'Procesando...';}
	
return "<span style='text-decoration:none' ><img src='http://advanced-application.com/lib/img/spinner/spinner_x.gif' style='position:absolute;border:none' /><span style='margin-left:23px; text-decoration:none;'>" + txt + "</span></span>"

}



function include(filename) {
var head = document.getElementsByTagName('head').item(0);
script = document.createElement('script');
script.src = filename;
script.type = 'text/javascript';
head.appendChild(script)
}





function addEvent(obj, evType, fn){ // addEvent(window, 'load', function() { alert('load'); } );
 if (obj.addEventListener){
   obj.addEventListener(evType, fn, false);
   return true;
 } else if (obj.attachEvent){
   var r = obj.attachEvent("on"+evType, fn);
   return r;
 } else {
   return false;
 }
}





function delElement(element){ 

	if (element){
	var padre = element.parentNode;
	
		if (padre) {
		padre.removeChild(element);
		return true;
		}
		
	}
	
return false;
}


function delElementById(id){

	var element = document.getElementById(id);
	delElement(element);
	

}



function eachElements(Selector, proc) {
var SelectorArray = Selector.split(',');
var result = new Array(); 

	for (var s = 0; s < SelectorArray.length; s++)	{
	Selector = SelectorArray[s].trim();
	
		if (!Selector) { continue; }

	var selectType = Selector.substring(0,1);
	
		if ((selectType != '#') && (selectType != '.')) { selectType = 'tag'; }
	
	var allPageTags = new Array(); 
	var allPageTags = document.getElementsByTagName("*");
	
		if (selectType == '.') {
		Selector = Selector.substring(1);
		
			for (i=0; i<allPageTags.length; i++) {
			classNames  = allPageTags[i].className;
			
				if (classNames) {
				classNames = classNames.split(' ');
				
					for (var c = 0; c < classNames.length; c++)	{
					
						if (classNames[c] == Selector) {
						result.push(allPageTags[i]);
						
							if (proc) { proc(allPageTags[i]); }

						}
						
					}	
				}
		
				
			}
		
		}
	
	
		if (selectType == '#') {
		Selector = Selector.substring(1);
		
			for (i=0; i<allPageTags.length; i++) {
			
				if (allPageTags[i].id == Selector) {
				result.push(allPageTags[i]);
				
					if (proc) { proc(allPageTags[i]); }
					
				}
		
				
			}
		
		}
	
		if (selectType == 'tag') {
		Selector = Selector.toUpperCase(); 
		
			for (i=0; i<allPageTags.length; i++) {
			
				if (allPageTags[i].tagName  == Selector) {
				result.push(allPageTags[i]);
		
					if (proc) { proc(allPageTags[i]); }

				}
				
			}
		
		}


	}		
	
	
return result;
}




function delElements(Selector) {
var continuar = false;
	
	while (true)  {
	continuar = false;
	eachElements(Selector, function(t) 
		{ 
		
			if (delElement(t)) { continuar = true; }
		
		} );
	
	
		if (!continuar) { return; }
		
	}

}



function as_reload() {
location.reload();	
}



var forms_waiting_ajax = new Array();





function form_waiting_ajax(id) {

	if (forms_waiting_ajax[id])	{
	return forms_waiting_ajax[id]; 
	} else {
	return false;	
	}

}



var forms_disabled_elements = new Array();



function disabledform(form, value) {
	
	if (typeof(form) == 'object') {
	var f = form;	
	} else {
	var f = document.getElementById(form);
	}	
	

	if (f) {
	var i = 0; 
	
		if (value) {
		forms_disabled_elements[form] = new Array();
		
			for (i=0; i < f.elements.length; i++) {
				
				if (f.elements[i].disabled) { forms_disabled_elements[form][i] = '.'; }
				
			f.elements[i].disabled="disabled";
			}
		
		} else {
			
		setTimeout( function() 
		{

			for (i=0; i < f.elements.length; i++) {
				
				if (forms_disabled_elements[form][i] != '.') { f.elements[i].disabled=""; }
			}		

							 
		}, 500);
		
			
		}
		
		
	
	}


}









function formtoparam(form) {

var s = '';
		


	if (typeof(form) == 'object') {
	var f = form;	
	} else {
	var f = document.getElementById(form);
	}

	


	if (f) {

	var i = 0; v = '';
	
		for (i=0; i < f.elements.length; i++) {
		
		
			if (s) {s = s + '&';}
		
		
			if (f.elements[i].type == 'checkbox') 
			v = f.elements[i].name + '=' + f.elements[i].checked;
			else 
				if (f.elements[i].type == 'radio') {
				
					if (f.elements[i].checked) { v = f.elements[i].name + '=' + f.elements[i].value.replace(/\&/gi, '%26'); }
				
				
				} else {

					if (f.elements[i].name) {
					
						if (f.elements[i].value) {
						v = f.elements[i].name + '=' + f.elements[i].value.replace(/\&/gi, '%26');
						} else {
						v = f.elements[i].name + '=' + f.elements[i].value;	
						}
					
					}
								
				}
		
		s = s + v;			
		}
		
		
	
	}


s = s.replace(/\+/gi, '%2B');
//s = s.replace(/\&/gi, '%26');
//alert(s);
return s;
}






function postForm_once(fuente, form, id, loadtext, onredy) { 

	if (!form_waiting_ajax(form)) {	postForm(fuente, form, id, loadtext, onredy); }

}







function postForm(fuente, form, id, loadtext, onredy) { 

disabledform(form, true);

var ObiektXMLHttp = false;
var params = formtoparam(form);
	

	if (window.XMLHttpRequest) { 
   	ObiektXMLHttp = new XMLHttpRequest(); 
	} 
   	else if (window.ActiveXObject) { 
       	ObiektXMLHttp = new ActiveXObject("Microsoft.XMLHTTP"); 
	} 





  	if(ObiektXMLHttp)  {
  	var cel = document.getElementById(id);


		if ((loadtext) && (cel)) {cel.innerHTML = loadtext;}

  	ObiektXMLHttp.open("POST", fuente);
	ObiektXMLHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	ObiektXMLHttp.setRequestHeader("Content-length", params.length);
	ObiektXMLHttp.setRequestHeader("Connection", "close");




		ObiektXMLHttp.onreadystatechange = function() {


			if (ObiektXMLHttp.readyState == 4 && ObiektXMLHttp.status == 200) {


				if (cel) {cel.innerHTML = ObiektXMLHttp.responseText;}

			disabledform(form, false);
			
				if (onredy) { onredy(id, fuente, ObiektXMLHttp.responseText); }

			forms_waiting_ajax[form] = false;
			}



		} 


	forms_waiting_ajax[form] = true;	
	ObiektXMLHttp.send(params);
	
	}
}









function postData(fuente, params, id, loadtext, onredy) { 
var ObiektXMLHttp = false;


	

	if (window.XMLHttpRequest) { 
   	ObiektXMLHttp = new XMLHttpRequest(); 
	} 
   	else if (window.ActiveXObject) { 
       	ObiektXMLHttp = new ActiveXObject("Microsoft.XMLHTTP"); 
	} 





  	if(ObiektXMLHttp)  {
  	var cel = document.getElementById(id);


		if (loadtext) {cel.innerHTML = loadtext;}

  	ObiektXMLHttp.open("POST", fuente);
	ObiektXMLHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	ObiektXMLHttp.setRequestHeader("Content-length", params.length);
	ObiektXMLHttp.setRequestHeader("Connection", "close");


		ObiektXMLHttp.onreadystatechange = function() {


			if (ObiektXMLHttp.readyState == 4 && ObiektXMLHttp.status == 200) {


				if (cel) {cel.innerHTML = ObiektXMLHttp.responseText;}

				if (onredy) { onredy(id, fuente); }


			}



		} 

	ObiektXMLHttp.send(params);
	}
}











function getData(fuente, id, loadtext, onredy) { 
//alert(fuente);
 

var ObiektXMLHttp = false;
	

	if (window.XMLHttpRequest) { 
   	ObiektXMLHttp = new XMLHttpRequest(); 
	} 
   	else if (window.ActiveXObject) { 
       	ObiektXMLHttp = new ActiveXObject("Microsoft.XMLHTTP"); 
	} 





  	if(ObiektXMLHttp)  {
  	var cel = document.getElementById(id);


		if ((loadtext) && (cel)) {cel.innerHTML = loadtext;}

  	ObiektXMLHttp.open("GET", fuente);



		ObiektXMLHttp.onreadystatechange = function() {


			if (ObiektXMLHttp.readyState == 4) {


				if (cel) {cel.innerHTML = ObiektXMLHttp.responseText;}

				if (onredy) { onredy(id, fuente, ObiektXMLHttp.responseText); }

			}



		} 

	ObiektXMLHttp.send(null);
	}
}




function getDataRefresh(fuente) {
getData(fuente, null, null, function() { as_reload(); } );	
}





function post2url(path, params, method) {
    method = method || "post"; // Set method to post by default, if not specified.

    // The rest of this code assumes you are not using a library.
    // It can be made less wordy if you use one.
    var form = document.createElement("form");
    form.setAttribute("method", method);
    form.setAttribute("action", path);

    for(var key in params) {
        var hiddenField = document.createElement("input");
        hiddenField.setAttribute("type", "hidden");
        hiddenField.setAttribute("name", key);
        hiddenField.setAttribute("value", params[key]);

        form.appendChild(hiddenField);
    }

    document.body.appendChild(form);    // Not entirely sure if this is necessary
    form.submit();
}




