function MasterPanel(_arr,parent) {
	this.childPanel = _arr;
	this.defaultChild = parent || "city";
	this.activeChild = this.defaultChild;
	this.storedChild = null;
	this.childPanel[this.activeChild].show();
}

MasterPanel.prototype.track = function(f,state) {
	var selectedChild = f;
	if(f=="advanced") this.storedChild = this.activeChild;
	this.childPanel[this.activeChild].reindex();
	this.activeChild = (selectedChild=="advanced") ? this.storedChild : selectedChild;
	this.childPanel[selectedChild].show();
}

function Panel(obj) {
	this.panelName = obj;
	this.panel = document.getElementById(this.panelName);
	this.defaultDisplay = "none";
}

Panel.prototype.show = function() {
	this.panel.style.display = "block";
}

Panel.prototype.reindex = function(sObj) {
	this.panel.style.display = this.defaultDisplay;
	if(sObj!=undefined) {
		panels[sObj].show();
	}
}

function chooseOptions() {
	var _options = [];
	var _forms = []
	var idx = 0;
	var parent = document.getElementById("advanced_panel");
	var label = parent.getElementsByTagName("input");
	for(i=0;i<label.length;i++) {
		if(label[i].id.indexOf("|") != -1) {
			inputField = label[i]
			if(inputField.checked) {
				_options[idx] = []
				_options[idx]["value"] = inputField.getAttribute("value");
				_options[idx]["name"] = inputField.getAttribute("name");
				_options[idx]["id"] = inputField.getAttribute("name") + "|" + inputField.getAttribute("value");
				idx++
			}
		}
	}
	var stringBuilder = decodeOptions(idx);
	var formBuilder = "";
	if (_options.length!=0) {
		for(i=0;i<_options.length;i++) {
			formBuilder += "<input type=\"hidden\" name=\"" + _options[i].name + "\" id=\"i_" + _options[i].id + "\" value=\"" + _options[i].value + "\" />";
		}
        document.getElementById(gForm + "_more_options").innerHTML = stringBuilder;
		document.getElementById(gForm + "_advanced_options").innerHTML = formBuilder;
	} else {
        document.getElementById(gForm + "_more_options").innerHTML = moreOptions + " &gt;";
        document.getElementById(gForm + "_advanced_options").innerHTML = formBuilder;
	}
}

function decodeOptions(idx) {
	return editOptions.replace(/COUNT/, idx);
}

function markEdit() {
	hasChanged = 1;
}

var gForm;
function setAdvancedButtonAction(f) {
    gForm = f;
	populateCheckbox(f);
}

function submitActiveForm() {
    master.childPanel['advanced'].reindex(master.storedChild);
    chooseOptions();
    if (eval(gForm + "_onSubmit()") ) {
        eval("document." + gForm).submit();
    }
}

function resetOption(t, option) {
	t.selectedIndex = option;
}

function populateCheckbox(parent) {
    var advancedPanel = document.getElementById("advanced_panel");
	var labels = advancedPanel.getElementsByTagName("input");
	for(i=0;i<labels.length;i++) {
		if(labels[i].id.indexOf("|") != -1) {
			labels[i].checked = false;
		}
	}
    var inpts = document.getElementById(parent + "_advanced_options").getElementsByTagName("input");
	var form_arr = [];
	for(i=0;i<inpts.length;i++) {
        form_arr[form_arr.length] = inpts[i].id.replace(/i\_/,"");
	}
	for(x=0;x<form_arr.length;x++) {
		document.getElementById(form_arr[x]).checked = true;
	}
}

function changeSibling(sibling,option) {
	eval("document." + sibling)[option].checked = true;
}

var stateCodeAutoSet = true;
var countryCodeAutoSet = true;
var searchForm = new WebForm();

