var RESPONSE_OK = "OK";
var RESPONSE_ERROR = "ERROR";
var RESPONSE_NONACTIVE = "NONACTIVE";
var RESPONSE_ERROREMAIL = "ERROREMAIL";

var NODE_RESPONSE = "RESPONSE";
var NODE_CODE = "CODE";
var NODE_MESSAGE = "MESSAGE";

//Convierte el String en XML
function getDocument(xmlString){
    try{
        var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
        xmlDoc.async = "false";
        xmlDoc.loadXML(xmlString);
        return xmlDoc;
    }catch(e){
        var parser = new DOMParser();
        var xmlDoc = parser.parseFromString(xmlString, "text/xml");
        return xmlDoc;
    }
}

//Funcion que rellena el combo pasado por parametro con los años
function setYears(objSelect){
    var iniYear = 1920;
    var date = new Date();
    var finYear = date.getFullYear() - 18;
    for (var i=finYear; i >= iniYear; i--){
        try{
            objSelect.add(new Option(i), null);
        }catch(e){ //in IE, try the below version instead of add()
            objSelect.add(new Option(i));
        }
    }
}

//Funcion que recarga los options de un combo desde un Array
function reloadCombos(collection,combo,index1,index2){
    if (! combo) return;
    if (combo.options.length > 1){
        for (var i=combo.options.length-1;i>=0;i--){
            combo.options[i]=null;
        }
    }
    if (index1 == null && index2 == null){
        for (var i=0;i<collection.length;i++){
            var key = collection[i].split("|")[0];
            var value = collection[i].split("|")[1];
            var option = new Option(value, key);
            combo.options[i] = option;
        }
    }else if (index1 != null && index2 == null){
        for (var i=0;i<collection[index1].length;i++){
            var key = collection[index1][i].split("|")[0];
            var value = collection[index1][i].split("|")[1];
            var option = new Option(value, value);
            combo.options[i] = option;
        }
    }else if (index1 != null && index2 != null){
        for (var i=0;i<collection[index1][index2].length;i++){
            var key = collection[index1][index2][i].split("|")[0];
            var value = collection[index1][index2][i].split("|")[1];
            var option = new Option(value, value);
            combo.options[i] = option;
        }
    }
    combo.options[0].selected=true;
    if (combo.onchange)
        combo.onchange();
}

function selectedItem(combo, value){
    for (var i=0; i<combo.options.length; i++){
        if (combo.options[i].text == value){
            combo.selectedIndex = i;
            if (combo.onchange)
                combo.onchange();
            return;
        }
    }
}

//Funcion que recarga la imagen del captcha
function changeCaptcha(){
    var rnd = Math.random();
    getObject("imgcaptcha").src = "/registro/captcha?" + rnd;
    getObject("captcha").value = "";
}

//Funcion para loguear a los usuarios
function login(user, pass, remember){
    var call = new Vozjax();

    call.onComplete = function() {
        var respuesta = getDocument(call.responseText);
        if (respuesta.getElementsByTagName(NODE_RESPONSE).length > 0){
            var code = respuesta.getElementsByTagName(NODE_CODE)[0].firstChild.nodeValue;
            var msg = respuesta.getElementsByTagName(NODE_MESSAGE)[0].firstChild.nodeValue;
            if (code == RESPONSE_OK){
                completeLogin(msg);
            }else{
                errorLogin(code, msg);
            }
        }
    }

    var url = "/registro/usuarios?app=sedvtv&method=validate&username=" + user + "&password=" + pass + "&recordar=" + remember;
    call.run(url);
}

//Funcion para loguear a los usuarios desde los comentarios
function loginOpina(user, pass){
    var call = new Vozjax();
    
    call.onComplete = function() {
        var respuesta = getDocument(call.responseText);
        if (respuesta.getElementsByTagName(NODE_RESPONSE).length > 0){
            var code = respuesta.getElementsByTagName(NODE_CODE)[0].firstChild.nodeValue;
            var msg = respuesta.getElementsByTagName(NODE_MESSAGE)[0].firstChild.nodeValue;
            if (code == RESPONSE_OK){
                completeLoginOpina(msg);
            }else{
                errorLogin(code, msg);
            }
        }
    }

    var url = "/registro/usuarios?app=sedvtv&method=validate&username=" + user + "&password=" + pass;
    call.run(url);
}

