var browserType;

if (document.layers) {browserType = "nn4";}
if (document.all) {browserType = "ie";}
if (window.navigator.userAgent.toLowerCase().match("gecko")) {browserType= "gecko";}

function findPosX(obj) {
	var curleft = 0;
	if (obj.offsetParent)	{
		while (obj.offsetParent) {
			curleft += obj.offsetLeft;
			obj = obj.offsetParent;
		}
	}
	else if (obj.x) {curleft += obj.x;}
	return curleft;
}

function findPosY(obj) {
	var curtop = 0;
	if (obj.offsetParent)	{
		while (obj.offsetParent) {
			curtop += obj.offsetTop;
			obj = obj.offsetParent;
		}
	}
	else if (obj.y) {curtop += obj.y;}
	return curtop;
}

function getLayer(name) {
	var	layer; 
	if (browserType == "gecko") {layer = document.getElementById(name);}
	else if (browserType == "ie") {layer = document.all[name];}
	else {layer = document.layers[name];}
  return layer;
}

function getWindowHeight() {
	var windowHeight = 0;
	if (browserType == "gecko") {windowHeight = window.innerHeight;}
	else if (browserType == "ie") {
		if (document.documentElement.clientHeight===0) {
	   	windowHeight = document.body.clientHeight;
	  } else {
	  	windowHeight = document.documentElement.clientHeight;
	  }
	} else {windowHeight = window.innerHeight;}
  return windowHeight;
}

function getYOffset() {
	var yOffset = 0;
	if (browserType == "gecko") {yOffset = window.pageYOffset;}
	else if (browserType == "ie") {yOffset = document.documentElement.scrollTop;}
	else {yOffset = window.pageYOffset;}
  return yOffset;
}

function setYPosition(object, pixels) {
	if (browserType == "gecko") {object.style.top = pixels + "px";}
	else if (browserType == "ie") {object.style.top = pixels + "px";}
	else {object.pixelTop = pixels + "px";}
}

function openPopup(url, nom, width, height) {
	window.open(url, nom, "top=20,left=0,status=no,directories=no,toolbars=no,scrollbars=yes,width="+width+", height="+height+", menuBar=no");
	
	if (!miPopup.opener) {miPopup.opener = self;}
}

function openPopup(url, nom, width, height, resize) {
	if (resize == "true") {
		window.open(url, nom, "top=20,left=0,status=no,directories=no,toolbars=no,scrollbars=yes,width="+width+", height="+height+", menuBar=no, resizable=yes");
	}
	else {
		window.open(url, nom, "top=20,left=0,status=no,directories=no,toolbars=no,scrollbars=yes,width="+width+", height="+height+", menuBar=no");
	}
}

function any() {
	var today = new Date();
	var year = today.getYear();
	if (year < 1000) {year += 1900;}
	return ("" + year + "");
}

function hideLayer(name) {
	getLayer(name).style.visibility = "hidden";
}

function changeColor(name, color) {
  	getLayer(name).style.color = color;
}

function showLayer(name) {
    getLayer(name).style.visibility = "visible";
}

function changeBackgroundImage(name, image) {
  	getLayer(name).style.background = "url("+image+")";
}

function load(name, url) {
	if (browserType == "gecko") {
		document.getElementById(name).src=url;
	} else if (browserType == "ie") {
		eval('document.'+name+'.document.location.href=\''+url+'\'');
	} else {
		eval('document.'+name+'.src=\''+url+'\'');
	}
}