function getLocationSearchStatus() {
	cityEmpty = (document.cityForm.city.value =="");
	stateProvinceEmpty = (document.cityForm.stateCode.value == "");
	countryEmpty = (document.cityForm.countryCode.value=="");
	countryUS = (document.cityForm.countryCode.value=="US");

	if ((!cityEmpty) && (!stateProvinceEmpty) && (!countryEmpty)) { return "COMPLETE_SEARCH"; }
	if ((!stateProvinceEmpty) && (!countryEmpty)) { return "STATE_SEARCH"; }
	if ((!cityEmpty) && (!countryUS) && (!countryEmpty)) { return "NON_US_CITY_SEARCH"; }
	if ((!countryEmpty) && (!countryUS) ) { return "NON_US_COUNTRY_SEARCH"; }
	if ((stateProvinceEmpty) && (countryUS) && (!cityEmpty) ){ return "MISSING_STATE_US_SEARCH"; }
	if ((stateProvinceEmpty) && (countryUS) ){ return "INVALID_US_SEARCH"; }
	if ((!cityEmpty) && (stateProvinceEmpty) && (countryEmpty)) { return "CITY_ONLY"; }
	if ((cityEmpty) && (stateProvinceEmpty) && (countryEmpty)) { return "BLANK"; }

	return "INCOMPLETE";
}

function cityForm_onSubmit(v) {
	if(stateCodeAutoSet && countryCodeAutoSet) city_onBlur();
	searchForm.resetErrors();
	locationStatus = getLocationSearchStatus();
	if(document.cityForm.city.value == v) document.cityForm.city.value = ""

	if ((locationStatus =="BLANK")) {
		searchForm.addError("errorBlock","searchCriteriaRequiredError" );
	}
	if ((locationStatus =="INVALID_US_SEARCH") ) {
		searchForm.addError("errorBlock","toGeneralUSSearchError" );
	}
	if ((locationStatus =="MISSING_STATE_US_SEARCH") ) {
		searchForm.addError("errorBlock","stateProvinceRequiredError" );
	}
	if ((locationStatus =="CITY_ONLY") ) {
		searchForm.addError("errorBlock","countryRequiredForCitySearchError" );
	}
	if (searchForm.hasErrors()) {
		searchForm.showErrors();
		return false;
	} else {
		return true;
	}
}

function regionForm_onSubmit() {
	searchForm.resetErrors();
	if (document.regionForm.webRegion.selectedIndex == 0) {
			searchForm.addError("errorBlock","regionNameRequiredError");
	}
	if (searchForm.hasErrors()) {
		searchForm.showErrors();
		return false;
	} else {
		return true;
	}
}

function hotelForm_onSubmit() {
	searchForm.resetErrors();
	if (document.hotelForm.hotelName.value == "") {
			searchForm.addError("errorBlock","hotelNameRequiredError");
	}
	if (searchForm.hasErrors()) {
		searchForm.showErrors();
		return false;
	} else {
		return true;
	}
}

function airportForm_onSubmit() {
	searchForm.resetErrors();
	if (document.airportForm.airportCode.value == "") {
		searchForm.addError("errorBlock","airportCodeRequiredError");
	}
	if (searchForm.hasErrors()) {
		searchForm.showErrors();
		return false;
	} else {
		return true;
	}
}

function conventionForm_onSubmit() {
    searchForm.resetErrors();
    if (document.conventionForm.conventionCenterName.selectedIndex < 0) {
		searchForm.addError("errorBlock","conventionCenterRequiredError");
    }
    if (searchForm.hasErrors()) {
		searchForm.showErrors();
		return false;
	} else {
        var elem = document.getElementById('conv_center_list');
        elem.style.display = "none";
        return true;
	}
}

function city_onFocus() {
	document.cityForm.city.value = "";
	if (stateCodeAutoSet) { document.cityForm.stateCode.selectedIndex = 0; }
	if (countryCodeAutoSet) { document.cityForm.countryCode.selectedIndex = 0; }
}



function city_onBlur() {
	a = isIn(document.cityForm.city.value.toLowerCase(),topCities)
	if (a != false) {
		setDropDown(a[1],document.cityForm.stateCode);
		setDropDown(a[2],document.cityForm.countryCode);
		//country_onChange();
		stateCodeAutoSet = true;
		countryCodeAutoSet = true;
	}
}



function stateCode_onChange() {
	c = false;
	if(isIn(document.cityForm.stateCode.value,us_states)) {
		c = "US";
	} else if(isIn(document.cityForm.stateCode.value,ca_prov)) {
		c = "CA";
	} else if(isIn(document.cityForm.stateCode.value,misc)) {
		c = "US";
	}

	if (c != false) {
		setDropDown(c,document.cityForm.countryCode);
	}

	countryCode_onChange();
	stateCodeAutoSet = false;
}

