var listaMenus = [];

if(!Array.indexOf){
    Array.prototype.indexOf = function(obj, start){
        for(var i=(start||0); i<this.length; i++){
            if(this[i]==obj){
                return i;
            }
        }

        return -1;
    }
}
function ReadFileSync(sUri) {
   var async = false;
sUri = sUri.replace("//","/");
   try {

     var xmlHttp = XmlHttp.create();

     xmlHttp.open("GET", sUri, async);

   } catch (ex) {

     alert('Descripción: ' + ex.description
        //+ ' Línea ' + ex.number
        //+ ' Mensaje: ' + e.message
        );
   };

   xmlHttp.send(null);
   return xmlHttp.responseText;
}

function SendFormAsXMLHTTP(form, returnString) {
   var async = false;

   try {

     var xmlHttp = XmlHttp.create();

     sUri = form.action;

	 //según la documentación el url debe ser absoluto
	 //FireFox completa el action de los forms en caso de ser ruta relativa, IE no,
	 //por lo tanto es necesario completar
     if (sUri.toUpperCase().indexOf('HTTP://') == -1) {
     	sUri = location.protocol + '//' + location.host + sUri;
	 	alert(sUri);
	}

     xmlHttp.open(form.method, sUri, async);

   } catch (ex) {

     alert('Descripción: ' + ex.description
        //+ ' Línea ' + ex.number
        //+ ' Mensaje: ' + e.message
        );
   };

   xmlHttp.send(buildQueryString(form));
   //return xmlHttp.responseText;

   if (returnString)
     return returnString;
   else
     form.innerHTML = xmlHttp.responseText;
}

var listaLinks = [];


function copyArray(oldArray) {
	var newArray = [];

	for (var j=0; j<oldArray.length; j++)
		newArray[ newArray.length ] = oldArray[j];

	return newArray;

}


function copyArray(oldArray, skipDuplicates) {

	if (isUndefined(skipDuplicates))
	  skipDuplicates = false;


	var newArray = [];

	for (var j=0; j<oldArray.length; j++)
	  if (skipDuplicates) {
	    //ver si ya estaba
	    if (newArray.indexOf(oldArray[j]) == -1 )
	       newArray[ newArray.length ] = oldArray[j];
	  }
	  else
	    newArray[ newArray.length ] = oldArray[j];

	return newArray;

}


var _hermesShowAlert = true;

function alertAndSkip(s) {
	if (_hermesShowAlert)
		_hermesShowAlert = confirm(s,s);
}