//Funcion que cierra la session del usuario
function closeSession(){
    var call = new Vozjax();

    call.onComplete = function() {
        var respuesta = getDocument(call.responseText);
        if (respuesta.getElementsByTagName(NODE_RESPONSE).length > 0){
            var code = respuesta.getElementsByTagName(NODE_CODE)[0].firstChild.nodeValue;
            var msg = respuesta.getElementsByTagName(NODE_MESSAGE)[0];
            if (code == RESPONSE_OK){
                //document.location.href = "/comunidad/index.htm";
                document.location.reload();
            }
        }
    }

    var url = "/registro/usuarios?app=sedvtv&method=closesession";
    call.run(url);
}

//Para obtener los datos del usuario logueado
function getDataUserHead(target){
    var call = new Vozjax();

    call.onComplete = function() {
        var respuesta = getDocument(call.responseText);
        if (respuesta.getElementsByTagName(NODE_RESPONSE).length > 0){
            var code = respuesta.getElementsByTagName(NODE_CODE)[0].firstChild.nodeValue;
            var msg = respuesta.getElementsByTagName(NODE_MESSAGE)[0];
            if (code == RESPONSE_OK){
                var nombre = msg.getElementsByTagName("nombre")[0].firstChild.nodeValue;
                target.innerHTML = "Bienvenido <a href='/perfil/index.htm'><strong>" + nombre + "</strong></a> <a href='#' onclick='javascript:closeSession(); return false;'><strong>Desconectar</strong></a>";
            }
        }
    }

    var url = "/registro/usuarios?method=userdata&app=sedvtv&rnd=" + Math.random();
    call.run(url);
}

function getDataUserProfile(){
    var call = new Vozjax();
    
    call.onComplete = function() {
        var respuesta = getDocument(call.responseText);
        if (respuesta.getElementsByTagName(NODE_RESPONSE).length > 0){
            var code = respuesta.getElementsByTagName(NODE_CODE)[0].firstChild.nodeValue;
            var msg = respuesta.getElementsByTagName(NODE_MESSAGE)[0];
            if (code == RESPONSE_OK){
                var nombre = msg.getElementsByTagName("nombre")[0].firstChild.nodeValue;
                getObject("nombre").value = nombre;
                getObject("email").value = msg.getElementsByTagName("email")[0].firstChild.nodeValue;
                getObject("imgfoto").src = "/registro/images/" + nombre + "/avatar.jpg";
                selectedItem(getObject("dia"), msg.getElementsByTagName("dia")[0].firstChild.nodeValue);
                selectedItem(getObject("mes"), msg.getElementsByTagName("mes")[0].firstChild.nodeValue);
                selectedItem(getObject("anyo"), msg.getElementsByTagName("anyo")[0].firstChild.nodeValue);
                selectedItem(getObject("provincia"), msg.getElementsByTagName("provincia")[0].firstChild.nodeValue);
                selectedItem(getObject("localidad"), msg.getElementsByTagName("localidad")[0].firstChild.nodeValue);
                selectedItem(getObject("comercial"), msg.getElementsByTagName("comercial")[0].firstChild.nodeValue);
            }else{
                //Usuario no validado
                alert("Debe estar registrado para poder editar su perfil.");
                document.location.href = "/login/index.htm";
            }
        }
    }

    var url = "/registro/usuarios?method=userdata&app=sedvtv";
    call.run(url);
}