function countryCode_onChange() {
	if ((document.cityForm.countryCode[document.cityForm.countryCode.selectedIndex].value != "US") && (document.cityForm.countryCode[document.cityForm.countryCode.selectedIndex].value != "CA")) {
		setDropDown("",document.cityForm.stateCode);
	}

	stateCodeAutoSet = false;
	countryCodeAutoSet = false;
}

function setDefaultText(defaultText,focus,element) {
	if (focus) {
		if (element.value == defaultText) {
			element.value = "";
		}
	} else {
		if (element.value == "") {
			element.value = defaultText;
		}
	}

}



function setDropDown(v,dd) {
	for (i = 0; i < dd.options.length ; i++ ) {
		if ( dd.options[i].value == v ) {
			dd.selectedIndex = i;
			return true
		}
	}
	return false;
}





function isIn(elt, list){
	for(var i=0; i < list.length; i++){
		var tempArray = list[i].split(":")
		if( tempArray[0] == elt ){
			return tempArray;
		}
	}
	return false;
}



function getAirportCode_onClick() {
    window.open('/dp/en_US/common/search/airportLookUp.jsp?element=airportForm.airportCode&brand=meetings','AIRPORT','width=400,height=490,scrollbars=yes')
	return false;
}

///// XML HTTP REQUEST FOR CONVENTION CENTER
  function setDefaultText(defaultText,focus,element) {
	if (focus) {
		if (element.value == defaultText) {
			element.value = "";
		}
	} else {
		if (element.value == "") {
			element.value = defaultText;
		}
	}
}

function setDropDown(v,dd) {
	for (i = 0; i < dd.options.length ; i++ ) {
		if ( dd.options[i].value == v ) {
			dd.selectedIndex = i;
			return true
		}
	}
	return false;
}


function isIn(elt, list){
	for(var i=0; i < list.length; i++){
		var tempArray = list[i].split(":")
		if( tempArray[0] == elt ){
			return tempArray;
		}
	}
	return false;
}

var conventionCenterValue;
var req;
var isConventionRequested = false;

function conventionCenterState_onChange() {
    isConventionRequested = true;
//    alert('SURESH KU');

    var conCenterState = document.getElementById("conventionCenterState");
	var conCenterCountry = document.getElementById("conventionCenterCountry");

    var parentElement = document.getElementById("conv_center_list");
    parentElement.style.display = "block";

    var defLabel = document.getElementById('conv_default_label');
    var link = document.getElementById('convention_center_link');

    link.innerHTML = defLabel.value + ' >';

	if (conCenterState.value != "") {
        if(isIn(conCenterState.value,us_states)) {
			conCenterCountry.value = "US";
		} else if(isIn(conCenterState.value,ca_prov)) {
			conCenterCountry.value = "CA";
		} else if(isIn(conCenterState.value,misc)) {
			conCenterCountry.value = "US";
		}
		constructXMLQueryForSearch();
	}
    else
    {
        var element = document.getElementById("convention_center_link");
        link.style.display = "none";
    }
}

function floatPPHPopup() {
	var top;
	var left ;
	var highlightDiv = document.getElementById("conventionCenterState");

    getScrollXY();
    top = scrOfY;

    left = 264;

    highlightDiv.style.top = top + 116 + "px";
    highlightDiv.style.left = left + "px";

	highlightDiv.style.display = "block";
}

function constructXMLQueryForSearch() {
	var conCenterStateValue = document.getElementById("conventionCenterState").value;
	var conCenterCountryValue = document.getElementById("conventionCenterCountry").value;

    var url = "/service/search/lookupservlet?" + "country=" + conCenterCountryValue + "&state=" + conCenterStateValue + "&lookupType=conCenter";
	loadXMLDocByStateCountry(url);
}

