/*///////////////////////////////////////////////////////////////////////////////	
/	Autor 		: David Blandón ®
/	FileName 	: general.js
/	Proposito	: Declarar todas las variables, constantes, funciones ect...
				  que seran globales para la aplicacion
/	Historial	: 				  
				=> Lunes, 18 de Diciembre de 2006
					=>Primera Implementacion
					=>Definicion de constantes(la constantes se declaran en mayuscula y con underline '_' 
											   	si es necesario para la legividad de la aplicacion);
					
*////////////////////////////////////////////////////////////////////////////////

//Seccion General Declaraciones////////////////////////////////////

//Definimos las constantes
var TAB_ETAPA 					= '_etapa';					//Pestaña de las etapas
var MENU_AIRPORTCODE            = '_Iata'                   //Cada menu conxtual

var TAB_HOTEL                   = "_HOTEL";
var TAB_HOTEL_GENERAL           = "GENERAL";
var TAB_HOTEL_LOCATION          = "LOCATION";
var TAB_HOTEL_ROOMRATE          = "ROOMRATE";
var TAB_HOTEL_PHOTO             = "PHOTO";
var TAB_HOTEL_MAP               = "MAP";
var TAB_HOTEL_DEFAULT           = TAB_HOTEL_GENERAL + TAB_HOTEL;

var TAB_FLIGHT                  = "_flight";

var VIEW_PANEL_EMPRESA			= '_panelEmpresa';
var VIEW_PANEL_PROFESION		= '_panelProfesion';
var VIEW_PANEL_CONOCEPOR		= '_panelConoce';
var VIEW_PANEL_TIPO_PROSPECTO	= '_panelTipoProspecto';

var USER_TYPE_NEW               = '1';
var USER_TYPE_GUEST             = '2';
var USER_TYPE_REGISTERED        = '3';

//Valores para los botones del mouse
var BUTTON_LEFT				= 1;
var BUTTON_RIGHT			= 2;
var BUTTON_MIDDLE			= 3;

var DATE_DELIMITER			= '/';

//Fecha Corta y fecha larga
var DATE_SHORT_FORMAT       = 1;
var DATE_LONG_FORMAT        = 2;

//Formato de la fecha
//YMD : Año/Mes/Dia
//DMY : Dia/Mes/Año
//MDY : Mes/Dia/Año

var DATE_FORMAT_DMY         = 2;
var DATE_FORMAT_YMD         = 1;
var DATE_FORMAT_MDY         = 3;
var DATE_FORMAT_DEFAULT     = DATE_FORMAT_MDY;
var DATE_FORMAT_STRING      = "mm/dd/yyyy";


//Constantes del tipo de busqueda
var SEARCH_FLIGHT           = 1;
var SEARCH_HOTEL            = 2;
var SEARCH_VEHICULE         = 3;
var SEARCH_FLIGHT_HOTEL     = 4;
var SEARCH_FLIGHT_HOTEL_CAR = 5;
var SEARCH_CRUCERO          = 6;


var FLIGHT_TYPE_ONEWAY              = 1;
var FLIGHT_TYPE_ROUNDTRIP           = 2;
var FLIGHT_TYPE_MULTIDESTINATION    = 3;

var HOTEL_SEARCH_CITY               = "1";
var HOTEL_SEARCH_ADDRESS            = "2";
var HOTEL_SEARCH_REFPOINT           = "3";

YAHOO.namespace('Style.Hotel');
YAHOO.namespace('Style.Flight');
YAHOO.namespace('Flight.Preference');
YAHOO.namespace('hotel.provider');
YAHOO.namespace('dates');
YAHOO.namespace('container');
YAHOO.namespace('image.path');
YAHOO.namespace('textbox');


YAHOO.image.path = "../images/un/busquedas/";

YAHOO.Style.Hotel.CSS_HOTEL_TAB_SELECTED    = "hotelTabSelected";
YAHOO.Style.Hotel.CSS_HOTEL_TAB             = "hotelTab";

YAHOO.Style.Flight.CSS_FLIGHT_TAB           = "flightTab";
YAHOO.Style.Flight.CSS_FLIGHT_TAB_SELECTED  = "flightTabSelected";

YAHOO.Style.CSS_BUTTON = "Button";
YAHOO.Style.CSS_BUTTON_DOWN = "ButtonDown";
YAHOO.Style.CSS_BUTTON_OVER = "ButtonOver";



YAHOO.Style.CSS_BUTTON_FOOTER = "ButtonFooter";
YAHOO.Style.CSS_BUTTON_FOOTER_DOWN = "ButtonFooterDown";
YAHOO.Style.CSS_BUTTON_FOOTER_OVER = "ButtonFooterOver";

YAHOO.Flight.Preference.DATE = "1";
YAHOO.Flight.Preference.FARE = "2";

YAHOO.Flight.Preference.None        = "0";
YAHOO.Flight.Preference.NextResult  = "1";
YAHOO.Flight.Preference.NextPage    = "2";

YAHOO.hotel.provider.SABRE      = "0";
YAHOO.hotel.provider.HOTELBEDS  = "1";
YAHOO.hotel.provider.TOURICO    = "2";
YAHOO.hotel.provider.TRANSHOTEL = "3";

