/**
 * Revision $Rev: 3065 $
 * 
 * Javascript Library
 * @author Luciana Gavini <luciana.gavini@gmx.net>
 * @author Antje Oldenburg <aogra@gmx.net>
 * @package js
 */


function checkFlightChoose(formValues, direction, skipDirection)
{
	if (skipDirection != 'outward')
	{
		if (!formValues['owpoolid'])
		{
			alert('Please choose your flight!');
			return false;
		}
	}
	
	if (skipDirection != 'return')
	{			
		if (direction == 'roundtrip')
		{
			if (!formValues['rtpoolid'])
			{
				alert('Please choose your flight!');
				return false;
			}
		}
	}
	return true;
}
/* --------------------------------------------------- */

function displayOIDateInput(selectedItem, elementId)
{
	var elem = document.getElementById(elementId);
	if(elem)
	{
		if (selectedItem == 'outstandingitem')
			elem.style.display = 'inline';
		else
			elem.style.display = 'none';
	}
}
/* --------------------------------------------------- */

function displaySelectedInput(items, inputs, selectedItem)
{
	var elem;
	var i;
	for (i=1; i < items.length; i++)
	{
		elem = document.getElementById(items[i]);
		if (elem)
			elem.style.display = 'none';
	}
	for (i=0; i < inputs.length; i++)
	{
		elem = document.getElementById(inputs[i]);
		if (elem)
			elem.value = '';
	}
	
	if (selectedItem > 0)
	{
		elem = document.getElementById(items[selectedItem]);
		if (elem)
			elem.style.display = 'inline';
	}
}
/* --------------------------------------------------- */


/**
 * 
 */
function disableInputElements(elements)
{
	for (var i=0; i < elements.length; i++)
	{
		elem = document.getElementById(elements[i]);
		if (elem)
			elem.disabled = true;
	}
}
/* --------------------------------------------------- */

/**
 * 
 */
function enableInputElements(elements)
{
	for (var i=0; i < elements.length; i++)
	{
		elem = document.getElementById(elements[i]);
		if (elem)
			elem.disabled = false;
	}
}
/* --------------------------------------------------- */

/**
 * 
 */
function refreshCodeDisplay(inputField, code_prefix, elemid, codeid)
{
	
	var text   = trim(inputField.value);
	
	var value  = "";
	var code = code_prefix;
	
	for(var i=0; i < text.length; i++)
	{
		var ord = text.charCodeAt(i);		
		var c   = '';
		var ch  = '';
		if ((ord > 31) && (ord < 123))
		{
			ch  = text.charAt(i);	
			
			if ((ord == 32) || (ord == 95))
				c = '_';
			else if ( ((ord >= 33) && (ord <= 47)) ||
			     ((ord >= 58) && (ord <= 64)) ||
			     ((ord >= 91) && (ord <= 96)))
				c =  '';
			else
				c = ch;
		}
		code  += c.toUpperCase();	
		value += ch;
	}
	elemobj = document.getElementById(elemid);
	codeobj = document.getElementById(codeid);
	elemobj.innerHTML = code + "_";
	codeobj.value     = code + "_";
}
/* --------------------------------------------------- */

/**
 * 
 */
function trim(str) 
{
  	str.replace(/^\s+/, '').replace(/\s+$/, '');  
 	return str;
}
/* --------------------------------------------------- */



/**
 * Removes all select box options
 * 
 * @param string element id of select box
 */
function emptySelectBox(elemId)
{
	var elSel = document.getElementById(elemId);
	if (elSel)
	{
		while (elSel.length > 1)
			elSel.remove(elSel.length - 1);			
	}
}
/* --------------------------------------------------- */

/**
 * Appends a collection of airport options within a select box
 * 
 * @param string element id of select box
 * @param array The collection of options 
 */
function appendAirportOptions(elemId, options)
{
	emptySelectBox(elemId);
	var elSel = document.getElementById(elemId);
	if (elSel)
	{
		for (var i=0; i < options.length; i++)
		{			
			var newOpt = document.createElement('option');
  			newOpt.text = options[i].location + " (" + options[i].apt_iata_code + ")";
  			newOpt.value = options[i].id;
  		
  			try 
  			{
    			elSel.add(newOpt, null); // standards compliant; doesn't work in IE
  			}
  			catch(ex) 
  			{
    			elSel.add(newOpt); // IE only
  			}  			
  		}
  		if (elSel.options.length > 1)
  			elSel.selectedIndex = 1;
	}
}
/* --------------------------------------------------- */

