//GENERICAS
// retorna un objeto con los valores pasados por GET
getQuery=function(){
	var i,eq,qs=location.search.substring(1), nv=qs.split('&'), o=[];
	for(i=0;i<nv.length;i++){
    	eq=nv[i].indexOf('=');
    	o[nv[i].substring(0,eq).toLowerCase()]=unescape(nv[i].substring(eq+1));
	}return(o);
}

//Cookies
//Deja  uan cookie :: sName es un string, oValue es un objeto,nVida en Horas
function setCookie(sName,sValue,nVida){
  var i,a=[],ex="",e="";
  if(nVida!=null) {
    ex=new Date((new Date()).getTime() + nVida * 3600000);
    ex="; expires=" + ex.toGMTString();
  }
  document.cookie=sName+"="+escape(sValue)+ex;
}

//devuelve el valor de esa cookie
function getCookie(sName){
	try{
		var d=document,c=unescape(d.cookie),bgin=sName+"=";
		return c.split(bgin)[1].split(";")[0];
	}catch(e){return false;}
}

function getCombo(oCombo){return(oCombo.options[oCombo.options.selectedIndex].value)}

//CADENAS------------------------------------------------------------------------------------------------------------------------
function l_trim(s){	while(s.indexOf(" ")==0)s=s.substring(1);return(s);}//anula los espacios por la izq
function r_trim(s){while(s.length && s.lastIndexOf(" ")==s.length-1)s=s.substring(0,s.length-1);return(s);}//anula los espacios por la izq
function trim(s){if(!s) return ""; return(l_trim(r_trim(s)));}//anula los espacios en dcha e izq
function contain(s,c){return(s.indexOf(c)!=-1);}
function capitalice(s){	return(s.charAt(0).toUpperCase() + s.substring(1).toLowerCase())}
function isEmail(s){var e=/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,5})+$/; return(e.test(s))}
function isUrl(s){e=new RegExp(/\b(http:\/\/)?(\w+\.)+[a-z]{2,3}/); return(e.test(s))}
function isNumber(s){e=new RegExp(/\d+/); return(e.test(s))}
function isTelephone(s){e=new RegExp(/\b(\+\d{1,3})?\d{9}\b/);return(e.test(s))}
function isZip(s){return new RegExp(/\d{5}/).test(s)}
function isInArray(a,o){for(var i in a)if(a[i]==o)return true;return false;}
function isLeapYear(y){return(y%4==0 && y%100==0);}

//valido mes y dia(sin bisiestos)
function isMonth(mm,dd){
	var largos=[1,3,5,7,8,10,12];
	if(mm.length>2 || dd.length>2 || (!isInArray(largos,mm) && dd>30) || (mm==2 && dd>29))	return false;
	return true;
}

//valido A�o, mes y dia (incluidos bisiestos)
function isDate(aaaa,mm,dd){
	if(aaaa.length>4 || !isMonth(mm,dd) || (mm==2 && !isLeapYear(aaaa) && dd>28))return false;
	return true;
}

//BOOLEANAS------------------------------------------------------------------------------------------------------------------------
//En Safari peta ...
//function is_string(s){return s.constructor.toString().match(/String/)};
function is_string(s){return hasValue(s.toLowerCase)};
function is_checkbox(oCampo){return(oCampo.type=='checkbox')}
function is_radio(oCampo){return(oCampo.type=='radio')}
function is_combo(oCampo){return(oCampo.type=='select-one')}
function is_list(oCampo){return(oCampo.type=='select-multiple')}
function is_txt(oCampo){var t=oCampo.type; return(t=="text" || t=="textarea" || t=="password")}
function is_textarea(oCampo){return(oCampo.type=='textarea')}
function is_hidden(oCampo){return(oCampo.type=='hidden')}
function ok_combo(oCombo){return hasValue(getCombo(oCombo))}
function ok_list(oList){return(oList.options.selectedIndex!=-0)}
function ok_txt(oText){return hasValue(oText.value)}
function ok_hidden(oHidden){return(oHidden.value!='');}
function hasValue(v){return((v!="")&&(v!=null)&&(v!=false)&&(v!="undefined"));}//Una variable tiene valor??