YAHOO.hotel.provider._prefix_SABRE      	= "";
YAHOO.hotel.provider._prefix_HOTELBEDS  	= "HB";
YAHOO.hotel.provider._prefix_TOURICO    	= "TR";
YAHOO.hotel.provider._prefix_TRANSHOTEL     = "TH";

YAHOO.dates.minDate         = 3;
YAHOO.dates.minDateHotel    = 6;

//Adicionar unos controladores de evento al documento
addListener('mousedown'	, mousedown);
addListener('mousemove' , mouseOver);
addListener('mouseout'  , mouseOut);
//Fin Seccion General Declaraciones/////////////////////////////////


/*///////////////////////////////////////////////////////////////
/	Autor 			: David Blandon
/	Fecha 			: Viernes, 22 de Diciembre de 2006
/	Funcion name 	: Date.prototype.format
/	Proposito 		: Adicionar funcionaildad a la clase Date, dandole un formato a las fechas
/	Parametros		: formato	=> el tipo de formato que se va a devolver
/	Return			: None
*////////////////////////////////////////////////////////////////	
Date.prototype.format = function(format, cfg) 
{
	var fullDate = '';
	
	
	if (cfg == null)
	    cfg = DATE_FORMAT_DEFAULT;
	
	
	if (format == null)
	    format = DATE_SHORT_FORMAT;
	
	switch (format)
	{
		case DATE_SHORT_FORMAT:
			var day 	= this.getFullDay();
			var month	= this.getFullMonth();
			var year	= this.getFullYear();
			
			switch (cfg)
			{
			    case DATE_FORMAT_YMD:
			        fullDate	= year + DATE_DELIMITER + month + DATE_DELIMITER + day;
			        break;
			        
                case DATE_FORMAT_MDY:
                    fullDate	= month + DATE_DELIMITER + day + DATE_DELIMITER + year;
                    break;
                    
                case DATE_FORMAT_MDY:
                    fullDate	= day + DATE_DELIMITER + month + DATE_DELIMITER + year;
                    break;
			}
						
			break;		
	}
	
	return fullDate;
}

Date.prototype.getFullMonth = function()
{
    return ((this.getMonth() + 1) < 10) ? "0" + (this.getMonth() + 1) : this.getMonth() + 1;
}

Date.prototype.getFullDay = function()
{
    return (this.getDate() < 10) ? "0" + this.getDate() : this.getDate();
}

String.prototype.trim = function() 
{
    //Agrega la función trim al objeto String
   return this.replace(/(^\s*)|(\s*$)/g,""); //elimina espacios a izquierda y derecha
}

/*///////////////////////////////////////////////////////////////
/	Autor 			: David Blandon
/	Fecha 			: Viernes, 22 de Diciembre de 2006
/	Funcion name 	: Date.prototype.format
/	Proposito 		: Adicionar funcionaildad a la clase Date, seteando una fecha con un string
/	Parametros		: strFecha	=> la fecha que quiero setear
/	Return			: None
*////////////////////////////////////////////////////////////////	
Date.prototype.setDateTime = function(strFecha)
{			
	var sDates  = strFecha.split(DATE_DELIMITER);
	var day     = "";
	var month   = "";
	var year    = "";
	
	switch (DATE_FORMAT_DEFAULT)
	{
	    case DATE_FORMAT_YMD:
	        day 	= sDates[2];
	        month	= sDates[1];
	        year	= sDates[0];
	        break;
	        
	    case DATE_FORMAT_MDY:
	        day 	= sDates[1];
	        month	= sDates[0];
	        year	= sDates[2];	    
	        break;
	        
	    case DATE_FORMAT_DMY:
	    	day 	= sDates[0];
	        month	= sDates[1];
	        year	= sDates[2];
	        break;	    
	}	
	
//	this.setDate(day);
//	this.setMonth(month - 1);
//	this.setYear(year);			
	
	this.setFullYear(parseInt(year,10), parseInt(month - 1, 10), parseInt(day, 10));

	return this;
}

Date.prototype.addDays = function(days) 
{
    this.setDate(this.getDate()+days);
}

if(!Array.indexOf)
{
    Array.prototype.indexOf = function(obj)
    {
        for(var i = 0; i < this.length; i++)
        {
            if (this[i] == obj)
            {
                return i;
            }
        }
        return -1;
    }
}

if(!Array.lastIndexOf)
{
    Array.prototype.lastIndexOf = function(obj)
    {
        for(var i = 0; i < this.length; i++)
        {
            if (this[i].indexOf(obj) != -1)
            {
                return i;
            }
        }
        return -1;
    }
}

if (!YAHOO.form)
    YAHOO.form = {};
    