// Canvia l'valor d'una url i fa el salt
function canviToken(token, valor, url) {
	// Variables
	var urlfinal = '';

	// Separem la part de parýtres de la url principal
	var index = url.indexOf('?');
	
	if (index==-1) {
		// No te parýtres, construŕla url final
		urlfinal = url + "?" + token + "=" + valor;

	} else {
		// Si que te variables a la url
		// Mirem si te la variable valor
		if (url.substr(0,index).length==url.length+1) {
			// Nom`tż, construŕla url final
			urlfinal = url + token + "=" + valor;
		} else {
			// Hi ha coses despr`de l'interrogant
			var trobat = false;
			// .dex dintre de stranýsi
			var subindex = 0;
			// La url a la qual ens anirem, li posem l'interrogant
			urlfinal = url.substr(0, index) + "?";
			// url que anem a analitzar (parýtres)
			var stranalisi = url.substr(index+1, url.length);
			// Trossets que anirem agafant (diferents parýtres)
			var strtmp = '';

			while ((subindex!=-1)&&(stranalisi.length!==0)) {
				subindex = stranalisi.indexOf('&');
				if (subindex!==-1) {
					// Hi han m`variables
					strtmp = stranalisi.substr(0, subindex);

					// Escur- l'anýsi
					if (stranalisi.substr(0,subindex).length==stranalisi.length+1) {stranalisi = "";}
					else {stranalisi = stranalisi.substr(subindex+1, stranalisi.length);}

					// Veiem si el que hem agafat `la variable valor
					if (strtmp.substr(0, strtmp.indexOf('=')) == token) {
						// L'hem trobada per>o l'afegim
						trobat=true;
					} else {
						urlfinal+=strtmp;
					}

				} else {
					// Mirem si estý la ýa part, nom`te una variable?
					if (stranalisi.substr(0, stranalisi.indexOf('=')) == token) {
						// L'hem trobada per>o l'afegim
						trobat = true;
					} else {
						urlfinal+=stranalisi;
					}
				}
				
				if (!trobat) {urlfinal+="&";}
				else {trobat = false;}
			}
		}
		urlfinal+=token+"="+valor;
	}
	
	return urlfinal;
}

/**
 * Ensenya una capa o l'amaga (errors)
 **/
function toggle(id) {
    var element = document.getElementById(id);
    if ( element.style.display == "none" ){
        element.style.display = "";
    } else{
        element.style.display = "none";
    }
    var text = document.getElementById(id + "-switch").firstChild;
    if (text.nodeValue == "[show]") {
        text.nodeValue = "[hide]";
    } else {
        text.nodeValue = "[show]";
    }
}

/**
*  Canvi de les capes a mostrar (Espai comunicacio)
**/

var act = 1;
var load_act = 0;

function changeLayer(src_img, name_img, ext_img, ini, end, num) {

  var capa;
  var img;
  
  if (load_act === 0) {
      act = num;
      load_act = 1;
  }
  var capa_seg = 0;
	if (act >= end) {capa_seg = ini;}
	else {capa_seg = act+1;}
	
	var name_lay = "comHome" + act;
  if (browserType == "nn4") {capa = eval("document." + name_lay);}
  if (browserType == "ie") {capa = eval(name_lay + ".style");}
  if (browserType == "gecko") {capa = eval("document." + name_lay);}
  if (document.getElementById) {capa = document.getElementById(name_lay).style;}
	
  capa.display = (browserType == "nn4") ? "hide" : "none" ;
	
	name_lay = "comHome" + capa_seg;
	if (browserType == "nn4") {capa = eval("document." + name_lay);}
  if (browserType == "ie") {capa = eval(name_lay + ".style");}
  if (browserType == "gecko") {capa = eval("document." + name_lay);}
  if (document.getElementById) {capa = document.getElementById(name_lay).style;}
  
	capa.display = (browserType == "nn4") ? "show" : "block" ;
	
	var aux = new Image();
	aux.src = src_img + "/" + name_img + capa_seg + "." + ext_img;
	document.images[name_img].src = aux.src;
	
	act = capa_seg;
}

/**
 * ZONA DINAMICA (PrimeTime)
 **/

var incOpac = 10;
var maxOpac = 90;
var minOpac = 0;

