function selectChanged(element) {
	var select;
	
	if (element && element.value) { select = element; } 
	else { select = this;	}
	
	if (!select.changed) { return false; }

	select.form.submit();
	return true;
}

function selectClicked() {
	this.changed = true;
}

function selectFocused() {
	this.initValue = this.value;
	return true;
}

function selectKeyed(e) {
	var theEvent;
	var keyCodeTab = 	"9";
	var keyCodeEnter = 	"13";
	var keyCodeEsc = 	"27";
	
	if (e) { theEvent = e; } 
	else { theEvent = event; }

	if ((theEvent.keyCode == keyCodeEnter || theEvent.keyCode == keyCodeTab) && this.value != this.initValue) {
		this.changed = true;
		selectChanged(this);
	} else if (theEvent.keyCode == keyCodeEsc) {
		this.value = this.initValue;
	} else {
		this.changed = false;
	}
	
	return true;
}

function navigateMenu(element) {
	element.changed = false;
	element.onfocus = selectFocused;
	element.onchange = selectChanged;
	element.onkeydown = selectKeyed;
	element.onmousedown = selectClicked;
	//element.onchange = function() { element.form.submit(); };
}

function searchFormGoUpdate(formObj){
	for (i_elem in formObj.elements) 
		if (formObj.elements[i_elem].type == 'submit') {
			for (t_elem in formObj.elements) 
				if (formObj.elements[t_elem].type == 'text') {
					if (formObj.elements[t_elem].value == formObj.elements[t_elem].defaultValue) {
						formObj.elements[i_elem].style.zIndex = '-1';
						formObj.elements[i_elem].display = 'none';
					} else {
						formObj.elements[i_elem].style.zIndex = '1';
						formObj.elements[i_elem].display = 'block';
					}
				}
		}
}

function searchFormCancelUpdate(formObj){
	for (i_elem in formObj.elements) 
		if (formObj.elements[i_elem].type == 'reset') {
			for (t_elem in formObj.elements) 
				if (formObj.elements[t_elem].type == 'text') 
					if (formObj.elements[t_elem].value.length == 0 ||
						formObj.elements[t_elem].value != formObj.elements[t_elem].defaultValue) {
						formObj.elements[i_elem].style.zIndex = '-1';
						formObj.elements[i_elem].display = 'none';
					} else {
						formObj.elements[i_elem].style.zIndex = '1';
						formObj.elements[i_elem].display = 'block';
					}
		}
}

function searchForm(element) {
for (i_elem in element.elements) 
	if (element.elements[i_elem].type == 'reset') {
		element.elements[i_elem].onclick = function(){
			for (i_elem in this.form.elements) 
				if (this.form.elements[i_elem].type == 'text') 
					this.form.elements[i_elem].value = '';
			this.form.submit();
		};
		searchFormCancelUpdate(element);
	} else if(element.elements[i_elem].type == 'submit') {
		searchFormGoUpdate(element);
	} else if(element.elements[i_elem].type == 'text') {
		element.elements[i_elem].onkeyup = function(){
			searchFormGoUpdate(element);
			searchFormCancelUpdate(element);
		};
		
		element.elements[i_elem].onkeypress = element.elements[i_elem].onkeyup;
	}
}

function init() {
	YAHOO.util.Dom.getElementsByClassName("menu_navigation", "select", document.body, navigateMenu);
	YAHOO.util.Dom.getElementsByClassName("search", "form", document.body, searchForm);
}

window.onload = init;