YAHOO.form.findControl = function(objControl)
{
    if (document.getElementById(objControl) != null)
    {
        return document.getElementById(objControl);
    }
    else if (YAHOO.form.findElements(objControl) != null)
    {
        return YAHOO.form.findElements(objControl);
    }
    else if (YAHOO.form.findLabel(objControl) != null)
    {
        return YAHOO.form.findLabel(objControl);
    }
    else if (YAHOO.form.findPanel(objControl) != null)
    {
        return YAHOO.form.findPanel(objControl);
    }    
    else if (YAHOO.form.findImage(objControl) != null)
    {
        return YAHOO.form.findImage(objControl);
    }
    else if (YAHOO.form.findLink(objControl) != null)
    {
        return YAHOO.form.findLink(objControl);
    }    
    return null;
}

YAHOO.form.findElements = function(objControl)
{
    for (var i = 0; i < document.forms[0].elements.length; i++)
    {
        if (document.forms[0].elements[i].id.indexOf(objControl) != -1)
        {
            if (document.forms[0].elements[i].id.substring(document.forms[0].elements[i].id.indexOf(objControl)).length == objControl.length)
                return document.forms[0].elements[i];
        }
    }
    return null;
}

YAHOO.form.findLabel = function(objControl)
{
    this.labels = document.getElementsByTagName("SPAN");
    for(var i = 0; i < this.labels.length; i++)
    {
        if (this.labels[i].id.indexOf(objControl) != -1)
        {
            if (this.labels[i].id.substring(this.labels[i].id.indexOf(objControl)).length == objControl.length)
                return this.labels[i];
        }
    }
    return null;
}

YAHOO.form.findPanel = function(objControl)
{
    this.labels = document.getElementsByTagName("DIV");
    for(var i = 0; i < this.labels.length; i++)
    {
        if (this.labels[i].id.indexOf(objControl) != -1)
        {
            if (this.labels[i].id.substring(this.labels[i].id.indexOf(objControl)).length == objControl.length)
                return this.labels[i];
        }
    }
    return null;
}

YAHOO.form.findImage = function(objControl)
{
    this.images = document.getElementsByTagName("input");
    for(var i = 0; i < this.images.length; i++)
    {
        if (this.images[i].type == "image" && this.images[i].id.indexOf(objControl) != -1)
        {
            if (this.images[i].id.substring(this.images[i].id.indexOf(objControl)).length == objControl.length)
                return this.images[i];
        }
    }
    
    this.images = document.getElementsByTagName("img");
    for(var i = 0; i < this.images.length; i++)
    {
		if (this.images[i].type == "image" && this.images[i].id.indexOf(objControl) != -1)
        {
			if (this.images[i].id.substring(this.images[i].id.indexOf(objControl)).length == objControl.length)
				return this.images[i];   
		}
    }
    
    return null;
}

YAHOO.form.findLink = function(objControl)
{   
    this.links = document.getElementsByTagName("a");
    
    for(var i = 0; i < this.links.length; i++)
    {
        if (this.links[i].id.indexOf(objControl) != -1)
        {
            if (this.links[i].id.substring(this.links[i].id.indexOf(objControl)).length == objControl.length)
                return this.links[i];
        }
    }
    return null;
}



String.prototype.isNullOrEmpty = function()
{
    if (this == null || this.trim() == "")
        return true;
    else
        return false;
}


if (typeof(string) == "undefined")
    string = {};
    
string.empty    = "";

/*///////////////////////////////////////////////////////////////
/	Autor 			: David Blandon
/	Fecha 			: Lunes, 18 de Diciembre de 2006		
/	Funcion name 	: BROWSER()
/	Proposito 		: Crear un objeto para determinar el browser que estoy utilizando
/	Parametros		: None
/	Return			: None
*////////////////////////////////////////////////////////////////	
function BROWSER() 
{
	var ua = navigator.userAgent.toLowerCase(); 

	this.isGecko     	= (ua.indexOf('gecko') != -1 && ua.indexOf('safari') == -1);
	this.isMozilla   	= (this.isGecko && ua.indexOf('gecko/') + 14 == ua.length);
	this.isNS        	= ((this.isGecko) ? (ua.indexOf('netscape') != -1) : ( (ua.indexOf('mozilla') != -1) && (ua.indexOf('spoofer') == -1) && (ua.indexOf('compatible') == -1) && (ua.indexOf('opera') == -1) && (ua.indexOf('webtv') == -1) && (ua.indexOf('hotjava') == -1) ) );
	this.isIE        	= ((ua.indexOf('msie') != -1) && (ua.indexOf('opera') == -1) && (ua.indexOf('webtv') == -1)); 
	this.isFirefox		= ((ua.indexOf('gecko/') != -1) && (ua.indexOf('firefox') != -1));
	this.isSafari    	= (ua.indexOf('safari') != - 1);
	this.isOpera     	= (ua.indexOf('opera') != -1); 
	this.isKonqueror 	= (ua.indexOf('konqueror') != -1 && !this.isSafari); 
	this.isIcab      	= (ua.indexOf('icab') != -1); 
	this.isAol       	= (ua.indexOf('aol') != -1);
	this.isIE5up 		= (this.isIE && this.versionMajor >= 5);
}