function makeNewObj(_obj, _ndelay, _nspeed, _nomCapa, _iniValue, _finValue, _incOpac, _maxOpac, _minOpac){
  this.ndelay = _ndelay; 
  this.nspeed = _nspeed; 
  this.nomCapa = _nomCapa; 
  this.iniValue = _iniValue; 
  this.finValue = _finValue; 
  this.incOpac = _incOpac; 
  this.maxOpac = _maxOpac; 
  this.minOpac = _minOpac;

	this.obj = _obj + "Object"; 	
	eval(this.obj + "=this");
	return this;
}

function genRandom(low,hight){
    var numP = hight - low + 1;
    var aleat = Math.random() * numP;
    var aleat = Math.floor(aleat);
    return parseInt(low, 10) + aleat;
}

function fadeInit(_timeStatic, _timeEfect, _nomCapa, _iniValue, _finValue, _randIni, _efecIni) {
	var ofade = makeNewObj('ofade', _timeStatic, _timeEfect, _nomCapa, _iniValue, _finValue, incOpac, maxOpac, minOpac);
	
	var ini = 0;
	if (_randIni == 1) { ini = genRandom(_iniValue,_finValue); }
	else { ini = _iniValue; }
	
	if (_efecIni === 0) {
		var capa;
		var name_lay = _nomCapa + ini;
  	if (browserType == "nn4") {capa = eval("document." + name_lay);}
  	if (browserType == "ie") {capa = eval(name_lay + ".style");}
  	if (browserType == "gecko") {capa = eval("document." + name_lay);}
  	if (document.getElementById) {capa = document.getElementById(name_lay).style;}
  		
  	capa.filter = "alpha(opacity="+maxOpac+",style=0)";
		/*capa.-moz-opacity = (document.layers) ? "."+newOpac : "."+newOpac;*/
		capa.opacity = "."+maxOpac;
			
		capa.display = (document.layers) ? "show" : "block" ;
		
		ofade.fadeIn(ini,maxOpac);
	}
	else { ofade.fadeIn(ini,0); }
	
}

function fadeIn(_actCapa,_actOpac) {
	var capa;

	if (_actOpac == this.maxOpac) {
		setTimeout(this.obj+".fadeOut("+_actCapa+",this.maxOpac)",this.ndelay);
	} else {
    var newOpac = _actOpac+this.incOpac;
      
    var name_lay = this.nomCapa + _actCapa;
  	if (browserType == "nn4") {capa = eval("document." + name_lay);}
  	if (browserType == "ie") {capa = eval(name_lay + ".style");}
  	if (browserType == "gecko") {capa = eval("document." + name_lay);}
  	if (document.getElementById) {capa = document.getElementById(name_lay).style;}
  		
  	capa.filter = "alpha(opacity="+newOpac+",style=0)";
		/*capa.-moz-opacity = (document.layers) ? "."+newOpac : "."+newOpac;*/
		capa.opacity = "."+newOpac;
			
		if (_actOpac == this.minOpac) { capa.display = (document.layers) ? "show" : "block" ; }
			
		setTimeout(this.obj+".fadeIn("+_actCapa+","+newOpac+")",this.nspeed);
	}
}

function fadeOut(_actCapa,_actOpac) {

	var capa;
	var name_lay = "";

	if (_actOpac == this.minOpac) {
		  var nextCapa = 0;
		  if (_actCapa == this.finValue) { nextCapa = this.iniValue; }
		  else { nextCapa = _actCapa+1; }
      
      name_lay = this.nomCapa + _actCapa;
  		if (browserType == "nn4") {capa = eval("document." + name_lay);}
  		if (browserType == "ie") {capa = eval(name_lay + ".style");}
  		if (browserType == "gecko") {capa = eval("document." + name_lay);}
  		if (document.getElementById) {capa = document.getElementById(name_lay).style;}
  
			capa.display = (document.layers) ? "hide" : "none" ;
		  
  		setTimeout(this.obj+".fadeIn("+nextCapa+",this.minOpac)",250);
	} else {

      var newOpac = _actOpac-this.incOpac;
      
      name_lay = this.nomCapa + _actCapa;
  		if (browserType == "nn4") {capa = eval("document." + name_lay);}
  		if (browserType == "ie") {capa = eval(name_lay + ".style");}
  		if (browserType == "gecko") {capa = eval("document." + name_lay);}
  		if (document.getElementById) {capa = document.getElementById(name_lay).style;}
  
			capa.filter = "alpha(opacity="+newOpac+",style=0)";
			/*capa.-moz-opacity = "."+newOpac;*/
			capa.opacity = "."+newOpac;
			
			setTimeout(this.obj+".fadeOut("+_actCapa+","+newOpac+")",this.nspeed);
		}
}