//FORMULARIOS ----------------------------------------------------------------------------------------
//Marca un campo con una clase css
function highLightField(oCampo,sClase){
	var prevClass=oCampo.className; //guardo el estilo original del campo del formulario
	oCampo.className=sClase;
	oCampo.onblur=function(){this.className=prevClass;}
}

//marca un campo, le da foco ,alerta un mensaje y retorna falso
function setFormError(oCampo,sMnsj,sClase){
	if(sClase)highLightField(oCampo,sClase);
	alert(sMnsj);
	if(oCampo.focus)oCampo.focus();
	return false;
}

//Da trim() al valor de un campo
function trimTextField(o){try{o.value=trim(o.value)}catch(e){return false}}

//Dado un formulario, da trim() al valor de todos los campos de un formulario
function megaTrimForm(f){
	var i,t;
	var aInput=f.getElementsByTagName("input");
	var aAreas =f.getElementsByTagName("textarea");
	var a = aInput.concat(aAreas);
	
	
	
	for(i in a){
		if((a[i].type && (a[i].type=="text" || a[i].type=="password")) || (a[i].tagName=="textarea"))  trimTextField(a[i]);
	}
}


//deuelve el codigo de las opciones de un combo con los dias del mes 
getComboDay = function(total,selected){
	var i,std="",s="",total=(total||31);
	for(i=1;i<=total;i++){
		std=(selected && selected==i)? 'selected' : '';
		s+=('<option '+std+' value="'+i+'">'+i+'</option>');
	}
	return s;
}

//deuelve el codigo de las opciones de un combo con los meses del a�o 
getComboMonth = function(selected){
	if(!hasValue(meses))meses=["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"];
	var i,std="",s="",total=meses.length;
	for(i=1;i<=total;i++){
		std=(selected && selected==i)? 'selected' : '';
		s+=('<option '+std+' value="'+i+'">'+meses[i-1]+'</option>');
	}
	return s;
}

//deuelve el codigo de las opciones de un combo con los meses del a�o 
getComboYear = function(minYear,maxYear,selected){
	var i,std="",s="";
	if(minYear>maxYear){i=minYear; minYear=maxYear; maxYear=i;}
	for(i=minYear;i<=maxYear;i++){
		std=(selected && selected==i)? 'selected' : '';
		s+=('<option '+std+' value="'+i+'">'+i+'</option>');
	}
	return s;
}

//devuelve el codigo de flash. values es un objeto con las variables para pasar a flash
getFlash=function(movie,width,height,values){
	var i,s='',code='';
	if(values){for(i in values)s+=('&'+i+'='+values[i]);movie+='?'+s.substring(1);}	 
	code+='<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0"  width="'+ width +'" height="'+ height +'" allowFullScreen="true" >';
	code+='<param name="movie" value="'+ movie +'">';
	code+='<param name="quality" value="high">';
	code+='<param name="allowScriptAccess" value="always">';
	code+='<param name="allowFullScreen" value="true">';
	code+='<embed src="'+ movie +'" width="'+ width +'" height="'+ height +'" quality="high" allowScriptAccess="always" allowFullScreen="true" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash"  ></embed></object>';
	//alert(code);
	return(code);
}


function openPop(theUrl,theName,theWidth,theHeight,scrollbars){
	scrollbars=(scrollbars)? 'Yes' : 'No';
	var centerX=screen.availWidth/2-theWidth/2 , centerY=screen.availHeight/2-theHeight/2;
	var theFeatures='menubar=no,status=no,location=no,resizable=no,left='+centerX+',top='+centerY+',scrollbars='+ scrollbars +',width='+theWidth+',height='+theHeight;
	var popWin=window.open(theUrl,theName,theFeatures);popWin.focus();
}

//Dado un texto, genera un extracto de n caracteres
getExtract = function(str , l){
	if(!l) l=150;
	return str.substring(0 , l) + '...' ; 
}