/*///////////////////////////////////////////////////////////////
/	Autor 			: David Blandon
/	Fecha 			: Lunes, 18 de Diciembre de 2006		
/	Funcion name 	: addListener()
/	Proposito 		: Crear el listener de un evento 
/	Parametros		: type		=> el tipo de evento(click, mousedown..)
					: callback  => el nombre de la funcion asociada al evento
/	Return			: None
*////////////////////////////////////////////////////////////////	
function addListener(type, callback)
{
	if (document.addEventListener)	{
		document.addEventListener(type, callback, false);
	} else if (document.attachEvent) {
		document.attachEvent('on' + type, callback, false);
	}				
}

/*///////////////////////////////////////////////////////////////
/	Autor 			: David Blandon
/	Fecha 			: Lunes, 18 de Diciembre de 2006		
/	Funcion name 	: addListener()
/	Proposito 		: Destruir el listener de un evento 
/	Parametros		: type		=> el tipo de evento(click, mousedown..)
					: callback  => el nombre de la funcion asociada al evento
/	Return			: None
*////////////////////////////////////////////////////////////////	
function removeListener(type, callback)
{
	if (document.removeEventListener) {
		document.removeEventListener(type, callback, false);		
	} else if (document.detachEvent) {
		document.detachEvent('on' + type, callback, false);
	}
}

/*///////////////////////////////////////////////////////////////
/	Autor 			: David Blandon
/	Fecha 			: Lunes, 18 de Diciembre de 2006		
/	Funcion name 	: Events()
/	Proposito 		: Crear un objeto Events standard que sea soportado por 
					  Firefox e Internet Explorer (cross-browser)
/	Parametros		: event 	=> Un objeto evento, ya sea generado por FF o IE
/	Return			: None
*////////////////////////////////////////////////////////////////	
function Events(event)
{
	var x_mouse;
	var y_mouse;
	var target;
	var keyCode;
	var clientX;
	var clientY;
	var offsetX
	var offsetY;
	var type;
	var button;
	var cancel;
	
	var myBrowser = new BROWSER();
	
	events = event ? event : window.event;
	
	if (events.pageX && events.pageY) {		
		this.x_mouse = events.pageX; 	//Propiedades soportadas por Firefox
		this.y_mouse = events.pageY;
	} else {		
		this.x_mouse = events.clientX + document.documentElement.scrollLeft; //Propiedades soportadas por IE
		this.y_mouse = events.clientY + document.documentElement.scrollTop;
	}
	
	//Posicion relativa al elemento que provoco el evento
	this.offsetX = events.layerX ? events.layerX : events.offsetX;
	this.offsetY = events.layerY ? events.layerY : events.offsetY
	
	//el objeto que provocó el evento
	this.target =  events.target ? events.target : events.srcElement;
	
	//Codigo de la tecla presionada
	this.keyCode = events.keyCode ? events.keyCode : events.which ? events.which : events.charCode;
	
	//Posicion relativa a la ventana
	this.clientX = events.clientX;
	this.clientY = events.clientY;
	
	//Tipo de evento
	this.type	= events.type;
	
	//El boton que presiono;
	if (myBrowser.isFirefox) {
		switch (events.button) {
			case 0:
				this.button = BUTTON_LEFT;
				break;
			case 2:
				this.button = BUTTON_RIGHT;
				break;
			case 1:
				this.button = BUTTON_MIDDLE;
				break;
		}
	} else if (myBrowser.isIE) {
		switch (events.button) {
			case 1:
				this.button = BUTTON_LEFT;
				break;
			case 2:
				this.button = BUTTON_RIGHT;
				break;
			case 4:
				this.button = BUTTON_MIDDLE;
				break;
		}		
	}		
}