function appendFlightDayOptions(elemId, flightday)
{
	emptySelectBox(elemId);
	var elSel = document.getElementById(elemId);
	var selected  = 0;
	var index = 0;

	if (elSel)
	{
		elSel.remove(0);
		for (var i=1; i <= 31; i++)
		{
			if (i < 10)
				day = "0" + i;
			else
				day = i;
		
			var newOpt = document.createElement('option');
			newOpt.text = day;
  			newOpt.value = i; 
  			try 
      		{
        		elSel.add(newOpt, null); // standards compliant; doesn't work in IE
      		}
      		catch(ex) 
      		{
        		elSel.add(newOpt); // IE only
      		}  			
  			if (i == flightday)
  		  		selected = index;
  			index++;
		}
  		elSel.selectedIndex = selected;	
	}
}
/* --------------------------------------------------- */

function appendFlightDateOptions(elemId, flightdate, dates, timestamps)
{
	emptySelectBox(elemId);
	var elSel = document.getElementById(elemId);	
	var selected  = 0;
	
	if (elSel)
	{
		elSel.remove(0);
		
		for (var i=0; i < dates.length; i++)
		{
			var newOpt = document.createElement('option');
			newOpt.text = dates[i];
  			newOpt.value = timestamps[i];  	
  				
  			try 
      		{
        		elSel.add(newOpt, null); // standards compliant; doesn't work in IE
      		}
      		catch(ex) 
      		{
        		elSel.add(newOpt); // IE only
      		} 
  		
  			if (flightdate == dates[i])
  		  	selected = i;
		}
		
  		elSel.selectedIndex = selected;
	}
}
/* --------------------------------------------------- */

/**
 * 
 */
function appendChildrenOptions(noadults, maxpaxes, elemId)
{
	emptySelectBox(elemId);
	var elSel = document.getElementById(elemId);
	if (elSel)
	{
		var maxchildren = maxpaxes - noadults;
		for (var i=1; i <= maxchildren; i++)
		{			
			var newOpt = document.createElement('option');			
  			newOpt.text = i;
  			newOpt.value = i;
  		
  			try 
  			{
    			elSel.add(newOpt, null); // standards compliant; doesn't work in IE
  			}
  			catch(ex) 
  			{
    			elSel.add(newOpt); // IE only
  			}  			
  		}
	}	
}
/* --------------------------------------------------- */

/**
 * Appends a collection of options within a select box
 * 
 * @param string element id of select box
 * @param array The collection of options 
 */
function appendInfantOptions(noadults, elemId)
{
	emptySelectBox(elemId);
	var elSel = document.getElementById(elemId);
	if (elSel)
	{
		for (var i=1; i <= noadults; i++)
		{			
			var newOpt = document.createElement('option');			
  			newOpt.text = i;
  			newOpt.value = i;
  		
  			try 
  			{
    			elSel.add(newOpt, null); // standards compliant; doesn't work in IE
  			}
  			catch(ex) 
  			{
    			elSel.add(newOpt); // IE only
  			}  			
  		}
	}
}
/* --------------------------------------------------- */

function selectRow(rowElem, rowClass, evenClass, oddClass, selClass)
{
	rowCollection = rowElem.parentNode.getElementsByTagName('TR');
	for (var i=0; i < rowCollection.length; i++)
	{
			var rowclass = ((i % 2) == 0) ? evenClass : oddClass;
			rowCollection[i].className = rowclass;
	}
	rowElem.className = (rowElem.className == selClass) ? rowClass : selClass;
}
/* --------------------------------------------------- */

/**
 * 
 */
function setDisplay(elemId, visible)
{
	if (typeof(visible) == 'string')
		visible = (parseInt(visible) == 0) ? false : true;
	
	var elem = document.getElementById(elemId);
	if (elem)
		elem.style.display = (visible) ? 'inline' : 'none';
}
/* --------------------------------------------------- */

/**
 * 
 */
function toggleDisplay(elemId)
{
	var elem = document.getElementById(elemId);
	if (elem)
	{
		elem.style.display = (elem.style.display == 'none') ? 'inline' : 'none';
		return elem.style.display;
	}
	return 'none';
}

/* --------------------------------------------------- */

function toggleDisplayAndButton(objButton, elemId, showLabel, hideLabel)
{
	var display = toggleDisplay(elemId);
	switch (display)
	{
		case 'none':
			objButton.value = showLabel;
			break;
		case 'inline':
			objButton.value = hideLabel;
			break;
	}
	return display;
}
/* --------------------------------------------------- */

function toggleDisplayBlock(elemId)
{
	var elem = document.getElementById(elemId);
	if (elem)
		elem.style.display = (elem.style.display == 'none') ? 'block' : 'none';
}

/* --------------------------------------------------- */