////////////////////////////   AJAX  ////////////////////////////
function getAjax() {
	var ajax;
	try {
		ajax = new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
		try {
			ajax = new ActiveXObject("Microsoft.XMLHTTP");
		} catch (E) {
			ajax = false;
		}
	}
	
	if (!ajax && typeof XMLHttpRequest!='undefined'){
		ajax = new XMLHttpRequest();
	}

	return ajax;
}

//Carga una tasbla Syncronous
getTableXML = function(tableFile){
	var ajax = getAjax();
	ajax.open("GET",tableFile,false);
	ajax.send(null);
	var i,x=ajax.responseXML,nMain=x.lastChild,oTable=[];
	for(i=0;i<nMain.childNodes.length;i++){
		var nSec=nMain.childNodes[i],attList=nSec.attributes,o={};
		if(attList){
			for(var e=0;e<attList.length;e++){
				var oAtt  = attList[e];
				o[oAtt.name] = oAtt.value;
			}
			if(nSec.firstChild && nSec.firstChild.nodeValue) o.texto = nSec.firstChild.nodeValue;
			oTable.push(o);
		}
	}
	return oTable;
}

//Carga una tasbla Syncronous
getTreeXML = function(tableFile){
	var ajax = getAjax();
	ajax.open("GET",tableFile,false);
	ajax.send(null);
	var i,x=ajax.responseXML,nMain=x.lastChild,oTable=[];
	
	var arrNodes = nMain.getElementsByTagName('tt');
	for(i=0;i<arrNodes.length;i++){
		var oNode = arrNodes[i];
		var o = {};
		o.id = oNode.getElementsByTagName('id')[0].firstChild.nodeValue;
		o.es = oNode.getElementsByTagName('es')[0].firstChild.nodeValue;
		o.ar = oNode.getElementsByTagName('ar')[0].firstChild.nodeValue;
		
		oTable.push(o);
	}
	return oTable;
}


//Carga una tasbla Syncronous
getVideosXML = function(tableFile){
	var ajax = getAjax();
	ajax.open("GET",tableFile,false);
	ajax.send(null);
	var i,x=ajax.responseXML,nMain=x.lastChild,oTable=[];
	
	var arrNodes = nMain.getElementsByTagName('video');
	for(i=0;i<arrNodes.length;i++){
		var oNode = arrNodes[i];
		var o = {};
		o.titulo = oNode.getElementsByTagName('titulo')[0].firstChild.nodeValue;
		o.descripcion = oNode.getElementsByTagName('descripcion')[0].firstChild.nodeValue;
		o.codigo = oNode.getElementsByTagName('codigo')[0].firstChild.nodeValue;
		
		oTable.push(o);
	}
	return oTable;
}


//monta las solapas de las secciones (videos , imagenes , enlaces y descargas)
initOnLoad = function(){
	
	//Idioma por defecto.
	getSelectedLanguaje();
	
	//cargo XML con traducciones
	loadTranslationsXML();
	
	//Genero el menu de extras(videos imagenes, etc...)
    initExtraMenu();
    
}


//Leo los meta y localizo el lang.
getSelectedLanguaje = function(){
	var arrMetas = document.getElementsByTagName('meta');
	for(var i=0;i<arrMetas.length;i++){
		var oMeta = arrMetas[i];
		if(oMeta.name=='lang'){
			document.selectedLanguaje = oMeta.content;
		}
	}
}


//Cargo xml de traducciones y recuerdo en memoria (20 kb, y ademas se cachea...)
loadTranslationsXML = function(){
	document.arrTranslations  = getTreeXML("config/xml/translations.xml");
}


//dado un id, retorna el termino en el idioma seleccionado
getTranslation = function(id_translation){
	for(var i=0;i<document.arrTranslations.length;i++){
		var oTranslation = document.arrTranslations[i];
		if(oTranslation.id==id_translation) return oTranslation[document.selectedLanguaje];
	}
	return false;
}



