var calendar = null; // remember the calendar object so that we reuse it and
                     // avoid creation other calendars.

// This function gets called when the end-user clicks on some date.
function selected(cal, date) {
  cal.sel.value = date; // just update the date in the input field.
  if (cal.sel.id == "sel1" || cal.sel.id == "sel3")
    // if we add this call we close the calendar on single-click.
    // just to exemplify both cases, we are using this only for the 1st
    // and the 3rd field, while 2nd and 4th will still require double-click.
    cal.callCloseHandler();
}

// And this gets called when the end-user clicks on the _selected_ date,
// or clicks on the "Close" button.  It just hides the calendar without
// destroying it.
function closeHandler(cal) {
  cal.hide();                        // hide the calendar

  // don't check mousedown on document anymore (used to be able to hide the
  // calendar when someone clicks outside it, see the showCalendar function).
  Calendar.removeEvent(document, "mousedown", checkCalendar);
}

// This gets called when the user presses a mouse button anywhere in the
// document, if the calendar is shown.  If the click was outside the open
// calendar this function closes it.
function checkCalendar(ev) {
  var el = Calendar.is_ie ? Calendar.getElement(ev) : Calendar.getTargetElement(ev);
  for (; el != null; el = el.parentNode)
    // FIXME: allow end-user to click some link without closing the
    // calendar.  Good to see real-time stylesheet change :)
    if (el == calendar.element || el.tagName == "A") break;
  if (el == null) {
    // calls closeHandler which should hide the calendar.
    calendar.callCloseHandler();
    Calendar.stopEvent(ev);
  }
}

// This function shows the calendar under the element having the given id.
// It takes care of catching "mousedown" signals on document and hiding the
// calendar if the click was outside.
function showCalendar(id, format) {
  var el = document.getElementById(id);
  if (calendar != null) {
    // we already have some calendar created
    calendar.hide();                 // so we hide it first.
  } else {
    // first-time call, create the calendar.
    var cal = new Calendar(true, null, selected, closeHandler);
    calendar = cal;                  // remember it in the global var
    cal.setRange(1900, 2070);        // min/max year allowed.
    cal.create();
  }
  calendar.setDateFormat(format);    // set the specified date format
  calendar.parseDate(el.value);      // try to parse the text in field
  calendar.sel = el;                 // inform it what input field we use
  calendar.showAtElement(el);        // show the calendar below it

  // catch "mousedown" on document
  Calendar.addEvent(document, "mousedown", checkCalendar);
  return false;
}

var MINUTE = 60 * 1000;
var HOUR = 60 * MINUTE;
var DAY = 24 * HOUR;
var WEEK = 7 * DAY;

// If this handler returns true then the "date" given as
// parameter will be disabled.  In this example we enable
// only days within a range of 10 days from the current
// date.
// You can use the functions date.getFullYear() -- returns the year
// as 4 digit number, date.getMonth() -- returns the month as 0..11,
// and date.getDate() -- returns the date of the month as 1..31, to
// make heavy calculations here.  However, beware that this function
// should be very fast, as it is called for each day in a month when
// the calendar is (re)constructed.
function isDisabled(date) {
  var today = new Date();
  return (Math.abs(date.getTime() - today.getTime()) / DAY) > 10;
}

function flatSelected(cal, date) {
  var el = document.getElementById("preview");
  el.innerHTML = date;
}

function showFlatCalendar() {
  var parent = document.getElementById("display");

  // construct a calendar giving only the "selected" handler.
  var cal = new Calendar(true, null, flatSelected);

  // We want some dates to be disabled; see function isDisabled above
  cal.setDisabledHandler(isDisabled);
  cal.setDateFormat("DD, M d");

  // this call must be the last as it might use data initialized above; if
  // we specify a parent, as opposite to the "showCalendar" function above,
  // then we create a flat calendar -- not popup.  Hidden, though, but...
  cal.create(parent);

  // ... we can show it here.
  cal.show();
}
/////////////////////////////////