YAHOO.getEvent = function(e)
{
	var x_mouse;
	var y_mouse;
	var target;
	var keyCode;
	var clientX;
	var clientY;
	var offsetX
	var offsetY;
	var type;
	var button;
	var cancel;
	
	var myBrowser = new BROWSER();
	
	events = e ? e : window.event;
	
	if (events.pageX && events.pageY) {		
		this.x_mouse = events.pageX; 	//Propiedades soportadas por Firefox
		this.y_mouse = events.pageY;
	} else {		
		this.x_mouse = events.clientX + document.documentElement.scrollLeft; //Propiedades soportadas por IE
		this.y_mouse = events.clientY + document.documentElement.scrollTop;
	}
	
	//Posicion relativa al elemento que provoco el evento
	this.offsetX = events.layerX ? events.layerX : events.offsetX;
	this.offsetY = events.layerY ? events.layerY : events.offsetY
	
	//el objeto que provocó el evento
	this.target =  events.target ? events.target : events.srcElement;
	
	//Codigo de la tecla presionada
	this.keyCode = events.keyCode ? events.keyCode : events.which ? events.which : events.charCode;
	
	//Posicion relativa a la ventana
	this.clientX = events.clientX;
	this.clientY = events.clientY;
	
	//Tipo de evento
	this.type	= events.type;
	
	//El boton que presiono;
	if (myBrowser.isFirefox) {
		switch (events.button) {
			case 0:
				this.button = BUTTON_LEFT;
				break;
			case 2:
				this.button = BUTTON_RIGHT;
				break;
			case 1:
				this.button = BUTTON_MIDDLE;
				break;
		}
	} else if (myBrowser.isIE) {
		switch (events.button) {
			case 1:
				this.button = BUTTON_LEFT;
				break;
			case 2:
				this.button = BUTTON_RIGHT;
				break;
			case 4:
				this.button = BUTTON_MIDDLE;
				break;
		}		
	}		
}
/*///////////////////////////////////////////////////////////////
/	Autor 			: David Blandon
/	Fecha 			: Lunes, 18 de Diciembre de 2006		
/	Funcion name 	: mousedown()
/	Proposito 		: Identificar en que momento se dispara un evento mousedown tanto en
					  Firefox como en Internet Explorer (cross-browser)
/	Parametros		: event 	=> Un objeto evento, ya sea generado por FF o IE
/	Return			: None
*////////////////////////////////////////////////////////////////	
function mousedown(events) 
{
	var mouseEvent = new Events(events);
    var element		= mouseEvent.target;
    
	if (mouseEvent.button == BUTTON_LEFT) {
		if (mouseEvent.target.tagName == 'SPAN' || mouseEvent.target.tagName == 'DIV') {
			var idElement 		= mouseEvent.target.id;
			var nombreElement	= idElement.substr(idElement.indexOf('_',1));
			
			switch (nombreElement) {
				
				case TAB_ETAPA:
					changeTabHome(idElement);
					break;
					
				case MENU_AIRPORTCODE:
				    var CodeAirPort = idElement.substr(0,idElement.indexOf('_',1));
					YAHOO.container.target.value = CodeAirPort;
					YAHOO.container.panelMenu.hide();
				    break;
				    
				case TAB_HOTEL:
				    changeTabHotel(idElement);
				    break;
				    
				case TAB_FLIGHT:
				    changeTabFlightAdvance(idElement);
				    break;
			}
			
		} else if (mouseEvent.target.tagName == 'INPUT') {
			if (element.type == 'button') {
				//alert(mouseEvent.target.form);
				
		        if (element.className == YAHOO.Style.CSS_BUTTON_OVER || element.className == YAHOO.Style.CSS_BUTTON)
                {
                    element.className = YAHOO.Style.CSS_BUTTON_DOWN;
                }
				
				if (mouseEvent.target.form != 'undefined' && mouseEvent.target.form != null) {
					
					var frmSource		= mouseEvent.target.form;
					var idElement 		= mouseEvent.target.id;
					var nombreElement	= idElement.substr(idElement.indexOf('_',1));

					switch (frmSource.name) {

					}
					
					switch (nombreElement) {

					}
				} 
			}
			
			if (element.type == 'submit')
			{
			    if (element.className == YAHOO.Style.CSS_BUTTON_FOOTER_OVER || element.className == YAHOO.Style.CSS_BUTTON_FOOTER)
                {
                    element.className = YAHOO.Style.CSS_BUTTON_FOOTER_DOWN;
                }

			}
		}

	}
}

/*///////////////////////////////////////////////////////////////
/	Autor 			: David Blandon
/	Fecha 			: Lunes, 18 de Diciembre de 2006		
/	Funcion name 	: mouseOver()
/	Proposito 		: Identificar en que momento se dispara un evento mouseover tanto en
					  Firefox como en Internet Explorer (cross-browser)
/	Parametros		: evx 	=> Un objeto evento, ya sea generado por FF o IE
/	Return			: None
*////////////////////////////////////////////////////////////////	
function mouseOver(evx)
{
	var mouseEvent 	= new Events(evx);
	var element		= mouseEvent.target;
	
	if (element.tagName == 'INPUT') {
		if (element.type == 'text' || element.type == 'textarea') {
			//element.className = 'textMouseOver';	
		}
		
//		var tooltipID = document.getElementById("tooltip");
//		if (tooltipID != null)
//		    document.body.removeChild(tooltipID);
//		
//		var tooltip = document.createElement("SPAN");
//		tooltip.innerHTML = element.type;
//		tooltip.style.display = "block";
//		tooltip.id = "tooltip";
//		document.body.appendChild(tooltip);
		
		if (element.type == "button")
		{
		    if (element.className == YAHOO.Style.CSS_BUTTON || element.className == YAHOO.Style.CSS_BUTTON_DOWN)
		    {
		        element.className = YAHOO.Style.CSS_BUTTON_OVER;
		    }
		}
		
		if (element.type == "submit")
		{
		    if (element.className == YAHOO.Style.CSS_BUTTON_FOOTER || element.className == YAHOO.Style.CSS_BUTTON_FOOTER_DOWN)
		    {
		        element.className = YAHOO.Style.CSS_BUTTON_FOOTER_OVER;
		    }
		}
		
	} else if (element.tagName == 'DIV' || element.tagName == 'SPAN') {
	    
    	var idElement 		= element.id;
		var nombreElement	= idElement.substr(idElement.indexOf('_',1));
					
		switch (nombreElement) {
			
			case TAB_ETAPA:
				//alert(idElement);
				//cambioContenidoProspectos(idElement);
				//changeTabHome(idElement);
				break;
				
			case MENU_AIRPORTCODE:
			    element.className = 'MenuItemOver';
			    break;
		}	    
	}
}

