//Características del Navegador

var Navegador = {
		Motor: {nombre: 'unknown', version: ''},
		Plataforma: {nombre: (navigator.platform.match(/mac|win|linux/i) || ['other'])[0].toLowerCase()},
		Caracteristicas: {xpath: !!(document.evaluate), air: !!(window.runtime)}
	};
	if (window.opera) Navegador.Motor = {nombre: 'presto', version: (document.getElementsByClassName) ? 950 : 925};
	else if (window.ActiveXObject) Navegador.Motor = {nombre: 'trident', version: (window.XMLHttpRequest) ? 5 : 4};
	else if (!navigator.taintEnabled) Navegador.Motor = {nombre: 'webkit', version: (Navegador.Caracteristicas.xpath) ? 420 : 419};
	else if (document.getBoxObjectFor != null) Navegador.Motor = {nombre: 'gecko', version: (document.getElementsByClassName) ? 19 : 18};
	Navegador.Motor[Navegador.Motor.nombre] = Navegador.Motor[Navegador.Motor.nombre + Navegador.Motor.version] = true;

	if (window.orientation != undefined) Navegador.Plataforma.nombre = 'ipod';

	Navegador.Plataforma[Navegador.Plataforma.nombre] = true;
//Función para incluir un fichero JS
function include(file,opt){
	if(file=='') return;
	//Genera una id para el archivo con el fin de evitar que se cargue 2 veces.
	var idfile = file.replace(location.hostname,'');
	idfile = idfile.replace(location.protocol,'');
	idfile = idfile.replace('//','');

	if(document.getElementById(idfile)){ return };

	if(typeof opt=='undefined') opt = {};
	if(typeof opt.cache=='undefined') opt.cache = true;
	if(typeof opt.dom=='undefined')  opt.dom = false;
	if(!opt.cache){
		var random = new Date().getTime().toString();
		if(file.indexOf('?')!=-1) file = file+'&'+random;
		else file = file+'?'+random;
	}
	if(opt.dom){
		var head = document.getElementsByTagName('head').item(0)
	}
	if(!opt.dom){
		document.write('<script type="text/javascript" id="'+idfile+'" src="'+file+'"><\/script>');
	}else{
		script = document.createElement('script');
		script.src = file;
		script.type = 'text/javascript';
		script.id = idfile;
		head.appendChild(script);
		if(typeof opt.oncomplete!='undefined'){
			//Para IE
			script.onreadystatechange = function () {if (script.readyState == 'complete') {if(typeof opt.oncomplete == 'function') {eval(opt.oncomplete());}}}
			//Para Firefox
			script.onload = function () {if(typeof opt.oncomplete == 'function') {opt.oncomplete();}}
		}
	}
}

//Funcion para añadir una funcion al evento OnLoad de forma no intrusiva
function addLoadEvent(func){
    var oldonload = window.onload;
    if (typeof window.onload != 'function')
    {
        window.onload = func;
    }else{
        window.onload = function(){
            if (oldonload)
            {
                oldonload();
            }
            func();
        }
    }
}

//Funcion para añadir una funcion al evento OnDomReady de forma no intrusiva, es más rápido que el onLoad
//pero no todas las inicializaciones se pueden hacer ahí, ya que solo se ha cargado el DOM, no se puede
//hacer referencia a imagenes u otros elementos que pueden no haberse cargado aún.
//create onDomReady Event
window.onDomReady = DomReady;

//Setup the event
function DomReady(fn){
	if(Navegador.Motor.gecko){
		//Para MOZILLA
		document.addEventListener("DOMContentLoaded", fn, false);
	}else if(Navegador.Motor.trident){
		//Para Explorer
		if (document.readyState == "interactive" || document.readyState == "complete"){
			fn();
		}else{
			document.onreadystatechange = function(){readyState(fn)}
		}
	}else{
		//Para el resto esperamos por el onLoad
		addLoadEvent(fn);
	}
}

//IE execute function
function readyState(fn){
	//dom is ready for interaction
	if(document.readyState == "interactive"){
		fn();
	}
}
//-------------------------------------------------------------------------------------------------------

