/*
 * Método para realizar includes en javascript
 Sintaxis:
 include(file [,opt]);
 Ej: include("path/to/archive");
 Parámetros opcionales
 * cache: true | false - Si se especifica false se le añade al final del archivo un numero aleatorio para que no se guarde cache en el navegador
 * dom: true | false - Si se especifica true el archivo se cargará creando un nuevo elemento script o link en el DOM, si es false el archivo se cargará con un document.write
 * type: js | css - este parámetro solo es necesario si el archivo a cargar tiene una extensión diferente a js o css por ej un archivo .php
 * onload: funcion - en el caso de que se cargue un archivo js via DOM es posible especificar una acción al finalizar la carga del archivo.
 */
function include(file, opt){
    if (file == "") 
        return;
    //Genera una id para el archivo con el fin de evitar que se cargue 2 veces.   
    
    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 (typeof opt.type == "undefined") 
        opt.type = "";
    
    ext = (opt.type != "") ? opt.type : file.substring(file.lastIndexOf('.') + 1);
    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)
    }
    switch (ext) {
        case "css":
            if (!opt.dom) 
                document.write('<link rel="stylesheet" href="' + file + '" id="' + idfile + '" type="text/css"><\/link>');
            else {
                css = document.createElement('link');
                css.rel = 'stylesheet';
                css.href = file;
                css.type = 'text/css';
                css.id = idfile;
                head.appendChild(css);
            }
            break;
        case "js":
            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();
                        }
                    }
                }
            }
            break;
    }
}

//Devuelve la parte entera de una cadena q representa una cantidad numerica del tipo xxxx.yy
function parteEntera(precio){
    var precioSTR = precio.toString();
    var indexPto = precioSTR.indexOf('.');
    
    if (indexPto == -1) {
        precioSTR += '.00';
        indexPto = precioSTR.indexOf('.');
    }
    
    return precioSTR.substring(0, indexPto);
}

//Devuelve la parte decimal de una cadena q representa una cantidad numerica del tipo xxxx.yy
function parteDecimal(precio){
    var precioSTR = precio.toString();
    var indexPto = precioSTR.indexOf(".");
    
    if (indexPto == -1) {
        precioSTR += '.00';
        indexPto = precioSTR.indexOf('.');
    }
    var ret = precioSTR.substring(indexPto + 1, precioSTR.length);

    return ret.length == 1 ? ret + '0' : ret;
}

//borra las filas de una tabla que especifiquemos
function limpiaTablaHTML(nombreTabla){
    var tabla = $(nombreTabla);
    if (detectarNavegador() == "FF") {
        if (tabla != null) {
            tabla.innerHTML = ' ';
        }
    }
    else {
        if (tabla != null) {
            while (tabla.hasChildNodes()) {
                tabla.removeChild(tabla.firstChild);
            }
        }
    }
}

//dado un numero de mes nos devuelve las tres letras primeras del nombre
function textoMes(numeroMes){
    var ret = '';
    
    switch (numeroMes) {
        case 1:
            ret = 'Ene';
            break;
        case 2:
            ret = 'Feb';
            break;
        case 3:
            ret = 'Mar';
            break;
        case 4:
            ret = 'Abr';
            break;
        case 5:
            ret = 'May';
            break;
        case 6:
            ret = 'Jun';
            break;
        case 7:
            ret = 'Jul';
            break;
        case 8:
            ret = 'Ago';
            break;
        case 9:
            ret = 'Sep';
            break;
        case 10:
            ret = 'Oct';
            break;
        case 11:
            ret = 'Nov';
            break;
        case 12:
            ret = 'Dic';
            break;
    }
    
    return ret;
}

//dado un código IATA nos dice el nombre de la ciudad
function obtenerCiudad(IATA){

    var url = '/vuelos/buscaAeropuerto.php';
    var pars = 'criterio=' + criterio + '&forzada=C';
    var ret = '';
    
    var myAjax = new Ajax.Request(url, {
        method: 'post',
        parameters: pars,
        onComplete: ret = transport.responseText = function(transport){
            return transport.responseText;
        }
    });
    return ret;
}

//función que dada una cadena, si supera los 10 caracteres la corta y pone: ...
function cortaCadena(cadena){
    var cadRet = cadena;
	alert(cadena+' - '+cadena.length)
    if (cadena.length >= 9) {
        cadRet = cadena.substring(0, 6) + '...';
    }
    
    return cadRet;
}

//función que dada una cadena, si supera los 10 caracteres la corta y pone: ...
function cortaCadena(cadena, tam){
    var cadRet = cadena;
    if (cadena.length >= tam - 1) {
    	var st = cadena.replace(/(<([^>]+)>)/ig,""); 
        cadRet = st.substring(0, tam - 4) + '...';
    }
    
    return cadRet;
}

//función que nos devuelve el tipo de navegador del cliente
//FF: Firefox
//IE: Internet Explorer
//OT: Otro
function detectarNavegador(){
    var browsertype = navigator.userAgent;
    //alert(browsertype);
    if (browsertype.indexOf("MSIE") != -1) {
        return "IE";
    }
    else 
        if (browsertype.indexOf("Firefox") != -1) {
            return "FF";
        }
        else {
            return "OT";
        }
}

//devuelve cadena vacia en caso de que CADENA sea NULL
function leeCadena(cadena){
    if (cadena == null) {
        return "";
    }
    else {
        return cadena;
    }
}