/*///////////////////////////////////////////////////////////////
/	Autor 			: David Blandon
/	Fecha 			: Lunes, 18 de Diciembre de 2006		
/	Funcion name 	: mouseOut()
/	Proposito 		: Identificar en que momento se dispara un evento mouseout tanto en
					  Firefox como en Internet Explorer (cross-browser)
/	Parametros		: evx 	=> Un objeto evento, ya sea generado por FF o IE
/	Return			: None
*////////////////////////////////////////////////////////////////	
function mouseOut(evx)
{
	var mouseEvent 	= new Events(evx);
	var element		= mouseEvent.target;
	
	if (element.tagName == 'INPUT') {
		if (element.type == 'text' || element.type == 'textarea') {
			//element.className = 'textMouseOut';	
		}
		
		if (element.type == "button") 
		{
	        if (element.className == YAHOO.Style.CSS_BUTTON_OVER || element.className == YAHOO.Style.CSS_BUTTON_DOWN)
            {
                element.className = YAHOO.Style.CSS_BUTTON;
            }
        }            
        
        if (element.type == "submit") 
		{
	        if (element.className == YAHOO.Style.CSS_BUTTON_FOOTER_OVER || element.className == YAHOO.Style.CSS_BUTTON_FOOTER_DOWN)
            {
                element.className = YAHOO.Style.CSS_BUTTON_FOOTER;
            }
        } 

	} else if (element.tagName == 'DIV' || element.tagName == 'SPAN') {
	    
    	var idElement 		= element.id;
		var nombreElement	= idElement.substr(idElement.indexOf('_',1));
					
		switch (nombreElement) {
			
			case TAB_ETAPA:
				//alert(idElement);
				//cambioContenidoProspectos(idElement);
				//changeTabHome(idElement);
				break;
				
			case MENU_AIRPORTCODE:
			    element.className = 'MenuItem';
			    break;
		}	    
	}
}

/*///////////////////////////////////////////////////////////////
/	Autor 			: David Blandon
/	Fecha 			: Lunes, 18 de Diciembre de 2006		
/	Funcion name 	: keyPres()
/	Proposito 		: Identificar en que momento se dispara un evento keyPress tanto en
					  Firefox como en Internet Explorer (cross-browser)
/	Parametros		: evx 	=> Un objeto evento, ya sea generado por FF o IE
/	Return			: None
*////////////////////////////////////////////////////////////////	
function keyPres(evx)
{
	var keyEvent = new Events(evx);
	if (keyEvent.keyCode == 13) {
		if (keyEvent.target.form != 'undefined' && keyEvent.target.form != null) {
			var frmSource		= keyEvent.target.form;
			var idElement 		= keyEvent.target.id;
			var nombreElement	= idElement.substr(idElement.indexOf('_',1));

			switch (frmSource.name) {

			}
			
			return false;
		}
	}
	return true;
}


/*///////////////////////////////////////////////////////////////
/	Autor 			: David Blandon
/	Fecha 			: Lunes, 18 de Diciembre de 2006		
/	Funcion name 	: createDIV()
/	Proposito 		: Crear un elemento DIV que cubra toda la pantalla					 
/	Parametros		: None
/	Return			: None
*////////////////////////////////////////////////////////////////
function createDIV()
{
	height 	= document.body.offsetHeight;
	div 	= document.createElement('DIV');
	with (div) {
		id						= 'display';
		style.backgroundColor 	=  '#FFFFFF';
		style.left				= '0px';
		style.top				= '0px';
		style.zIndex			= '2';
		style.position			= 'absolute';
		style.width				= '100%';
		style.opacity			= '.6';
		style.filter			= 'alpha(opacity=40)';
		style.height			= height + "px";
	}
	document.body.appendChild(div);
	
	setTimeout
}

/*///////////////////////////////////////////////////////////////
/	Autor 			: David Blandon
/	Fecha 			: Lunes, 18 de Diciembre de 2006		
/	Funcion name 	: removeDIV()
/	Proposito 		: Eliminar un elemento DIV			 
/	Parametros		: None
/	Return			: None
*////////////////////////////////////////////////////////////////	
function removeDIV()
{
	div = document.getElementById('display');
	document.body.removeChild(div);
}

/*///////////////////////////////////////////////////////////////
/	Autor 			: Unknown
/	Fecha 			: Lunes, 18 de Diciembre de 2006		
/	Proposito		: Con esta seria de funciones se emulara el metodo insertAdjacentHTML de Internet Explorer
*////////////////////////////////////////////////////////////////	
//if (self.Node && self.Node.prototype) {
//	Node.prototype.removeNode				= remove_Node;
//	Node.prototype.replaceNode				= replace_Node;
//	Node.prototype.swapNode					= swap_Node;
//	Element.prototype.applyElement			= apply_Element;
//	Element.prototype.contains				= _contains;
//	Element.prototype.insertAdjacentText	= insertAdj_Text;
//	Element.prototype.insertAdjacentHTML	= insertAdj_HTML;
//	Element.prototype.insertAdjacentElement	= insertAdj_El;
//	Element.prototype.insert__Adj			= insert__Adj;
//	
//	//Adicionamos una propiedad a todos los elementos para determinar el top absoluto
//	Element.prototype.absoluteTop = function()
//	{
//		var parent = this.offsetParent		//Obtengo el primer offsetParent de mi objeto
//		var top = 0;
//				
//		while (parent != null)	 {		
//			//Obtengo el top del mi parent
//			top += parent.offsetTop;
//			//Seteo un nuevo parent
//			parent = parent.offsetParent;		
//		}
//		
//		return top;
//	}
//	