//Carga el XML de los banners y monta cadeneta de banners
mostrarBanners = function(){
	
	//Cargo el idioma por defecto
	getSelectedLanguaje();
	
	//Cargo xml de Banners
	var arrBanners = getTableXML("config/xml/banners.xml");
	
	//Genero codigo con los banners de mi idioma
	var code = '';
	for(var i=0;i<arrBanners.length;i++){
		var oBanner = arrBanners[i];
		if(oBanner.idioma == document.selectedLanguaje){
			code += '<div class="modulo_left"><a href="'+oBanner.href+'" ><img src="'+oBanner.src+'" border="0" /></a></div>';
		}
	}
	document.write(code);
}


//Carga el XML de los videos de la home y monta listado
mostrarVideosHome = function(){
	
	//Cargo el idioma por defecto
	getSelectedLanguaje();
	
	//Cargo xml
	var arrVideosHome  = getVideosXML("config/xml/videosHome.xml");
	
	//Genero codigo con los banners de mi idioma
	var code = '';
    code += '<div id="div_videos" class="invisible">';
	code += '	<h2>Listado de videos</h2>';
	code += '	<ul >';
	
	for(var i=0;i<arrVideosHome.length;i++){
		var oVideo = arrVideosHome[i];
		
		code += '		<li>';
		code += '			<h3>' + oVideo.titulo + '</h3>';
		code += '			<p>' + oVideo.descripcion+ '</p>';
		code += '			<p>' + oVideo.codigo + '</p>';
		code += '		</li>';
		
	}
	code += '	</ul>';
    code += '</div>	';	
    
	document.write(code);
}

//Inicia el menu de solapas 
initExtraMenu = function(){


    
    var oMenu = new MenuColorao();
    oMenu.init(null,null,null,"tab_head");
    var d = document;
    
    
    
    //localizo elementos
    var divVideos = d.getElementById('div_videos');
    var divImagenes = d.getElementById('div_imagenes');
    var divEnlaces = d.getElementById('div_enlaces');
    var divDescargas = d.getElementById('div_descargas');

    //Monto menu de solapas
    if(divImagenes) oMenu.addItem(new MenuColorao().init(getTranslation('TAB_IMAGES') , null , function(){mostrarImagenes()}));
    if(divVideos) oMenu.addItem(new MenuColorao().init(getTranslation('TAB_VIDEOS') , null , function(){mostrarVideos()}));
    if(divEnlaces) oMenu.addItem(new MenuColorao().init(getTranslation('TAB_LINKS') , null , function(){mostrarEnlaces()}));
    if(divDescargas) oMenu.addItem(new MenuColorao().init(getTranslation('TAB_DOWNLOADS') , null , function(){mostrarDescargas()}));
    
	//Muestro todos los procesos y disparo el primer elemento
	oMenu.autoClick = true;
	oMenu.initMenu();    
    
    
}



/*
//abre un video en el menu de solapas
verVideo = function(n){
    var oContent = document.arrVideos[n];
    var oDiv = document.getElementById('tab_screen');
    
    
    //Corrijo la etiqueta copiada desde algun portal de videos....
    
	//Parseo a mano....
	
	// 1 localizo el EMBED
	var splitTag = "embed";
	var embedInit = oContent.video.toLowerCase().indexOf(splitTag) + splitTag.length + 1;
	
	// 2 localizo cierre del embed
	var embedEnd = embedInit;
	for(var i=embedInit; i<5000; i++){
		var letra = oContent.video.charAt(i);
		if(letra == ">"){
			embedEnd = i;
			break;
		}
	}
	
	// 3 extraigo los atributos del embed y los guardo en oParams.
	var embedContent = oContent.video.substring(embedInit , embedEnd);

//alert(embedContent);

	var embedSplit = embedContent.split('" ');
	
	var movie = "";
	var width = "100%";
	var height = "100%";
	for(var i=0; i<embedSplit.length; i++){
		var sAttSplit = embedSplit[i].split('="');
		var attName = sAttSplit[0].toLowerCase();
		var attValue = sAttSplit[1].substring(0 , sAttSplit[1].length);
		
//    alert(attName + " = " + attValue);
    
		if(attName=="src") var movie = attValue;
		//if(attName=="width") var width = attValue;
		//if(attName=="height") var height = attValue;
	}
	
	
	// 4 Monto etiqueta Flash como dios manda....
	var flashCode = getFlash(movie , width , height , null);
	
	//Inyecto Flash
    oDiv.innerHTML = flashCode;
    
    
    
}
*/




