
//Objeto para detección de Browser

   var BrowserDetect = {
     init: function () {
	 this.browser = this.searchString(this.dataBrowser) || "Browser desconocido";
	 this.version = this.searchVersion(navigator.userAgent)
	 || this.searchVersion(navigator.appVersion)
	 || "Versión desconocida";
	 this.OS = this.searchString(this.dataOS) || "Sistema Operativo Desconocido";
     },
     searchString: function (data) {
	 for (var i=0;i<data.length;i++)	{
	     var dataString = data[i].string;
	     var dataProp = data[i].prop;
	     this.versionSearchString = data[i].versionSearch || data[i].identity;
	     if (dataString) {
		 if (dataString.indexOf(data[i].subString) != -1)
		     return data[i].identity;
	     }
	     else if (dataProp)
		 return data[i].identity;
	 }
     },
     searchVersion: function (dataString) {
	 var index = dataString.indexOf(this.versionSearchString);
	 if (index == -1) return;
	 return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
     },
     dataBrowser: [
    { 	string: navigator.userAgent,
	subString: "OmniWeb",
	versionSearch: "OmniWeb/",
	identity: "OmniWeb"
    },
    {
	string: navigator.vendor,
	subString: "Apple",
	identity: "Safari"
    },
    {
	prop: window.opera,
	identity: "Opera"
    },
    {
	string: navigator.vendor,
	subString: "iCab",
	identity: "iCab"
    },
    {
	string: navigator.vendor,
	subString: "KDE",
	identity: "Konqueror"
    },
    {
	string: navigator.userAgent,
	subString: "Firefox",
	identity: "Firefox"
    },
    {
	string: navigator.vendor,
	subString: "Camino",
	identity: "Camino"
    },
    {		//  Netscapes (6+)
	string: navigator.userAgent,
	subString: "Netscape",
	identity: "Netscape"
    },
    {
	string: navigator.userAgent,
	subString: "MSIE",
	identity: "Explorer",
	versionSearch: "MSIE"
    },
    {
	string: navigator.userAgent,
	subString: "Gecko",
	identity: "Mozilla",
	versionSearch: "rv"
    },
    { 		// Netscapes (4-)
	string: navigator.userAgent,
	subString: "Mozilla",
	identity: "Netscape",
	versionSearch: "Mozilla"
    }
		   ],
     dataOS : [
    {
	string: navigator.platform,
	subString: "Win",
	identity: "Windows"
    },
    {
	string: navigator.platform,
	subString: "Mac",
	identity: "Mac"
    },
    {
	string: navigator.platform,
	subString: "Linux",
	identity: "Linux"
    }
	       ]
     
};



function ajaxSaveComment(strURL, strSubmit, strResultFunc, usuario) {
    // Grabación de Comentario via Ajax
        
    var xmlHttpReq = false;
    var Com;
    var comentario;
    var login = "";
    // Mozilla/Safari
    if (BrowserDetect.browser == 'Explorer'){
	xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
    }else {  
	xmlHttpReq = new XMLHttpRequest();
	xmlHttpReq.overrideMimeType('text/xml');
    }
    xmlHttpReq.open('GET', strURL + strSubmit, true);
    xmlHttpReq.setRequestHeader('Content-Type', 
				'application/x-www-form-urlencoded');
    xmlHttpReq.onreadystatechange = function() {
	if(xmlHttpReq.readyState == 4) {
	    if(xmlHttpReq.status == 200){
		var comentario;

	        if(idioma == 'E'){					
		    comentario  = "Gracias por Opinar. Todos los comentarios son aprobados manualmente, por lo que si su comentario es aprobado, puede que tome un tiempo en aparecer en este artículo"
		}else{
		    comentario = "Thanks for commenting. All comments are manually approved, so if your comment is approved it may take a while for your comment to appear on this story."

		}

		//		comentario = document.getElementById('comment_text').value;
		insertCommentOnTree(comentario, xmlHttpReq.responseText, usuario);
		document.getElementById('comment_text').value = "";    
		try {
		    document.getElementById('username').value = "";    
		}catch(e){}
		try {
		    document.getElementById('email').value = "";    
		}catch(e){}
	    }
	}
    }
    xmlHttpReq.send(null);
}


function ValidarNombreUsuario(){

    var user;
    user = document.getElementById('username');   
    if (exist_login.length == 0){
	if (user.value == ""){
	    if (idioma == "E"){
		alert("Debe Ingresar un nombre");
	    }else{
		alert("You must enter a name");
	    }
	    return "visita";
	}else{
	    return user.value;
	}
    }else{
	return exist_login;
    }
}


