/**
 * These functions are used by the following:
 *	/app/views/elements/motoring/search_tabs.ctp
 *	/app/views/elements/properties/search_tabs.ctp
 */
function switchTab(t) {
	var aTabs = $$(".searchTab").concat($$(".searchTabSelected"));
	var aContainers = $$(".searchTabContainer");//see helper search_tabs
	var oTab = $(t + "SearchTab");
	var oContainer = $("searchTab" + t + "Container");
	if (oContainer) {
		for (var i=0; i<aTabs.length; i++) {
			if (aTabs[i].id == oTab.id) aTabs[i].className = "searchTabSelected";
			else aTabs[i].className = "searchTab";
			
			if (aContainers[i]) {
				if (aContainers[i].id == oContainer.id) aContainers[i].style.display = "";
				else aContainers[i].style.display = "none";
			}
		}
	}
}

function alreadyLoaded(t) {
	var o = $("formSearch" + t);
	if (o) {
		switchTab(t);
		return true
	} else {
		return false;
	}
}

function changeFormStyle() {
	//should be between 1 to 4 of them
	var aExpand = $$(".expand_link");
	var aCollapse = $$(".collapse_link");
	var aSearchAdvanced = $$(".searchAdvanced");
	var aGoBasic = $$('.basic_go_button');
	var aGoAdvanced = $$('.advanced_go_button');
	
	if (getFormStyleStatus() == '') {
		for(var i = 0; i < aGoBasic.length; i++) {
			aExpand[i].hide();
			aCollapse[i].show();
			aSearchAdvanced[i].show();
			aGoBasic[i].hide().disable();
			aGoAdvanced[i].enable().show();
		}
	} else {
		for(var i = 0; i < aGoBasic.length; i++) {
			aExpand[i].show();
			aCollapse[i].hide();
			aSearchAdvanced[i].hide();
			aGoBasic[i].enable().show();
			aGoAdvanced[i].hide().disable();
		}
		checkAdvancedCriteria();
	}
}

function initGoButtons() {
	//firefox tend to save state of form elements when refreshing page
	//so disabled buttons remain disabled if you refresh
	var aGoBasic = $$('.basic_go_button');
	var aGoAdvanced = $$('.advanced_go_button');
	
	if (getFormStyleStatus() == '') {
		for(var i = 0; i < aGoBasic.length; i++) {
			aGoBasic[i].enable().show();
			aGoAdvanced[i].hide().disable();
		}
	} else {
		for(var i = 0; i < aGoBasic.length; i++) {
			aGoBasic[i].hide().disable();
			aGoAdvanced[i].enable().show();
		}
	}
}

function checkMultiSelect(o) {
	if (o.selectedIndex == 0) o.options[0].selected = false;
	return (o.selectedIndex > 0);
}

function checkAdvancedCriteria() {
	var a = $$(".selectedCriteriaNotice");
	var oForm;
	for (var i = 0; i < a.length; i++) {
		findParentForm(a[i]);
		oForm = findParentForm(a[i]);//find the FORM covering this DIV
		a[i].style.display = (oForm && oForm.gotAdvancedCriteria()) ? "" : "none";
	}
}

function findParentForm(o) {
	if (o.tagName.toLowerCase() == "form") {
		return o;
	} else if (o.parentNode) {
		return findParentForm(o.parentNode);
	} else {
		return false;
	}
}

function processResults(request) {
	var asearch = false; // initialize in case don't have asearch variable;
	var oError;
	eval(request.responseText);
	if (asearch) {
		if (asearch.status) {
			if (asearch.url) {
				window.location = asearch.url;
			} else {
				showErrorMessage('error_message', 'Sorry! We are unable to generate your search results. Please reload to <a href="/">home page</a> and try again.');
			}
		} else {
			$(asearch.formid).stopWaiting();
			clearErrorMessages(asearch.formid);
			for (var field in asearch.fields) {
				showErrorMessage(field, asearch.fields[field]);
			}
		}
	} else { 
		showErrorMessage('error_message', 'An error has occured! Please reload to <a href="/">home page</a> and try again.');
	}
}

function showErrorMessage(fieldname, message) {
	oError = $(fieldname);
	if (oError) {
		oError.innerHTML = message;
		oError.style.display = '';
	}
}

function ajaxLoading(status) {
	var ajaxLoader = $('ajax-tab-loading') ;
	if (status) {
		ajaxLoader.setStyle({'left': ((getElementPosition('mini-search-form').left + 560) - 53) + 'px',
										'top' : (getElementPosition('mini-search-form').top - 29) + 'px'});
		ajaxLoader.show();
	} else {
		ajaxLoader.hide();
	}
}

function getElementPosition(elementId){
	var offsetTrail = $(elementId);
	var offsetLeft = 0;
	var offsetTop = 0;
	
	while (offsetTrail){
		offsetLeft += offsetTrail.offsetLeft;
		offsetTop += offsetTrail.offsetTop;
		offsetTrail = offsetTrail.offsetParent;
	}
	if (navigator.userAgent.indexOf('Mac') != -1 && typeof document.body.leftMargin != 'undefined'){
		offsetLeft += document.body.leftMargin;
		offsetTop += document.body.topMargin;
	}
	return {left:offsetLeft,top:offsetTop};
}

function clearErrorMessages(formID) {
	var oForm = $(formID);
	if (oForm) oForm.clearErrorMessages();
}

function getFormStyleStatus() {
	var aGo = $$('.basic_go_button');
	if (aGo[0]) {
		return ((aGo[0].style.display == "none") ? "/advanced" : "");//if top/basic GO button is not showed, means it's in advanced view
	} else {
		return '';
	}
}

function getFormEmbedStatus() {
	var aForm = $$('.searchForm');
	var embed = '';
	if (aForm[0]) {
		embed = (aForm[0].action.endsWith("/embed") ? "/embed" : "");//if search form has embed parameter, means use embedded layout
		return (getFormStyleStatus() == '' ? '/0' + embed : embed);
	} else {
		return '';
	}
}

//call this every page load
checkAdvancedCriteria();
initGoButtons();