//abre un video en el menu de solapas

/*
Cada portal de video propone una etiqueta como le sale de los cojones: Algunos navegadores la interpretan bien y otros mal
Google a veces pone embed, otros ponen object + embed , pero el embed parece ir siempre

A esto se suma que el puto Explorer al parsear el innerHTML quita las comillas de algunos atributos, con lo que el parseo se hace imposible....

No me queda otra que localizar el src= (rogando a dios que el puto IE no me lo descojone) y localizar el siguiente espacio en blanco (fin del src)

Como IE le quita las comillas, en Firefox tengo que ver si hay comillas y limpiarlas

*/
verVideo = function(n){
    var oContent = document.arrVideos[n];
    var oDiv = document.getElementById('tab_screen');
    
    
	// 1 localizo el src
	var splitTag = "src=";
	var srcInit = oContent.video.toLowerCase().indexOf(splitTag) + splitTag.length;
	
	// 2 localizo cierre del src (1º espacio en blanco)
	var srcEnd = srcInit;
	for(var i=srcInit; i<5000; i++){
		var letra = oContent.video.charAt(i);
		if(letra == " "){
			srcEnd = i;
			break;
		}
	}
	
	// 3 extraigo src
	var srcContent = oContent.video.substring(srcInit , srcEnd);
	
    //Si hay comillas , las quito
    var cleanInit = 0;
    var cleanEnd = srcContent.length-1;
    if(srcContent.charAt(0)=='"') cleanInit = 1;
    if(srcContent.charAt(srcContent.length-1)=='"') cleanEnd = srcContent.length-1;
    
	var movie = srcContent.substring(cleanInit , cleanEnd);
	var width = "100%";
	var height = "100%";
	
	// 4 Monto etiqueta Flash como dios manda (object + embed version 8)....
	var flashCode = getFlash(movie , width , height , null);
	
	//Inyecto Flash
    oDiv.innerHTML = flashCode;
    
    
}





//abre una imagen en el menu de solapas
verImagen = function(n){
    var oContent = document.arrImagenes[n];
    var oDiv = document.getElementById('tab_screen');
    var code = '<img src="' + oContent.src + '" width="100%" height="100%" />';
    oDiv.innerHTML = code;
}



//abre un enlace en el menu de pestañas
verEnlace = function(n){
    var oContent = document.arrEnlaces[n];
    var oDiv = document.getElementById('tab_screen');
    
    var code = '<table >';
    code += '<tr>';
    code += '<td >';
    code += '<h2 class="enlace" ><a class="orange" href="' + oContent.link + '">' + oContent.titulo + '</a></h2>';
    code += '<p>' + oContent.descripcion + '</p>';
    code += '</td>';
    code += '</tr>';
    code += '</table>';

    
    oDiv.innerHTML = code;
}


//abre una descarga en el menu de pestañas
verDescarga = function(n){
    var oContent = document.arrDescargas[n];
    var oDiv = document.getElementById('tab_screen');
    
    
    var code = '<table>';
    code += '<tr>';
    code += '<td>';
    code += '<h2 class="descarga" ><a class="orange" href="' + oContent.link + '">' + oContent.titulo + '</a></h2>';
    code += '<p>' + oContent.descripcion + '</p>';
    code += '</td>';
    code += '</tr>';
    code += '</table>';
    
    oDiv.innerHTML = code;
}