/**
 * Validación defecha segun el formato dd/mm/aaa
 * @param year
 * @returns
 */
function isDate(fecha,_idioma){
	var dtStr = fecha.value;
	var idioma = _idioma;
	if(document.getElementById("idioma")!=undefined)
		idioma = document.getElementById("idioma").value;
	else if(idioma!=null){
		idioma = _idioma;
	}else{
		idioma="es";
	}
	var minYear=1900;
	var maxYear=2100;
	var daysInMonth = DaysArray(12);
	var pos1=dtStr.indexOf("/");
	var pos2=dtStr.indexOf("/",pos1+1);
	var strDay=dtStr.substring(0,pos1);
	var strMonth=dtStr.substring(pos1+1,pos2);
	var strYear=dtStr.substring(pos2+1);
	
	var validacionFormato = new Array();
	validacionFormato['es']="El formato de fecha debe ser: dd/mm/aaaa";
	validacionFormato['ca']="El format de data ha de ser: dd/mm/aaaa";
	validacionFormato['en']="The date format should be : dd/mm/yyyy";
	
	var validacionMes = new Array();
	validacionMes['es']="Por favor, entre un mes válido";
	validacionMes['ca']="Si us plau, entre un mes vŕlid";
	validacionMes['en']="Please enter a valid month";
	
	var validacionDia = new Array();
	validacionDia['es']="Por favor, entre un día válido";
	validacionDia['ca']="Si us plau, entre un dia vŕlid";
	validacionDia['en']="Please enter a valid day";
	
	var validacionYear = new Array();
	validacionYear['es']="Por favor, introduzca un ańo entre "+minYear+" y "+maxYear;
	validacionYear['ca']="Si us plau, introdueixi un any entre "+minYear+" i "+maxYear;
	validacionYear['en']="Please enter a valid 4 digit year between "+minYear+" and "+maxYear;
	
	strYr=strYear;
	if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1);
	if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1);
	for (var i = 1; i <= 3; i++) {
		if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1);
	}
	month=parseInt(strMonth);
	day=parseInt(strDay);
	year=parseInt(strYr);
	if (pos1==-1 || pos2==-1){
		alert(validacionFormato[idioma]);
		return false;
	}
	if (strMonth.length<1 || month<1 || month>12){
		alert(validacionMes[idioma]);
		return false;
	}
	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
		alert(validacionDia[idioma]);
		return false;
	}
	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
		alert(validacionYear[idioma]);
		return false;
	}
	
	return true;
}
/**
 * Validación es entero?
 * @param year
 * @returns
 */
function isInteger(s){
	var i;
    for (i = 0; i < s.length; i++){   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function stripCharsInBag(s, bag){
	var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++){   
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}
/**
 * Validación de los dias de febrero dependiendo del ańo
 * @param year
 * @returns
 */
function daysInFebruary (year){
	// February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}
function DaysArray(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 31
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
		if (i==2) {this[i] = 29}
   } 
   return this
}



function habilitarFecha(box){
	if(box.value=='1'){
		document.getElementById('periodo').style.display="block";
		document.getElementById('fecha').style.display="none";
	}else{
		document.getElementById('periodo').style.display="none";
		document.getElementById('fecha').style.display="block";
	}
}