function displayPaymentForm(pay_type)
{
	switch(pay_type)
	{
		case 'CC':
			elem = document.getElementById('payment_info_bt');
			elem.style.display = 'none';
			elem = document.getElementById('payment_info_cc');
			elem.style.display = 'inline';
			break;
		case 'BT':
		case 'DD':
			elem = document.getElementById('payment_info_bt');
			elem.style.display = 'inline';
			elem = document.getElementById('payment_info_cc');
			elem.style.display = 'none';
			break;
		case 'CS':
			elem = document.getElementById('payment_info_bt');
			elem.style.display = 'none';
			elem = document.getElementById('payment_info_cc');
			elem.style.display = 'none';
			break;
	}
} 

/**
 * 
 */
function calendar(mode, formId) 
{	
	var formObj = document.getElementById(formId);
	if (formObj)
	{
		switch (mode)
		{
			case "outward":
				var selIndex = formObj.outwarddate.selectedIndex;
				var selValue = formObj.outwarddate.options[selIndex].value;
				break;
			case "return":
				var selIndex = formObj.returndate.selectedIndex;
				var selValue = formObj.returndate.options[selIndex].value;
				break;
			default:
				return;
		}
	}
	var url = '/lib/scripts/calendar.php?mode='+mode+'&t='+selValue;
	var winCalendar = window.open(url,'calendar','height=320,width=310,dependent=yes,toolbar=no,status=no,menubar=no,resizable=no,location=no,scrollbars=no');
	winCalendar.focus();
}
/* --------------------------------------------------- */


/**
 * 
 */
function printer(url) 
{	
	var winPrinter = window.open(url,'printer','height=800,width=800,dependent=yes,toolbar=no,status=no,menubar=no,resizable=no,location=no,scrollbars=yes');
	winPrinter.focus();
}
/* --------------------------------------------------- */


/**
 * 
 */
function popup(winname, url) 
{	
	var popupWin = window.open(url, winname,'height=800,width=1000,dependent=yes,toolbar=no,status=no,menubar=no,resizable=yes,location=no,scrollbars=yes');
	popupWin.focus();
}
/* --------------------------------------------------- */

/**
 * 
 */
function popupXL(winname, url, elemid) 
{	
	var elem = document.getElementById(elemid);
	if (elem)
	{
		var value = parseInt(elem.value);
		if (value > 0)
			url += "&vl="+value;
	} 
	var popupWin = window.open(url, winname,'height=800,width=2000,dependent=yes,toolbar=no,status=no,menubar=no,resizable=yes,location=no,scrollbars=yes');
	popupWin.focus();
}
/* --------------------------------------------------- */


/**
 * 
 */
function closeCalendar(formid, day) 
{	
	var formObj = document.getElementById(formid);
	
	// select day
	var selid = formObj.mode.value+'day';
	var selObj = window.opener.document.getElementById(selid);
	selObj.selectedIndex = day-1;
	
	// select month and year
	var month = formObj.month.value;
	selid = formObj.mode.value+'date';
	selObj = window.opener.document.getElementById(selid);
	for (var i=0; i < selObj.length; i++)
	{
		if (selObj.options[i].text == month)
		{
			selObj.selectedIndex = i;
			break;
		}
	}
	window.close();
}
/* --------------------------------------------------- */