function getDataUserUpload(){
    var call = new Vozjax();
    
    call.onComplete = function() {
        var respuesta = getDocument(call.responseText);
        if (respuesta.getElementsByTagName(NODE_RESPONSE).length > 0){
            var code = respuesta.getElementsByTagName(NODE_CODE)[0].firstChild.nodeValue;
            var msg = respuesta.getElementsByTagName(NODE_MESSAGE)[0];
            if (code == RESPONSE_OK){
                var nombre = msg.getElementsByTagName("nombre")[0].firstChild.nodeValue;
                getObject("nombreuser").innerHTML = nombre;
                getObject("Autor").value = nombre;
                var dia  = msg.getElementsByTagName("dia")[0].firstChild.nodeValue;
                var mes = msg.getElementsByTagName("mes")[0].firstChild.nodeValue;
                var anyo = msg.getElementsByTagName("anyo")[0].firstChild.nodeValue;
                var d = new Date(anyo, mes-1, dia);
                getObject("fechauser").innerHTML = formatLong(d,'d \'de\' MMMM \'del\' yyyy', 'es');
                getObject("correo").value = msg.getElementsByTagName("email")[0].firstChild.nodeValue;
                getObject("imgfoto").src = "/registro/images/" + nombre + "/avatar.jpg";
                getObject("Poblacion").value = msg.getElementsByTagName("localidad")[0].firstChild.nodeValue;
            }else{
                //Usuario no validado
                alert("Debe estar registrado para poder subir videos.");
                document.location.href = "/login/index.htm";
            }
        }
    }
    
    var url = "/registro/usuarios?method=userdata&app=sedvtv";
    call.run(url);
}

function getDataUserContact(){
    var call = new Vozjax();
    
    call.onComplete = function() {
        var respuesta = getDocument(call.responseText);
        if (respuesta.getElementsByTagName(NODE_RESPONSE).length > 0){
            var code = respuesta.getElementsByTagName(NODE_CODE)[0].firstChild.nodeValue;
            var msg = respuesta.getElementsByTagName(NODE_MESSAGE)[0];
            if (code == RESPONSE_OK){
                var nombre = msg.getElementsByTagName("nombre")[0].firstChild.nodeValue;
                var correo = msg.getElementsByTagName("email")[0].firstChild.nodeValue;
                getObject("user_invited").className = "inv";
                getObject("nombre").value = nombre;
                getObject("email").value = correo;
                getObject("user_logged").className = "vis";
                getObject("nombrelogged").value = nombre;
                getObject("emaillogged").value = correo;
            }else{
                getObject("user_logged").className = "inv";
                getObject("user_invited").className = "vis";
            }
        }
    }
    
    var url = "/registro/usuarios?method=userdata&app=sedvtv";
    call.run(url);
}

//Funciones de regreso del PERFIL
function completeEditProfile(msg){
    //document.location.href = "/comunidad/index.htm";
    document.location.reload();
}

function errorEditProfile(code, msg){
    alert(msg);
}

//Funciones de regreso del REGISTRO
function completeRegister(msg){
    alert(msg);
    document.location.href = "/comunidad/index.htm";
}

function errorRegister(code, msg){
    if (code == RESPONSE_ERROREMAIL){
        document.location.href = "/activacion/index.htm";
    }else{
        alert(msg);
        changeCaptcha();
    }
}

//Funciones de regreso del CONTACTO
function completeContact(msg){
    alert(msg);
    document.location.href = "/contacto/index.htm";
}

function errorContact(code, msg){
    alert(msg);
    changeCaptcha();
}

//Funciones de regreso del ENVIO VALIDACION
function completeEmailValidation(msg){
    alert(msg);
    document.location.href = "/comunidad/index.htm";
}

function errorEmailValidation(code, msg){
    alert(msg);
}

//Funciones de regreso del NUEVA CONTRASEÑA
function completeNewPassword(msg){
    alert(msg);
    document.location.href = "/comunidad/index.htm";
}

function errorNewPassword(code, msg){
    alert(msg);
}

//Funciones de regreso del LOGIN
function completeLogin(msg){
    document.location.href = "/comunidad/index.htm";
}

function completeLoginOpina(msg){
    document.location.reload();
}

function errorLogin(code, msg){
    if (code == RESPONSE_NONACTIVE){
        alert("La cuenta no está activa, compruebe su correo.");
        document.location.href = "/activacion/index.htm";
    }else{
        alert(msg);
    }
}

