$(document).ready(function () {prepareForm();});

//window.onload = prepareForm;

//addEvent(window, 'load', function () { prepareForm() });
//addEvent(window, 'load', function() { document.getElementById('c-name').focus() });

function include(script_filename) {
    document.write('<' + 'script');
    document.write(' language="javascript"');
    document.write(' type="text/javascript"');
    document.write(' src="' + script_filename + '">');
    document.write('</' + 'script' + '>');
}
include('/emweb/js/colorChange.js');
function prepareForm() {
	if (document.getElementById('domForm')) var form = document.getElementById('domForm');
	else if (document.getElementById('templateContent')) var form = document.getElementById('templateContent').getElementsByTagName('form')[0];
	else var form = document.getElementsByTagName('form')[0];
	form.onsubmit = function () {
		var success = doFormSubmit();
		return success;
	}
	var e = form.elements;
	for (i=0; i < e.length; i++) {
		e[i].onfocus = function () {
			var label = getLabelForId(this.id);
			label.className += ' active';
			this.className += ' active';
		}
		e[i].onblur = function () {
			var active = new RegExp(' active|active','g');
			var problem = new RegExp(' problem|problem','g');
			var label = getLabelForId(this.id);
			if (label.className) label.className = label.className.replace(active, '');
			if (label.className) label.className = label.className.replace(problem, '');
			this.className = this.className.replace(active, '');
			this.className = this.className.replace(problem, '');
			checkButtonState();
		}
	}
}

function doFormSubmit() {
	var button = document.getElementById('submit').getElementsByTagName('input')[0];
	button.disabled = true;
	var v = button.value;
	button.value = 'Validating...';
	var success = checkForm();
	if (success) button.value = 'sending...';
	else {
		button.value = v;
		button.disabled = false;
	}
	return success;
}
function checkButtonState() {
	var button = document.getElementById('submit').getElementsByTagName('input')[0];
	if (button.disabled) {
		button.disabled = false;
		button.value = 'Submit';
	}
}

function checkForm() {
	if (document.getElementById('domForm')) var form = document.getElementById('domForm');
	else var form = document.getElementById('templateContent').getElementsByTagName('form')[0];
	var e = form.elements;
	var error = 0;
	var emailerror = 0;
	var compareerror = 0;
	for (i=0; i < e.length; i++) {
		if (e[i].className.match('required')) {
			var val = e[i].value;
			if (val == '') {
				error = 1;
				var label = getLabelForId(e[i].id);
				label.className += ' problem';
				e[i].className += ' problem';
			}
		}
		if (e[i].className.match('email') && e[i].value != '') {
			if (!isEmail(e[i].value)) {
				emailerror = 1;
				var label = getLabelForId(e[i].id);
				label.className += ' problem';
				e[i].className += ' problem';
			}
		}
		if (e[i].rel && e[i].value != '' && emailerror != 1) {
			var r = document.getElementById(e[i].rel);
			if (e[i].value != r.value) {
				var label = getLabelForId(e[i].id);
				label.className += ' problem';
				e[i].className += ' problem';
				var label2 = getLabelForId(e[i].rel);
				if (!label2.className.match('problem')) label2.className += ' problem';
				if (!r.className.match(' problem')) r.className += ' problem';
				compareerror = 1;
			}
		}
	}
	if (document.getElementById('email')) {
		if (document.getElementById('email').value != '') {
			if (!isEmail(document.getElementById('email').value)) {
				emailerror = 1;
			}
		}
	}
	if (!document.getElementById('problem-alert')) {
		var pa = document.createElement('p');
		pa.id = 'problem-alert';		
		document.appendChild(pa);
	}
	if (error) {
		document.getElementById('problem-alert').innerHTML = 'Please complete the highlighted fields in order to send the form. Thanks!';
		fadeBG(document.getElementById('problem-alert'));
		return false;
	} else if (emailerror) {
		document.getElementById('problem-alert').innerHTML = 'Your email address must be entered in a valid format (user@domain.com).';
		fadeBG(document.getElementById('problem-alert'));
		return false;
	} else if (compareerror) {
		document.getElementById('problem-alert').innerHTML = 'The values of the highlighted fields must be the same.';
		fadeBG(document.getElementById('problem-alert'));
		return false;
	}
	return true;
}

function isEmail(str) {
	  // are regular expressions supported?
	  var supported = 0;
	  if (window.RegExp) {
		var tempStr = "a";
		var tempReg = new RegExp(tempStr);
		if (tempReg.test(tempStr)) supported = 1;
	  }
	  if (!supported) 
		return (str.indexOf(".") > 2) && (str.indexOf("@") > 0);
	  var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
	  var r2 = new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$");
	  return (!r1.test(str) && r2.test(str));
	}

if (!colorStart) var colorStart = 'FFFF00';
if (!colorEnd) var colorEnd = 'FFFFFF';
if (!colorSteps) var colorSteps = 14; // number of color transitions
if (!colorDuration) var colorDuration = 1.4; // total seconds the change should take
var colorElem;
var colorArray;
var colorStage;
function fadeBG(elem) {
	var colorlist = getColorSteps(elem,colorStart,colorEnd,colorSteps); // getColorSteps resides in colorChange.js
	colorArray = colorlist;
	colorElem = elem;
	colorStage = 0;
	setColor();
}

function setColor() {
	colorElem.style.backgroundColor = '#'+colorArray[colorStage];
	if (!colorStage) setTimeout("setColor()", 800);
	else if (colorStage < (colorSteps-1)) setTimeout('setColor()', Math.floor((colorDuration*1000)/colorSteps));
	colorStage++;
}



function getLabelForId(id) { 
	var label, labels = document.getElementsByTagName('label'); 
	for (var i = 0; (label = labels[i]); i++) { 
		if (label.htmlFor == id) return label; 
	} 
	return false; 
}