selectedHous = null;
var timeObject = null;
// For IE, hides any select-lists that are behind the calendar
var CellWidth = 18;
var CellHeight = 16;
function FixSelectLists(Over) {
   if (navigator.appName == 'Microsoft Internet Explorer') {
      var CalDiv = timeObject;
      var CalLeftX = CalDiv.offsetLeft;
      var CalRightX = CalLeftX + CalDiv.offsetWidth;
      var CalTopY = CalDiv.offsetTop;
      var CalBottomY = CalTopY + (CellHeight * 9);
      var FoundCalInput = false;
      formLoop :
      for (var j=0;j<document.forms.length;j++) {
         for (var i=0;i<document.forms[j].elements.length;i++) {
            if (typeof document.forms[j].elements[i].type == 'string') {
               if ((document.forms[j].elements[i].type == 'hidden')) {
                  FoundCalInput = true;
                  i += 3; // 3 elements between the 1st hidden field and the last year input field
               }
               if (FoundCalInput) {
                  if (document.forms[j].elements[i].type.substr(0,6) == 'select') {
                     ListTopY = GetTagPixels(document.forms[j].elements[i], 'TOP');
                     if (ListTopY < CalBottomY) {
                        if (BehindCal(document.forms[j].elements[i], CalLeftX, CalRightX, CalTopY, CalBottomY, ListTopY)) {
                           document.forms[j].elements[i].style.visibility = (Over) ? 'hidden' : 'visible';
                        }
                     }
                     else break formLoop;
                  }
               }
            }
         }
      }
   }
}
// Gets the absolute pixel position of the supplied element
function GetTagPixels(StartTag, Direction) {
   var PixelAmt = (Direction == 'LEFT') ? StartTag.offsetLeft : StartTag.offsetTop;
   while ((StartTag.tagName != 'BODY') && (StartTag.tagName != 'HTML')) {
      StartTag = StartTag.offsetParent;
      PixelAmt += (Direction == 'LEFT') ? StartTag.offsetLeft : StartTag.offsetTop;
   }
   return PixelAmt;
}

function setH(hoursObj){
    if(selectedHous != null)
    {
        selectedHous.style.backgroundColor='';
        selectedHous.onmouseout="this.style.backgroundColor='';";
        selectedHous.onmouseover="this.style.backgroundColor='#def';";
    }
    hoursObj.style.backgroundColor='#ffffff';
    hoursObj.onmouseout='';
    hoursObj.onmouseover='';
    selectedHous = hoursObj;
}
selectedSec = null;
function setS(secondsObj){
    if(selectedSec != null)
    {
        selectedSec.style.backgroundColor='';
        selectedSec.onmouseout="this.style.backgroundColor='';";
        selectedSec.onmouseover="this.style.backgroundColor='#def';";
    }
    secondsObj.style.backgroundColor='#ffffff';
    secondsObj.onmouseout='';
    secondsObj.onmouseover='';
    selectedSec = secondsObj;
    if(selectedHous != null){
        timeObject.value=selectedHous.id+":"+secondsObj.id;
        times.style.visibility = 'hidden';
        }
}
function showTime(timeField){
    timeObject = document.getElementById(timeField);

    if(times.style.visibility == "visible"){
        times.style.visibility = 'hidden';
        FixSelectLists(false);
    }
    else{
        FixSelectLists(true);
        times.style.visibility = 'visible';
    }
}
showedAirports = true;
function showAirport(field){
    textObject = document.getElementById(field).style.visibility;

    hideAirports('depAirport','destAirport');
    if(textObject == "visible"){
        fieldObj = document.getElementById(field);
        fieldObj.style.visibility = 'hidden';
       	fieldObj.style.display = 'none';
        fieldObj.width = 1;
        fieldObj.height = 1;
        
    }
    else{
        fieldObj = document.getElementById(field);
        fieldObj.style.visibility = 'visible';
        if (fieldObj.contentWindow) 
        	fieldObj.contentWindow.location.reload();
        fieldObj.style.display = 'inline';
        fieldObj.width = 365;
        fieldObj.height = 25;
        
    }
    showedAirports = false;
}