function validatePaymentForm(formObj, cc_fee, carrier, wirecardSystem)
{
	error = false;
	if (trim(formObj.elements['invoice_company'].value) == '')
	{
		if (trim(formObj.elements['invoice_first_name'].value) == '')
		{
			error = true;
			document.getElementById('label_invoice_first_name').style.color = "#ee0000";
			document.getElementById('invoice_first_name').style.border = "1px solid #ee0000";
		}
		else
		{
			document.getElementById('label_invoice_first_name').style.color = "#000000";
			document.getElementById('invoice_first_name').style.border = "";
		}
		if (trim(formObj.elements['invoice_last_name'].value) == '')
		{
			error = true;
			document.getElementById('label_invoice_last_name').style.color = "#ee0000";		
			document.getElementById('invoice_last_name').style.border = "1px solid #ee0000";
		} 
		else
		{
			document.getElementById('label_invoice_last_name').style.color = "#000000";		
			document.getElementById('invoice_last_name').style.border = "";
		}
	}
	if (trim(formObj.elements['invoice_street'].value) == '')
	{
		error = true;	
		document.getElementById('label_invoice_street').style.color = "#ee0000";		
		document.getElementById('invoice_street').style.border = "1px solid #ee0000";
	}
	else
	{
		document.getElementById('label_invoice_street').style.color = "#000000";		
		document.getElementById('invoice_street').style.border = "";
	}
	if (trim(formObj.elements['invoice_postal_code'].value) == '')
	{
		error = true;	
		document.getElementById('label_invoice_postal_code').style.color = "#ee0000";		
		document.getElementById('invoice_postal_code').style.border = "1px solid #ee0000";
	}
	else
	{
		document.getElementById('label_invoice_postal_code').style.color = "#000000";		
		document.getElementById('invoice_postal_code').style.border = "";
	}
	if (trim(formObj.elements['invoice_city'].value) == '')
	{
		error = true;	
		document.getElementById('label_invoice_city').style.color = "#ee0000";		
		document.getElementById('invoice_city').style.border = "1px solid #ee0000";
	}
	else
	{
		document.getElementById('label_invoice_city').style.color = "#000000";		
		document.getElementById('invoice_city').style.border = "";
	}
	if (trim(formObj.elements['invoice_phone'].value) == '')
	{
		error = true;	
		document.getElementById('label_invoice_phone').style.color = "#ee0000";		
		document.getElementById('invoice_phone').style.border = "1px solid #ee0000";
	}
	else
	{
		document.getElementById('label_invoice_phone').style.color = "#000000";		
		document.getElementById('invoice_phone').style.border = "";
	}
	
	if (trim(formObj.elements['invoice_email_compare'].value) != trim(formObj.elements['invoice_email'].value))
	{
		error = true;	
		document.getElementById('label_invoice_email').style.color = "#ee0000";		
		document.getElementById('invoice_email').style.border = "1px solid #ee0000";
		document.getElementById('label_invoice_email_compare').style.color = "#ee0000";		
		document.getElementById('invoice_email_compare').style.border = "1px solid #ee0000";
	}
	else
	{
		document.getElementById('label_invoice_email').style.color = "#000000";		
		document.getElementById('invoice_email').style.border = "";
		document.getElementById('label_invoice_email_compare').style.color = "#000000";		
		document.getElementById('invoice_email_compare').style.border = "";
	}
	if (trim(formObj.elements['invoice_email'].value) == '')
	{
		error = true;	
		document.getElementById('label_invoice_email').style.color = "#ee0000";		
		document.getElementById('invoice_email').style.border = "1px solid #ee0000";
	}
	else
	{
		document.getElementById('label_invoice_email').style.color = "#000000";		
		document.getElementById('invoice_email').style.border = "";
	}
	if (trim(formObj.elements['invoice_email_compare'].value) == '')
	{
		error = true;	
		document.getElementById('label_invoice_email_compare').style.color = "#ee0000";		
		document.getElementById('invoice_email_compare').style.border = "1px solid #ee0000";
	}
	else
	{
		document.getElementById('label_invoice_email_compare').style.color = "#000000";		
		document.getElementById('invoice_email_compare').style.border = "";
	}
	
	
	if (formObj.elements['payment_type'].value == 'CC')
	{
		if (formObj.elements['cc_brand'].selectedIndex == 0)
		{
			error = true;	
			document.getElementById('label_cc_brand').style.color = "#ee0000";		
			document.getElementById('cc_brand').style.border = "1px solid #ee0000";
		}
		else
		{
			document.getElementById('label_cc_brand').style.color = "#000000";		
			document.getElementById('cc_brand').style.border = "";
		}
		if (trim(formObj.elements['cc_holder'].value) == '')
		{
			error = true;	
			document.getElementById('label_cc_holder').style.color = "#ee0000";		
			document.getElementById('cc_holder').style.border = "1px solid #ee0000";
		}
		else
		{
			document.getElementById('label_cc_holder').style.color = "#000000";		
			document.getElementById('cc_holder').style.border = "";
		}
		
		if (trim(formObj.elements['cc_number'].value) == '')
		{
			error = true;	
			document.getElementById('label_cc_number').style.color = "#ee0000";		
			document.getElementById('cc_number').style.border = "1px solid #ee0000";
		}
		else
		{
			var cc_number = trim(formObj.elements['cc_number'].value);
			cc_number = cc_number.replace(/\s+/g, '');
			cc_number = cc_number.replace(/-+/g, '');
			cc_number = cc_number.replace(/_+/g, '');
			formObj.elements['cc_number'].value = cc_number;
			document.getElementById('label_cc_number').style.color = "#000000";		
			document.getElementById('cc_number').style.border = "";
		}
		
		if (formObj.elements['cc_expiry_year'].selectedIndex == 0)
		{
			error = true;	
			document.getElementById('label_cc_expiry_year').style.color = "#ee0000";		
			document.getElementById('cc_expiry_year').style.border = "1px solid #ee0000";
		}
		else
		{
			document.getElementById('label_cc_expiry_year').style.color = "#000000";		
			document.getElementById('cc_expiry_year').style.border = "";
		}
		if (formObj.elements['cc_expiry_month'].selectedIndex == 0)
		{
			error = true;	
			document.getElementById('cc_expiry_month').style.border = "1px solid #ee0000";
		}
		else
			document.getElementById('cc_expiry_month').style.border = "";
		if (trim(formObj.elements['cc_cvc'].value) == '')
		{
			error = true;	
			document.getElementById('label_cc_cvc').style.color = "#ee0000";		
			document.getElementById('cc_cvc').style.border = "1px solid #ee0000";
		}	
		else
		{
			document.getElementById('label_cc_cvc').style.color = "#000000";		
			document.getElementById('cc_cvc').style.border = "";
		}
	
	}
	else if (formObj.elements['payment_type'].value == 'BT')
	{
		if (trim(formObj.elements['bankaccount_holder'].value) == '')
		{
			error = true;	
			document.getElementById('label_bankaccount_holder').style.color = "#ee0000";		
			document.getElementById('bankaccount_holder').style.border = "1px solid #ee0000";
		}
		else
		{
			document.getElementById('label_bankaccount_holder').style.color = "#000000";		
			document.getElementById('bankaccount_holder').style.border = "";
		}
		if (trim(formObj.elements['bankaccount_no'].value) == '')
		{
			error = true;	
			document.getElementById('label_bankaccount_no').style.color = "#ee0000";		
			document.getElementById('bankaccount_no').style.border = "1px solid #ee0000";
		}
		else
		{
			document.getElementById('label_bankaccount_no').style.color = "#000000";		
			document.getElementById('bankaccount_no').style.border = "";
		}
		if (trim(formObj.elements['bankaccount_bankno'].value) == '')
		{
			error = true;	
			document.getElementById('label_bankaccount_bankno').style.color = "#ee0000";		
			document.getElementById('bankaccount_bankno').style.border = "1px solid #ee0000";
		}	
		else
		{
			document.getElementById('label_bankaccount_bankno').style.color = "#000000";		
			document.getElementById('bankaccount_bankno').style.border = "";
		}
	}
	
	if (!formObj.elements['gtc'].checked)
	{
		error = true;
		document.getElementById('tdgtc').style.color = "#ee0000";
	}
	else
		document.getElementById('tdgtc').style.color = "#000000";
	
	if (error)
		return;
		
		
	// disabling further user submits
	var btn = document.getElementById('btnprevstep');
	if (btn)
		btn.disabled = true;
	btn = document.getElementById('btnnextstep');
	if (btn)
		btn.disabled = true;
	btn = document.getElementById('transrunning');
	if (btn)	
		btn.style.display = 'inline';
	if (wirecardSystem && (formObj.elements['payment_type'].value == 'CC'))
	{		
		formObj.action = '/' + carrier + '/';
		formObj.elements['nextstep'].value = 1;	
		formObj.submit();
	}
	else
		HDPayment(formObj, cc_fee, carrier);
}
/* --------------------------------------------------- */

