/*
Form Validator
Author: Peter Tornstrand <peter[at]tornstrand[dot]com>
Homepage: http://www.tornstrand.com/scripts/javascript-form-validation/
Date: 2006-07-02
Version: 1.21
*/

/*
Set to false if you don't want the error messages
*/
var err = true;

/*
Set to true if you want modal javascript dialogues instead of DOM messages
*/
var modal = false;

/*
The type of container to create for the error message
*/
var errContainer = 'div';
var errorbgcolor = '#faa';
var validbgcolor = '#fff';
var theForm = getFormId();

/*
Browser detect, need's a little work
*/
var ie;
if (navigator.appVersion.indexOf("MSIE")!=-1) {
	ie = true; 
} else {
	ie = false;
}

function getFormId() {
	var totalforms = 0;
	var frms = document.getElementsByTagName('form');
	for (var i=0; i<frms.length; i++) {
		if (frms[i].className.indexOf('validate') != -1) {
			var totalforms = totalforms + 1;
			var formtovalidate = frms[i].id;
		}
	}
	if (totalforms > 1) {
		alert('Too many forms to validate!');
	} else {
		return document.getElementById(formtovalidate);
	}
}

function getElementId(type) {
	var frm = getFormId();
	var total = 0;
	var el = frm.elements;
	for (var i=0; i<el.length; i++) {
		if (el[i].className.indexOf(type) != -1) {
			total = total + 1;
			theElement = el[i].id;
		} 
	}
	if (total == 1) {
		return document.getElementById(theElement);
	} else {
		alert('Either too many or too few of type "'+type+'" on the page!');
	}

}

function getOtherElements(frm) {
	var objInput = frm.elements;
	var others = new Array();
	for (var iCounter=0; iCounter<objInput.length; iCounter++) {
		if (objInput[iCounter].className.indexOf('other') != -1) {
					others.push(objInput[iCounter].id);
		}
	}
	return others;
}

function changeClass(el,elclass) {
				resetbg(el);
				el.className = elclass;
}

var addBlursandHighlights = function() {

			var objInput = document.getElementsByTagName('input');
			for (var iCounter=0; iCounter<objInput.length; iCounter++) {
				objInput[iCounter].onkeyup = function(){return validateSingle(this);}
				if ((objInput[iCounter].className.indexOf('req') != -1) || (objInput[iCounter].className.indexOf('code') != -1)) {
					changeLabelState(objInput[iCounter],'highlight');
				}
			}
			var objInput = document.getElementsByTagName('textarea');
			for (var iCounter=0; iCounter<objInput.length; iCounter++) {
				objInput[iCounter].onkeyup = function(){return validateSingle(this);}
				if (objInput[iCounter].className.indexOf('req') != -1) {
					changeLabelState(objInput[iCounter],'highlight');
				}
			}
			var objInput = document.getElementsByTagName('select');
			for (var iCounter=0; iCounter<objInput.length; iCounter++) {
				objInput[iCounter].onchange = function(){return validateSingle(this);}
				if (objInput[iCounter].className.indexOf('req') != -1) {
					changeLabelState(objInput[iCounter],'highlight');
				}
			}
			
}

var resetForm = function() {
			

			
			var objInput = getFormId().elements;
			for (var iCounter=0; iCounter<objInput.length; iCounter++) {
				
					changeLabelState(objInput[iCounter],'reset');
					if ( objInput[iCounter].getAttribute('type') == 'text' ) {
						objInput[iCounter].value = '';
						
					}
					if ( objInput[iCounter].getAttribute('type') == 'textarea' ) {
						objInput[iCounter].value = '';
						
					}
					if ( objInput[iCounter].getAttribute('type') == 'select' ) {
						objInput[iCounter].value = '';
						
					}
				
					
			}
			objInput[1].focus();
			
}