function hideAirports(dep,dest){
    if(showedAirports){
        if(document.getElementById(dep)!=null) {
            depObj = document.getElementById(dep);
            depObj.style.visibility = 'hidden';
            depObj.style.display = 'none';
            depObj.width = 1;
            depObj.height = 1;
        }

        if(document.getElementById(dest)!=null) {
            destObj = document.getElementById(dest);
            destObj.style.visibility = 'hidden';
            destObj.style.display = 'none';
            destObj.width = 1;
            destObj.height = 1;
         }   
    }
    else
       showedAirports = true;
}
// Produces the javascript code for transferring items from source to
// target select box
function uiOptionTransfer_transfer(sourceId, targetId) {
    var src = document.getElementById(sourceId).options;
    var tgt = document.getElementById(targetId).options;

    for (var i = 0; i < src.length; i++) {
        // with IE, it is still possible to transfer disabled option,
        // so we have to make sure to only transfer a non-disabled ones
        if (src[i].selected) {
            //uiOptionTransfer_putTgtItem(tgt, src[i]);
            var elem = document.createElement("OPTION");
            elem.value = src[i].value;
            elem.text = src[i].text;
            tgt.add(elem);
        }
    }
    uiCommon_removeSelectedOptions(src);
}

// Removes selected Option objects in opts
function uiCommon_removeSelectedOptions(opts) {
  for(var i = opts.length - 1; i >= 0; --i) {
    if(opts[i].selected) {
      opts[i] = null;
    }
  }
}

// Produces the javascript code for removing items from target select box
function uiOptionTransfer_return(sourceId,targetId) {
  var src = document.getElementById(sourceId).options;
  var tgt = document.getElementById(targetId).options;
  var index;
  for (var i = tgt.length - 1; i >= 0; --i) {
    if (tgt[i].selected) {
        index = uiCommon_findSelectOption(src, tgt[i]);
        // some target items don't exist in the source item collection
        if(index >= 0) {
          src[index].disabled = false;
          src[index].selected = true;
          tgt[i] = null;
        }
    }
  }
}

// Returns the location (index) of opt in list. If not found, -1 is returned.
function uiCommon_findSelectOption(list, opt) {
  for(var i = 0; i < list.length; ++i) {
    if(list[i].value == opt.value &&
       list[i].text == opt.text) {
      return i;
    }
  }
  return -1;
}

function transform_any_categorys(targetId)
{
    var src = document.getElementById(targetId).options;
    var obj_result="";
    for(var j = 0; j < src.length; ++j) {
        obj_result+=src[j].value;
        if(j!=src.length - 1)
            obj_result+=";";
    }
    var element = "selected_"+targetId;
    document.getElementById(element).value=obj_result;
}

