
function gID(i) {
	return document.getElementById(i);	
}
function getPageOffsetLeft(e) {
	return (e.offsetParent != null) ? e.offsetLeft + getPageOffsetLeft(e.offsetParent) : e.offsetLeft;
}
function getPageOffsetTop(e) {
	return (e.offsetParent != null) ? e.offsetTop + getPageOffsetTop(e.offsetParent) : e.offsetTop;
}

function validateSearchForm() {
	var s = gID("s");
	if (s.value == "" || s.value == "Search BlueAether") {
		alert("ERROR:\n\n - Please enter a search query");
		s.focus();
		return false;
	} else {
		return true;
	}
}

function validateContactForm() {
	var name = gID("name").value;
	var email = gID("email").value;
	var message = gID("message").value;
	var errorMsg = "";

	if (name=="") {
		errorMsg += " - Please enter your name.\n";	
	}
	if (email=="") {
		errorMsg += " - Please enter your email address.\n";	
	}
	if (message=="") {
		errorMsg += " - Please enter your message.\n";	
	}
	
	if (errorMsg != "") {
		alert("ERROR(S):\n\n" + errorMsg);
		return false;
	} else {
		return true;
	}
}


function ieTabs() {
	var tabs = gID("menu_ul");
	for (var i=0; i<tabs.childNodes.length; i++) {
		if (tabs.childNodes[i].tagName == "LI") {
			tabs.childNodes[i].onmouseover = function() {
				if (this.className.indexOf("current_page") > -1) {
					this.className = this.className.replace("current_page_item","current_page_item_hover");
					this.className = this.className.replace("current_page_parent","current_page_parent_hover");
				} else {
					this.className += " li_hover";
				}
			}
			tabs.childNodes[i].onmouseout = function() {
				if (this.className.indexOf("current_page") > -1) {
					this.className = this.className.replace("current_page_item_hover","current_page_item");
					this.className = this.className.replace("current_page_parent_hover","current_page_parent");
				} else {
					this.className = this.className.replace("li_hover","");
				}
			}
		}
	}
}


function initInputs(tagname) {
	var inputs = document.getElementsByTagName(tagname);
	var defaultValues = new Array();
	for (var i = 0; i < inputs.length; i++) {
		if (inputs[i].type == "text" || inputs[i].type == "textarea") {
			defaultValues[inputs[i].id] = inputs[i].value;
			// focus
			inputs[i].onfocus = function() {
				if (this.value == defaultValues[this.id]) {
					this.value = "";
				}
			}
			// blur
			inputs[i].onblur = function() {
				if (this.value == "") {
					this.value = defaultValues[this.id];
				} else {
					// tidy the text field
					this.value = trim(this.value);	
				}
			}
		}
	}
}

function checkKeycode(e) {
	var keycode = (window.event) ? window.event.keyCode : e.which;
	var obj = (window.event) ? window.event.srcElement : e.target;	
}

function isValidDate(s) {
	// format D(D)/M(M)/(YY)YY
	var dateFormat = /\d{1,2}\/\d{1,2}\/(\d{2})|(\d{4})/
	if (dateFormat.test(s)) {
		var dateArray = s.split("/");
		dateArray[0] = parseInt(dateArray[0]);
		dateArray[1] = parseInt(dateArray[1])-1;
		dateArray[2] = (dateArray[2] < 50) ? 2000 + parseInt(dateArray[2]) : 1900 + parseInt(dateArray[2]);
		var testDate = new Date(dateArray[2], dateArray[1], dateArray[0]);
		if (testDate.getDate()!=dateArray[0] || testDate.getMonth()!=dateArray[1] || testDate.getFullYear()!=dateArray[2]) {
			return false;	
		} else {
			return true;
		}
	} else {
		return false;
	}
}

// remove multiple, leading or trailing spaces
function trim(s) {
	s = s.replace(/(^\s*)|(\s*$)/gi,"");
	s = s.replace(/[ ]{2,}/gi," ");
	s = s.replace(/\n /,"\n");
	return s;
}

// get selection
function addStyle(txtarea,tag) {
	if (txtarea.selectionStart!=txtarea.selectionEnd) {
			var pre = (txtarea.value).substring(0,txtarea.selectionStart);
			var pos = (txtarea.value).substring(txtarea.selectionEnd,txtarea.value.length);
			var sel = (txtarea.value).substring(txtarea.selectionStart,txtarea.selectionEnd);
		if (sel.indexOf("<"+tag+">") > -1 && sel.indexOf("<"+tag+">") > -1) {
			// remove formatting
			sel = sel.replace("<"+tag+">","");
			sel = sel.replace("</"+tag+">","");			
			txtarea.value = pre + sel + pos;
		} else {
			txtarea.value = pre + "<" + tag + ">" + sel + "</" + tag + ">" + pos;
		}
		updatePreview();
	}
}