/*
 *  ValidateUtil JavaScript framework, version XX
 *  (c) 2009 Horacio Cruz
 *
 *  ValidateUtil is freely distributable
 */
var request;

/**
 * Se usa en la validaci�n de front, para cuando haya al menos un error (aunque tambien se podria deja 
 * en la funci�n que pinta los erroes del back, ahi no se usa, pero tal vez para algo serviria despues).
 */
var errors = false;

/**
 * Creamos el control XMLHttpRequest segun el navegador en el que estemos 
 */
function getAJAXIP() {
    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;
} 

/**
 * Se encarga de llamar la pagina de validacion, el do.
 * where    p�gina donde se valida la forma, generalmente sera un do...
 */
function ajaxItIP(where) {
    /* Creamos el control XMLHttpRequest segun el navegador en el que estemos */
    request = getAJAXIP();

    /* Almacenamos en el control la funci�n que se invocar� cuando la petici�n cambie de estado	*/
    request.onreadystatechange = handleResponseIP;

    request.open("POST", where, true);
    request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
    request.send("");
}

/**
 * Llega a esta funci�n despues de llamar asincronamente la p�gina definida
 * en la funci�n ajaxIt() y si:
 * Tiene errores (regresa XML y entra al try) manda a la funci�n handleXML, o si
 * NO tiene errores (NO regresa XML y entra al catch) manda a la funci�n notHandleXML.
 */
function handleResponseIP() {
    /* Comprobamos si la peticion se ha completado (estado 4) */
    if (request.readyState == 4) {
        /* Comprobamos si la respuesta ha sido correcta (resultado HTTP 200) */
        if (request.status == 200) {
            try {
                var xmlObject = request.responseXML;
                /* obtiene el item root del XML */
                var root = xmlObject.getElementsByTagName("Response")[0];
                var paisCode = getXMLValue(root.getElementsByTagName("CountryCode")[0]);
                
                var paisOID = 0;
                if (paisCode == 'SG'            /* Singapore    */) {
                    paisOID = 137;
                } else if (paisCode == 'MY'     /* Malaysia     */) {
                    paisOID = 95;
                } else if (paisCode == 'VN'     /* Vietnam      */) {
                    paisOID = 159;
                } else if (paisCode == 'ID'     /* Indonesia    */) {
                    paisOID = 68;
                } else if (paisCode == 'TH'     /* Thailand     */) {
                    paisOID = 145;
                } else if (paisCode == 'HK'     /* Hong Kong    */) {
                    paisOID = 65;
                } else if (paisCode == 'CN'     /* China        */) {
                    paisOID = 31;
                } else if (paisCode == 'JP'     /* Japan        */) {
                    paisOID = 82;
                } else if (paisCode == 'KR'     /* Korea        */) {
                    paisOID = 34;
                } else if (paisCode == 'TW'     /* Taiwan       */) {
                    paisOID = 146;
                } else if (paisCode == 'IN'     /* India        */) {
                    paisOID = 67;
                } else if (paisCode == 'LK'     /* Sri Lanka    */) {
                    paisOID = 139;
                } else if (paisCode == 'MV'     /* Maldives     */) {
                    paisOID = 96;
                }
//                alert("paisOID = " + paisOID);
                if (paisOID != 0) {
                    setSelectedByValue(document.form1.paisOID, paisOID);
//                    document.form1.paisOID.selectedIndex = 1;
//                    alert("document.form1.paisOID.selectedIndex = " + document.form1.paisOID.selectedIndex);
                }
            } catch (Exception) {
            }
        } else {
//            alert(request.responseText);
        }
    }
}

function getXMLValue(nodo) {
    var valor="";
    try {
        valor = nodo.firstChild.data;
    }catch(exception) {}
    return valor;
}

/**
 * Deja como seleccionado el <option> de un elemento <select> cuyo value sea el
 * enviado como parametro.
 *
 * element  elemento tipo <select>
 * value    valor que tiene en su etiqueta value y cuyo <option> se quiere seleccionar
 */
function setSelectedByValue(element, value) {
    for (var i = 0; i < element.length; i++) {
        if (element.options[i].value == value) {
            element.selectedIndex = i;
        }
    }
}