var displayErrorMessage = function(frm, el) {
   
	var labels = document.getElementsByTagName('label');
	var errorMsg = '';
   
	if (el.type=='radio'||el.type=='checkbox') {
		for (var i = 0; i<labels.length; i++) {
			if (labels[i].htmlFor== el.name) {
				errorMsg = '' + labels[i].innerHTML.replace('*','')+'?';
			}
		}
	} else if (el.className.indexOf('email') != -1) {
		for (var i = 0; i<labels.length; i++) {
			if (labels[i].htmlFor==el.id) {
				errorMsg = 'E-mail?';
			}
		}
	} else {
		for (var i = 0; i<labels.length; i++) {
			if (labels[i].htmlFor==el.id) {
				errorMsg = '' + labels[i].innerHTML.replace('*','')+'?';
			}
		}
	}
   
	if (err) {
		if (modal) {
			alert(errorMsg);
			el.focus();
		}
		else {
			if (document.getElementById(frm.id+'_statusMessage')) {
				var errorDiv = document.getElementById(frm.id+'_statusMessage');
				resetbg(errorDiv);
				errorDiv.className = 'errorMessage';
				errorDiv.innerHTML = errorMsg;
				Fat.fade_element(errorDiv.id, 30, 500, '#ffffff', null); 
				el.focus();
			} else {
				var errorDiv = document.createElement(errContainer);
				errorDiv.id = frm.id+'_statusMessage';
				resetbg(errorDiv);
				errorDiv.className = 'errorMessage';
				errorDiv.innerHTML = errorMsg;
				frm.insertBefore(errorDiv, frm.childNodes[0]);
				Fat.fade_element(errorDiv.id, 30, 500, '#ffffff', null);
				el.focus();
			}
		Fat.fade_all();
		}
		
	}
}

function resetbg(el) {
	el.style.backgroundColor = '';
}

function displayStatusmsg(frm,msg,status) {
	if (err) {
		if (modal) {
			alert(msg);
		}
		else {
			
			if (document.getElementById(frm.id+'_statusMessage')) {
				var statusDiv = document.getElementById(frm.id+'_statusMessage');
				changeClass(statusDiv,status);
				Fat.fade_element(statusDiv.id, 30, 500, '#ffffff', null);
				statusDiv.innerHTML = msg;
			} else {
				var statusDiv = document.createElement(errContainer);
				statusDiv.id = frm.id+'_statusMessage';
				changeClass(statusDiv,status);
				statusDiv.innerHTML = msg;
				frm.insertBefore(statusDiv, frm.childNodes[0]);
				Fat.fade_element(statusDiv.id, 30, 500, '#ffffff', null);
			}
		}
	}
}

var changeLabelState = function(el,msg) {
   
	var labels = document.getElementsByTagName('label');

	if (msg == 'error') {
		if (el.className.indexOf('fade') == -1) {
			el.className = el.className + ' fade';
		}
		for (var i = 0; i<labels.length; i++) {
			if (labels[i].htmlFor==el.id) {
				labels[i].className = labels[i].className.replace('warning','');
				labels[i].className = labels[i].className.replace('checkmark','');
				labels[i].className = labels[i].className.replace('question','');
				labels[i].className = labels[i].className.replace('highlight','');
				labels[i].className = labels[i].className + ' warning';
			}
		}
	} else if (msg == 'valid') {
		if (el.className.indexOf('fade') != -1) {
			el.className = el.className.replace('fade','');
		}
		if (el.className.indexOf('error') != -1) {
			Fat.fade_error_out(el.id, 30, 500, errorbgcolor, validbgcolor);
		}
		for (var i = 0; i<labels.length; i++) {
			if (labels[i].htmlFor==el.id) {
				labels[i].className = labels[i].className.replace('warning','');
				labels[i].className = labels[i].className.replace('checkmark','');
				labels[i].className = labels[i].className.replace('question','');
				labels[i].className = labels[i].className.replace('highlight','');
				labels[i].className = labels[i].className + ' checkmark';
			}
		}
	} else if (msg == 'question') {
		if (el.className.indexOf('fade') != -1) {
			el.className = el.className.replace('fade','');
		}
		if (el.className.indexOf('error') != -1) {
			Fat.fade_error_out(el.id, 30, 500, errorbgcolor, validbgcolor);
		}
		for (var i = 0; i<labels.length; i++) {
			if (labels[i].htmlFor==el.id) {
				labels[i].className = labels[i].className.replace('warning','');
				labels[i].className = labels[i].className.replace('checkmark','');
				labels[i].className = labels[i].className.replace('question','');
				labels[i].className = labels[i].className.replace('highlight','');
				labels[i].className = labels[i].className + ' question';
			}
		}
	} else {
		for (var i = 0; i<labels.length; i++) {
			if (labels[i].htmlFor==el.id) {
				labels[i].className = labels[i].className.replace('warning','');
				labels[i].className = labels[i].className.replace('checkmark','');
				labels[i].className = labels[i].className.replace('question','');
				labels[i].className = labels[i].className.replace('highlight','');
				if ((el.className.indexOf('req') != -1) || (el.className.indexOf('code') != -1)) {
					labels[i].className = labels[i].className + ' highlight';
				}
			}
		}
	}
}

