// JavaScript Document

function ajaxFideck(){
	
	this.ultimaAreaAbierta = null;
	
	this.objAjax = function(){
		//req = false;
		// branch for native XMLHttpRequest object
		if(window.XMLHttpRequest && !(window.ActiveXObject)) {
			try {
				xmlhttp = new XMLHttpRequest();
			} catch(e) {
				xmlhttp = false;
			}
		// branch for IE/Windows ActiveX version
		} else if(window.ActiveXObject) {
			try {
				xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
			} catch(e) {
				try {
					xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
				} catch(e) {
					xmlhttp = false;
				}
			}
		}
		/*if(req) {
			req.onreadystatechange = processReqChange;
			req.open("GET", url, true);
			req.send("");
		}*/
		return xmlhttp;
	}
	
	this.ajax_build_submit = function(objForm, url, _divId){
			//if(!_divId) var _divId = "_ajax_operacion";
			var loading = false;
			var xString = "";
			var submitDisabledElements = false;
			if (arguments.length > 1 && arguments[1] == true)
				submitDisabledElements = true;
			var prefix = "";
			if(arguments.length > 2)
				prefix = arguments[2];
			
			var first = true;
			
			if (objForm)
			{
				var formElements = objForm.elements;
				for( var i=0; i < formElements.length; i++)
				{
					if (!formElements[i].name)
						continue;
					if (formElements[i].type && (formElements[i].type == 'checkbox' || formElements[i].type == 'radio') && formElements[i].checked == false)
						continue;
						//continue;
					if (formElements[i].disabled && formElements[i].disabled == true && submitDisabledElements == false)
						continue;
					var name = formElements[i].name;
					if (name)
					{
						if (first != true)
						xString += '&';
						if(formElements[i].type=='select-multiple')
						{
							for (var j = 0; j < formElements[i].length; j++)
							{
								if (formElements[i].options[j].selected == true)
									xString += name+"="+encodeURIComponent(formElements[i].options[j].value)+"&";
							}
						}
						//else if(formElements[i].type=='checkbox'){
							//alert(name);
						//}
						else
						{
							xString += name+"="+encodeURIComponent(formElements[i].value);
						}
						first = false;
					} 
				}
			}
		this.ajax_submit(xString, url, _divId, loading);
	}
	
	this.ajax_submit = function(xString, url, _divId, loading){
		// _r = objeto XMLHttpRequest
		_r = this.objAjax();				
		_r.open("POST", url, true);	
		
		_r.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=ISO-8859-1');
		_r.onreadystatechange = function () {
			if (_r.readyState==1) {
				document.getElementById(_divId).innerHTML = '<div id="loading" ><img src="images/ajax-loader.gif" width="16" height="16" alt="Loading" title="Loading"><p>Cargando datos...</p></div>';
			}		
			if (_r.readyState == 4) {
				document.getElementById(_divId).innerHTML = _r.responseText;	
				//--SCRIPT DESPUES
				var scs = _r.responseText.extractScript();   
				_divId.innerHTML = _r.responseText.stripScript();  
				scs.evalScript();
				//--
			}
		}
		//return false;
		_r.send(xString);
	}
	
	this.ajax_cargar_div = function(_divId, _regId, url, loading, hide, _rowId, _cerrarElemento){
		//if (hide) hideAllElements();
		if (_cerrarElemento){ this.cerrarElemento(_divId); }
		
		
		this.mostrar(_divId, _regId);
		//alert(_divId)
		//var _v = document.getElementById(_divId);
		//var ok = this.mostrar(_divId);
		
		//this.mostrar(_divId);
		
		//var v_div = document.getElementById(_divId);
		//if (v_div.style.display == 'none') v_div.style.display = '';

		//if (ok) 
		this.ajax_get_submit(_divId, url, loading);
	}	
	
	this.e = function(_divId){
		if (!_divId)
			return null;
			
		var returnObj = document.getElementById(_divId);
		if (!returnObj && document.all) {
			returnObj = document.all[_divId];
		}
		
		return returnObj;
	}		
	
	this.mostrar = function(_divId, _regId){
		
		var v_div = this.e(_divId);
		
		if (v_div.style.display == 'none') 
			v_div.style.display = '';
		
		/*if (_regId)
			document.location.hash = "#"+_regId;
		*/
	}
	
	this.ocultar = function(_divId){
		var v_div = this.e(_divId);
		
		if (v_div){
			if (v_div.innerHTML) v_div.innerHTML = "";
			else if (v_div.value) v_div.value = "";
			
			v_div.style.display = "none";
		}
	}
	
	this.cerrarElemento = function(_divId){		
		v_div = this.e(this.ultimaAreaAbierta);
		
		if (v_div){
			if (v_div.innerHTML) v_div.innerHTML = "";
			else if (v_div.value) v_div.value = "";
			
			v_div.style.display = 'none';
		}
		
		this.ultimaAreaAbierta = _divId;
		
	}
	
	this.ajax_get_submit = function(_divId, url, loading){
		
		var rand = Math.random();
		
		if (url){
			var append = url.indexOf("?");
			if(append == -1) url = url+"?rand="+rand;
			else url = url+"&rand="+rand;
		}
		
		_r = this.objAjax();				
		_r.open("GET", url, true);	
		_r.onreadystatechange = function(){ 
			if (loading){
				if (_r.readyState==1){
					
					document.getElementById(_divId).innerHTML = '<div id="loading" ><img src="images/ajax-loader.gif" width="16" height="16" alt="Loading" title="Loading"><p>Cargando datos...</p></div>';
				}
			}
			if (_r.readyState==4){ 		
				document.getElementById(_divId).innerHTML = _r.responseText;					
				
				
				var scs = _r.responseText.extractScript();   
				_divId.innerHTML = _r.responseText.stripScript();  
				scs.evalScript();
							

			} 
		}
		_r.send(null);
	}
	
	/* Funciones Generales */
		
	this.show_hide = function(_divId){
		if (document.getElementById(_divId)){		
			v_div = document.getElementById(_divId);
			if (v_div.style.display == 'none') 
				v_div.style.display = '';
			else
				v_div.style.display = 'none';
		}
	}
	
	this.ajax_eliminar = function(_divId, url, msj) {	
		if (confirm(msj)) {
			var loading = true;
			this.ajax_get_submit(_divId, url, loading);
		} return false;
	}


}

var ajax = new ajaxFideck();