//Go to next,prev page on navigation buttons
function pagego(pageLink, formName) {
    document.forms[formName].page.value = pageLink;
    document.forms[formName].submit();
}

    function SelectAll(mark,form,itemName) {
	    for (i = 0; i < document.forms[form].elements.length; i++)
	    {
	        var item = document.forms[form].elements[i];
	    	if (item.name == itemName)  {
    		    item.checked = mark;
    		}
	    }

        itemCheck(form,itemName);
    }

    function disableButtons()
    {
        if (document.getElementById('viewBut'))
        	document.getElementById('viewBut').disabled = true;
    	if (document.getElementById('deleteBut'))
        	document.getElementById('deleteBut').disabled = true;
        if (document.getElementById('editBut'))
        	document.getElementById('editBut').disabled = true;

        if (document.getElementById('acceptBut'))
        	document.getElementById('acceptBut').disabled = true;
       	if (document.getElementById('diclineBut'))
        	document.getElementById('diclineBut').disabled = true;
    }

    function itemCheck(form,itemName) {
        selectedAccounts = 0;
        for (i = 0; i < document.forms[form].elements.length; i++)
	    {
	    	var id;
	        var item = document.forms[form].elements[i];
	    	if (item.name == itemName && item.checked)  {
	    		id = item.value;
    		    selectedAccounts++;
    		}
	    }
	    var legSize = document.getElementById("legsSize");
        var isEnabled = true;
        if (legSize!=null && legSize.value < 2)
			isEnabled = false;

        if(selectedAccounts > 1 || selectedAccounts == 0)
        {
            if(document.getElementById('viewBut'))
                document.getElementById('viewBut').disabled = true;

            if (document.getElementById('editBut'))
            	document.getElementById('editBut').disabled = true;


            if (document.getElementById('deleteBut')) {
            	if(selectedAccounts == 0)
                	document.getElementById('deleteBut').disabled = true;
            	else {
                	if (isEnabled) document.getElementById('deleteBut').disabled = false;
                }
            }

            if (document.getElementById('acceptBut'))
        		document.getElementById('acceptBut').disabled = true;
       		if (document.getElementById('diclineBut'))
        		document.getElementById('diclineBut').disabled = true;

        }
        else
        {
            if(document.getElementById('viewBut'))
                document.getElementById('viewBut').disabled = false;

            if (document.getElementById('editBut'))
            	document.getElementById('editBut').disabled = false;
            if (document.getElementById('deleteBut') && isEnabled)
            	document.getElementById('deleteBut').disabled = false;

            tdObj = document.getElementById('res_status'+id);
			if (tdObj != null) {
				var status = tdObj.title;
				if (status.indexOf('0') != -1) {
          			if (document.getElementById('acceptBut'))
        				document.getElementById('acceptBut').disabled = true;
        			if (document.getElementById('diclineBut'))
        				document.getElementById('diclineBut').disabled = false;

				}
				else if (status.indexOf('2') != -1) {
          			if (document.getElementById('acceptBut'))
        				document.getElementById('acceptBut').disabled = false;
        			if (document.getElementById('diclineBut'))
        				document.getElementById('diclineBut').disabled = false;
				}

        	}
        	else {
        	    if (document.getElementById('acceptBut'))
        			document.getElementById('acceptBut').disabled = true;
       			if (document.getElementById('diclineBut'))
        			document.getElementById('diclineBut').disabled = true;

        	}

        }
    }


    function Trim(TRIM_VALUE){
		if(TRIM_VALUE.length < 1){
			return"";
		}
		TRIM_VALUE = RTrim(TRIM_VALUE);
		TRIM_VALUE = LTrim(TRIM_VALUE);
		if(TRIM_VALUE==""){
			return "";
		}
		else{
			return TRIM_VALUE;
		}
	} //End Function

	function RTrim(VALUE){
		var w_space = String.fromCharCode(32);
		var v_length = VALUE.length;
		var strTemp = "";
		if(v_length < 0){
			return"";
		}
		var iTemp = v_length -1;

		while(iTemp > -1){
			if(VALUE.charAt(iTemp) == w_space){
			}
			else{
				strTemp = VALUE.substring(0,iTemp +1);
				break;
			}
			iTemp = iTemp-1;

		} //End While
		return strTemp;

	} //End Function

	function LTrim(VALUE){
		var w_space = String.fromCharCode(32);
		if(v_length < 1){
			return"";
		}
		var v_length = VALUE.length;
		var strTemp = "";

		var iTemp = 0;

		while(iTemp < v_length){
			if(VALUE.charAt(iTemp) == w_space){
			}
			else{
				strTemp = VALUE.substring(iTemp,v_length);
				break;
			}
			iTemp = iTemp + 1;
		} //End While
		return strTemp;
	} //End Function



function getElementsByClassName(_className)
{
	var arr = new Array();
	var elems = document.getElementsByTagName("*");
	for(var i = 0; i < elems.length; i++)
	{
		var elem = elems[i];
		var cls = elem.className;
		if(cls == _className)
		{
			arr[arr.length] = elem;
		}
	}
	return arr;
}