/**
 *
 */
function HDPayment(formObj, cc_fee, carrier)
{
	// credit card
	if (formObj.elements['payment_type'].value == 'CC')
	{	
		formObj.action = 'https://test.ctpe.net/frontend/payment.prc';
		formObj.elements['nextstep'].value = 1;		
		populateHDPaymentCC(formObj, cc_fee);
		formObj.submit();
	}
	else
	{
		// direct debit or cash
		formObj.action = '/' + carrier + '/';
		formObj.elements['nextstep'].value = 1;	
		formObj.submit();
	}
}
/* --------------------------------------------------- */

/**
 *
 */
function populateHDPaymentCC(formObj, cc_fee)
{
	formObj.elements['PRESENTATION.AMOUNT'].value 	= Number(formObj.elements['total_amount'].value) + Number(cc_fee);
	formObj.elements['ACCOUNT.HOLDER'].value 		= formObj.elements['cc_holder'].value;
	formObj.elements['ACCOUNT.NUMBER'].value 		= formObj.elements['cc_number'].value;
	formObj.elements['ACCOUNT.BRAND'].value 		= formObj.elements['cc_brand'].value;
	formObj.elements['ACCOUNT.EXPIRY_MONTH'].value 	= formObj.elements['cc_expiry_month'].value;
	formObj.elements['ACCOUNT.EXPIRY_YEAR'].value 	= formObj.elements['cc_expiry_year'].value;
	formObj.elements['ACCOUNT.VERIFICATION'].value 	= formObj.elements['cc_cvc'].value;
	formObj.elements['NAME.COMPANY'].value 			= formObj.elements['invoice_company'].value;
	formObj.elements['CRITERION.COMPANY'].value 	= formObj.elements['invoice_company'].value;
	formObj.elements['NAME.GIVEN'].value		 	= formObj.elements['invoice_first_name'].value;
	formObj.elements['NAME.FAMILY'].value 			= formObj.elements['invoice_last_name'].value;
	formObj.elements['NAME.SALUTATION'].value 		= formObj.elements['invoice_salutation'].value;

	switch(formObj.elements['invoice_salutation'].value)
	{
		case '_AIR41_GUI_TEXT_MRS_':
			formObj.elements['NAME.SALUTATION'].value = 'MRS';
			break;
		case '_AIR41_GUI_TEXT_MR_':
			formObj.elements['NAME.SALUTATION'].value = 'MR';
			break;
			
		case '_AIR41_GUI_TEXT_COMPANY_':
			formObj.elements['NAME.SALUTATION'].value = 'COMPANY';
			break;
		default:
			formObj.elements['NAME.SALUTATION'].value = 'MRS';
			break;
		
	}
	
	formObj.elements['ADDRESS.CITY'].value 			= formObj.elements['invoice_city'].value;
	formObj.elements['ADDRESS.STREET'].value 		= formObj.elements['invoice_street'].value;
	formObj.elements['ADDRESS.ZIP'].value 			= formObj.elements['invoice_postal_code'].value;
	formObj.elements['CONTACT.EMAIL'].value 		= formObj.elements['invoice_email'].value;
	formObj.elements['CONTACT.PHONE'].value 		= formObj.elements['invoice_phone'].value;
	formObj.elements['CONTACT.MOBILE'].value 		= formObj.elements['invoice_phone2'].value;
		
}
/* --------------------------------------------------- */


