String.prototype.trim = function (chars) {
	var t = this.ltrim(chars).rtrim(chars);
	return this.ltrim(chars).rtrim(chars);
}

String.prototype.ltrim = function (chars) {
	chars = chars || "\\s";
	return this.replace(new RegExp("^[" + chars + "]+", "g"), "");
}

String.prototype.rtrim = function (chars) {
	chars = chars || "\\s";
	return this.replace(new RegExp("[" + chars + "]+$", "g"), "");
}

function setFocus(element) {
	try {
		element.focus();
	}
	catch(e) {}
}

function _isEmail(value) {
	var email = value.trim().toLowerCase();
	var emailReg = /^[a-z0-9!#_=~.+-]+@[a-z0-9\.\-]+\.[a-z]{2,4}$/;
	return emailReg.test(email);
}

function _isNotEmpty(value) {
	return value.trim();
}

function isEmail(id, message) {
	var element = document.getElementById(id);
	if(element) {
		if(_isEmail(element.value)) {
			return true;
		}
		else {
			setFocus(element);
			alert(message);
		}
	}
	return false;
}

function isNotEmpty(id, message) {
	var element = document.getElementById(id);
	if(element) {
		if(_isNotEmpty(element.value)) {
			return true;
		}
		else {
			setFocus(element);
			alert(message);
		}
	}
	return false;
}

function initBrowserDetect()
{
	var u = navigator.userAgent.toLowerCase();
	var _html = document.getElementsByTagName("html")[0];

	if(is("win")) addClass("win");
	else if(is("mac")) addClass("mac");
	else if(is("linux") || is("x11")) addClass("linux");

	if(is("msie 8.0")) addClass("ie8");
	else if(is("msie 7.0")) addClass("ie7");
	else if(is("msie 6.0")) addClass("ie6");
	else if(is("firefox/2")) addClass("ff2");
	else if(is("firefox/3")) addClass("ff3");
	else if(is("opera") && is("version/10")) addClass("opera10");
	else if(is("opera/9")) addClass("opera9");
	else if(is("safari") && is("version/3")) addClass("safari3");
	else if(is("safari") && is("version/4")) addClass("safari4");
	else if(is("chrome")) addClass("chrome");
	else if(is("safari")) addClass("safari2");
	else if(is("unknown")) addClass("unknown");

	if(is("msie")) addClass("trident");
	else if(is("applewebkit")) addClass("webkit");
	else if(is("gecko")) addClass("gecko");
	else if(is("opera")) addClass("presto");

	function is(browser)
	{
		if(u.indexOf(browser) !=-1) return true;
	}
	function addClass(_class)
	{
		_html.className += (" " + _class);
	}
}

function initForm() {
	var form = document.getElementById('feedback-form');
	var submit = document.getElementById('submit');
	if(form && submit) {
		submit.onclick = function() {
			if(canSubmit()) {
				form.submit();
			}
			return false;
		}
		form.onsubmit = function() {
			return canSubmit();
		}
	}
}

function canSubmit() {
	return isEmail('feedback-email', 'Please specify a valid email address.') && isNotEmpty('feedback-notes', 'Please enter your message.');
}

function initPage() {
	initBrowserDetect();
	initForm();
}

if(window.addEventListener) {
	window.addEventListener('load', initPage, false);
}
else if(window.attachEvent && !window.opera) {
	window.attachEvent('onload', initPage);
}