function getFormOpina(idOpina,Titulo,Texto,idPadre,idSeccion,Otro){
    var call = new Vozjax();

    //Comprobamos si anteriormente se envio correctamente un opinion
    if (document.location.hash == "#envioOK"){
        alert("Opinión enviada con éxito.");
        document.location.hash = "";
    }

    call.onComplete = function() {
	
        var respuesta = getDocument(call.responseText);
        if (respuesta.getElementsByTagName(NODE_RESPONSE).length > 0){
            var code = respuesta.getElementsByTagName(NODE_CODE)[0].firstChild.nodeValue;
            var msg = respuesta.getElementsByTagName(NODE_MESSAGE)[0];
            if (code == RESPONSE_OK){
                // se quien es pinto formulario con datos
                result='<div class="comment_form">';
                result+='<h3>ENVÍA TU OPINIÓN <small>Todos los campos son obligatorios</small></h3>';
                result+='<form name="opina" class="blq" action="/vtvssee/opina/opina.jsp" method="post">';
                result+='<input type="hidden" id="tituloOpina" name="tituloOpina" value="'  + Titulo + '">' ;
                result+='<input type="hidden" id="textoOpina" name="textoOpina" value="'  + Texto + '">' ;
                result+='<input type="hidden" id="idpadre" name="idpadre" value="'  + idPadre + '">' ;
                result+='<input type="hidden" name="idSeccion" value="'  + idSeccion + '">' ;
                result+='<input type="hidden" value="opinaAutomatico" name="servicio" id="servicio">';
                result+='<input type="hidden" name="idOpina" id="idOpina"  value="'  + idOpina + '">' ;
				result+='<fieldset>';
                result+='<legend class="no">Datos personales</legend>';
                result+='<label for="Autor"><em>Nombre</em><br/><input id="Autor" name="Autor" readonly value="'  +msg.getElementsByTagName("nombre")[0].firstChild.nodeValue + '"></label>' ;
                result+='<label for="Poblacion"><em>Población</em><br/><input id="Poblacion" name="Poblacion" readonly value="'  +msg.getElementsByTagName("localidad")[0].firstChild.nodeValue + '"></label>' ;
                result+='<label for="correo"><em>Correo electrónico</em><br/><input  id="correo" name="correo" readonly value="' + msg.getElementsByTagName("email")[0].firstChild.nodeValue +'"></label>';
                result+='</fieldset>';
				result+='<fieldset>';
                result+='<legend class="no">Opinión</legend>';
                result+='<label for="Titulo"><em>Título</em><br/><input class="brd t620" maxlength="100" name="Titulo" id="Titulo"></label>';
                result+='<label for="Texto"><em>Texto</em><textarea class="brd t620" rows="5" name="Texto" id="Texto">&nbsp;</textarea></label>';
                result+='</fieldset>';
                result+='<input type="hidden" name="Fecha" id="Fecha" value="' + formatDate(dateTime(), 'EEEE d \'de\' MMMM \'de\' yyyy', 'es') + '">';
                result+='<input type="hidden" name="Hora" id="Hora" value="' + formatDate(dateTime(), 'HH:mm', 'es') + '" >';
                result+='<input class="boton der" value="ENVIAR" id="cmdEnviar" type="submit">';
                result+='</form><div class="clear">&nbsp;</div></div>';
            }else{
                //Usuario no validado, pinto formualrio de acceso/registro
                result=getFormAcceso();
             }
             getObject('opina').innerHTML=result;
          }
	}
    var url = "/registro/usuarios?method=userdata&app=sedvtv";
    call.run(url);

}

function getFormAcceso(){
	var result="";
	
	result='<h3>Opiniones</h3><div class="users"><p>Ha de estar registrado para poder comentar. <a href="/alta/index.htm">Registrarse</a> o identificarse:</p>';		
	result+='<form id="login_form" action="/registro/usuarios" onsubmit="javascript:loginOpina(getObject(\'username\').value, getObject(\'password\').value); return false;" method="POST">';
	result+='<input type="text" id="username" name="username" size="10" value="usuario" onclick="javascript:this.focus();this.select();"/>';
	result+='<input type="password" id="password" name="password" size="10" value="contraseña" onclick="javascript:this.focus();this.select();"/>';
	result+='<input type="submit" value="Acceder" class="button"/>';
	result+='</form></div>';
	return result;
}