/**
* Function called to validate form elements.
* @param frm [Object HTMLFormElement] The form to validate
* @return [Boolean] Did the form validate or not
**/
var validate = function(frm) {

	var el = frm.elements;
	for (var i=0; i<el.length; i++) {
		el[i].className = el[i].className.replace('error','');
		validateSingle(el[i]);
	}
	for (var i=0; i<el.length; i++) {
		if (el[i].className.indexOf('req') != -1 && el[i].className.indexOf('email') == -1) {
			
			// Text, Textarea, File
			if (el[i].type=='text'||el[i].type=='textarea'||el[i].type=='file') {
				if (el[i].value=="") {
					resetbg(el[i]);
					el[i].className = el[i].className + ' error';
 					err == true ? displayErrorMessage(frm, el[i]) : null;
					return false;
 				} else {
					resetbg(el[i]);
					el[i].className = el[i].className.replace('error','');
				}

			}

			
			// Radio
			else if (el[i].type=='radio') {
				var radiogroup = el[el[i].name];
				var itemchecked = false;
				for(var j = 0 ; j < radiogroup.length ; ++j) {
					if(radiogroup[j].checked) {
						itemchecked = true;
						break;
					}
				}
				if(!itemchecked) {
					resetbg(el[i]);
					el[i].className = el[i].className + ' error';
 					err == true ? displayErrorMessage(frm, el[i]) : null;
					return false;
				}
			}
			
			// Checkbox
			else if (el[i].type=='checkbox') {
				var itemchecked = false;
				var elems = document.getElementsByTagName("input");
				for(var j=0; j<elems.length; j++) {
					if(elems[j].type=='checkbox'&&elems[j].name==el[i].name) {
						if(elems[j].checked) {
							itemchecked = true;
							break;
						}
					}
				}
				if(!itemchecked) {
					resetbg(el[i]);
					el[i].className = el[i].className + ' error';
 					err == true ? displayErrorMessage(frm, el[i]) : null;
					return false;
				}
			}
			
			// Select-one
			else if (el[i].type=='select-one') {
				if (el[i].selectedIndex==0) {
					resetbg(el[i]);
					el[i].className = el[i].className + ' error';
 					err == true ? displayErrorMessage(frm, el[i]) : null;
					return false;
				} else {
					resetbg(el[i]);
					el[i].className = el[i].className.replace('error','');
				}
			}
			
			// Select-multiple
			else if (el[i].type=='select-multiple') {
				var optionselected = false;
			  	for(var j=0;j<el[i].options.length; ++j) {
			  		if (el[i].options[j].selected) {
			  			optionselected = true;
			  			break;
			  		}
			  	}
			  	if (!optionselected) {
					resetbg(el[i]);
					el[i].className = el[i].className + ' error';
 					err == true ? displayErrorMessage(frm, el[i]) : null;
					return false;
				} else {
					resetbg(el[i]);
					el[i].className = el[i].className.replace('error','');
				}
			}
		} 
		//email
		else if (el[i].className.indexOf('email') != -1) {
			if (el[i].className.indexOf('req') != -1) {
				if (el[i].type=='text') {
					var email=/^[A-Za-z0-9]+([_\.-][A-Za-z0-9]+)*@[A-Za-z0-9]+([_\.-][A-Za-z0-9]+)*\.([A-Za-z]){2,4}$/i;
					if (!email.test(el[i].value) || el[i].value == '') {
						resetbg(el[i]);
						el[i].className = el[i].className + ' error';
						err == true ? displayErrorMessage(frm, el[i]) : null;
						return false;
					} else {
						resetbg(el[i]);
						el[i].className = el[i].className.replace('error','');
					}
	
				}
			} else {
				if (el[i].type=='text') {
					var email=/^[A-Za-z0-9]+([_\.-][A-Za-z0-9]+)*@[A-Za-z0-9]+([_\.-][A-Za-z0-9]+)*\.([A-Za-z]){2,4}$/i;
					if (!email.test(el[i].value) && el[i].value != '') {
						resetbg(el[i]);
						el[i].className = el[i].className + ' error';
						err == true ? displayErrorMessage(frm, el[i]) : null;
						return false;
					} else {
						resetbg(el[i]);
						el[i].className = el[i].className.replace('error','');
					}
	
				}
			}
		}
	}
	return true;
}

