﻿/* ==============================================================================
Code to solve the problem of double-click the flash elements in IE
============================================================================== */
theObjects = document.getElementsByTagName("object"); 
for (var i = 0; i < theObjects.length; i++) 
{ 
	theObjects[i].outerHTML = theObjects[i].outerHTML; 
}
/* ============================================================================= */


/* ==============================================================================
FUNCTION:	OpenPopupWindow(winURL, winName, winFeatures)
- Opens a new browser window with the parameters passed into the function
============================================================================== */
function OpenPopupWindow(winURL, winName, winFeatures) 
{
	var objWin = window.open(winURL, winName, winFeatures);
	objWin.focus();
}

/* ==============================================================================
FUNCTION:	ResetForm()

	- Puts all the fields in the Form set to blank (empty)
============================================================================== */
function ResetForm()
{
	if(window.confirm("Tem a certeza que quer apagar todos os campos?"))
	{	
		var i;
		var theform;
		
		if (window.navigator.appName.toLowerCase().indexOf("microsoft") > -1)
		{
			theform = document.getElementById("GenericForm");
		}
		else {
			theform = document.forms["GenericForm"];
		}
		
		if (document.images)
		{
			for (i=0; i<theform.length; i++)
			{
				var tempobj = theform.elements[i];
				
				if (tempobj.type == "text")
				{
					eval(tempobj.value = "");
				}
				else if (tempobj.type == "checkbox")
				{
					eval(tempobj.checked = 0);
				}
				else if (tempobj.type == "select-one")
				{
					eval(tempobj.selectedIndex = 0);
				}
			}
		}
	}
}

/* ==============================================================================
FUNCTION:	CheckboxOnOff(fldChkboxObj)
INPUT:		fldChkboxObj - Checkbox Object to turn On or Off
RETURNS:		
============================================================================== */
function CheckboxOnOff(fldChkboxObj)
{
	var fldChkboxObj_src = fldChkboxObj.src;

	if (fldChkboxObj_src.match("checkbox_on.gif"))
		fldChkboxObj.src = '/images/checkbox_off.gif';
	else
		fldChkboxObj.src = '/images/checkbox_on.gif';
}

/* ==============================================================================
FUNCTION:	CheckboxOn_CheckboxOff(fldID, fldValue, fldChkboxOn, fldChkboxOff)
INPUT:		fldID - The ID of the field to be changed
				fldValue - String with the value to be assigned to the fldID
				fldChkboxOn - Checkbox to be turned On 
				fldChkboxOff - Checkbox to be turned Off
RETURNS:		
============================================================================== */
function CheckboxOn_CheckboxOff(fldID, fldValue, fldChkboxOn, fldChkboxOff)
{
	document.getElementById(fldID).value			= fldValue;
	document.getElementById(fldChkboxOn).src		= '/images/checkbox_on.gif';
	document.getElementById(fldChkboxOff).src		= '/images/checkbox_off.gif';
}

/* ==============================================================================
FUNCTION:	CheckboxChangeOnOff(fldID, fldValOn, fldValOff, fldChkbox)
INPUT:		fldID - The ID of the field to be changed
				fldValOn - Value to be assigned to the fldID when the Checkbox is On
				fldValOff - Value to be assigned to the fldID when the Checkbox is Off
				fldChkbox - Checkbox field that can be turned On or Off
RETURNS:		
============================================================================== */
function CheckboxChangeOnOff(fldID, fldValOn, fldValOff, fldChkbox)
{
	if (document.getElementById(fldID).value == fldValOn)
	{	
		document.getElementById(fldID).value		= fldValOff;
		document.getElementById(fldChkbox).src		= '/images/checkbox_off.gif';
	}
	else
	{
		document.getElementById(fldID).value		= fldValOn;
		document.getElementById(fldChkbox).src		= '/images/checkbox_on.gif';
	}
}

/* ==============================================================================
FUNCTION:	CheckboxOnOff_ShowHideDiv(fldID, fldVal, fldChkboxOn, fldChkboxOff, divObj, divDisplay)
INPUT:		fldID - The ID of the field to be changed
				fldVal - Value to be assigned to the fldID 
				fldChkboxOn - Checkbox to be turned On 
				fldChkboxOff - Checkbox to be turned Off				
				divObj - DIV Object to show or hide
				divDisplay - Attribute value to show or hide the DIV Object				
RETURNS:		
============================================================================== */
function CheckboxOnOff_ShowHideDiv(fldID, fldVal, fldChkboxOn, fldChkboxOff, divObj, divDisplay)
{
	document.getElementById(fldID).value					= fldVal;
	document.getElementById(fldChkboxOn).src 				= '/images/checkbox_on.gif';
	document.getElementById(fldChkboxOff).src 			= '/images/checkbox_off.gif';		
	document.getElementById(divObj).style.display		= divDisplay;
}