function submitBookingPrevStep(formObj, carrier)
{
	formObj.action = '/' + carrier + '/';
	formObj.elements['prevstep'].value = 1;
	formObj.submit();
}
/* --------------------------------------------------- */


/**
 *
 */
function changeCustomPeriodFields(elemId,periodContainerId,startDateId,endDateId)
{	

	if(document.getElementById(elemId).value == 0 )
	{
		var elem = document.getElementById(periodContainerId);
		if (elem)
			elem.style.display = "block";
	} 
	else 
	{
		var elem = document.getElementById(periodContainerId);
		if (elem)
			elem.style.display = "none";
		
		document.getElementById(startDateId).value='';
		document.getElementById(endDateId).value='';
	}
}
/* --------------------------------------------------- */


/**
 *
 */
function toggleCustomPeriodInputFields(elemId,periodContainerId,visibleValue)
{	

	if(document.getElementById(elemId).value == visibleValue )
	{
		var elem = document.getElementById(periodContainerId);
		if (elem)
			elem.style.display = "block";
	} 
	else 
	{
		var elem = document.getElementById(periodContainerId);
		if (elem)
			elem.style.display = "none";
	}
}
/* --------------------------------------------------- */


/**
 *
 */
function getFCKTextAreaContent(fieldname)
{
	var html = FCKeditorAPI.GetInstance(fieldname).GetData();
	return html;
}
/* --------------------------------------------------- */


function putTextAreaContent(fieldname, mText)
{
	var html = FCKeditorAPI.GetInstance(fieldname).SetData(mText);
}
/* --------------------------------------------------- */

function toggleCheckBoxes(formObj, elemName, statusElemName)
{
	
	var elemCollection = new Array();
	var j = 0;
	var statusElem = document.getElementById(statusElemName);
	var status = (statusElem.value == 1) ? false : true;
	
	for (var i=0; i < formObj.elements.length; i++)
	{
		elem = formObj.elements[i];
		if (elem.name == elemName)
		{
			elemCollection[j] = elem;
			j++;
		}
	}
	for (var i=0; i < elemCollection.length; i++)
	{
		if (!elemCollection[i].disabled)
			elemCollection[i].checked = status;
		else
			elemCollection[i].checked = false;
	}
	statusElem.value = (status) ? 1 : 0;
}
/* --------------------------------------------------- */

function toggleAllFormCheckboxes(checked, formObj, checkboxesGroupName, ignoreElemName)
{
	for (var i=0; i < formObj.elements.length; i++)
	{
		elem = formObj.elements[i];
		if (elem.type == 'checkbox')
		{
			if (elem.name != ignoreElemName)
			{
				elem.checked = checked;
				if (elem.name == checkboxesGroupName)
					elem.disabled = checked;
			}
		}		
	}
}
/* --------------------------------------------------- */

function toggleSuperadminCheckbox(formObj, checkboxId)
{
	var boxesTotalCount   = 0;
	var checkedBoxesCount = 0;
	for (var i=0; i < formObj.elements.length; i++)
	{
		elem = formObj.elements[i];
		if (elem.type == 'checkbox')
		{
			if (elem.name != checkboxId)
			{
				boxesTotalCount++
				if (elem.checked)
					checkedBoxesCount++;
			}
		}		
	}
	if ((boxesTotalCount == checkedBoxesCount) && (boxesTotalCount > 0))
		document.getElementById(checkboxId).checked = true;
	else
		document.getElementById(checkboxId).checked = false;
}
/* --------------------------------------------------- */

