//********************************************
//
//	Copyright Mobifriends S.L. 2007
//	
//	programador: Javier Velasco Gonzalez	
//
//********************************************

var error_page;
var errors;
var errorPages;

errors = new Array();
errorPages = new Array();
ajaxLoaderClip= "";

function  html_cargador() {
	return "<object classid='clsid:d27cdb6e-ae6d-11cf-96b8-444553540000' codebase='http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=			8,0,0,0' width='100%' height='32' align='middle'>" + 
			"<param name='allowScriptAccess' value='sameDomain' />"+
			"<param name='wmode' value='transparent' /><param name='movie' value='" + ajaxLoaderClip + "' />"+
			"<param name='quality' value='high' /><param name='scale' value='noscale' />"+
			"<embed src='" + ajaxLoaderClip + "' scale='noscale' quality='high' width='100%' height='32' " + 
			"align='middle' wmode='transparent' allowScriptAccess='sameDomain' " + 
   			"type='application/x-shockwave-flash' pluginspage='http://www.adobe.com/go/getflashplayer' />" + 
			"</object>";
}

//********************************************
// hace una llamada remota a un script copiando 
// la respueta dentro del elemento id.
//--------------------------------------------
//
// @params:
//	id: attributo id del elemento que recibe la respueta.
//	url: url del script en el servidor.
//	func: funcion que recibe los errores, si se omite 
//		se hace una llamada a las funciones generales
//		para el tratamiento de errores (ver ajax_on_error).
//
// @return: 
//
//********************************************
function ajax_call(id,url, func) {
	var request;
	var error_func = func;
	
	if(typeof XMLHttpRequest!='undefined') {
		request = new XMLHttpRequest();
	} else {
		if (Number(navigator.appVersion.substr(0,3))>=5) 
			request = new ActiveXObject('Msxml2.XMLHTTP');
		else
			request = new ActiveXObject('Microsoft.XMLHTTP');
	}

	if (request) {
		request.onreadystatechange = function () {
			if(request.readyState == 4)
			{
				if (request.status == 200) {
					if (ajaxLoaderClip!="") {
						DestroyWindow("backgroundloader");
						DestroyWindow("ajaxloader");
					}
					element = document.getElementById(id);
					if (element!=null) element.innerHTML = request.responseText;
					/* ejecuta los scripts dentro del html */
					var startPos=0;
					var endPos=0;
					var script;
					var uchtml = request.responseText.toUpperCase();
					startPos = 0;	
					do {
						startPos = uchtml.indexOf("<SCRIPT",startPos);
						if (startPos<0) break;
						startPos = 1 + uchtml.indexOf(">",startPos);
						endPos = uchtml.indexOf("</SCRIPT>",startPos);
						script =request.responseText.substr(startPos,endPos-startPos);
						eval(script);
						startPos = endPos+1;
					} while(true);	
				} else {
				   if (error_func) {
				   		error_func(request.status);			   	
				   } else {
				   		for (var i in errors) {
        					if (errors[i]==request.status) {
        						//alert(errorPages[i]);
        						document.location = errorPages[i];
        					}
			   			}
				   }
				}
			}
		}
		if (ajaxLoaderClip!="") {
			var wwidth = getWindowWidth();
			var wheight = getWindowHeight();
			var cx = 0;
			var cy = 0;
			CreateWindow("backgroundloader","0px","0px",wwidth + "px",wheight + "px","",null,"30");
			CreateWindow("ajaxloader",cx + "px",cy + "px",wwidth + "px","32px",html_cargador(),null,"80");
		}
		request.open("GET",url,true)
		request.send(null);
	}
}


//********************************************
// envia el contenido de un form copiando 
// la respueta dentro del elemento id.
//--------------------------------------------
//
// @params:
//	id: attributo id del elemento que recibe la respuesta.
//	url: url del script en el servidor.
//	func: funcion que recibe los errores, si se omite 
//		se hace una llamada a las funciones generales
//		para el tratamiento de errores (ver ajax_on_error).
//
// @return: 
//
//********************************************
function ajax_submit_form(id,formName,url, func) {
	var request;
	var form;
	var formdata="";
	var fields;
	var error_func = func;
	
	form = document.getElementById(formName);
	if(typeof XMLHttpRequest!='undefined') {
		request = new XMLHttpRequest();
		fields = form.elements;
	} else {
		version = isExplorer();
		if (version>=5) 
			request = new ActiveXObject('Msxml2.XMLHTTP');
		else
			request = new ActiveXObject('Microsoft.XMLHTTP');
		if (version>=5 && version<7) fields = form.all;

	}
	
	for (i in fields)
	{
		var element = fields[i];
		if (element!=null && element.tagName!=null) {
			if (element.tagName=="SELECT" || element.tagName=="INPUT" || element.tagName=="TEXTAREA") {
				if (element.type=="checkbox") {
					if (element.checked==true) formdata+=element.name + "=" + element.value + "&";
				} else formdata+=element.name + "=" + element.value + "&";
			}
		}
	}
	
	if (request) {
		request.onreadystatechange = function () {
			if(request.readyState == 4)
			{
				if (request.status == 200) {
					if (ajaxLoaderClip!="") {
						DestroyWindow("backgroundloader");
						DestroyWindow("ajaxloader");
					}
					element = document.getElementById(id);
					element.innerHTML = request.responseText;
					/* ejecuta los scripts dentro del html */
					var startPos=0;
					var endPos=0;
					var script;
					var uchtml = request.responseText.toUpperCase();
					startPos = 0;	
					do {
						startPos = uchtml.indexOf("<SCRIPT",startPos);
						if (startPos<0) break;
						startPos = 1 + uchtml.indexOf(">",startPos);
						endPos = uchtml.indexOf("</SCRIPT>",startPos);
						script =request.responseText.substr(startPos,endPos-startPos);
						eval(script);
						startPos = endPos+1;
					} while(true);	
				} else {
				   if (error_func) {
				   		error_func(request.status);			   	
				   } else {
				   		for (var i in errors) {
        					if (errors[i]==request.status) {
        						//alert(errorPages[i]);
        						document.location = errorPages[i];
        					}
			   			}
				   }
				}
			}
		}
		if (ajaxLoaderClip!="") {
			var wwidth = getWindowWidth();
			var wheight = getWindowHeight();
			var cx = 0;
			var cy = 0;
			CreateWindow("backgroundloader","0px","0px",wwidth + "px",wheight + "px","","#FFFFFF","30");
			CreateWindow("ajaxloader",cx + "px",cy + "px",wwidth + "px","32px",html_cargador(),null,"80");
		}
		request.open("POST",url,true)
		request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
		request.send(formdata);
	}
}