//Funcion Ventana
function Ventana(objecturl, ancho, alto, opciones){
	var url;
	var nombre;
	var ristraopciones = new Array();
	if (typeof(objecturl)=="object"){
		url = objecturl.href;
		nombre = objecturl.title.replace(/[^qwertyuiopasdfghjklñzxcvbnm]+/gi,'_');
	}else{
		url=objecturl;
		nombre="";
	}
	if (ancho==undefined || ancho<=0) ancho = 200;
	if (alto==undefined || alto<=0) alto = 200;
	ristraopciones.push("width="+ancho);
	ristraopciones.push("height="+alto);
	if (opciones!=undefined){
		for (var i=0; i<opciones.length; i++){
			switch (opciones[i]){
				case "toolbar":
				case "scrollbar":
				case "location":
				case "statusbar":
				case "menubar":
				case "resizable":
					ristraopciones.push(opciones[i]+"=1");
				break;
				default:
					ristraopciones.push(opciones[i]);
				break;
			}
		}
	}

	var nuevaVentana = window.open(url, nombre, ristraopciones.join(","));
	nuevaVentana.focus();
}

//Cargamos la imagen de Loader
var imgLoader = document.createElement('img');

imgLoader.src = '/images/loader.gif';
//Cargamos el banner por de fecto (imagen vacía)
var imagenBanner = document.createElement('img');
imagenBanner.src = '/images/es/none.gif';

//Creamos una capa superpuesta en medio de la ventana para mostrar un mensaje miestras se carga otra página

function CreaCargaAjax(mensaje){
  	if (document.all){
		//Si estamos en Explorer borramos los select
  		var selects = document.getElementsByTagName('select');
  		for (var i=0; i<selects.length; i++){
  			selects[i].style.visibility = 'hidden';
  		}
  	}
	//obtenemos el contenedor
	var fi = document.getElementById('contenedor');
	//creamos el cuadro
  	var cuadroAjax = document.createElement('div');
  	cuadroAjax.id = 'CargaAjax';
  	fi.appendChild(cuadroAjax);
  	//Creamos el mensaje
  	var span=document.createElement('span');
  	if (!document.all){
  		//Si no estamos en Explorer añadimos la imagen de carga
  		span.appendChild(imgLoader);
  	}
  	span.innerHTML += mensaje;
  	cuadroAjax.appendChild(span);
  	//Añadimos el banner si este existe.
  	if (imagenBanner.src!="images/espacio.gif"){
  		cuadroAjax.appendChild(imagenBanner);
  	}

  	//recolocamos el banner el cuadro para qe esté centrado en la página
  	var margen;
  	var altura;
  	if (Navegador.Motor["trident4"]){
  		//Explorer 6
  		var offset = getScrollXY();
		margen = (offset[0]+document.body.offsetWidth-490) / 2;
	  	altura = (offset[1]+document.body.offsetHeight-120) / 2;
  	}else if (Navegador.Motor["trident"]){
  		//Explorer>6
  		var temp=document.body.offsetHeight<1024?document.body.offsetHeight:1024;
		margen = (document.body.offsetWidth-490) / 2;
	  	altura = (temp-120) / 2;
  	}else{
  		//Resto
	  	margen = (window.innerWidth-490) / 2;
	  	altura = (window.innerHeight-120) / 2;
  	}
  	cuadroAjax.style.left = margen+'px';
  	cuadroAjax.style.top = altura+'px';

}

//Funcion que devuelve loa posiciones de las barras de desplazamiento
function getScrollXY() {
  var scrOfX = 0, scrOfY = 0;
  if( typeof( window.pageYOffset ) == 'number' ) {
    //Netscape compliant
    scrOfY = window.pageYOffset;
    scrOfX = window.pageXOffset;
  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
    //DOM compliant
    scrOfY = document.body.scrollTop;
    scrOfX = document.body.scrollLeft;
  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
    //IE6 standards compliant mode
    scrOfY = document.documentElement.scrollTop;
    scrOfX = document.documentElement.scrollLeft;
  }
  return [ scrOfX, scrOfY ];
}


function in_array(needle, haystack, strict) {
    // http://kevin.vanzonneveld.net
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // *     example 1: in_array('van', ['Kevin', 'van', 'Zonneveld']);
    // *     returns 1: true
 
    var found = false, key, strict = !!strict;
 
    for (key in haystack) {
        if ((strict && haystack[key] === needle) || (!strict && haystack[key] == needle)) {
            found = true;
            break;
        }
    }
 
    return found;
}

function XOR(a, b){
	return a ? !b : b;
}