var validateSingle = function(el) {
	
		if (el.className.indexOf('req') != -1 && el.className.indexOf('email') == -1) {
			
			// Text, Textarea, File
			if (el.type=='text'||el.type=='textarea'||el.type=='file') {
				if (el.value=="") {
 					changeLabelState(el,'error');
					return false;
 				} else {
					changeLabelState(el,'valid');
				}

			}

			
			// Radio
			else if (el.type=='radio') {
				var radiogroup = el[el.name];
				var itemchecked = false;
				for(var j = 0 ; j < radiogroup.length ; ++j) {
					if(radiogroup[j].checked) {
						itemchecked = true;
						break;
					}
				}
				if(!itemchecked) {
					changeLabelState(el,'error');
					return false;
 				} else {
					changeLabelState(el,'valid');
				}
			}
			
			// Checkbox
			else if (el.type=='checkbox') {
				var itemchecked = false;
				var elems = document.getElementsByTagName("input");
				for(var j=0; j<elems.length; j++) {
					if(elems[j].type=='checkbox'&&elems[j].name==el.name) {
						if(elems[j].checked) {
							itemchecked = true;
							break;
						}
					}
				}
				if(!itemchecked) {
					changeLabelState(el,'error');
					return false;
 				} else {
					changeLabelState(el,'valid');
				}
			}
			
			// Select-one
			else if (el.type=='select-one') {
				if (el.selectedIndex==0) {
					changeLabelState(el,'error');
					return false;
 				} else {
					changeLabelState(el,'valid');
				}
			}
			
			// Select-multiple
			else if (el[i].type=='select-multiple') {
				var optionselected = false;
			  	for(var j=0;j<el.options.length; ++j) {
			  		if (el.options[j].selected) {
			  			optionselected = true;
			  			break;
			  		}
			  	}
			  	if (!optionselected) {
					changeLabelState(el,'error');
					return false;
 				} else {
					changeLabelState(el,'valid');
				}
			}
		} 
		//email
		else if (el.className.indexOf('email') != -1) {
			if (el.type=='text') {
				var email=/^[A-Za-z0-9]+([_\.-][A-Za-z0-9]+)*@[A-Za-z0-9]+([_\.-][A-Za-z0-9]+)*\.([A-Za-z]){2,4}$/i;
				if (email.test(el.value)) {
					
						changeLabelState(el,'valid');
						
 				} else if (el.className.indexOf('req') != -1) {
						changeLabelState(el,'error');
						return false;
				} else if (!el.value=='') {
						changeLabelState(el,'error');
						return false;
				}

			}
		} else {
			if (el.type=='text'||el.type=='textarea'||el.type=='file') {
				if (el.value=="") {
 					changeLabelState(el,'question');
					return false;
 				} else {
					changeLabelState(el,'valid');
				}

			}
		}
	
	return true;
}