var lastURLincluded = "";
function ReplaceLinksWithContent() {
    try {
		var links  = copyArray( document.getElementsByTagName("a") ); //obtener un array que no se modifique
		var links2 = copyArray( document.getElementsByName("HERMES_INCLUDES") );

		links = links.concat( links2 );
		links = copyArray(links , true); //para quitar los repetidos

		var E = null;
		var ext = null;

		var urlToLoad;
		var href;

		for (var i = 0; i < links.length; i++) {
		//for (var i = links.length-1; i > -1; i--) {

			if (links[i].alt){ //si era imagen
				href = links[i].alt;
				//links[i].style.display = "none";
			}
			else if(links[i].title.indexOf("|") == 0 || links[i].title.indexOf(escape("|")) == 0){
				href = links[i].title;
			}
			else {
				href = links[i].href;
			}

			currentPath =  location.protocol+"//"+location.host;
			currentPath += location.pathname.reverse().replace(/^.*?\//,"/").reverse();
			href = href.replace(currentPath,"");
			if (href.indexOf("|") == 0 || href.indexOf(escape("|")) == 0) {
				E = links[i];

				while ((E.tagName!="TD") && (E.tagName!="DIV")) {
					//alertAndSkip( 'E.tagName:' + E.tagName +  '\n E.innerHTML:' + E.innerHTML );
					E = E.parentNode;
				}

				urlToLoad = href.substring(href.indexOf("|")+1,href.length);
				urlToLoad = urlToLoad.replace(escape("|"),"");


				if (urlToLoad.indexOf(escape("|")) > 0)
					urlToLoad = href.substring(href.indexOf(escape("|"))+3,href.length);

				ext = GetValueFromQueryString(urlToLoad, 'ext');

				if (ext != null) {
					if (listaLinks[ ext ] == null)
						listaLinks[ ext ] = [];

					listaLinks[ ext ][ listaLinks[ ext ].length ] = urlToLoad;
				}
                		lastURLincluded = urlToLoad;
				var content = ReadFileSync(urlToLoad);
				BaseHTTP = new String;
				BaseHTTP = href.replace("|","")
				BaseHTTP = BaseHTTP.replace(/\/\//g,"/");
				BaseHTTP = (BaseHTTP.match(/^.*\//));
				content = content.replace(/{\$BaseHTTP}/g,BaseHTTP);


				E.innerHTML = "";
				var resultDiv = document.createElement('div');
				resultDiv.innerHTML = content;

				E.appendChild(resultDiv);


				// saca todos los scripst y los pone en el head
				var dummyDiv = document.createElement('body');
				dummyDiv.innerHTML = content;


				var scripts = dummyDiv.getElementsByTagName("script");
				var styles = dummyDiv.getElementsByTagName("style");
				var tagLinks = dummyDiv.getElementsByTagName("link");
				var headID = document.getElementsByTagName("head")[0];
				
				BrowserDetect.init();
				var isFirefox = BrowserDetect.browser.toLowerCase().indexOf("firefox") != -1;
				if ((!isFirefox) || (BrowserDetect.version >= 4)) 
				{
					for (var k=0; k < scripts.length; k++)
					{
						var myScript = document.createElement('script');
						if (scripts[k].text){
							myScript.text = scripts[k].text;
						}
						else {
							myScript.src = scripts[k].src;	
						}
						headID.appendChild(myScript);
						//alert(myScript.text);
						
					}
				}


				for (var k=0; k < styles.length; k++)
				{
					var myStyle = document.createElement('style');
					if (styles[k].text){
						myStyle.text = styles[k].text;
						headID.appendChild(myStyle);
					}
				}

				for (var k=0; k < tagLinks.length; k++)
				{
					if (tagLinks[k].rel == "stylesheet"){
						var myLink = document.createElement('link');
						myLink.href = tagLinks[k].href;
						myLink.rel = tagLinks[k].rel;
						myLink.type = tagLinks[k].type;
						headID.appendChild(myLink);
					}
				}



/*

				E.innerHTML = "";
				var resultDiv = document.createElement('div');
				resultDiv.innerHTML = content;

				E.appendChild(resultDiv);
*/				
				//alert( urlToLoad );
				//alert(E.innerHTML);
			}
		}

		ProcessPlayers();
    } catch (e) {
    	alert(e);
    }
}



function ProcessSWGPlayer() {
	var swfs = copyArray(document.getElementsByName("unSWF"));

	var cualUrl;
	var w;
	var h;
	var urls = [];
	var ids = [];
	var ws = [];
	var hs = [];
	for (var j=0; j<swfs.length; j++) {

		cualUrl = GetValueFromQueryString(listaLinks['swf'][j], 'url');
		w = GetValueFromQueryString(listaLinks['swf'][j], 'w');
		h = GetValueFromQueryString(listaLinks['swf'][j], 'h');

		swfs[j].id = swfs[j].id + j;
		var divId=swfs[j].id;

		if (typeof(swfobject_version)=="undefined"){
			swfobject_version = null;
		}
		switch(swfobject_version){
			case("2.0"):
				if (swfobject.hasFlashPlayerVersion("8.0.0")) {
					urls[j] = cualUrl;
					ids[j] = divId;
					hs[j] = h;
					ws[j]= w;
				}
				break;
			default:
				var cualSWF = new SWFObject(cualUrl, swfs[j].id, w, h, "8", "#ffffff");
				cualSWF.addParam("wmode", "opaque");
				cualSWF.write(swfs[j].id);
				break;
		}

		//alert('swfs.length al final=' + swfs.length);
		//alert(swfsOriginal.length);
	}

	if (urls.length > 0){
		var func = function() {
				var attributes = {};
				var params = {};
				params.menu="false";
				params.wmode="opaque";
				var id = divId;

				for (l=0;l<urls.length;l++){
					attributes.data = urls[l];
					attributes.width= ws[l];
					attributes.height= hs[l];
					swfobject.createSWF(attributes, params, ids[l]);
					}
				};
		swfobject.addDomLoadEvent(func);
	}

}



function ProcessYouTubePlayer() {
	var youtubes = copyArray(document.getElementsByName("unYouTube"));
	var cualUrl;
	var w;
	var h;
	var tmp;
	var urls = [];
	var ids = [];
	for (var j=0; j<youtubes.length; j++) {
		cualUrl = GetValueFromQueryString(listaLinks['youtube'][j], 'url');
		cualUrl = 'http://www.youtube.com/v/' + cualUrl;

		youtubes[j].id = youtubes[j].id + j;
		var DivID = youtubes[j].id;

		if (typeof(swfobject_version)=="undefined"){
					swfobject_version = null;
		}


		switch(swfobject_version){
			case("2.0"):
				if (swfobject.hasFlashPlayerVersion("8.0.0")) {
					urls[j] = cualUrl;
					ids[j] = DivID;
				}
				break;
			default:
				var cualswf = new SWFObject(cualUrl,DivID, '425', '355', "7", "#ffffff");
				cualswf.addParam("movie",cualUrl);
				cualswf.addParam("wmode","transparent");
				cualswf.write(DivID);
		}
	}
	if (urls.length > 0){
		var func = function() {
				var attributes = {};
				attributes.width= '425';
				attributes.height= '355';
				var params = {};
				params.menu="false";
				params.wmode="transparent";
				for (l=0;l<urls.length;l++){
					attributes.data = urls[l];
					params.movie = urls[l];
					swfobject.createSWF(attributes, params, ids[l]);
				}
			};
		swfobject.addDomLoadEvent(func);
	}
}



function ProcessIMGPlayer() {
	var imgs = copyArray(document.getElementsByName("unIMG"));
	var cualUrl;
	var alt;

	for (var j=0; j<imgs.length; j++) {

		cualUrl = GetValueFromQueryString(listaLinks['img'][j], 'url');
		alt = GetValueFromQueryString(listaLinks['img'][j], 'alt');

		imgs[j].id = imgs[j].id + j;

		imgs[j].src = cualUrl;
		
		imgs[j].alt = alt;		
		
		imgs[j].title = alt;		

	}
}

function ProcessVIDEOPlayer() {
	var elems = copyArray(document.getElementsByName("unVIDEO"));
	var elemsDIV = copyArray(document.getElementsByName("unVIDEODIV"));
	var cualUrl;
	var w;
	var h;

	for (var j=0; j<elems.length; j++) {

		cualUrl = GetValueFromQueryString(listaLinks['video'][j], 'url');
		w = GetValueFromQueryString(listaLinks['video'][j], 'w');
		h = GetValueFromQueryString(listaLinks['video'][j], 'h');


		elems[j].id = elems[j].id + j;
		elemsDIV[j].id = elemsDIV[j].id + j;

		elems[j].src = cualUrl;

		if (h==0){
			elems[j].height = 240;
			//alert('h usando valores default');
		}else{
			elems[j].height = h;
		}

		if(w==0){
			elems[j].width = 320;
			//alert('w usando valores default');
		}else{
			elems[j].width = w;
		}


		elemsDIV[j].innerHTML = elemsDIV[j].innerHTML;  //truco para firefox
	}
}

function ProcessGoogleMapsPlayer() {
	var elems = copyArray(document.getElementsByName("unGOOGLEMAP"));
	var cualUrl;
	var latitude;
	var longitude;
	var siteUrl;
	for (var j=0; j<elems.length; j++) {
		cualUrl = GetValueFromQueryString(listaLinks['googlemaps'][j], 'url');
		latitude = GetValueFromQueryString(listaLinks['googlemaps'][j], 'latitude');
		longitude = GetValueFromQueryString(listaLinks['googlemaps'][j], 'longitude');
		siteUrl = GetValueFromQueryString(listaLinks['googlemaps'][j], 'siteUrl');
		elems[j].id = elems[j].id + j;
		elems[j].innerHTML = elems[j].innerHTML;  //truco para firefox
		loadMap(elems[j].id,siteUrl+cualUrl,latitude,longitude);
	}
}

function ProcessImagenZoomPlayer() {
	
	    	var cualUrl;
		var thumbnailUrl;
		var link;
		var thumbnail;
		var currentDiv;
		var title;
		var descripcion;
	var elems = copyArray(document.getElementsByName("unimagenzoom"));
	var thumbs = copyArray(document.getElementsByName("unthumbnail1"));
	var links = copyArray(document.getElementsByName("zoom1"));
	if (elems.length>0){
         jQuery(document).ready(function () {
	    
	        jQuery('.cloud-zoom, .cloud-zoom-gallery').CloudZoom(
	     {
	        zoomWidth: "400",
	        zoomHeight: "400",
	        position: 'left',
	        tint: false,
	        tintOpacity: 0.1,
	        lensOpacity: 0.9,
	        softFocus: false,
	        smoothMove: 3,
	        showTitle: true,
	        titleOpacity: 0.5,
	        adjustX: 0,
	        adjustY: 0
	    }
	        
	        
	        );
	 
	 
       });	
    
        for (var j=0; j<elems.length; j++) {
			cualUrl = GetValueFromQueryString(listaLinks['imagenzoom'][j], 'url');
			thumbnailUrl = GetValueFromQueryString(listaLinks['imagenzoom'][j], 'thumb');	
			title = GetValueFromQueryString(listaLinks['imagenzoom'][j], 'title');	
			descripcion = GetValueFromQueryString(listaLinks['imagenzoom'][j], 'descripcion');	
			elems[j].id = elems[j].id + j;
			thumbs[j].id = thumbs[j].id + j; 
			thumbs[j].src = thumbnailUrl;
			links[j].id = links[j].id + j;
			links[j].href = cualUrl;
			thumbs[j].title = title;
			thumbs[j].alt = descripcion;			
	}
   }
	
}

function ProcessSliderPlayer() {
	var sliders = copyArray(document.getElementsByName("slider"));
	var cualUrl;
        
        var idslider;
        var width=0;
        var height=0;
        var miniatura;
        var pausa;
        var titulos;
        var opacidad;
        var navegacion;
        var tiempo_pausa;
        var min_size=0;
        
        if (sliders.length>0){         
   	jQuery('.galleryview').hide(); 
        for (var j=0; j<sliders.length; j++) {              
	                
	        sliders[j].id = sliders[j].id + j;
		idslider='#'+sliders[j].id;
                width = GetValueFromQueryString(listaLinks['slider'][j], 'w');
                height = GetValueFromQueryString(listaLinks['slider'][j], 'h');
                miniatura = GetValueFromQueryString(listaLinks['slider'][j], 'miniatura');
                pausa = GetValueFromQueryString(listaLinks['slider'][j], 'pausa');
                titulos = GetValueFromQueryString(listaLinks['slider'][j], 'titulos');
                navegacion = GetValueFromQueryString(listaLinks['slider'][j], 'navega');
                tiempo_pausa = GetValueFromQueryString(listaLinks['slider'][j], 'tiempo');
                width=parseInt(width);
		height=parseInt(height);
		miniatura=parseInt(miniatura);
		pausa=parseInt(pausa);
		titulos=parseInt(titulos);
		navegacion=parseInt(navegacion);
		navegacion=Boolean(navegacion);
		tiempo_pausa= parseInt(tiempo_pausa);
		tiempo_pausa= tiempo_pausa*1000;			
					
              	
              	 jQuery('#botones').hide();
                 
                 if (titulos==1){
                    opacidad=0.9;
                } else {
                  jQuery('.panel-overlay').hide();
                  opacidad=0.0;
                }                        
                
                if (pausa==1){
                jQuery("#start").fadeOut(0);
                } else {
		      
		       jQuery('#botones').hide();
                }              
          	          	
	      	
	      	jQuery(idslider).galleryView({
		           	panel_width: width,
			        panel_height: height,
				frame_width: 100,
				frame_height: 70,
				show_filmstrip: miniatura,
				show_captions:  false,
				overlay_height: 52,
				filmstrip_position: 'bottom',
				overlay_position: 'bottom',
				background_color: 'white',
				nav_theme: 'dark',
				overlay_opacity: opacidad ,
				mostrar_navegacion: navegacion ,
				transition_interval: tiempo_pausa,
				titulos: titulos
																      				
		});	
		
		
	      
	     
	                 
	   
			 	
	      	
	} 
		
	} 		
}

function ProcessMP3PLAYER() {
var elems = copyArray(document.getElementsByName("unMP3PLAYER"));
	var elemsDIV = copyArray(document.getElementsByName("unMP3PLAYERDIV"));
	var cualUrl;
	var w;
	var h;
	var pathplayer='/js_srv/playermp3.swf?mp3=';
	var flashvars;
	var params;
	var attributes;

	for (var j=0; j<elems.length; j++) {

		cualUrl = GetValueFromQueryString(listaLinks['audiomp3'][j], 'url');
		
		elems[j].id = elems[j].id + j;
		elemsDIV[j].id = elemsDIV[j].id + j;

		elems[j].data = pathplayer+cualUrl;		

		elemsDIV[j].innerHTML = elemsDIV[j].innerHTML;  //truco para firefox
		
                flashvars = { mp3: cualUrl };
	       	params = { wmode: "transparent"  };
	       	attributes = { id: elems[j].id	};
               
                swfobject.embedSWF("/js_srv/playermp3.swf", elemsDIV[j].id, "200", "20", "9.0.0", false, flashvars, params, attributes);
	}

}

function ProcessFLVPlayer() {
	var flvs = copyArray(document.getElementsByName("unFLV"));

	var cualUrl;
	var w;
	var h;
	var urls = [];
	var ids = [];
	for (var j=0; j<flvs.length; j++) {

		cualUrl = GetValueFromQueryString(listaLinks['flv'][j], 'url');
		w = 320;
		h = 240;
		flvs[j].id = flvs[j].id + j;
		var flv_id = flvs[j].id;
		if (typeof(swfobject_version)=="undefined"){
			swfobject_version = null;
		}

		switch(swfobject_version){
			case("2.0"):
				if (swfobject.hasFlashPlayerVersion("8.0.0")) {
					urls[j] =  cualUrl;
					ids[j] =  flv_id;
				}
				break;
			default:
				var cualFLV = new SWFObject("/js_srv/flvplayer.swf", flvs[j].id, w, h, "7", "#ffffff");
				cualFLV.addParam("allowfullscreen","true");
		//		cualFLV.addParam("wmode", "opaque");
				cualFLV.addVariable("file",cualUrl);
				cualFLV.write(flvs[j].id);
				break;
		}
	}

	if (urls.length > 0){
		var func = function() {
			var attributes = {};
			attributes.data = "/js_srv/flvplayer.swf";
			attributes.width= w;
			attributes.height= h;
			var params = {};
			params.menu="false";
			params.allowfullscreen="true";
			for (l=0;l<urls.length;l++){
				params.flashvars = "file="+ urls[l];
				swfobject.createSWF(attributes, params, ids[l]);
			}

			};
		swfobject.addDomLoadEvent(func);
	}
}

function ProcessMENUPlayer(){
	var divs = copyArray(document.getElementsByName("unMENU"));
	var content ="";
	var useXSL=false;
	var menuEXT='.js';


	for (var j=0; j<divs.length; j++) {
		cualUrl = GetValueFromQueryString(listaLinks['menu'][j], 'url');
		try{
			useXSL  = GetValueFromQueryString(listaLinks['menu'][j], 'useXSL').toUpperCase() == 'TRUE';		
			menuEXT  = GetValueFromQueryString(listaLinks['menu'][j], 'menuEXT');		
		}catch(e){/*alert(e);*/}
		cualUrl = '/js/' +  cualUrl + menuEXT;
		if (useXSL){ 
				content = ReadFileSync(cualUrl);
				divs[j].innerHTML = content;
				divs[j].className = "HASMenuInclude"
				divs[j].id = divs[j].id + j;
		}
	}
}


function ProcessRSSPlayer() {
	var divs = copyArray(document.getElementsByName("unRSSPlayer"));
	var cualUrl;
	var externo;
	var rssUrl;

	var head = document.getElementsByTagName('head')[0];

	
	for (var j=0; j<divs.length; j++) {
		cualUrl = GetValueFromQueryString(listaLinks['rssplayer'][j], 'url');
		externo = GetValueFromQueryString(listaLinks['rssplayer'][j], 'externo');
		divs[j].id = divs[j].id + j;
		divs[j].src = cualUrl;
		divs[j].name = divs[j].id;
		
		
		
		if (externo == '1'){
			rssUrl = cualUrl;
		}else{
			rssUrl = 'http://' + location.host;
			rssUrl += cualUrl;
		}
		
		newscript = document.createElement('script');
		newscript.text = 'jQuery(document).ready(function (){ jQuery("#'+ divs[j].id+'").rssfeed("'+rssUrl+'",{header:false,date:false});});';
		head.appendChild(newscript);
	}
}

function ProcessPlaylistPlayer() {
	var divs = copyArray(document.getElementsByName("playlist"));
	var cualUrl;
	var rssUrl;
	var items;
	var player;
	var interface;
	var playlist;
	for (var j=0; j<divs.length; j++) {
		cualUrl = GetValueFromQueryString(listaLinks['playlist'][j], 'url');
		divs[j].id = "playlsit" + j;
		visiblePlaylist = GetValueFromQueryString(listaLinks['playlist'][j], 'playlist');
		items = ReadPodcast(cualUrl);
		
		player = getElementsByClassName(divs[j], "div", "jp-jplayer")[0];
		player.id = "jquery_jplayer_" + j;
		interface = getElementsByClassName(divs[j], "div", "jp-interface")[0];
		interface.id = "jp_interface_" + j;
		playlist = getElementsByClassName(divs[j], "div", "jp-playlist")[0];
		playlist.id = "jp_playlist_" + j;
		
		if (visiblePlaylist != '1'){
			playlist.className = "jpHide";
		}
		divs[j].className = items[2];
		Podcast(j, items[0], items[1]);
	}
}



function ProcessListadoPorCategoria() {
	var divs = copyArray(document.getElementsByName("unListadoPorCategoria"));
	var rssUrl;
	for (var j=0; j<divs.length; j++) {
		rssUrl  =  GetValueFromQueryString(listaLinks['listadoporcategoria'][j], 'url');
		rssUrl += 'App_HttpHandlers/rsscategoriasxpagina.ashx';
		rssUrl += '?orderBy='    + GetValueFromQueryString(listaLinks['listadoporcategoria'][j], 'orderBy');
		rssUrl += '&orderType='  + GetValueFromQueryString(listaLinks['listadoporcategoria'][j], 'orderType');
		rssUrl += '&numResults=' + GetValueFromQueryString(listaLinks['listadoporcategoria'][j], 'numResults');
		rssUrl += '&filesType='  + GetValueFromQueryString(listaLinks['listadoporcategoria'][j], 'filesType');
		rssUrl += '&CATEGORIAS='  + GetValueFromQueryString(listaLinks['listadoporcategoria'][j], 'CATEGORIAS');
		divs[j].id += j;
		
		//alert(rssUrl);
		
		
		var xml = loadXMLDoc(rssUrl,'GET');
		var xsl = loadXMLDoc('/js_srv/xsl/listadoPorCategoria.xsl','GET');
		transform(xml, xsl, divs[j].id);
	}
}


//buscar en el DOM actualizado luego de ReplaceLinksWithContent() elementos que deban desplegarse en un player
function ProcessPlayers() {
	ProcessSWGPlayer();
	ProcessIMGPlayer();
	ProcessVIDEOPlayer();
	ProcessYouTubePlayer();
	ProcessFLVPlayer();
	ProcessMENUPlayer();
	ProcessGoogleMapsPlayer();
	ProcessImagenZoomPlayer();
	ProcessSliderPlayer();
	ProcessMP3PLAYER();
	ProcessRSSPlayer();
	ProcessPlaylistPlayer();
	ProcessListadoPorCategoria();
}


function GetValueFromQueryString(queryString, sParam) {

    var sKey = sParam + "=";

    //var myregexp = new RegExp(regexstring, "gims").

    //var oParams = queryString.split("?")[1].split("&");
    var oParams = queryString.split("?");
    oParams = oParams[oParams.length-1].split("&");

    for(var i = 0; i < oParams.length; i++)
        if(oParams[i].indexOf(sKey) == 0)
            return oParams[i].substring(sKey.length);
    return null;
};


function TravelDOM(elem, actionFunction) {
	if (elem.childNodes) {
		for (var i=0; i < elem.childNodes.length; i++) {
			TravelDOM(elem.childNodes[i], actionFunction);
		}
	}
	actionFunction( elem )
}

function TravelCollection(collection, actionFunction) {
	if (collection) {
		//el recorrido se hace inverso pues si el "actionFunction" elimina elementos la colección también se acorta
		for (var i=collection.length-1; i >= 0; i--) {
			actionFunction( collection[i] )
		}
	}
}

function FindElementWithAttributeValue(elems, attName, attValue) {

	for (var i=0; i<elems.length; i++) {
		attribs = elems[i].attributes;

		for (var j=0; j < attribs.length; j++) {

			//alert('name:' + attribs[j].nodeName + ', value=' + attribs[j].nodeValue);

			if (attribs[j].nodeName == attName && attribs[j].nodeValue == attValue)
				return elems[i];
		}
	}

	return null;
}

function FindElementsWithAttributeValue(elems, attName, attValue, parcial) {
	var returnElems = [];

	if (isUndefined(parcial))
	  parcial = false;

	for (var i=0; i<elems.length; i++) {
		attribs = elems[i].attributes;
		//alert('name:' + attribs[i].nodeName + ', value=' + attribs[i].nodeValue);

		for (var j=0; j < attribs.length; j++)
			if (attribs[j].nodeName == attName) {

				if (!parcial && attribs[j].nodeValue == attValue)
					returnElems[returnElems.length] = elems[i];
				else
				  if (parcial && attribs[j].nodeValue.indexOf(attValue) != -1) //==0
				    	returnElems[returnElems.length] = elems[i];
			}
	}


	return returnElems;
}

function RemoveAttributes(elems, attName)
{

	for (var i = 0; i < elems.length; i++) {

		elems[i].removeAttribute(attName);

	}

}

function buildQueryString(theForm) {
  var qs = ''
  for (e=0;e<theForm.elements.length;e++) {
    if (theForm.elements[e].name!='') {
      qs+=(qs=='')?'?':'&'
      qs+=theForm.elements[e].name+'='+escape(theForm.elements[e].value)
      }
    }
  return qs
}

/*
function CambiarImage(cual) {
	var img = document.getElementById("destino");
	if (img != null){
		img.src = cual;
	}
}

function AlterarHRefs() {
	var imgLinks = document.getElementsByTagName('A');
	var actual;

	for (var i=0; i<imgLinks.length; i++) {
	  actual = imgLinks[i].href.toUpperCase();
	  if (actual.lastIndexOf('.JPG') > 0 || actual.lastIndexOf('.GIF') > 0 || actual.lastIndexOf('.PNG') > 0)
		  imgLinks[i].href = "javascript:CambiarImage('" + actual + "')";

	 }
}*/


function AutoFitIframe(iFrameObj) {
	try {
		//alert('antes de resize');
		iFrameObj.height = iFrameObj.contentWindow.document.body.scrollHeight + 40;
		//alert('despues de resize');
	}
	catch(e)
	   {
		//alert(e);
		iFrameObj.height = 800;
	   }
}



function FixMenuStyle() {

  var tablasConMenu = FindElementsWithAttributeValue(document.getElementsByTagName("table"), 'class', 'topMenu', true); //apy0m0TB
  var tds;
  var tablas;

  for (var t=0; t < tablasConMenu.length; t++) {

    tds = tablasConMenu[t].getElementsByTagName("td");
    tablas = tablasConMenu[t].getElementsByTagName("table");

    RemoveAttributes(tds, "style");
    RemoveAttributes(tds, "cellpadding");
    RemoveAttributes(tds, "cellspacing");

    RemoveAttributes(tablas, "cellpadding");
    RemoveAttributes(tablas, "cellspacing");
  }
}

//nuevas funciones incluidas en el objecto HASObject

if(typeof HASObject=="undefined"){var HASObject=new Object();}

HASObject.FormMailForm = null;

HASObject.GetElementValue = function(obj) {
	var resultado = null;

	//alert( 'GetElementValue obj.type=' + obj.type );
	//alert( 'GetElementValue obj.length=' + obj.length );

	if (obj == null)
		alert('GetElementValue, obj == null');

	if (isUndefined(obj))
		alert('GetElementValue, obj == undefined');

	if (obj.length != null)
		for ( var i = 0; i < obj.length; i++) {
			resultado = HASObject.GetElementValue( obj[i] );
			if (resultado != null)
				return resultado
		}

	if ( obj.type == 'hidden' || obj.type == 'text' || obj.type == 'password' || obj.type == 'textarea' || obj.type == 'button' || obj.type == 'submit' || obj.type == 'reset' || obj.type == 'file') {
		return obj.value;
	} else if ( obj.type == 'checkbox' || obj.type == 'radio' ) {
		//alert( 'GetElementValue obj.value=' + obj.value );
		if (obj.checked)
			return obj.value;

	} else if ( obj.type == 'select-one' || obj.type == 'select-multiple') {

		//alert(obj.type);

	    for ( var i = 0; i < obj.options.length; i++) {
		  if (obj.options[i].selected) {
		    return obj.options[i].value
		  }
		}
	}

	return null;
}

HASObject.ProcessingMethodCall = function (){
	if (HASObject.FormMailForm != null){
		PrepareFormMail(HASObject.FormMailForm);
	}
}

HASObject.RevisarCamposRequeridos = function () {
	if(typeof __HermesRequeridos=="undefined"){
			HASObject.ProcessingMethodCall();
			return true; //no hay campos requeridos por tanto no hay problema
		}
	var campos = __HermesRequeridos;
	var faltantes = "";
	var elem, elems;
	var focalizado = false;
	var valor = null;
	var displayText = "";



	for (var i=0; i<campos.length ; i++) {
	  elems = document.getElementsByName(campos[i])

	  if (elems.length > 0) //posiblemente un radio
	  	valor = HASObject.GetElementValue(elems);
	  else
		valor = HASObject.GetElementValue(elems[0]);


	 try{
	    if(typeof _HASControlFriendlyDisplayText=="undefined"){
	    	displayText = campos[i];
	    }
	    else{
	    	displayText =  _HASControlFriendlyDisplayText[campos[i]];
	    }
	 }catch(error){
	 	alert(error.message);
	 	displayText = campos[i];
	 }
	 

	  if (valor == null || valor.length == 0 ) {
		faltantes += '\n' +  displayText;

		if (!focalizado) {
		  elems[0].focus();
		  focalizado = true;
		}
	  }
	}


	if (faltantes == ""){
	  HASObject.ProcessingMethodCall();
	  return true;
	  }
	else {
	  alert('Los siguientes datos son requeridos:\n' + faltantes);
	  return false;
	}
}


HASObject.Enmarcar = function() {

	var divs =  FindElementsWithAttributeValue(document.getElementsByTagName('div'), 'class', 'hermes_enmarcar', false);  // document.getElementsByTagName('div');
 	var actual = 0;

 	//alert( divs.length );

 	for (var i=0; i<divs.length; i++) {
	// 	if (divs[i].id.toLowerCase().indexOf("hermes_enmarcar") > -1) {


			var E = divs[i];

			var contenido = E.innerHTML; //salvar el contenido anterior
			E.innerHTML = ReadFileSync('/redondeo.html'); //poner el html de redondeo

			var contenidoRedondeado = document.getElementById("contenidoRedondeado");

			contenidoRedondeado.innerHTML = contenido;  //ubicar dentro del html de redondeo el elemento donde se pone el contenido

			contenidoRedondeado.id = contenidoRedondeado.id + i
	//	}
	}
}


HASObject.ConvertirElementoEnToolTip = function(elem) {
	elem = document.getElementById(elem);
	var texto = elem.innerHTML;

	if (texto.length > 63) {
		var descripcion = texto.substring(0,63) + " ...<br>";

		// celda.innerHTML = descripcion + '<br><a class="info" href="#">[+ info]<span>' + texto + '</span></a>'
		elem.innerHTML = descripcion + '<div align="right"><span class="txt_masinfo" >[<a class="info" href="#" >+ info<span>' + texto + '</span></a>]</span></div>';
	}
 }


HASObject.fileExist = function (fileurl){
	var xmlHttp = XmlHttp.create();
	xmlHttp.open('GET', fileurl, false);
	xmlHttp.send(null);
	return(xmlHttp.status == 200)
}

function encodeHTML(str) {
    var aStr = str.split(''),
    i = aStr.length,
    aRet = [];

    while (--i) {
        var iC = aStr[i].charCodeAt();
        if ( iC > 127 ) {
            aRet.push('&#' + iC + ';');
        } else {
            aRet.push(aStr[i]);
        }
    }
    return aRet.reverse().join('');
}

var hermesFormBodyField = null;
function SaveFormBodyForHAF() {
	var formBody = document.createElement('input');
	var theForm = FindElementsWithAttributeValue(document.forms, 'action', 'RecibirFormulario.aspx', true);
        if (theForm.length > 0) {
	        theForm = theForm[0]; //solo un formulario x page
                formBody.name = 'HERMESFORMBODY';
                formBody.type = 'hidden';
                formBody.value = encodeHTML(theForm.innerHTML);
                theForm.appendChild(formBody);
    	}
}

function HasGalleries(){
	Elements = document.getElementsByName("HERMES_INCLUDES");
	for(i=0;i < Elements.length;i++){
		if (Elements[i].alt.indexOf("/galeria_")>=0)return true;
	}
	return false;
}

function IncludeGalleriesStuff(){
	if (HasGalleries()){
		head =document.getElementsByTagName('head')[0];
		AppendCSSToElement(head,"/css_srv/galeria/lightbox.css");
		AppendCSSToElement(head,"/css_srv/galeria/galeria.css");
		AppendJavascriptToElement(head,"/js_srv/thirdparty/prototype.js");
		AppendJavascriptToElement(head,"/js_srv/thirdparty/scriptaculous.js?load=effects");
		AppendJavascriptToElement(head,"/js_srv/galeria/lightbox.js");	 
	}
}

function AppendJavascriptToElement(element, src){
	var script = document.createElement('script');
	script.type = 'text/javascript';
	script.src = src;
	element.appendChild(script);
}

function AppendCSSToElement(element, src){
	var css   = document.createElement('link');
	css.rel   = 'stylesheet';
	css.href  = src;
	css.type  ="text/css";
	css.media ="screen";
	element.appendChild(css);
}



function HAFRevisarYEnviar()
{
	if (HASObject.RevisarCamposRequeridos()) {
	  SaveFormBodyForHAF();
	  return true;
	}
	return false;
}

function getElementsByClassName(oElm, strTagName, strClassName){
    var arrElements = (strTagName == "*" && document.all)? document.all : oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
    strClassName = strClassName.replace(/\-/g, "\\-");
    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
    var oElement;
    for(var i=0; i<arrElements.length; i++){
	oElement = arrElements[i];
	if(oRegExp.test(oElement.className)){
	    arrReturnElements.push(oElement);
	}
    }
    return (arrReturnElements)
}



// Cross-browser implementation of element.addEventListener()
function addListener(element, type, expression, bubbling){
    bubbling = bubbling || false;
    if(window.addEventListener) { // Standard
        element.addEventListener(type, expression, bubbling);
        return true;
    } else if(window.attachEvent) { // IE
        element.attachEvent('on' + type, expression);
        return true;
    } else return false;
}   


function functionIsDefined(func)
{
	return (typeof(func) == 'function')? true: false;
}

String.prototype.reverse = function(){
		splitext = this.split("");
		revertext = splitext.reverse();
		reversed = revertext.join("");
		return reversed;
}

function SaveFormBodyForHAF(action) {
    if (action == null || action == '') {
        action = 'RecibirFormulario.aspx';
    }
    var theForm = FindElementsWithAttributeValue(document.forms, 'action', action, true);
    if (theForm) {
        theForm = theForm[0]; //solo un formulario x page
        hermesFormBodyField = document.getElementById('HERMESFORMBODY');
        if (hermesFormBodyField == null) {
            hermesFormBodyField = document.createElement('input');
            hermesFormBodyField.name = 'HERMESFORMBODY';
            hermesFormBodyField.type = 'hidden';
            theForm.appendChild(hermesFormBodyField);
        }
        var hapiFormBegin = "<!--HAPI_FORM_BEGIN-->";
        var innerHtml = theForm.innerHTML;
        var pComment = innerHtml.indexOf(hapiFormBegin);
        if (pComment > 0) {
            pComment += hapiFormBegin.length;
            innerHtml = innerHtml.substr(pComment, innerHtml.length - pComment);
        }

        var hapiFormEnd = "<!--HAPI_FORM_END-->";
        var pComment = innerHtml.indexOf(hapiFormEnd);
        if (pComment > 0) {
            innerHtml = innerHtml.substr(0, pComment);
        }
        hermesFormBodyField.value = encodeHTML(innerHtml);
    }
    else {
        alert("No se encontro el form");
    }
}

//esta era la version original de HAS, revisar la compatibibilidad con formularios HAS ahora que la nueva version tiene el parametro action
function SaveFormBodyForHAF2() {
    var formBody = document.createElement('input');
    var theForm = FindElementsWithAttributeValue(document.forms, 'action', 'RecibirFormulario.aspx', true);
    if (theForm.length > 0) {
        theForm = theForm[0]; //solo un formulario x page
        formBody.name = 'HERMESFORMBODY';
        formBody.type = 'hidden';
        formBody.value = encodeHTML(theForm.innerHTML);
        theForm.appendChild(formBody);
    }
}