function ValidarEmail(){

    var email;
    var validacion;
    
    email = document.getElementById('email');
   
    if (!isValidEmail(email.value)) {
	if (idioma == "E"){
	    alert("Por favor ingrese una dirección mail valida");
	}else{
	    alert("Please enter a valid email address");
	}
	return false; 
    }else{
	return true;
    }
}


function sendComment(tipo){
    
    var texto = document.getElementById('comment_text').value.split("'").join("`");
    var email; 
    var emailV = "a@a.com";
    var usuario = "";


    if (exist_login.length == 0){
	emailV = document.getElementById('email').value;
	usuario = ValidarNombreUsuario();
	if (usuario == "visita")
	    return;
	email = ValidarEmail();   
        if (!email)
	    return;
    }

    if (texto.length ==0){
	if (idioma == "E"){
	    alert("Por favor ingrese texto en el comentario");
	}else{
	    alert("Please enter text in comment");
	}
        return;
    }
    
    if (exist_login == "")
	exist_login ="no-login";
 strPrueba = "?documento="+ g_noticia + "&idioma=" + idioma + "&tipo_documento=" + tipo + "&action=save&login=" + exist_login + "&comentario=" + texto + "&aprobado=S&usuario=" + usuario + "&email=" + emailV;

    strUrlPrueba = "/comment_save.jsp";
    result = "";
    if(usuario.length == 0)
	usuario= exist_login;
    ajaxSaveComment(strUrlPrueba, strPrueba, result, usuario);
    $("comments").style.display='block';    
    if (exist_login == "no-login")
	exist_login ="";
}



function UpdatePages(page){
    // Actualiza Páginas

    // Si no hay comentarios, hacer nada
    if (pages.length == 0){
	return;
    }
  
    if(page < 0){
	page = 0;
    }
    if(page > (pages.length - 1)){
	page = pages.length - 1;
    }

    currentPage = page;
    DeleteTree();
    comment = document.getElementById("comments");
    for(var i = 0; i < pages[currentPage].length; i++){ 
	current = document.createElement('li');
	current.id = pages[currentPage][i][0];
	current.innerHTML = pages[currentPage][i][1];
	comment.appendChild(current);
    }
}    

function sortPages(){
    var tmp;
    var i = pages.length - 1; // Última Rama
    var j = pages[pages.length - 1].length - 1; // Último node de última rama

    tmp = pages[i][j];
    while(i >= 0){
	while(j > 0){
	     pages[i][j] = pages[i][j - 1];
	    j--;
	}
	if ((j == 0) && (i > 0)){
	     pages[i][j] = pages[i - 1][pages[i - 1 ].length - 1];
	    j = pages[i - 1].length - 1; 
	}
	i--;    	
    }
}


function insertCommentOnTree(comentario, log, usuario){

    
    var i;
    var j;
    var first = false;
    var nombre_usuario = "";
    //    alert("Pages Length: " + pages.length);
    try{
	nombre_usuario = document.getElementById('nombre').innerHTML;
    }catch(e){}

    //    alert("Pages Length: " + pages.length);
    if(pages.length == 0){
	j = 0;
	i =0;
	pages[0] = new Array();
	pages[0][0] = new Array();
	pages[0][0][0] = "Cnew";
	first = true;
    }else{
	i = pages.length - 1; // Última Rama
	j = pages[pages.length - 1].length - 1; // Último node de última rama
    }   
    
    var fec = new Date();
    cpages = pages.length;

    /*
    var usuario;
	 if (exist_login.length == 0){
	     usuario = "visita";
	 }else{
	     usuario = exist_login;
	 }
    */
    if (nombre_usuario.length > 0)
	usuario = nombre_usuario;

	 var tComment = "<p class='nick_post'>" + usuario + " - " +  (fec.getMonth() + 1) + "/" + fec.getDate() + "/" + fec.getFullYear() + "  " + fec.getHours() + ":" + fec.getMinutes() + ":" + fec.getSeconds() + "</p>" + comentario;
    
    tmp = new Array(pages[i][j][0],tComment);


   if(first){
	pages[0][0] = tmp;
	sortPages(i,j);
	UpdatePages(0);
	return;
    }
		      
    if(pages[cpages-1].length < 5){
	pages[cpages-1][pages[cpages-1].length] = tmp;
    }else{
	pages[cpages] = new Array();
	pages[cpages][0] = new Array();
	pages[cpages][0] = tmp;
    }
    sortPages(i,j);
    pages[0][0] = tmp;
    UpdatePages(0);

}


/*

Paginación

*/