/**
* Function called when a element changes it's value.
**/
var evaluate = function() {
	for (i=0; i<conds.length; i++) {
		var element = document.getElementsByName(conds[i][0]);
		var elemVal = conds[i][1];
		var elements = document.getElementsByName(conds[i][2]);
		var bol = conds[i][3];
		
		if (ie) {
		/* For Internet Explorer */
			for (var k=0; k<element.length; k++) {
				if (element[k].name==event.srcElement.name) {
					if (event.srcElement.type=='select-one') {
						if(event.srcElement[event.srcElement.selectedIndex].value==elemVal) {
							setState(elements, bol);
						} else {
							setState(elements, !bol);
						}
					} else if (event.srcElement.type=='select-multiple') {
						var optionselected = false;
						for(var j=0; j<event.srcElement.options.length; j++) {
			  				if (event.srcElement.options[j].value==elemVal&&event.srcElement.options[j].selected) {
			  					optionselected = true;
			  					break;
			  				}
			  			}
						if (optionselected) {
							setState(elements, bol);
						} else {
							setState(elements, !bol);
						}
					} else {
						if(event.srcElement.value==elemVal) {
							setState(elements, bol);
						} else {
							setState(elements, !bol);
						}
					}
				}
			}
		} else {
		/* For other browsers */
			for (var k=0; k<element.length; k++) {
				if (element[k].name==this.name) {
					if (this.type=='select-one') {
						if(this[this.selectedIndex].value==elemVal) {
							setState(elements, bol);
						} else {
							setState(elements, !bol);
						}
					} else if (this.type=='select-multiple') {
						var optionselected = false;
						for(var j=0; j<this.options.length; j++) {
			  				if (this.options[j].value==elemVal&&this.options[j].selected) {
			  					optionselected = true;
			  					break;
			  				}
			  			}
						if (optionselected) {
							setState(elements, bol);
						} else {
							setState(elements, !bol);
						}
					} else {
						if(this.value==elemVal) {
							setState(elements, bol);
						} else {
							setState(elements, !bol);
						}
					}
				}
			}
		}
	}
}

/**
* Set a single or a group of elements to required or not required.
* @param elements [Object HTMLCollection] The elements to set required states on
* @param bol [Boolean] Set elements required or not required
**/
var setState = function(elements, bol) {
	if (bol) {
		for (var j=0; j<elements.length; j++) {
			if (elements[j].className.indexOf('req')==-1) {
				elements[j].className += ' req';
			}
		}
	} else {
		for (var j=0; j<elements.length; j++) {
			newClassName = elements[j].className.replace('req','');
			elements[j].className = newClassName;
		}
	}
}

/**
* Attach conditions to form elements.
**/
var attachConditions = function() {
/*	attachBlurs(document.getElementsByTagName('input'));
	attachBlurs(document.getElementsByTagName('select'));*/
	var frmEl = getFormId();
	if (ie) {
		frmEl.attachEvent('onsubmit', validateFields, false);
	} else {
		frmEl.addEventListener('submit', validateFields, false);
	}
	if (ie) {
		frmEl.attachEvent('onreset', resetForm, false);
	} else {
		frmEl.addEventListener('reset', resetForm, false);
	}
	frmEl.onsubmit = function() { return false; }
}