/*** Layer search engine: index.html *********************************************/
function ChangeLayers(layerId) 
{
	document.getElementById('search_aviao').style.display 					= 'none';
	document.getElementById('search_hotel').style.display 					= 'none';
	document.getElementById('search_ferias').style.display 					= 'none';
	
	document.getElementById('right_table_aviao').style.background 			= '#FFFFFF';
	document.getElementById('right_table_hotel').style.background			= '#FFFFFF';
	document.getElementById('right_table_ferias').style.background			= '#FFFFFF';
	
	/*** os layers que faltam devem ser listados aqui usando o modelo em cima ***/
	
	var bgcolor = document.getElementById('table_'+layerId).style.background
	
	document.getElementById('search_'+layerId).style.display 				= 'block';
	document.getElementById('right_table_'+layerId).style.background		= bgcolor;
	
	//alert(bgcolor);
}

/* ==============================================================================
FUNCTION:	GetWeekDayText(weekday)
INPUT:		weekday - Value representing the day of the week 
				0 - Sunday (Domingo)
				1 - Monday (2ª feira) 
				3 - Tuesday (3ª feira) ...
RETURNS:		The text associated with the number of the day of the week
============================================================================== */
function GetWeekDayText(weekday)
{
	var arrWeekdays = new Array("Dom.", "Seg.", "Ter.", "Qua.", "Qui.", "Sex.", "Sab.");

	return arrWeekdays[weekday];
}

/* ==============================================================================
FUNCTION:	GetMonthText(month)
INPUT:		month - Value representing the month 
				0 - January (Janeiro)
				1 - February (Fvereiro) 
				3 - March (Março) ...
RETURNS:		The text associated with the number of the month
============================================================================== */
function GetMonthText(month)
{
	var arrMonths = new Array("Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro");

	return arrMonths[month];
}

function OpenPosDiv(aDiv)
{    
    if(aDiv == null)
        return;    
    
    aDiv.style.left = tempX - 100;
    aDiv.style.top = tempY - 5;
    aDiv.style.display = "";
    
    var browserType = String(navigator.appVersion);
    
    
    if(browserType.toLowerCase().indexOf("msie") > -1 && browserType.toLowerCase().indexOf("7.0") == -1)                
        HideControls(aDiv.id);
}


function OpenSizedPopup(aURL)
{
    window.open(aURL,"","width=800,height=600,scrollbars=yes,resizable=yes,location=yes,status=yes,titlebar=yes,toolbar=yes,top=0");
}

var hiddenControls;
function HideControls(aDiv){
	this.hiddenControls = new Array();

	var aboveElement = document.getElementById(aDiv);

	var arrElements = document.getElementsByTagName('SELECT');

	for (var myIndex = 0; myIndex < arrElements.length; myIndex++) {
		var myElement = arrElements[myIndex];

		var elementInside = isInside(aboveElement, myElement);

		if (elementInside) {					
			myElement.style.visibility = 'hidden';
			hiddenControls[hiddenControls.length] = myElement;
		}
	}
}

function ShowControls() {
	if (this.hiddenControls != null) {
		for (var myIndex = 0; myIndex < this.hiddenControls.length; myIndex++) {
			var myElement = this.hiddenControls[myIndex];

			myElement.style.visibility = 'visible';
		}

		this.hiddenControls = null;
	}
}

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 isInside(containerElement, element) {
	var returnValue = false;

	var width = element.offsetWidth;
	var height = element.offsetHeight;

	var elementX1 = findPosX(element);
	var elementY1 = findPosY(element);

	var elementX2 = elementX1 + width;
	var elementY2 = elementY1;

	var elementX3 = elementX1;
	var elementY3 = elementY1 + height;

	var elementX4 = elementX1 + width;
	var elementY4 = elementY1 + height;

	if (!returnValue)
		returnValue = returnValue || isInsideArea(containerElement, elementX1, elementY1);

	if (!returnValue)
		returnValue = returnValue || isInsideArea(containerElement, elementX2, elementY2);

	if (!returnValue)
		returnValue = returnValue || isInsideArea(containerElement, elementX3, elementY3);

	if (!returnValue)
		returnValue = returnValue || isInsideArea(containerElement, elementX4, elementY4);

	if (!returnValue)
		returnValue = returnValue || intersectLines(containerElement, elementX1, elementY1, elementX2, elementY2);

	if (!returnValue)
		returnValue = returnValue || intersectLines(containerElement, elementX2, elementY2, elementX4, elementY4);

	if (!returnValue)
		returnValue = returnValue || intersectLines(containerElement, elementX4, elementY4, elementX3, elementY3);

	if (!returnValue)
		returnValue = returnValue || intersectLines(containerElement, elementX3, elementY3, elementX1, elementY1);

	return returnValue;
}