mostrarVideos = function(){
    var d = document;
    
    
    //1 vez, recorro capa videos y genero objeto.
    if(!d.arrVideos){
        d.arrVideos = new Array();
        
        //Busco la capa de videos y monto array con contenidos
        var oDiv = document.getElementById('div_videos');
        var oUl = oDiv.getElementsByTagName('ul')[0];
        var arrContents = oUl.getElementsByTagName('li');


        for(var i=0;i<arrContents.length;i++){
            var oContent = arrContents[i];
            var obj = {};
            obj.titulo = oContent.getElementsByTagName('h3')[0].innerHTML;
            obj.descripcion = oContent.getElementsByTagName('p')[0].innerHTML;
            obj.video  = oContent.getElementsByTagName('p')[1].innerHTML;
            
//alert(obj.video);
            
            d.arrVideos.push(obj);
        }
    }
    
    var oMenu = new MenuColorao();
    oMenu.init(null,null,null,"tab_menu");
    
    //genero contenidos
    for(var i=0;i<d.arrVideos.length;i++){
        oContent = d.arrVideos[i];
	    oMenu.addItem(new MenuColorao().init(oContent.titulo , getExtract(oContent.descripcion) , 'javascript:verVideo('+i+')')); 
    }
 
 
 	//Muestro todos los procesos y disparo el primer elemento
	oMenu.autoClick = true;
	oMenu.initMenu();    
 
    
}


mostrarEnlaces = function(){
    var d = document;
    
    //!º vez, recorro capa videos y genero objeto.
    if(!d.arrEnlaces){
        d.arrEnlaces = new Array();
        
        //Busco la capa de videos y monto array con contenidos
        var oDiv = document.getElementById('div_enlaces');
        var oUl = oDiv.getElementsByTagName('ul')[0];
        var arrContents = oUl.getElementsByTagName('li');

        for(var i=0;i<arrContents.length;i++){
            var oContent  = arrContents[i];
            var obj = {};
            obj.titulo = oContent.getElementsByTagName('h3')[0].innerHTML;
            obj.descripcion = oContent.getElementsByTagName('p')[0].innerHTML;
            obj.link = oContent.getElementsByTagName('a')[0].href;
            d.arrEnlaces.push(obj);
        }
    }


    var oMenu = new MenuColorao();
    oMenu.init(null,null,null,"tab_menu");
    var d = document;
    
    //genero contenidos
    for(var i=0;i<d.arrEnlaces.length;i++){
        var oContent = d.arrEnlaces[i];
	    oMenu.addItem(new MenuColorao().init(oContent.titulo , getExtract(oContent.descripcion) , 'javascript:verEnlace('+i+')')); 
    }
 
 
 	//Muestro todos los procesos y disparo el primer elemento
	oMenu.autoClick = true;
	oMenu.initMenu(); 
	

}


//
mostrarDescargas = function(){
    var d = document;
    
    //!º vez, recorro capa videos y genero objeto.
    if(!d.arrDescargas){
        d.arrDescargas = new Array();
        
        //Busco la capa de videos y monto array con contenidos
        var oDiv = document.getElementById('div_descargas');
        var oUl = oDiv.getElementsByTagName('ul')[0];
        var arrContents = oUl.getElementsByTagName('li');

        for(var i=0;i<arrContents.length;i++){
            var oContent  = arrContents[i];
            var obj = {};
            obj.titulo = oContent.getElementsByTagName('h3')[0].innerHTML;
            obj.descripcion = oContent.getElementsByTagName('p')[0].innerHTML;
            obj.link = oContent.getElementsByTagName('a')[0].href;
            d.arrDescargas.push(obj);
        }
    }
    

    var oMenu = new MenuColorao();
    oMenu.init(null,null,null,"tab_menu");
    
    //genero contenidos
    for(var i=0;i<d.arrDescargas.length;i++){
        var oContent = d.arrDescargas[i];
	    oMenu.addItem(new MenuColorao().init(oContent.titulo , getExtract(oContent.descripcion) , 'javascript:verDescarga('+i+')')); 
    }
 
 
 	//Muestro todos los procesos y disparo el primer elemento
	oMenu.autoClick = true;
	oMenu.initMenu(); 


}