function toggleFormCheckboxes(clickedElem, formObj, checkboxIDs, mainCheckboxId)
{ 
		var checkboxArray = new Array();
		checkboxArray = checkboxIDs.split(",");
		for (var j=0; j < checkboxArray.length; j++)
		{
		
			var elemid = "details_"+checkboxArray[j];
			var checkbox = document.getElementById(elemid);
			if (checkbox)
				checkbox.checked = clickedElem.checked;
		}		
		var checkbox = document.getElementById(mainCheckboxId);
		checkbox.checked = false;	
}
/* --------------------------------------------------- */

function popupInvoice(popURL)
{
	win = window.open(popURL, 'Invoice', 'dependent=yes,width=800,height=600,left=100,top=200,resizable=yes,scrollbars=yes');
	win.focus();
}
/* --------------------------------------------------- */

function updateFormLabels(elem, elemIDs, labels)
{
	
	if (elem)
	{
		var value = elem.value;
		value = trim(value);
	
		for(var i=0; i < elemIDs.length; i++)
		{
			var labelElemID = elemIDs[i];
			var labelElem = document.getElementById(labelElemID);
			if (labelElem)
			{
				var labelText = labels[i];
				if (value == '')
					labelText = labelText + " *";
				labelElem.innerHTML = labelText;
			}
		}
	}
}
/* --------------------------------------------------- */

function selectOption(selElemId, selvalue)
{
	var elem = document.getElementById(selElemId);
	var index = 0;

	if (elem)
	{
		for (var i=0; i < elem.options.length; i++)
		{
			if (elem.options[i].value == selvalue)
			{
				elem.options[i].selected = true;
				index = i;
			}
			else
				elem.options[i].selected = false;
		}
		elem.selectedIndex = index;
	}
}
/* --------------------------------------------------- */

function selectOptionText(selElemId, selText)
{
	var elem = document.getElementById(selElemId);
	
	var index = 0;
	if (elem)
	{
		for (var i=0; i < elem.options.length; i++)
		{
			if (elem.options[i].text == selText)
			{
				elem.options[i].selected = true;
				index = i;
			}
			else
				elem.options[i].selected = false;
		}
		elem.selectedIndex = index;
	}
}
/* --------------------------------------------------- */

function displaySelectedOptionForm(selIndex)
{
	if (selIndex == 3)
	{
		document.getElementById('editdate').style.display='inline';
		document.getElementById('edittime').style.display='none';
	} 
	else if (selIndex == 4)
	{
		document.getElementById('editdate').style.display='none';
		document.getElementById('edittime').style.display='inline';
	}
	else
	{
		document.getElementById('editdate').style.display='none';
		document.getElementById('edittime').style.display='none';
	}
}
/* --------------------------------------------------- */

function toggleInvoiceCheckboxes(formObj, checkedValue, direction)
{
	for (var i=0; i < formObj.elements.length; i++)
	{
		elem = formObj.elements[i];
		if ((elem.name == direction + '_entries[]') || (elem.name == direction + '_entry_infant[]'))
		{
			if (checkedValue)
				elem.checked = checkedValue;
		}
	}
}

/* --------------------------------------------------- */

function displayInvoiceDetails(salutation, first_name, last_name, company, street,postal_code, city, id_country, phone, mobile, email)
{
	var outputTable = '<table cellspacing="5"><tr><th style="color: #663333;">Rechnungsempfänger<\/th><\/tr><tr><th>'+ salutation + ' '+ first_name + ' '+ last_name +'<\/th><\/tr>';
	outputTable += '<tr><th>'+ company +'<\/th><\/tr>';
	outputTable += '<tr><th>'+ street +'<\/th><\/tr>';
	outputTable += '<tr><th>'+ postal_code  + ' '+ city  + ' '+(id_country)+'<\/th><\/tr>';
	outputTable += '<tr><th>'+ phone +'<\/th><\/tr>';
	outputTable += '<tr><th>'+ mobile +'<\/th><\/tr>';
	outputTable += '<tr><th>'+ email +'<\/th><\/tr>';
	Tip(outputTable);
}
/* --------------------------------------------------- */


function displayTurnoverDetails(turnover, net, taxes, services)
{
	var outputTable = '<table cellspacing="5"><tr><th colspan=\'4\'>Turnover Details<\/th><\/tr>';
	outputTable += '<tr><th>Net<\/th><th>Taxes<\/th><th>Services<\/th><th>Total<\/th><\/tr>';
	outputTable += '<tr><th>' + net + '&nbsp;&euro;<\/th><th>' + taxes + '&nbsp;&euro;<\/th><th>'+ services + '&nbsp;&euro;<\/th><th>' + turnover+ '&nbsp;&euro;<\/th><\/tr><\/table>';
	Tip(outputTable);
}
/* --------------------------------------------------- */

function displayInformation(info)
{
	Tip(info);
}
/* --------------------------------------------------- */

function displayInformationTag(infotag)
{
	TagToTip(infotag);
}
/* --------------------------------------------------- */

