﻿// Variables separadoras
var sepPar = "#P#";		//separa orden ajax de sus parametros
var sepElem = "#E#";	//separa elementos (a un control select se le pueden cargar varios elementos)
var sepVal = "#V#";		//separa valores de sus claves, donde clave y valor forman un elemento
var sepCtl = "#C#";		//separa controles (tanto simples: txt, pwd, spa), como compuestos
var sepBloc = "#B#";	//separa bloques: parametros que no tienen nada que ver entre si (en algunas ocasiones pueden contener subbloques)
var sepSBloc = "#S#";	//Separa subbloques: estructuras formadas por elementos o controles
var sepArg = "#A#";		//separa argumentos: estructuras formadas por bloques
var sepGra = "(_)";		//Separador de argumentos del GridAjax

var path = "/";
var pagEnvio = path + "getPost.aspx";

function CrearXmlHttp() {
    var xmlHttp = false;
    /*branch for Mozilla, Safari, ...*/
    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;
        	}
		}
    }
    return xmlHttp;
}

function enviaLlamada(url, data, funcionVuelta) {
    /*1.- Creamos el objeto xmlHttpRequest*/
    var xmlHttp = CrearXmlHttp();
    /*Si se ha creado correctamente*/
    if (xmlHttp) {
        /*2.- Marcar qué función manejará la respuesta*/
        xmlHttp.onreadystatechange = function() {
            //getCallBack(xmlHttp, url, data);
            getLlamadaVuelta(xmlHttp, funcionVuelta);
        }        
        /*3.- Enviar*/
        xmlHttp.open("POST", url, true);
        xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
        xmlHttp.send(data);
    }
    else {
        alert("No se pudo crear el objeto XMLHttpRequest");
    }
}

function getLlamadaVuelta(xmlHttp, funcionVuelta) {
    if(xmlHttp.readyState == 4) {
        if(xmlHttp.status == 200) {
            var res = xmlHttp.responseText;
            funcionVuelta(res); 
        } else {
            alert("Error en la petición.\nMensaje de error: " + xmlHttp.statusText);
        }
    }
}

function peticionAjax(datos, funcionVuelta) {   
    var parametros = "datos=" + datos;
    enviaLlamada(pagEnvio , parametros, funcionVuelta);    
}

/******/
var _url;
var ArrValores = new Array();
var ArrCtrlId = new Array();

function CreateXmlHttp() {
    var xmlHttp = false;

    /*branch for Mozilla, Safari, ...*/
    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;
        	}
		}
    }

    return xmlHttp;
}

function sendCall(url, data) {
    /*1.- Creamos el objeto xmlHttpRequest*/
    var xmlHttp = CreateXmlHttp();

    /*Si se ha creado correctamente*/
    if(xmlHttp) {
        /*2.- Marcar qué función manejará la respuesta*/
        xmlHttp.onreadystatechange = function() {
            getCallBack(xmlHttp, url, data);
        }
        
        /*3.- Enviar*/
        xmlHttp.open("POST", url, true);
        xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
        xmlHttp.send(data);
    }
    else {
        alert("No se pudo crear el objeto XMLHttpRequest");
    }
}

function getCallBack(xmlHttp, url, data) {
    if(xmlHttp.readyState == 4) {
        if(xmlHttp.status == 200) {
            var res = xmlHttp.responseText;
            //alert(res);
            var pagina = url, opcion = "", form = "", idTab = "", idioma = "";
            
            if (data.indexOf("&opcion=") != -1) {
                if(data.indexOf("&", data.indexOf("&opcion=") + 8) != -1) {
                    opcion = data.substring(data.indexOf("&opcion=") + 8, data.indexOf("&", data.indexOf("&opcion=") + 8));
                } else {
                    opcion = data.substring(data.indexOf("&opcion=") + 8, data.length);
                }
            } else {
                if (data.indexOf("opcion=") != -1) {
                    if(data.indexOf("&", data.indexOf("opcion=") + 7) != -1) {
                        opcion = data.substring(data.indexOf("opcion=") + 7, data.indexOf("&", data.indexOf("opcion=") + 7));
                    } else {
                        opcion = data.substring(data.indexOf("opcion=") + 7, data.length);
                    }
                }
            }
            
            if (data.indexOf("&form=") != -1) {
                form = data.substring(data.indexOf("&form=") + 6, data.indexOf("&", data.indexOf("&form=") + 6));
            }
            
            if (data.indexOf("&idTab=") != -1) {
                idTab = data.substring(data.indexOf("&idTab=") + 7, data.indexOf("&", data.indexOf("&idTab=") + 7));
            }
            
            if (data.indexOf("&idioma=") != -1) {
                idioma = data.substring(data.indexOf("&idioma=") + 8, data.length);
            }
            
            var result;
            
            switch(pagina) {
               case "getPost.aspx":
                   //CargaDatosAdm(res, opcion, form, idTab, idioma);
                   break;
                   
               case "setPost.aspx":
                    //alert(res);
                   switch(opcion) {
                       case "setNoticia":
                           location.href = "noticia_mgm.aspx";
                           break;
                           
                       case "tipo_obra":
                       case "tipo_tecnica":
                           var listado = document.getElementById("ctl00_ContentPlaceHolder1_LResultado");
                           result = res.split("(_)");
                           if(result[0] == "ok") {
                                listado.innerHTML = result[1];
                           }
                           location.href = opcion + ".aspx";
                        break;
                       
                       case "pagina":
                       case "etiqueta":
                           var listado = document.getElementById("ctl00_ContentPlaceHolder1_LResultado");
                           result = res.split("(_)");
                           if(result[0] == "ok") {
                                listado.innerHTML = result[1];
                           }
                           break;
                           
                      case "idioma":
                           var listado = document.getElementById("ctl00_ContentPlaceHolder1_LResultado");
                           result = res.split("(_)");
                           if(result[0] == "ok") {
                                listado.innerHTML = result[1];
                           }
                           location.href = "idioma_mgm.aspx";
                           break;
                           
                      case "traduccion":
                        result = res.split("(_)");
                        if(result[0] == "ok") location.href = "idioma_act.aspx?pagid=" + result[1];
                        break;
                   }
                   break;
            }
        }
        else {
            alert("Error en la petición.\nMensaje de error: " + xmlHttp.statusText);
        }
    }
}
