function createXMLHttpRequest(){
	var xmlhttp=false;
 	try {
 		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
 	} catch (e) {
 		try {
 			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
 		} catch (E) {
 			xmlhttp = false;
 		}
  	}

	if (!xmlhttp && typeof XMLHttpRequest!="undefined") {
 		xmlhttp = new XMLHttpRequest();
	}
	return xmlhttp;
}

function generateError(errorCode,errorDescription){
	var sError = "";
	sError += "Ocurrio el siguiente error.\n\nCodigo de error:\n"+errorCode+"\n";
	sError += "Descricpion de error:\n"+errorDescription;
	alert(sError);
}

function setStatusMessage(str){
	var obj = document.getElementById("divEstado");
	if(obj!=null) obj.innerHTML = "<img src='imgs/loader.gif' border=0 align='absmiddle'>&nbsp;<b>"+str+"</b>";
}

function clearStatusMessage(str){
	var obj = document.getElementById("divEstado");
	if(obj!=null) obj.innerHTML = "&nbsp;";
}

function submitForm(url,formId,aditionalParams,containerId){
	var frm = document.getElementById(formId);
	
	if(frm==null){
		generateError("GEN-0002","No se encuentra el formulario de origen '"+formId+"'.");
		return;
	}
	
	setStatusMessage("Chequeando datos ...");
	
	var params = aditionalParams!=""?"&"+aditionalParams:"";
	for(var i=0;i<frm.elements.length;i++){
		switch(frm.elements[i].type){
			case "text":
				params += "&" + frm.elements[i].name + "=" + frm.elements[i].value;
				break;
			case "textarea":
				params += "&" + frm.elements[i].name + "=" + frm.elements[i].value;
				break;
			case "password":
				params += "&" + frm.elements[i].name + "=" + frm.elements[i].value;
				break;
			case "select-one":
				params += "&" + frm.elements[i].name + "=" + frm.elements[i].options[frm.elements[i].selectedIndex].value;
				break;
		}
	}
	ajaxRequest(containerId,url,frm.method.toUpperCase(),params);
}

function ajaxRequest(containerId,url,method,params){
	//creando objeto
	var ajaxRequest = createXMLHttpRequest();
	
	//comprobando contenedor
	var container = document.getElementById(containerId);
	if(container==null){
		generateError("GEN-0001","No se encontro el objeto contenedor '"+containerId+"' para introducir el resultado de la peticion.");
		return;
	}

	setStatusMessage("Cargando datos ...");	

	//creando peticion, si es GET anadimos los parametros a la url
	if(method.toUpperCase()=="GET"){
		url += "?" + params;
	}
	ajaxRequest.open(method.toUpperCase(),url,true);
	
	//registrando funcion de chequeo de respuesta
	ajaxRequest.onreadystatechange=function() {
		if (ajaxRequest.readyState==4) {
			if(ajaxRequest.responseText.length>3){
				if(ajaxRequest.responseText.substring(0,3)=="CMD"){
					var data = ajaxRequest.responseText.split(" ");
					switch(data[1]){
						case "REDIRECT":
							location.replace(data[2]);
							break;
						case "MESSAGE":
							alert(ajaxRequest.responseText.replace(data[0]+" "+data[1],""));
							break;
						case "MESSAGE_TO_CONTAINER":
							var containerMessage = document.getElementById(data[2]);
							containerMessage.style.visibility = "visible";
							containerMessage.innerHTML=ajaxRequest.responseText.replace(data[0]+" "+data[1]+" "+data[2],"");
							break;
						default:
							alert("Comando "+data[1]+" no implementado.");
							break;
					}
				}else{
					container.innerHTML = unescape(ajaxRequest.responseText);
				}
			}
			clearStatusMessage();
		}
	}
	
	//enviando peticion
	if(method.toUpperCase()=="GET"){
		ajaxRequest.send(null);
	}else{
		ajaxRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		ajaxRequest.send(params);
	}
}

function setContentTitle(title) {
	document.getElementById("divContentTitle").innerHTML = title;
}

function setFocus(obj){
	document.getElementById(obj).focus();
}

function loadProvincia(provincia,inm_ig){
	var ajaxRequest = createXMLHttpRequest();
	
	var obj = document.getElementById("cmbLocalidad");	
	obj.disabled=true;
	
	ajaxRequest.open("GET","loadLocs.php?cmbProvincia="+provincia,true);
	//registrando funcion de chequeo de respuesta
	ajaxRequest.onreadystatechange=function() {
		if (ajaxRequest.readyState==4) {
			var obj = document.getElementById("cmbLocalidad");
			sData = unescape(ajaxRequest.responseText);
			var data = sData.split("|");
			while(obj.options.length>0){
				obj.options[0] = null;
			}
			for(var i=0;i<data.length;i++){
				var loc = data[i].split("#");
				obj.options[obj.options.length] = new Option(loc[1].split("+").join(" "),loc[0]);
			}
			obj.value=inm_ig;
			obj.disabled=false;
		}
	}
	
	ajaxRequest.send(null);
}

function loadWeather(inm_ig,localidad){
	if(inm_ig>0){
		var obj = document.getElementById("divWeather");
		obj.innerHTML = "<br><img src='../../imgs/loader.gif' border=0 align='absmiddle'>&nbsp;Cargando informaci&oacute;n ...<br><br><hr>";
		ajaxRequest("divWeather","getINMInfo.php","GET","&inm_ig="+inm_ig+"&localidad="+localidad)
	}
}