mostrarImagenes = function(){
    var d = document;
    
    //!º vez, recorro capa videos y genero objeto.
    if(!d.arrImagenes){
        d.arrImagenes = new Array();
        
        //Busco la capa de videos y monto array con contenidos
        var oDiv = document.getElementById('div_imagenes');
        var oUl = oDiv.getElementsByTagName('ul')[0];
        var arrContents = oUl.getElementsByTagName('li');

        for(var i=0;i<arrContents.length;i++){
            var oContent  = arrContents[i];
            var obj = {};
            obj.titulo = oContent.getElementsByTagName('h3')[0].innerHTML;
            obj.descripcion = oContent.getElementsByTagName('p')[0].innerHTML;
            obj.src = oContent.getElementsByTagName('a')[0].href;
            d.arrImagenes.push(obj);
        }
    }
    
    var oMenu = new MenuColorao();
    oMenu.init(null,null,null,"tab_menu");
    var d = document;
    
    //genero contenidos
    for(var i=0;i<d.arrImagenes.length;i++){
        var oContent = d.arrImagenes[i];
	    oMenu.addItem(new MenuColorao().init(oContent.titulo , getExtract(oContent.descripcion) , 'javascript:verImagen('+i+')')); 
    }
 
 
 	//Muestro todos los procesos y disparo el primer elemento
	oMenu.autoClick = true;
	oMenu.initMenu();    
}







///////////////////////////////////   BUSQUEDA   //////////////////////////////////////////

//Tras buscar un query, localizo los textos y cambio el estilo de las parablas coincidentes.
colorearResultados = function(query){
	
	
	//Localizo capa contenidos y monto un array con los parrafos.	
	var oDiv = document.getElementById('div_contenido');
	var arrParrafos = oDiv.getElementsByTagName('p');
	
	//Para cada parrafo ....
	for(var i=0;i<arrParrafos.length;i++){
	
		//Localizo parrafo y texto
		var oParrafo = arrParrafos[i];
		var sTexto = oParrafo.innerHTML;
		
		//sustituyo palabra buscada la misma pero en naranja		
		var newJoin = '<span class="orange"><u>'+query+'</u></span>';
		var arrTramos = sTexto.split(query);
		sTexto = arrTramos.join(newJoin);
		
		//reemplazo el texto con la cadena cambiada.
		oParrafo.innerHTML = sTexto;
	}
}





//////////////////////////////////////////   VALIDACIONES  ///////////////////////////////////


validateReply = function(oForm){
	var cssError = 'form_error';
    var oCampo = oForm.comment;
    if(oCampo.value=="") return setFormError(oCampo,getTranslation('ERR_EMPTY_FIELD') , cssError);
    
}

validateCharacter = function(oValue){
//	var validas = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
//	for(var i=0;i<oValue.length;i++) if(!contain(validas , oValue.charAt(i))) return setFormError(oCampo,getTranslation('ERR_EMPTY_QUERY') , cssError);

	var invalidas = '"$%&/()?�:;,.<>*-+={}[]|@#';
	for(var i=0;i<invalidas.length;i++) if(contain(oValue , invalidas.charAt(i))) return false;
	return true;
}


//Valida el fiormulario de busqueda
function validateSearchForm(oForm){

	//
	var oCampo;
	var oValue;
	var cssError = 'form_error';
	
	///Valido query
	oCampo = oForm.query;
	oValue = trim(oCampo.value);
	oCampo.value = oValue;
	
	if(!hasValue(oValue) || oValue.length<3) return setFormError(oCampo,getTranslation('ERR_EMPTY_QUERY') , cssError);
	if(!validateCharacter(oValue)) return setFormError(oCampo,getTranslation('ERR_EMPTY_QUERY') , cssError);

	return true;
}


//Valida el fiormulario de autenticacion
function validateAutenticationForm(oForm){
	
	//
	var oCampo;
	var oValue;
	var cssError = 'form_error';
	
	///Valido email
	oCampo = oForm.email;
	oValue = trim(oCampo.value);
	oCampo.value = oValue;
	if(!hasValue(oValue)) return setFormError(oCampo,getTranslation('ERR_EMPTY_FIELD') , cssError);
	if(!isEmail(oValue)) return setFormError(oCampo,getTranslation('ERR_EMAIL_INVALID') , cssError);

	///Valido clave
	oCampo = oForm.clave;
	oValue = trim(oCampo.value);
	oCampo.value = oValue;
	if(!hasValue(oValue)) return setFormError(oCampo,getTranslation('ERR_EMPTY_FIELD') , cssError);
	if(oValue.length<6 ||oValue.length>8) return setFormError(oCampo,getTranslation('ERR_PASS_INVALID') , cssError);

	return true;

}




