// JavaScript Document
function objAjax11()
{ 
	/* Crea el objeto AJAX. Esta funcion es generica para cualquier utilidad de este tipo, por
	lo que se puede copiar tal como esta aqui */
	var xmlhttp=false; 
	try 
	{ 
		// Creacion del objeto AJAX para navegadores no IE
		xmlhttp=new ActiveXObject("Msxml2.XMLHTTP"); 
	}
	catch(e)
	{ 
		try
		{ 
			// Creacion del objet AJAX para IE 
			xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
		} 
		catch(E) { xmlhttp=false; }
	}
	if (!xmlhttp && typeof XMLHttpRequest!='undefined') { xmlhttp=new XMLHttpRequest(); } 

	return xmlhttp; 
}

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 z=0;
			this.tdRefresh = new Array();

			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 == 'radio' || formElements[i].type == 'checkbox') && formElements[i].checked == false)
						formElements[i].value = 0; 
						//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
						{
							//alert(z);
							//if (formElements[i].title){ alert(formElements[i].value); this.tdRefresh[z] = formElements[i].value; }
							if (formElements[i].name == "_rowId") this._rowId = formElements[i].value;
							xString += name+"="+encodeURIComponent(formElements[i].value);
							//z++;
						}
						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 align="left" 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
				
				//ajax.ajax_actualizar();
				
				var scs = _r.responseText.extractScript();   
				ajax.e(_divId).innerHTML = _r.responseText.stripScript();  
				//alert(scs);
				//scs = "alert('d');";
				scs.evalScript();
				//eval(scs);
				//-->
			}

		}
		_r.send(xString);
	}

	/* evalscript, luego de llamar ajax, ejecutar los javascripts que contenga el archivo */
		
	var tagScript = '(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)';
		//var tagScript = '/&lt;script&gt;([\s\S]*?)<\/script>/gi';
		/**
		* Eval script fragment
		* @return String
		*/
		
		String.prototype.evalScript = function()
		{
				return (this.match(new RegExp(tagScript, 'img')) || []).evalScript();
		};
		
		/**
		* strip script fragment
		* @return String
		*/
		
		String.prototype.stripScript = function()
		{
				return this.replace(new RegExp(tagScript, 'img'), '');
		};
		
		/**
		* extract script fragment
		* @return String
		*/
		
		String.prototype.extractScript = function()
		{
				var matchAll = new RegExp(tagScript, 'img');
				return (this.match(matchAll) || []);
		};
		
		/**
		* Eval scripts
		* @return String
		*/		
		
		Array.prototype.evalScript = function(extracted)
		{
				var s=this.map(function(sr){
										
						 var sc=(sr.match(new RegExp(tagScript, 'im')) || ['', ''])[1];
	
						try{
						  if (!sc)
							  return;      
						   if (window.execScript){
							   //alert(sc);
						   	   window.execScript( sc.replace(/^<!--/,"").replace(/-->$/, ""));
						   }else if(window.jQuery && jQuery.browser.safari){ // safari detection in jQuery
							   window.setTimeout( sc, 0 );
						   }else{
							   
							   window.setTimeout( sc, 0 );
						   }
						}catch(e){
							alert(e.message)
						}
				});
				return true;
		};

		/**
		* Map array elements
		* @param {Function} fun
		* @return Function
		*/
		
		Array.prototype.map = function(fun)
		{
				if(typeof fun!=="function"){return false;}
				var i = 0, l = this.length;
				for(i=0;i<l;i++)
				{
						fun(this[i]);
				}
				return true;
		};
		

	/* -- fin evalscript */
	
	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.ajax_actualizar = function(){
		
		//alert(this.tdRefresh.length);
		//alert(this._rowId);
		
		return true;		
	}


	this.ajax_actualizar_imagen = function(_divId, _regId, url, loading){
		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.ajax_display_editor = function(_divId, url, loading){
		//var nIframe = document.createElement("div");	
		//nIframe.setAttribute("id", "editor"+field);
		//nIframe.setAttribute("class", "editorTexto");
		var parentDiv = this.e(_divId);
		this.mostrar(_divId, false);
		/*
	    var nFrame = document.createElement("iframe");
		nFrame.src = url;
		
		if (parentDiv==null){
			parentDiv.appendChild(nFrame);
		}
		*/
		//var ed = document.getElementById(field);
		//ed.style.display = '';
		
		//document.location.hash += "#especificacion";
		this.ajax_get_submit_iframe(_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 align="left" 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;					
				
				//alert(_r.responseText);
				
				var scs = _r.responseText.extractScript();   
				_divId.innerHTML = _r.responseText.stripScript();  
				scs.evalScript();
						

			} 
		}
		_r.send(null);
	}
	
	this.ajax_get_submit_iframe = function(_divId, url, loading){
		
		var rand = Math.random();
		var iframe = "";
		
		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 align="left" 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) {
				iframe += '<div align="right" class="_transparentTituloEditor"><a href="javascript:void(0);" onclick="ajax.ocultar(\'_editorTextoContenido\')">Cerrar Ventana [x]</a></div>';
				iframe += '<iframe allowtransparency="1" frameborder="0" scrolling="no" class="_iframeEditor" src='+url+'></iframe>';
				document.getElementById(_divId).innerHTML = iframe;					
				
				var scs = _r.responseText.extractScript();   
				_divId.innerHTML = _r.responseText.stripScript();  
				scs.evalScript();      												
			} 
		}
		_r.send(null);
	}
	/* Funciones Generales */
	
	/*this.mostrar = function(_divId){
		alert(_divId);
		//if (document.getElementById(_divId)){		
			var v_div = document.getElementById(_divId);
			if (v_div.style.display == 'none') 
				v_div.style.display = '';
		//}
		return true;
	}*/
	
	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;
	}

	this.ajax_password = function(name){
		// _r = objeto XMLHttpRequest
		var elemento = this.e(name);
		
		_r = this.objAjax();
		var url = "includes/business/generar-password.php";
		
		_r.open("GET", url, true);	
		
		_r.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=ISO-8859-1');
		_r.onreadystatechange = function () {
			if (_r.readyState == 4) {
				elemento.value = _r.responseText;	
			}
		}
		//return false;
		_r.send(null);
	}
	
	this.MM_findObj = function (n, d) { //v4.01
	  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
		d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
	  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
	  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=this.MM_findObj(n,d.layers[i].document);
	  if(!x && d.getElementById) x=d.getElementById(n); return x;
	}
	

	this.YY_ajax = function (val) { //v4.66
	//copyright (c)1998,2002 Yaromat.com
	  var args = this.YY_ajax.arguments; var myDot=true; var myV=''; var myErr='';var addErr=false;var myReq;
	  alert(args[0]);
	  var formData = this.e(args[0]);
	  
	  for (var i=1; i<args.length;i=i+4){
		if (args[i+1].charAt(0)=='#'){myReq=true; args[i+1]=args[i+1].substring(1);}else{myReq=false}
		var myObj = this.MM_findObj(args[i].replace(/\[\d+\]/ig,""));
		myV=myObj.value;
		if (myObj.type=='text'||myObj.type=='password'||myObj.type=='hidden'){
		  if (myReq&&myObj.value.length==0){addErr=true}
		  if ((myV.length>0)&&(args[i+2]==1)){ //fromto
			var myMa=args[i+1].split('_');if(isNaN(myV)||myV<myMa[0]/1||myV > myMa[1]/1){addErr=true}
		  } else if ((myV.length>0)&&(args[i+2]==2)){
			  var rx=new RegExp("^[\\w\.=-]+@[\\w\\.-]+\\.[a-z]{2,4}$");if(!rx.test(myV))addErr=true;
		  } else if ((myV.length>0)&&(args[i+2]==3)){ // date
			var myMa=args[i+1].split("#"); var myAt=myV.match(myMa[0]);
			if(myAt){
			  var myD=(myAt[myMa[1]])?myAt[myMa[1]]:1; var myM=myAt[myMa[2]]-1; var myY=myAt[myMa[3]];
			  var myDate=new Date(myY,myM,myD);
			  if(myDate.getFullYear()!=myY||myDate.getDate()!=myD||myDate.getMonth()!=myM){addErr=true};
			}else{addErr=true}
		  } else if ((myV.length>0)&&(args[i+2]==4)){ // time
			var myMa=args[i+1].split("#"); var myAt=myV.match(myMa[0]);if(!myAt){addErr=true}
		  } else if (myV.length>0&&args[i+2]==5){ // check this 2
				var myObj1 = MM_findObj(args[i+1].replace(/\[\d+\]/ig,""));
				if(myObj1.length)myObj1=myObj1[args[i+1].replace(/(.*\[)|(\].*)/ig,"")];
				if(!myObj1.checked){addErr=true}
		  } else if (myV.length>0&&args[i+2]==6){ // the same
				var myObj1 = MM_findObj(args[i+1]);
				if(myV!=myObj1.value){addErr=true}
		  }
		} else
		if (!myObj.type&&myObj.length>0&&myObj[0].type=='radio'){
			  var myTest = args[i].match(/(.*)\[(\d+)\].*/i);
			  var myObj1=(myObj.length>1)?myObj[myTest[2]]:myObj;
		  if (args[i+2]==1&&myObj1&&myObj1.checked&&MM_findObj(args[i+1]).value.length/1==0){addErr=true}
		  if (args[i+2]==2){
			var myDot=false;
			for(var j=0;j<myObj.length;j++){myDot=myDot||myObj[j].checked}
			if(!myDot){myErr+='* ' +args[i+3]+'\n'}
		  }
		} else if (myObj.type=='checkbox'){
		  if(args[i+2]==1&&myObj.checked==false){addErr=true}
		  if(args[i+2]==2&&myObj.checked&&MM_findObj(args[i+1]).value.length/1==0){addErr=true}
		} else if (myObj.type=='select-one'||myObj.type=='select-multiple'){
		  if(args[i+2]==1&&myObj.selectedIndex/1==0){addErr=true}
		}else if (myObj.type=='textarea'){
		  if(myV.length<args[i+1]){addErr=true}
		}
		if (addErr){myErr+='* '+args[i+3]+'\n'; addErr=false}
	  }
	  if (myErr!=''){
		alert('Por favor verificar que la información requerida este completa:\n\n'+myErr)
	    return false;
	  }
	    //else 
	 	//alert(formData);
		//formData.submit();
	 
	  
	  //document.MM_returnValue = (myErr=='');
	}


}

var ajax = new ajaxFideck();