//	Element.prototype.absoluteLeft = function()
//	{
//		var parent = this.offsetParent		//Obtengo el primer offsetParent de mi objeto
//		var left = 0;
//				
//		while (parent != null)	 {		
//			//Obtengo el top del mi parent
//			left += parent.offsetLeft;
//			//Seteo un nuevo parent
//			parent = parent.offsetParent;		
//		}
//		
//		return left;		
//	}
//	
//}

//function remove_Node(a1)
//{
//	var p = this.parentNode;
//	if (p &&! a1) {
//		var df = document.createDocumentFragment();
//		for (var a = 0; a < this.childNodes.length; a++) {
//			df.appendChild(this.childNodes[a])
//		}
//		p.insertBefore(df,this)
//	}
//	return p?p.removeChild(this):this;
//}

//function replace_Node(a1)
//{
//	return this.parentNode.replaceChild(a1,this)
//}

//function swap_Node(a1)
//{
//	var p = a1.parentNode;
//	var s = a1.nextSibling;
//	this.parentNode.replaceChild(a1,this);
//	p.insertBefore(this,s)
//	return this;
//}

//function apply_Element(a1,a2)
//{
//	if (!a1.splitText) {
//		a1.removeNode();
//		if (a2 && a2.toLowerCase() == "inside"){
//			for (var a = 0; a < this.childNodes.length; a++) {
//				a1.appendChild(this.childNodes[a])
//			}
//			this.appendChild(a1)
//		} else {
//			var p = this.parentNode;
//			p.insertBefore(a1,this);
//			a1.appendChild(this);
//		}
//		return a1;
//	}
//}

//function _contains(a1)
//{
//	var r = document.createRange();
//	r.selectNode(this);
//	//return r.compareNode(a1)==3;
//}

//function insertAdj_Text(a1,a2)
//{
//	var t = document.createTextNode(a2||"")
//	this.insert__Adj(a1,t);
//}

//function insertAdj_HTML(a1,a2)
//{
//	var r = document.createRange();
//	r.selectNode(this);
//	var t = r.createContextualFragment(a2);
//	this.insert__Adj(a1,t);
//}

//function insertAdj_El(a1,a2)
//{
//	this.insert__Adj(a1,a2);
//	return a2;
//}

//function insert__Adj(a1,a2)
//{
//	var p = this.parentNode;
//	var s = a1.toLowerCase();
//	if (s == "beforebegin"){p.insertBefore(a2,this)}
//	if (s == "afterend"){p.insertBefore(a2,this.nextSibling)}
//	if (s == "afterbegin"){this.insertBefore(a2,this.childNodes[0])}
//	if (s == "beforeend"){this.appendChild(a2)}
//}
/////////////////////////Fin de codigo de terceros//////////////////////////

//funcion poara subir los archivos
function upload(){
	var par = window.parent.document;
	document.iform.submit();
}

/*///////////////////////////////////////////////////////////////
/	Autor 			: David Blandon
/	Fecha 			: Lunes, 18 de Diciembre de 2006		
/	Funcion name 	: getDayName()
/	Proposito 		: Obtener dia de la semana
/	Parametros		: day	= El numero del dia
/	Return			: None
*////////////////////////////////////////////////////////////////	
function getDayName(day)
{
	var dayName = '';
	switch (day) {
		case 0 : dayName = 'Domingo'; 	break;
		case 1 : dayName = 'Lunes'; 	break;
		case 2 : dayName = 'Martes'; 	break;
		case 3 : dayName = 'Míercoles'; break;
		case 4 : dayName = 'Jueves'; 	break;
		case 5 : dayName = 'Viernes'; 	break;			
		case 6 : dayName = 'Sábado'; 	break;			
	}	
	return dayName;
}

/*///////////////////////////////////////////////////////////////
/	Autor 			: David Blandon
/	Fecha 			: Lunes, 18 de Diciembre de 2006		
/	Funcion name 	: getMonthName()
/	Proposito 		: Obtener el nombre del mes
/	Parametros		: month	= El numero del mes
/	Return			: None
*////////////////////////////////////////////////////////////////	
function getMonthName(month)
{
	var monthName = '';
	switch (month) {
		case 1 	: monthName = 'Enero';		break;
		case 2 	: monthName = 'Febrero'; 	break;
		case 3 	: monthName = 'Marzo'; 		break;
		case 4 	: monthName = 'Abril'; 		break;
		case 5 	: monthName = 'Mayo'; 		break;			
		case 6 	: monthName = 'Junio'; 		break;		
		case 7 	: monthName = 'Julio'; 		break;		
		case 8 	: monthName = 'Agosto'; 	break;		
		case 9 	: monthName = 'Septiembre'; break;	
		case 10 : monthName = 'Octubre'; 	break;		
		case 11 : monthName = 'Noviembre'; 	break;		
		case 12 : monthName = 'Diciembre'; 	break;			
	}	
	return monthName;
}