function resetInfantWarning(flightid)
{
	var elemid = 'warn'+flightid;
	var elem = document.getElementById(elemid);
	if (elem)
		elem.innerHTML = '&nbsp;&nbsp;&nbsp;&nbsp;';
		
}
/* --------------------------------------------------- */

function displayCustomerDetails(customerid, info)
{
	var outputTable = '<table cellspacing="5"><tr><th><u>Walkin User</u><\/th><\/tr>';
	outputTable += '<tr><th>' + customerid + '<\/th>';
	outputTable += '<tr><td align="right">' + info + '<\/td><\/tr><\/table>';
	Tip(outputTable);
}
/* --------------------------------------------------- */

function displayAgencyDetails(agencyid, company_name, userid, username, firstname, lastname)
{
	var outputTable = '<table cellspacing="5"><tr><th colspan=\'6\'><u>Agency Details</u><\/th><\/tr>';
	outputTable += '<tr><th>Agency ID<\/th><th>Agency Name<\/th><th>Agent ID<\/th><th>Agent Username<\/th><th>Agent Firstname<\/th><th>Agent Lastname<\/th><\/tr>';
	outputTable += '<tr><td align="center">' + agencyid + '<\/td><td align="center">' + company_name + '<\/td><td align="center">'+ userid + '<\/td><td align="center">' + username+ '<\/td><td align="center">' + firstname+ '<\/td><td align="center">' + lastname+ '<\/td><\/tr><\/table>';
	Tip(outputTable);
}
/* --------------------------------------------------- */

function setHTTPSProtocol()
{
	if (window.location.protocol != 'https:')
	{
		var href = location.href.replace('http', 'https');
		window.location.href = href;
	}
}
/* --------------------------------------------------- */

function updatePaxListAgenda(elemID, totalNoPaxes, totalNoInfants, totalNoCanceled, totalNoRebooked, totalNoNamechanged)
{
	var elem = document.getElementById(elemID);
	if (elem)
	{
		innerHTML = '<table><tr><th>Total No. Paxes</th><th>Total No. Infants</th><th>Total No. Canceled/Rebooked/Name Changed</th></tr>';
		innerHTML += '<tr><td align="center">' + totalNoPaxes + '</td><td align="center">' + totalNoInfants + '</td><td align="center">' + totalNoCanceled + '/' + totalNoRebooked + '/' + totalNoNamechanged + '</td></tr></table>';
		elem.innerHTML = innerHTML;
		elem.style.display = 'inline';
	}
}
/* --------------------------------------------------- */

function toggleFlightPropertiesInput(elemId, selection)
{
	var elem = document.getElementById(elemId);
	if (elem)
	{
		switch (selection)
		{
			case 'id_flight':
				elem.style.display = 'none';
				break;
			case 'flight_no':
				elem.style.display = 'inline';
				break;
		}
	}
}
/* --------------------------------------------------- */

function toggle_sorting(formObj, field_name)
{
	if (formObj.sortfield.value == field_name)
	{
		formObj.sortorder.value = (formObj.sortorder.value == 'ASC') ? 'DESC' : 'ASC';
	}
	else
	{
		formObj.sortorder.value = 'ASC';
	}
	
	formObj.sortfield.value = field_name;
	
	
	formObj.submit();
}
/* --------------------------------------------------- */

function toggleNameChangeForm(ckElem, formContainerID)
{
	var elem = document.getElementById(formContainerID);
	if (elem)
		elem.style.display = (ckElem.checked) ? 'inline' : 'none';		
}
/* --------------------------------------------------- */


function post_to_url(path, params, method) {
    method = method || "post"; // Set method to post by default, if not specified.
    var form = document.createElement("form");
    form.setAttribute("method", method);
    form.setAttribute("action", path);

    for(var key in params) {
        var hiddenField = document.createElement("input");
        hiddenField.setAttribute("type", "hidden");
        hiddenField.setAttribute("name", key);
        hiddenField.setAttribute("value", params[key]);
        form.appendChild(hiddenField);
    }

    document.body.appendChild(form);    // Not entirely sure if this is necessary
    form.submit();
}
/* --------------------------------------------------- */

function emptyInputField(elemIdArray)
{
	for (var elemId in elemIdArray)
		document.getElementById(elemIdArray[elemId]).value='';
	
}
/* --------------------------------------------------- */

function toggleAgentReportDetails(elemObj, panid)
{
	var panObj = document.getElementById(panid); 
	if (panObj)
	{
		panObj.style.display = (panObj.style.display == 'block') ? 'none' : 'block';
		if (panObj.style.display == 'block')
			elemObj.src = elemObj.src.replace(/closed/, "opened");
		else
			elemObj.src = elemObj.src.replace(/opened/, "closed");
	}
}
/* --------------------------------------------------- */