function loadXMLDocByStateCountry(url) {
	var elem = document.getElementById("conventionCenter");
	clearElemChildren(elem);
	appendToSelect(elem,'', 'Loading...');
    elem.setAttribute("size", 8);

    // branch for native XMLHttpRequest object
	if (window.XMLHttpRequest) {
		req = new XMLHttpRequest();
		req.onreadystatechange = processReqChange;
		req.open("GET", url, true);
		req.send(null);
	// branch for IE/Windows ActiveX version
	} else if (window.ActiveXObject) {
		req = new ActiveXObject("Microsoft.XMLHTTP");
		if (req) {
			req.onreadystatechange = processReqChange;
			req.open("GET", url, true);
			req.send();
		}
	// The browser cannot support dynamic City loading - say so
	} else {
		clearElemChildren(elem);
		appendToSelect(elem,'', 'Feature Not Supported By Your Browser');
	}
}
function clearElemChildren(elem) {
	while (elem.childNodes.length > 0) {
		 elem.removeChild(elem.firstChild);
	}
}
function processReqChange() {
    // only if req shows "loaded"
	if (req.readyState == 4) {
		// only if "OK"
		if (req.status == 200) {
			// ...processing statements go here...
			elem = document.getElementById('conventionCenter');
			while (elem.childNodes.length > 0) {
				elem.removeChild(elem.firstChild);
			}
            buildConventionCenterList();
		// We had an error - keep the element disabled and write an error
		} else {
			elem = document.getElementById('conventionCenter');
			clearElemChildren(elem);
			appendToSelect(elem,'', 'An Error Occured');
		}
	}
}

function buildConventionCenterList() {
    var select = document.getElementById("conventionCenter");
    select.setAttribute("size", 8);
    var items = req.responseXML.getElementsByTagName("ConventionCenter");
	for (var i=0; i<items.length; i++) {
		appendToSelect(select,items[i].childNodes[0].nodeValue, items[i].childNodes[0].nodeValue);
	}
	if (items.length == 0) {
		clearElemChildren(select);
		appendToSelect(select,"", noneFound);
	}

    if (isConventionRequested)
    {
        showConvenionCenters();
    }

    if (conventionCenterValue != "") {
        n=0;
        while(  n < select.options.length) {
            if( select.options[n].value == conventionCenterValue ){
                select.selectedIndex = n;
				break;
			}
            n++;
        }
	}
    conventionCenterValue="";
}

function appendToSelect(select, value, content) {
    var opt;
    opt = document.createElement("option");
    opt.value = value;
    opt.appendChild(document.createTextNode(content));
    select.appendChild(opt);
}

// Initialize form correctly
function initConventionCenter() {
    var conCenterState = document.getElementById("conventionCenterState");
	var conventionCenter = document.getElementById("conventionCenter");

	if (conCenterState.value != "") {
		constructXMLQueryForSearch();
	}
}

addLoadEvent(function () {
	initConventionCenter();
});

var selectedConventionCenter;

function hideConventionCenters_list()
{
    var elem = document.getElementById('conv_center_list');
    selectedConventionCenter = elem.value;
    var link = document.getElementById('convention_center_link');
    var selectedItem = document.getElementById('conventionCenter');
    var text = document.createTextNode(selectedItem.value) + ' >';
    if (selectedItem.value.length > 0)
    {
        link.innerHTML = selectedItem.value + ' >';
    }

    elem.style.display = "none";
}

function hideConventionCenters_ondblclick()
{
    var selectedItem = document.getElementById('conventionCenter');
    var link = document.getElementById('convention_center_link');
    var text = document.createTextNode(selectedItem.value) + ' >';
    if (selectedItem.value.length > 0)
    {
        link.innerHTML = selectedItem.value + ' >';
    }
    else
    {
        var defLabel = document.getElementById('conv_default_label');
        link.innerHTML = defLabel.value + ' >';
    }

    var elem = document.getElementById('conv_center_list');
    elem.style.display = "none";
}

function showConvenionCenters()
{
    var select = document.getElementById("conventionCenter");
    select.setAttribute("size", 8);
    var elem = document.getElementById('conv_center_list');
    elem.style.display = "block";
    elem.display = true;
}

function positionThePopup() 
{
    var conv_centers = document.getElementById('conv_center_list')
    conv_centers.style.left=divTag.x + 'px';
    conv_centers.style.top=divTag.y + 'px';
    conv_centers.style.display = "block";
}