/*///////////////////////////////////////////////////////////////
/	Autor 			: David Blandon
/	Fecha 			: Lunes, 18 de Diciembre de 2006		
/	Funcion name 	: drawModuloObservaciones()
/	Proposito 		: dibujar el modulo dinamicamente
/	Parametros		: month	= El numero del mes
/	Return			: None
*////////////////////////////////////////////////////////////////	
function drawModuloObservaciones(id)
{
	txtObservaciones = '<br><textarea name="txtObservaciones[]" cols="76" rows="1" id="txtObservaciones"></textarea>'	
	
	var span = document.getElementById(id);
	span.insertAdjacentHTML('beforebegin',txtObservaciones);
}


function getAbsoluteTop(target)
{
    
    var element = document.getElementById(target);

	var parent = element.offsetParent		//Obtengo el primer offsetParent de mi objeto
	var top = 0;
			
	while (parent != null)	 {		
		//Obtengo el top del mi parent
		top += parent.offsetTop;
		//Seteo un nuevo parent
		parent = parent.offsetParent;		
	}
	
	return top;
}

function getAbsoluteLeft(target)
{
    var element = document.getElementById(target);
    
	var parent = element.offsetParent		//Obtengo el primer offsetParent de mi objeto
	var left = 0;
			
	while (parent != null)	 {		
		//Obtengo el top del mi parent
		left += parent.offsetLeft;
		//Seteo un nuevo parent
		parent = parent.offsetParent;		
	}
	
	return left;		
}

function onlyNumber(e)
{
	var keyEvent 	= new Events(e);
	var keyCode 	= keyEvent.keyCode;
	if (keyCode == 8 || keyCode == 46 || keyCode == 37 || keyCode == 39 || keyCode == 35 || keyCode == 36 || keyCode == 9)
	{
	
	}
	else if ((keyCode >= 48 && keyCode <= 57) == false)
	{
	   YAHOO.util.Event.preventDefault(e);
	}
}


YAHOO.language = function(idioma)
{
    try
    {
        var hdLanguage = document.getElementById("ctl00_UcEncabHome1_hdLanguage");
        hdLanguage.value = idioma;
    }
    catch (Exp)
    {
    
    }
}



YAHOO.container.getCountryList = function(id)
{
    try
    {
        
        var response            = YAHOO.ajax.iata.getCountryList();
        var country             = YAHOO.form.findControl("country");
        YAHOO.target.select     = YAHOO.form.findControl(id);

        
        country.innerHTML       = response; 
        country.style.display   = "block";
        
        
        YAHOO.container.country.setBody(country);
        YAHOO.container.country.show();

        window.setTimeout('YAHOO.container.returnCountry("ES")', 1000);        //YAHOO.util.Event.preventDefault(e);
    }
    catch(Exp)
    {
        alert(Exp.message);
    }
}

YAHOO.container.getCityByCountry = function(code, idioma)
{
    try
    {        
        var response    = YAHOO.ajax.iata.getCityByCountry(code, idioma);
        var country     = YAHOO.form.findControl("country");

        country.innerHTML       = response; 
        country.style.display   = "block";
        document.body.appendChild(country);
        YAHOO.container.country.setBody(country);
        YAHOO.container.country.show();
        
    }
    catch(Exp)
    {
        alert(Exp.message);
    }
}

YAHOO.container.returnCountry = function()
{
    try
    {
        var Idioma      = (arguments.length > 0 ) ? arguments[0] : "";
        
        var response    = YAHOO.ajax.iata.getCountryList(Idioma);
        var country     = YAHOO.form.findControl("country");    
        var frmBusca    = YAHOO.form.findControl("frmBusca");    
                
        country.innerHTML       = response; 
        country.style.display   = "block";
        document.body.appendChild(country);
        
        YAHOO.container.country.setBody(country);            
    }
    catch(Exp)
    {
        alert(Exp.message);
    }
}

YAHOO.container.setCityValue = function(code)
{
    try
    {        
        YAHOO.target.select.value = code;
        
        YAHOO.container.country.hide();
    }
    catch(Exp)
    {
        YAHOO.container.country.hide();
    }
}

YAHOO.handleClosed = function(e)
{
    try
    {
        var country = YAHOO.form.findControl("country");
        
        country.style.display = "none";    
            
        document.body.appendChild(country);
    }
    catch(Exp)
    {
    
    }
}

YAHOO.textbox.number = function(e)
{
	var keyEvent 	= new Events(e);
	var keyCode 	= keyEvent.keyCode;
	if (keyCode == 8 || keyCode == 46 || keyCode == 37 || keyCode == 39 || keyCode == 35 || keyCode == 36 || keyCode == 9)
	{
	
	}
	else if ((keyCode >= 48 && keyCode <= 57) == false)
	{
	   YAHOO.util.Event.preventDefault(e);
	}
}

YAHOO.textbox.isValidEmail = function(Value) 
{
    if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(Value))
    {
        return true;
    } 
    return false;
}