/**
* Attach onBlur or onClick to elements depending on element type.
* @param elements [Object HTLMCollection] The elements to attach onBlur events to
**/
var attachBlurs = function(elements) {
	for (var i=0; i<elements.length; i++) {
		if (elements[i].type=='checkbox'||elements[i].type=='radio') {
			if (ie) {
				elements[i].attachEvent('onclick', evaluate, false);
			} else {
				elements[i].addEventListener('click', evaluate, false);
			}
		} else {
			if (ie) {
				elements[i].attachEvent('onblur', evaluate, false);
			} else {
				elements[i].addEventListener('blur', evaluate, false);
			}
		}
	}
}

/*
Conditions
Syntax: conds.push(Array('element name','element value','element name', false));
You should put your conditions in a seperate file and include in the page.
*/
var conds = Array();



/*
AJAXify
*/
function validateFields() {
	var frmEl = getFormId();
	if (validate(frmEl)) {
		sendPosEmail();
	}
}
function sendPosEmail () {
	var fm_name = getElementId('name');
	var fm_email = getElementId('email');
	var fm_subject = getElementId('subject');
	var fm_message = getElementId('message');
	var frmsubmit = getElementId('submitbutton');
	var others = getOtherElements(getFormId());
	var page = "/mail/scripts/xmlHttpRequest.php?contact=true&xml=true";

	showContactTimer(); // quickly begin the load bar
	//success.style.display = 'none'; // hide the success bar (incase this is a multi-email

	// convert (&, +, =) to string equivs. Needed so URL encoded POST won't choke.
	var str1 = cleanString(fm_name.value);
	var str2 = cleanString(fm_email.value);
	var str3 = cleanString(fm_subject.value);
	var str4 = cleanString(fm_message.value);


	var stuff = "fm_name="+str1+"&fm_email="+str2+"&fm_subject="+str3+"&fm_message="+str4+"&form_submitted="+frmsubmit.value;
	if (others.length > 0) {
		for (var iCounter=0; iCounter<others.length; iCounter++) {
			var title = others[iCounter];
			var el = document.getElementById(title);
			var value = cleanString(el.value);
			stuff += "&"+title+"="+value;
		}
	}
	loadXMLPosDoc(page,stuff);
}

function cleanString(str1) {
	str1 = str1.replace(/&/g,"**am**");
	str1 = str1.replace(/=/g,"**eq**");
	str1 = str1.replace(/\+/g,"**pl**");
	return str1;
}

function unCleanString(str1) {
	str1 = str1.replace(/\*\*am\*\*/g,"&");
	str1 = str1.replace(/\*\*eq\*\*/g,"=");
	str1 = str1.replace(/\*\*pl\*\*/g,"+");
	str1 = str1.replace(/\*\*nl\*\*/g,"<br />");
	return str1;
}

function showContactTimer () {
	var fieldArea = getFormId();
	 var msg = '<img src="/mail/img/mozilla_blu.gif" alt="Loading..." title="Loading..." align="absmiddle" /> Loading...';
	displayStatusmsg(fieldArea,msg,'none');
	sentTimer = setTimeout("hideContactTimer()",6000);
}

function hideContactTimer () {
	var status = grabPosXML("status");
	var fieldArea = getFormId();
	var inputs = fieldArea.getElementsByTagName('input');
	var inputsLen = inputs.length;
	var tAreas = fieldArea.getElementsByTagName('textarea');
	var tAreasLen = tAreas.length;
	var msg = grabPosXML("confirmation");
	if ( status == 'NOTOK' ) {
		displayStatusmsg(fieldArea,msg,'errorMessage');
	} else 	if ( status == 'OK' ) {
		msg = 'Ok! <!--Your <a href="javascript:showmessage();" title="Click here to see the message you sent">message</a> has been sent.-->'
		displayStatusmsg(fieldArea,msg,'OK');
		resetForm();
	}
}

function hidemessage() {
	msg = 'Ok! <!--Your <a href="javascript:showmessage();" title="Click here to see the message you sent">message</a> has been sent.-->'
	displayStatusmsg(getFormId(),msg,'OK');
}