//abre para impresión una página interna, pero atención no debe llevar parametros la variable página
function imprimirInterna(pagina){
    window.open(pagina + '?impresion=S', 'noimporta', 'width=800, height=700, scrollbars=yes');
}

//método que fuerza la llamada a buscar aeropuertos para rellenar la ciudad
function fuerzaCiudad(criterio, campo, campoOc){
	
	if($F(campoOc)!=''){
		return;
	}
	
    var url = '/vuelos/buscaAeropuerto.php';
    var pars = 'criterio=' + criterio + '&forzada=Y';
    
    var myAjax = new Ajax.Request(url, {
        method: 'post',
        parameters: pars,
        onComplete: function(transport){
            if (transport.responseText != '') {
                //$(campo).value = transport.responseText.substring(4,transport.responseText.length);					
                $(campoOc).value = transport.responseText.split("-")[1];
                $(campo).value = $(campoOc).value + ' - ' + transport.responseText.split("-")[2];
            }
            else {
                if (campoOc != '') {
                    $(campoOc).value = '';
					$(campo).value = '';
					desbloqueaCampo(campo);
                }
            }
        }
    });
}

//funciones para trim	
function ltrim(s){
    return s.replace(/^\s+/, "");
}

function rtrim(s){
    return s.replace(/\s+$/, "");
}

function trim(s){
    return rtrim(ltrim(s));
}

//carga el combo de ofertas
function cargaCombo(tabla, idCombo){

    var url = '/includes/cargaCombo.php';
    var pars = 'tabla=' + tabla;
    
    var myAjax = new Ajax.Request(url, {
        method: 'get',
        parameters: pars,
        onComplete: function(transport){
            //para evitar el bug de explorer y los combos, generamos todo el select aqui
            var textoHTML = '<select>'
            textoHTML += transport.responseText;
            textoHTML += '</select>';
            $(idCombo).innerHTML = textoHTML;
        }
    });
    
}

// agregar a favoritos la web
function agregarFavoritos(){
    titulo = "viajes.net ";
    url = "http://www.viajes.net/";
    if (window.sidebar) { // Mozilla Firefox 
        window.sidebar.addPanel(titulo, url, "");
    }
    else 
        if (window.external) { // IE 
            window.external.AddFavorite(url, titulo);
        }
        else 
            if (window.opera && window.print) { // Opera
                return true;
            }
}

//poner como pagina de inicio
function paginaInicio(enlace){
    if (detectarNavegador() == 'IE') {
        //$('mInicio').style.behavior = 'url(#default#homepage)';
        //document.setHomePage('http://www.viajes.net');
		enlace.style.behavior="url(#default#homepage)";
		enlace.setHomePage("http://www.viajes.net");
    }else{
		var imagenAlerta='<img src="images/iconos/warn.gif">';	
		var mensaje='<center>Atención: Su navegador no soporta esta operación, si desea agregar la página como página de inicio, asignela en las opciones de su navegador.</center>';
		
		mensaje+='</ul></center><br><center><a href="javascript:Modalbox.hide()">Cerrar</a></center>';
		Modalbox.show(mensaje, {
				title: '<center><div class="cabeceraAlerta">' + imagenAlerta + ' Hacer página de inicio.</div></center>',
				width: 400,
				transitions: true
			});
	}
}

function borraCampo(campoForm){
    $(campoForm).value = '';
}

//métodos que cortan la cadena obtenida por el autocompleter y dejan solo la ciudad para cargarla en ofertas
function setCiudadOrigenOferta(text, li){
    //document.getElementById('txtOrigenOfe').value=trim(li.innerHTML.split("-")[1]).split(",")[0];  		
    $('txtOrigenOfe').value = li.id;
   // $('txtOrigenOfe').blur();
}

function setCiudadDestinoOferta(text, li){
    //document.getElementById('txtDestinoOfe').value=trim(li.innerHTML.split("-")[1]).split(",")[0];  	
    $('txtDestinoOfe').value = li.id;
   // $('txtDestinoOfe').blur();
}

//bloquea un campo
function bloqueaCampo(campo){
    if ($F(campo) != '') {
        $(campo).className = 'deshabilitado';
    }
    else {
        $(campo).className = 'normal';
    }
}

//lo desbloquea y lo limpia
function desbloqueaCampo(campo){
    $(campo).value = '';
    $(campo).className = 'normal';
}

//lo desbloquea y lo limpia y su campo oculto asociado
function desbloqueaCampoYOculto(campo,campoOculto){
    $(campo).value = '';
    $(campoOculto).value = '';
    $(campo).className = 'normal';
}


function fuerzaCiudadOferta(campo){
	//si el campo esta vacio salimos
	if(campo.value==''){
		return;
	}
	//si el campo tiene menos de 2 letras lo borramos
	if(campo.value.length<2){
		campo.value='';
		return;
	}
	
    var url = '/vuelos/buscaCiudad.php';
    var pars = 'criterio=' + campo.value + '&forzada=Y';
    
    var myAjax = new Ajax.Request(url, {
        method: 'post',
        parameters: pars,
        onComplete: function(transport){

            if (transport.responseText != '') {
                campo.value = transport.responseText;
            }
            else {
				campo.value = '';				
				desbloqueaCampo(campo);
            }
        }
    });
}