function TreeToPages(){
    var top;  // Nodo extremo superior    
    var len = 5;  // Tamaño de nodos por rama    
    var cant; // Cantidad de nodos totales     
    var comment; // Elemento 'ul' contenedor de comentarios     
    var elm; // Elementos 'li' de comentaiors     
    var i;      
    var j;  
    comment = document.getElementById('comments');    
    elm   = comment.getElementsByTagName("li");    
    cant  = comment.getElementsByTagName("li").length;       
    stop  = comment.getElementsByTagName("li").length;       
    i = 0; 
    top = (len  - 1);   
    flag = 0;  
    var g = 0;  
    while (flag < 2){     
	if (g < stop){
	    pages[i] = new Array();      
	}
	j = 0;     
	while (j <= top ){
	    if (g < stop){
		pages[i][j] = new Array();
		pages[i][j][0] = elm[g].id; 
		pages[i][j][1] = elm[g].innerHTML;
	    } 
	    g = g + 1;
	    j = j + 1;
	}     
	i++;
	cant = cant - top; //(top + 1) + (len - 1);     
	if(cant < len){
	    top = cant;
	    flag = flag + 1;
	}
    }
}


function DeleteTree(){

    // Borra árbol de comentarios

    var elm;
    var comment;
    var count;
    var tree = new Array;
    comment = document.getElementById("comments");
    elm   = comment.getElementsByTagName("li");
    count = comment.getElementsByTagName("li").length;
    
    for (var i = 0; i < count; i++) {
	tree[i] = new Array();
	tree[i][0] = elm[i].id;
	tree[i][1] = elm[i].innerHTML;
    }
    for (var i = 0; i < count; i++){
	comment.removeChild(document.getElementById(tree[i][0]));
    }
}


/*
  Funciones para mini-sistema de votación
*/

function averageUpdate(){

    var current;
    var assign = "false";
    for(var i = 1; i <= stars; i++){
	current = document.getElementById('star' + i);
	current.src = "/images/ico_vot_ok.gif";
    }
    current = document.getElementById('star' + i);
    switch (rmainder)
	{
	case 1:
	current.src = "/images/ico_vot_no.gif";
	break;
	case 2:
	current.src = "/images/ico_vot_no.gif";
	break;
	case 3:
	current.src = "/images/ico_vot_md.gif";
	assign = "true";
	break;
	case 4:
	current.src = "/images/ico_vot_md.gif";
	assign = "true";
	break;
	case 5:
	current.src = "/images/ico_vot_md.gif";
	assign = "true";
	break;
	case 6:
	current.src = "/images/ico_vot_md.gif";
	assign = "true";
	break;
	case 7:
	current.src = "/images/ico_vot_md.gif";
	assign = "true";
	break;
	case 8:
	current.src = "/images/ico_vot_ok.gif";
	break;
	case 9:
	current.src = "/images/ico_vot_ok.gif";
	break;
	}
    i++;
    for(var j = i; j <= 5; j++){
	current = document.getElementById('star' + j);
	current.src = "/images/ico_vot_no.gif";
    }
    
}

function setCookie ( name, value, exp_y, exp_m, exp_d, path, domain, secure ){
	/*	  
	  Graba la cookie que impide que la persona vote más de
	  una vez por la noticia.

	  name:  Nombre de la Cookie
	  value: Valor de la Cookie
	  exp_y: Año de Expiración
	  exp_m: Mes de Expiracióm
	  exp_d: Dia de Expiración
	  path:  Opcional, Path donde aplica la cookie
	  domain: Opcional, Dominio de la cookie, nosotros lo usamos
	  secure: Opcional, indica que se debe usar SSL. No la usamos (¿deberíamos?)
	*/

    var cookie_string = name + "=" + escape ( value );
    
    if ( exp_y ){
	var expires = new Date ( exp_y, exp_m, exp_d );
	cookie_string += "; expires=" + expires.toGMTString();
    }
    if ( path ){
        cookie_string += "; path=" + escape ( path );
    }
    if ( domain ){
        cookie_string += "; domain=" + escape ( domain );
    }
    if ( secure ){
        cookie_string += "; secure";
    }
    document.cookie = cookie_string;
}


function getCookie(name){

    if(name == '')
	return('');
    name_index = document.cookie.indexOf(name + '=');
    if(name_index == -1)
	return('');
    cookie_value =  document.cookie.substr(name_index + name.length + 1, 
					   document.cookie.length);
    
    //Todos los nombres de las cookies terminan con ;, menos la última
    end_of_cookie = cookie_value.indexOf(';');
    if(end_of_cookie != -1)
	cookie_value = cookie_value.substr(0, end_of_cookie);
    //Restaura los blancos
    space = cookie_value.indexOf('+');
    while(space != -1)
	{ 
	    cookie_value = cookie_value.substr(0, space) + ' ' + 
		cookie_value.substr(space + 1, cookie_value.length);
	    space = cookie_value.indexOf('+');
	}
    return(cookie_value);
}