function isInsideArea(containerElement, myX, myY) {
	var returnValue = false;

	var width = containerElement.offsetWidth;
	var height = containerElement.offsetHeight;

	var containerX1 = findPosX(containerElement);
	var containerY1 = findPosY(containerElement);
	
	var containerX2 = containerX1 + width;
	var containerY2 = containerY1;

	var containerX3 = containerX1;
	var containerY3 = containerY1 + height;

	var containerX4 = containerX1 + width;
	var containerY4 = containerY1 + height;

	if ((containerX1 <= myX) && (containerX2 >= myX)) { // Está dentro do eixo X
		if ( (containerY1 <= myY) && (containerY3 >= myY) ) { // Está dentro do eixo Y
			returnValue = true;
		}
	}

	return returnValue;
}

function intersectLines(containerElement, lineX1, lineY1, LineX2, LineY2) {
	var returnValue = false;

	var containerWidth = containerElement.offsetWidth;
	var containerHeight = containerElement.offsetHeight;

	var containerX1 = findPosX(containerElement);
	var containerY1 = findPosY(containerElement);
	
	var containerX2 = containerX1 + containerWidth;
	var containerY2 = containerY1;

	var containerX3 = containerX1;
	var containerY3 = containerY1 + containerHeight;

	var containerX4 = containerX1 + containerWidth;
	var containerY4 = containerY1 + containerHeight;

	if (!returnValue) // Recta de X1 para X2
		returnValue = returnValue || intersect(containerX1, containerY1, containerX2, containerY2, lineX1, lineY1, LineX2, LineY2);

	if (!returnValue) // Recta de X2 para X4
		returnValue = returnValue || intersect(containerX2, containerY2, containerX4, containerY4, lineX1, lineY1, LineX2, LineY2);

	if (!returnValue) // Recta de X4 para X3
		returnValue = returnValue || intersect(containerX4, containerY4, containerX3, containerY3, lineX1, lineY1, LineX2, LineY2);

	if (!returnValue) // Recta de X3 para X1
		returnValue = returnValue || intersect(containerX3, containerY3, containerX1, containerY1, lineX1, lineY1, LineX2, LineY2);

	return returnValue;
}

function intersect(line1X1, line1Y1, line1X2, line1Y2, line2X1, line2Y1, line2X2, line2Y2) {
	var returnValue = false;

	if ( (line1X1 <= line2X1) && (line2X1 <= line1X2) ) {
		if ( (line2Y1 <= line1Y1) && (line1Y1 <= line2Y2) ) {
			returnValue = true;
		}
	}

	return returnValue;
}
			
function getElementHeight(Elem) {
	if (ns4) {
		var elem = getObjNN4(document, Elem);
		return elem.clip.height;
	} else {
		if(document.getElementById) {
			var elem = document.getElementById(Elem);
		} else if (document.all){
			var elem = document.all[Elem];
		}
		if (op5) { 
			xPos = elem.style.pixelHeight;
		} else {
			xPos = elem.offsetHeight;
		}
		return xPos;
	} 
}
			
function getElementWidth(Elem) {
	if (ns4) {
		var elem = getObjNN4(document, Elem);
		return elem.clip.width;
	} else {
		if(document.getElementById) {
			var elem = document.getElementById(Elem);
		} else if (document.all){
			var elem = document.all[Elem];
		}
		if (op5) {
			xPos = elem.style.pixelWidth;
		} else {
			xPos = elem.offsetWidth;
		}
		return xPos;
	}
}
			
function getObjNN4(obj,name)
{
	var x = obj.layers;
	var foundLayer;
	for (var i=0;i<x.length;i++)
	{
		if (x[i].id == name)
			foundLayer = x[i];
		else if (x[i].layers.length)
			var tmp = getObjNN4(x[i],name);
		if (tmp) foundLayer = tmp;
	}
	return foundLayer;
}

 function submitform()
{
    if(document.getElementById("CardNumber")!=null && document.getElementById("CardNumber")!="")
        document.getElementById("isicOfertas").submit();
    else
        alert("Por favor introduza o número de cartão.");
}