function showmessage() {
	var fieldArea = getFormId();
	var name = unCleanString(grabPosXML("name"));
	var email = unCleanString(grabPosXML("email"));
	var subject = unCleanString(grabPosXML("regarding"));
	var message = unCleanString(grabPosXML("message"));
	var msg = 'От: '+name+' ['+email+']<br>Тема: '+subject+'</span><br>Текст: '+message+'<br><a href="javascript:hidemessage();" title=Click here to hide this message">Закрыть</a>';
	displayStatusmsg(fieldArea,msg,'none');

}

function ajaxFunction(){
	var ajaxRequest;  // The variable that makes Ajax possible!

	try{
		// Opera 8.0+, Firefox, Safari
		ajaxRequest = new XMLHttpRequest();
	} catch (e){
		// Internet Explorer Browsers
		try{
			ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try{
				ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e){
				// Something went wrong
				alert("Your browser broke!");
				return false;
			}
		}
	}
	return ajaxRequest;
}
var pos; // variable for posting information
function loadXMLPosDoc(url,posData) {

	// branch for native XMLHttpRequest object
	pos = ajaxFunction();
		if (pos) {
			pos.onreadystatechange = processPosChange;
			pos.open("POST", url, false);
			pos.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			pos.send(posData);
		}

}

function grabPosXML(tagName) {
	if (pos.responseXML.documentElement.getElementsByTagName(tagName)[0].childNodes[0]) {
		var resp = pos.responseXML.documentElement.getElementsByTagName(tagName)[0].childNodes[0].nodeValue;
		return resp;
	} else {
		displayStatusmsg(getFormId(),'Error submitting form, please try again.','errorMessage');
		return false;
	}

}

function processPosChange() {
	// page loaded "complete"
	if (pos.readyState == 4) {
		// page is "OK"
		if (pos.status == 200) {
			if ( grabPosXML("status") == 'NOTOK' ) {
				displayStatusmsg(getFormId(),'There were problems Sending Email. Please check back in a couple minutes','errorMessage');
			}
		}
	}
}

function addEvent(elm, evType, fn, useCapture) {
	if (ie) {
/*		var r = elm.attachEvent('on' + evType, fn);
		EventCache.add(elm, evType, fn);
		return r; */
		elm.attachEvent('on' + evType, fn, false);
	}
	else {

		elm.addEventListener(evType, fn, useCapture);
	}

}
function getEventSrc(e) {
	if (!e) e = window.event;

	if (e.originalTarget)
	return e.originalTarget;
	else if (e.srcElement)
	return e.srcElement;
}

var EventCache = function(){
	var listEvents = [];
	return {
		listEvents : listEvents,

		add : function(node, sEventName, fHandler, bCapture){
			listEvents.push(arguments);
		},

		flush : function(){
			var i, item;
			for(i = listEvents.length - 1; i >= 0; i = i - 1){
				item = listEvents[i];

				if(item[0].removeEventListener){
					item[0].removeEventListener(item[1], item[2], item[3]);
				};

				/* From this point on we need the event names to be prefixed with 'on" */
				if(item[1].substring(0, 2) != "on"){
					item[1] = "on" + item[1];
				};

				if(item[0].detachEvent){
					item[0].detachEvent(item[1], item[2]);
				};

				item[0][item[1]] = null;
			};
		}
	};
}();


/*
Add onLoad events to start the whole thing
*/
function ajaxContact() {
	var frmEl = getFormId();
	addEvent(frmEl, 'submit', validateFields, false);
	addEvent(frmEl, 'reset', resetForm, false);
	frmEl.onsubmit = function() { return false; }
}

if (ie) {
	window.attachEvent("onload", addBlursandHighlights, false);
	window.attachEvent("onload", attachConditions, false);
} else {
	window.addEventListener("load", addBlursandHighlights, false);
	window.addEventListener("load", attachConditions, false);
}
/*addEvent(window, 'load',ajaxContact, false);
addEvent(window,'unload',EventCache.flush, false);*/