//Valida el fiormulario de recordar clave
function validateRememberPassForm(oForm){
	
	//
	var oCampo;
	var oValue;
	var cssError = 'form_error';
	
	///Valido email
	oCampo = oForm.email;
	oValue = trim(oCampo.value);
	oCampo.value = oValue;
	if(!hasValue(oValue)) return setFormError(oCampo,getTranslation('ERR_EMPTY_FIELD') , cssError);
	if(!isEmail(oValue)) return setFormError(oCampo,getTranslation('ERR_EMAIL_INVALID') , cssError);


	return true;

}



//valida el formulario de registro
function validateRegisterForm(oForm){
	
	//
	var oCampo;
	var oValue;
	var cssError = 'form_error';
	
	///Valido nombre
	oCampo = oForm.nombre;
	oValue = trim(oCampo.value);
	oCampo.value = oValue;
	if(!hasValue(oValue)) return setFormError(oCampo,getTranslation('ERR_EMPTY_FIELD') , cssError);

	///Valido apellidos
	oCampo = oForm.apellidos;
	oValue = trim(oCampo.value);
	oCampo.value = oValue;
	if(!hasValue(oValue)) return setFormError(oCampo,getTranslation('ERR_EMPTY_FIELD') , cssError);

	///Valido ciudad
	oCampo = oForm.ciudad;
	oValue = trim(oCampo.value);
	oCampo.value = oValue;
	if(!hasValue(oValue)) return setFormError(oCampo,getTranslation('ERR_EMPTY_FIELD') , cssError);

	///Valido email
	oCampo = oForm.email;
	oValue = trim(oCampo.value);
	oCampo.value = oValue;
	if(!hasValue(oValue)) return setFormError(oCampo,getTranslation('ERR_EMPTY_FIELD') , cssError);
	if(!isEmail(oValue)) return setFormError(oCampo,getTranslation('ERR_EMAIL_INVALID') , cssError);

	///Valido clave
	oCampo = oForm.clave;
	oValue = trim(oCampo.value);
	oCampo.value = oValue;
	if(!hasValue(oValue)) return setFormError(oCampo,getTranslation('ERR_EMPTY_FIELD') , cssError);
	if(oValue.length<6 ||oValue.length>8) return setFormError(oCampo,getTranslation('ERR_PASS_INVALID') , cssError);
	
	if(!validateCharacter(oValue)) return setFormError(oCampo,getTranslation('ERR_PASS_INVALID') , cssError);
//	var validas = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
//	for(var i=0;i<oValue.length;i++) if(!contain(validas , oValue.charAt(i))) return setFormError(oCampo,getTranslation('ERR_PASS_INVALID') , cssError);

	return true;
}




//Valida el fiormulario de los contenidos
function validateAdminContentForm(oForm){
	
	
	//Variables 
	var oCampo;
	var oValue;
	var cssError = 'form_error';

	//recorro todos los elementos del formulario
	var aElements = oForm.elements;
	
	
	for(var i=0;i<aElements.length;i++){
		var oCampo = aElements[i];
		oValue = trim(oCampo.value);
		oCampo.value = oValue;


		//valido los obligatorios
		if(oCampo.getAttribute('required')){
		
			//Valido vacio ....
			if(!hasValue(oValue)) return setFormError(oCampo,getTranslation('ERR_EMPTY_FIELD') , cssError);
			
			//Email o traductor, valido email
			if(oCampo.id=="email" || oCampo.id=="traductor" )
			if(!isEmail(oValue)) return setFormError(oCampo,getTranslation('ERR_EMAIL_INVALID') , cssError);
			
			
		}
	}

	
	//Todo OK
	return true;
}