function getFormOpinaFichero(idOpina,Titulo,Texto,idPadre,idSeccion){
    var call = new Vozjax();
	
    //Comprobamos si anteriormente se envio correctamente un archivo
    if (document.location.hash == "#envioOK"){
        alert("Archivo enviado con éxito.");
        document.location.hash = "";
    }

    call.onComplete = function() {
	
        var respuesta = getDocument(call.responseText);
        if (respuesta.getElementsByTagName(NODE_RESPONSE).length > 0){
            var code = respuesta.getElementsByTagName(NODE_CODE)[0].firstChild.nodeValue;
            var msg = respuesta.getElementsByTagName(NODE_MESSAGE)[0];
            if (code == RESPONSE_OK){
                // se quien es pinto formulario con datos
                result='<div class="form_send">';
                result+='<h3>Envía tu vídeo <small>Todos los campos son obligatorios</small></h3>';
                result+='<form action="/vtvssee/opina/opina.jsp" method="post" enctype="multipart/form-data">';
                result+='<input type="hidden" id="tituloOpina" name="tituloOpina" value="' + Titulo + '">' ;
                result+='<input type="hidden" id="textoOpina" name="textoOpina" value="' + Texto + '">' ;
                result+='<input type="hidden" id="idpadre" name="idpadre" value="'  + idPadre + '">' ;
                result+='<input type="hidden" name="idSeccion" value="' + idSeccion + '">' ;
                result+='<input type="hidden" value="cuentalotu" name="servicio" id="servicio">';
                result+='<input type="hidden" name="idOpina" id="idOpina" value="' + idOpina + '">' ;
                result+='<input type="hidden" id="Autor" name="Autor" value="' + msg.getElementsByTagName("nombre")[0].firstChild.nodeValue + '">';
                result+='<input type="hidden" id="Poblacion" name="Poblacion" value="' + msg.getElementsByTagName("localidad")[0].firstChild.nodeValue + '">';
                result+='<input type="hidden" id="correo" name="correo" value="' + msg.getElementsByTagName("email")[0].firstChild.nodeValue +'">';
                result+='<label for="Fichero"><span>Subir vídeo: <em>*</em></span><br/><input size="20" type="file" name="Fichero" id="Fichero"/><br/></label>';
                result+='<label for="Titulo"><span>Título del vídeo <em>*</em></span><br/><input maxlength="100" size="50" name="Titulo" id="Titulo" onclick="javascript:this.focus();this.select();"></label>';
                result+='<label for="Texto"><span>Comentarios <em>*</em></span><br/><textarea rows="6" cols="50" name="Texto" id="Texto" onclick="javascript:this.focus();this.select();">&nbsp;</textarea></label>';
                result+='<input type="hidden" name="Fecha" id="Fecha" value="' + formatDate(dateTime(), 'EEEE d \'de\' MMMM \'de\' yyyy', 'es') + '">';
                result+='<input type="hidden" name="Hora" id="Hora" value="' + formatDate(dateTime(), 'HH:mm', 'es') + '" >';
                result+='<br/><input value="ENVIAR" id="cmdEnviar" type="submit" class="button">';
                result+='</form><div class="clear">&nbsp;</div></div>';
            }else{
                //Usuario no validado, pinto formualrio de acceso/registro
                result=getFormAccesoFichero();
             }
             getObject('opina').innerHTML=result;
          }
	}
    var url = "/registro/usuarios?method=userdata&app=sedvtv";
    call.run(url);
}

function getFormAccesoFichero(){
	var result="";
	
	result='<h3>Envía tu vídeo</h3><div class="users"><p>Ha de estar registrado para poder enviar vídeos. <a href="/alta/index.htm">Registrarse</a> o identificarse:</p>';		
	result+='<form id="login_form" action="/registro/usuarios" onsubmit="javascript:loginOpina(getObject(\'username\').value, getObject(\'password\').value); return false;" method="POST">';
	result+='<input type="text" id="username" name="username" size="10" value="usuario" onclick="javascript:this.focus();this.select();"/>';
	result+='<input type="password" id="password" name="password" size="10" value="contraseña" onclick="javascript:this.focus();this.select();"/>';
	result+='<input type="submit" value="Acceder" class="button"/>';
	result+='</form></div>';
	return result;
}

function getOpinaComents(idOpina,pagina,div){
	rss('int', '/vtvssee/getComents?IdContenido='+idOpina + '&Plantilla=vtv_comentarios_Opina&pagina='+pagina, "", div);
}