//********************************************
// llama al ajax_submit_form, cuando el usuario 
// aprieta el Enter
//--------------------------------------------
//
// @params: (el evento y los parametros de ajax_submit_form)
//
// @return: 
//
//********************************************
function ienter_submit_form(evento, id,formName,url, func) {
	var iAscii;
	if (evento.keyCode) iAscii = evento.keyCode; 
		else if (evento.which) iAscii = evento.which; 
			else return false; 
	if (iAscii == 13) ajax_submit_form(id,formName,url, func); 
	return true; 
}


//********************************************
// envia el contenido de un form copiando 
// ejecutando la respueta como un script.
//--------------------------------------------
//
// @params:
//	formName: id del formulario.
//	url: url del script en el servidor.
//	func: funcion que recibe los errores, si se omite 
//		se hace una llamada a las funciones generales
//		para el tratamiento de errores (ver ajax_on_error).
//
// @return: 
//
//********************************************
function ajax_eval_form(formName,url, func) {
	var request;
	var form;
	var formdata="";
	var fields;
	var error_func = func;
	var scrWidth,scrHeight;
	

	form = document.getElementById(formName);
	if (form==null) return;
	fields = form.elements;
	if(typeof XMLHttpRequest!='undefined') {
		request = new XMLHttpRequest();
	} else {
		version = isExplorer();
		if (version>=5) 
			request = new ActiveXObject('Msxml2.XMLHTTP');
		else
			request = new ActiveXObject('Microsoft.XMLHTTP');
		if (version>=5 && version<7) fields = form.all;
		
	}

	for (i in fields)
	{
		var element = fields[i];
		if (element!=null && element.tagName!=null) {
			if (element.tagName=="SELECT" || element.tagName=="INPUT" || element.tagName=="TEXTAREA") {
				if (element.type=="checkbox") {
					if (element.checked==true) formdata+=element.name + "=" + element.value + "&";
				} else formdata+=element.name + "=" + element.value + "&";
			}
		}
	}
	
	if (request) {
		request.onreadystatechange = function () {
			if(request.readyState == 4)
			{
				if (request.status == 200) {
					if (ajaxLoaderClip!="") {
						DestroyWindow("backgroundloader");
						DestroyWindow("ajaxloader");
					}
					eval(request.responseText);
				} else {
				   if (error_func) {
				   		error_func(request.status);			   	
				   } else {
				   		for (var i in errors) {
        					if (errors[i]==request.status) {
        						//alert(errorPages[i]);
        						document.location = errorPages[i];
        					}
			   			}
				   }
				}
			}
		}
		
		if (ajaxLoaderClip!="") {
			var wwidth = getWindowWidth();
			var wheight = getWindowHeight();
			var cx = 0;
			var cy = 0;
			CreateWindow("backgroundloader","0px","0px",wwidth + "px",wheight + "px","","#FFFFFF","30");
			CreateWindow("ajaxloader",cx + "px",cy + "px",wwidth + "px","32px",html_cargador(),null,"80");
		}
		request.open("POST",url,true);
		request.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=utf-8");
		request.send(formdata);
	}
}


//********************************************
// añade una funcion envia el contenido de un form copiando 
// la respueta dentro del elemento id.
//--------------------------------------------
//
// @params:
//	id: attributo id del elemento que recibe la respuesta.
//	url: url del script en el servidor.
//	func: funcion que recibe los errores, si se omite 
//		se hace una llamada a las funciones generales
//		para el tratamiento de errores (ver ajax_on_error).
//
// @return: 
//
//********************************************
function ajax_on_error(status,url) {
	errors.push(status);
	errorPages.push(url);
}

//********************************************
// registra una pelicula para ser mostrada 
// mientras se esperan datos en una peticion AJAX.
//--------------------------------------------
//
// @params:
//	clipname: nombre del movieclip de flash.
//
// @return: 
//
//********************************************
function ajax_register_loader(clipname) {
	ajaxLoaderClip = clipname;
}