function mouseOverLink() {
	this.style.cursor = 'pointer';
}
function onClickLegalText() {
	window.location.href='legal.do';
}
function addConditionsText() {
	//var str = "";
	//str+="<table align='center' cellspacing='0' cellpadding='0' border='0' style='text-align:left'>";
	//str+="<tr><td colspan=2 width='918'><br/><hr size='1px' color='black' width='100%'><br/>";
    //str+="<center><span style='font-weight:bold'>IMPORTANT NOTICE</span></center><br/>";
	//str+="<div style='font-size: 85%;' >";
    //str+="The Site is provided on an \"as is\" and \"as available\" basis.<br/>";
    //str+="Ascent Jet is in no event responsible if, due to Site maintenance operations or for reasons beyond its control, you cannot access the Site, or if such access is interrupted, at any time whatsoever, or if any fault beyond its control prevents an operation from being carried out."+
    //     "Ascent Jet makes no warranty that the Site is free from computer viruses or other anomalies beyond its control.";
	//str+="</div>";
	//str+="</td></tr></table>";

	var cond = document.getElementById("ascentjetConditions");
	if (cond != null) {
		cond.style.width = "";
		//cond.innerHTML = str;
		cond.onmouseover = mouseOverLink;
		cond.onclick = onClickLegalText;
	}
}

function showCallWindow() {
    if (window.callBackPage != null)
       window.callBackPage = null;

    callBackPage = window.open("about:blank", "myWindow", "width=500,height=494,resizable=yes,menubar=no,status=no,toolbar=no,scrollbars=yes,location=no");
    callBackPage.location.href = "callBack.do";
	return true;
}
var opera = (navigator.userAgent.toLowerCase().indexOf("opera") > -1);
var firefox = (navigator.userAgent.toLowerCase().indexOf("firefox") > -1);
function resizeImg() {
/*	   //alert("resize image");
	   contentObj = document.getElementById('contentTd');
	   var objImg = document.getElementById('air5Image');
	//alert("contentWidth: " + contentObj.offsetWidth);
	if (objImg!=null && contentObj!=null && contentObj.offsetWidth > 500) {
	    objImg.width = contentObj.offsetWidth - 5;
	}*/
}

function changeStatus(elementId, textDone, textLoading) {
	var frameObj = document.getElementById(elementId);
    setTimeout("changeStatus('"+ elementId + "')", 500);
    if (frameObj!=null && frameObj.readyState == "complete")
    	window.status = "Done";
	else {
		window.status = "loading...";
	}
}
    function checkFieldsInPasList(errorTextName, errorTextSurname) {
    	var objs = document.getElementsByTagName("input");
    	var isPasSame = document.getElementById("isPasSame").checked;
    	var firstLegId = document.getElementById("firstLegId").value;

    	for (var i=0;i<objs.length;++i) {
    		if (objs[i].type == 'text' || objs[i].type == 'radio') {
    			var objName = objs[i].name;
    			var nameSize = objName.length;
    			var legId = objName.substring(0, nameSize-1);
    			//alert("legId: " + legId + " name: " + objName);
    			var isCheck = true;
    			if (isPasSame && !(legId.indexOf(firstLegId)!=-1))
    				isCheck = false;
    			if (isCheck && objName.indexOf("firstName")!=-1) {
    				if(Trim(objs[i].value) == "") {
    					alert(errorTextName);
    					return false;
    				}
    		 	}
    			else if (isCheck && objName.indexOf("lastName")!=-1) {
    				if(Trim(objs[i].value) == "") {
    					alert(errorTextSurname);
    					return false;
    				}
    		 	}
    		 }
    	}
    	return true;
    }

    function deleteFieldsFromPas(rowName, legId) {
    	var objTable = document.getElementById("myTable"+legId);
    	for (var i=0;i<objTable.rows.length;++i) {
    		tableRow = objTable.rows[i];
    		var rowId = "" + legId + rowName;
    		if (tableRow.id == rowId)
    			objTable.deleteRow(i);
    	}
    }

    function addFields2PassengerList(legId, deleteText){
    	var objTable = document.getElementById("myTable"+legId);
    	//alert(objTable.innerHTML);
    	var countPax = document.getElementById("countPax").value;
    	var count = objTable.rows.length - 2;
    	//alert("current count: " + count);
    	if (count < countPax) {
    		currentIndexObj = document.getElementById("currentIndex" + legId);
    		var currentIndex = currentIndexObj.value;
    		oRow = objTable.insertRow(count + 2);
    		oRow.id = "" + legId + "tr" + currentIndex;
			oCell1 = oRow.insertCell(0);
			oCell1.innerHTML = "<input type='radio' name='sex" + legId + currentIndex + "' value='male' checked>";
			oCell2 = oRow.insertCell(1);
			oCell2.innerHTML = "<input type='radio' name='sex" + legId + currentIndex + "' value='female'>";
			oCell3 = oRow.insertCell(2);
			oCell3.innerHTML = "<input type='text' name='firstName" + legId + currentIndex + "'/>";
			oCell4 = oRow.insertCell(3);
			oCell4.innerHTML = "<input type='text' name='lastName" + legId + currentIndex + "'/>";
			oCell5 = oRow.insertCell(4);
			oCell5.innerHTML = "<input type='button' onclick=\"deleteFieldsFromPas('tr" + currentIndex + "'," + legId + ");\" name='delete' value='" + deleteText + "'/>";

			currentIndexObj.value++;
		}
    }

	function setCurrentIndex2Table() {
		currentIndexObj = document.getElementById("currentIndex" + legId);
	}
    function disablePassengersFields() {
    	var objs = document.getElementsByTagName("table");
    	var pasSameObj = document.getElementById("isPasSame");
    	if (!pasSameObj)  return true;

    	var isPasSame = pasSameObj.checked;
    	var firstLegId = document.getElementById("firstLegId").value;
    	var tableCount = 0;

    	for (var i=0;i<objs.length;++i) {
    		if (objs[i].id.indexOf("myTable") != -1) {
    			tableCount ++;
    			inputs = objs[i].getElementsByTagName("input");
    			if ( (objs[i].id.indexOf(firstLegId) == -1) && isPasSame) {
    			    objs[i].disabled = true;
    			    for(var j=0;j<inputs.length;++j)
    					inputs[j].disabled = true;

    			}
    			else {
    			    objs[i].disabled = false;
    			    for(var j=0;j<inputs.length;++j)
    					inputs[j].disabled = false;

    			}
    		}
    	}

    	if (tableCount == 1 && document.getElementById("isPasSameTd")) {
    		document.getElementById("isPasSameTd").style.display = "none";
    	}

    }

    function disableAllPasFields() {
    	var objs = document.getElementsByTagName("table");

    	for (var i=0;i<objs.length;++i) {
    		if (objs[i].id.indexOf("myTable") != -1) {
    			inputs = objs[i].getElementsByTagName("input");
    			for(var j=0;j<inputs.length;++j) {
    				if (inputs[j].type == "text" )
    					inputs[j].readOnly = true;
    				else
    					inputs[j].disabled = true;
    			}
    		}
    		if (document.getElementById("isPasSame"))
    			document.getElementById("isPasSame").disabled = true;
    	}
	}

	function formatTime(timeInDouble) {
		var hour = parseInt(timeInDouble + "");
        var minutes = Math.round((timeInDouble - hour)*60);
        hour += parseInt(minutes/60 + "");
        minutes %= 60;
        return (hour < 10 ? "0" + hour : hour + "") + ":" + (minutes < 10 ? "0" + minutes : minutes + "");	
	}
	
	function sumFlight() {
    	var sum = 0;
    	var legObjs = getElementsByClassName("timeHidden");
    	for (var i=0;i<legObjs.length;++i) {
    		//alert(legObjs[i].innerHTML);
    			   			
     		value = parseFloat(legObjs[i].innerHTML);
    		if (!isNaN(value))
    			sum += value;	
    	}
    	if (sum != 0)
    		document.getElementById("resFlightTime").value = formatTime(sum);
    	else 
    		document.getElementById("resFlightTime").value = "";
    }
    
    function changeSelMenuHeight() {
    	on1Objs = getElementsByClassName("on1");
		if (on1Objs != null) {
			for (var i=0;i<on1Objs.length;++i) {
				if (on1Objs[i].innerHTML.length > 20) {
					on1Objs[i].className = "on2";
				}
			}
		}
		on1dObjs = getElementsByClassName("on1d");
		if (on1dObjs != null) {
			for (var i=0;i<on1dObjs.length;++i) {
				if (on1dObjs[i].innerHTML.length > 20) {
					on1dObjs[i].className = "on2d";
				}
			}
		}
		
    }
	
	

	