
var isIE = (navigator.appName.indexOf("Microsoft") != -1);

var JSBroadcaster = {};

function XMLRequest(){
	this.Url = arguments[0];
	this.Method = arguments[1];
	this.Async = arguments[2];
	this.ReturnType = arguments[3];
	this.Data = null;
	this.HttpReq = new HttpRequest();
	this.Broadcaster = {};
	JSBroadcaster.initialize(this.Broadcaster);
	this.Broadcaster.addListener(this);

	XMLRequest.prototype.Execute = function(){
		if(this.Data != null){
			this.Data = this.Data.join("&");
		}
		StartRequest(this);
	}
	XMLRequest.prototype.AddVariable = function(name, value){
		if(this.Data == null){
			this.Data = new Array();
		}
		this.Data[this.Data.length] = name + "=" + value;
	}
}

function CheckStatus(XMLReq){
	if(XMLReq.HttpReq.readyState == 4){
		XMLReq.Broadcaster.broadcastMessage("onComplete", XMLReq.HttpReq);
	}
}

function StartRequest(XMLReq){
	XMLReq.Broadcaster.broadcastMessage("onRequest");
	XMLReq.HttpReq.onreadystatechange = function(){
		CheckStatus(XMLReq);
	}
	XMLReq.HttpReq.open(XMLReq.Method, XMLReq.Url, XMLReq.Async);
	XMLReq.HttpReq.send(XMLReq.Data);
}

function HttpRequest(){
	this.Instance = false;
	if(window.XMLHttpRequest){
		this.Instance = new XMLHttpRequest();
		if(this.Instance.overrideMimeType){
			this.Instance.overrideMimeType('text/xml');
		}
	}else if(window.ActiveXObject){
		try
		{
			this.Instance = new ActiveXObject("Msxml2.XMLHTTP");
		}catch(e){
			try
			{
				this.Instance = new ActiveXObject("Microsoft.XMLHTTP");
			}catch(ex){
			}
		}
	}
	return this.Instance;
}

JSBroadcaster.initialize = function(obj){
	obj._listeners = new Array();

	obj.addListener = function(obj){
		for (var i=0;i<this._listeners.length; i++){
			if(this._listeners[i] == obj){
				return false;
			}
		}
		this._listeners.push( obj );
		return true;
	}

	obj.removeListener = function(obj){
		for (var i=0;i<this._listeners.length; i++){
			if ( this._listeners[i] == obj){
				this._listeners.splice(i, 1);
				return true;
			}
		}
		return false;
	}

	obj.broadcastMessage = function(){
		for(var i=0; i<this._listeners.length; i++){
			if(typeof this._listeners[i][arguments[0]] == "function"){
				this._listeners[i][arguments[0]](arguments[1]);
			}
		}
	}
}

function MM_setTextOfLayer(objId,x,newText) { //v9.0
  with (document) if (getElementById && ((obj=getElementById(objId))!=null))
    with (obj) innerHTML = unescape(newText);
}

function setFooterBlockActive(BookMarkID,TextContent) {
  if (document.getElementById(BookMarkID)) {
  	if (document.getElementById(BookMarkID).className!='selected') {
  		//document.getElementById('footerblocktext').style.height='';
  		MM_setTextOfLayer('footerboxcontent','',TextContent);
  		document.getElementById('footerbox').className='footerboxcontent';
  		document.getElementById('talktous').className='';
  		document.getElementById('privacy').className='';
  		document.getElementById('ssl').className='';
  		document.getElementById(BookMarkID).className='selected';
		window.scrollTo(0, 2000);
	}else{
  		//document.getElementById('footerblocktext').style.height=document.getElementById('footerblocktext').offsetHeight+'px';
  		MM_setTextOfLayer('footerboxcontent','','');
  		document.getElementById(BookMarkID).className='';
  		document.getElementById('footerbox').className='footerboxcontent_empty';
  	}
  }
}

var key = 0;
document.onkeydown = checkKeycode;
function checkKeycode(e) {
	var keycode;
	if (window.event){
		keycode = window.event.keyCode;
	}else if(e){
		keycode = e.which;
	}
	key = keycode;
}

function checkPassword(text){
	if(text.match(/[A-Z]/g) && text.match(/[^A-Za-z ]/g) && text.match(/[0-9]/g) && text.length >= 8){
		return true;
	}
	return false;
}

function checkLen(field, next, prev, form){
	if(field.value.length == field.maxLength && next != ""){
		for(var i=0; i<document.getElementById(form).elements.length; i++){
			if(document.getElementById(form).elements[i].name == next){
				document.getElementById(form).elements[i].focus();
			}
		}
	}else if(field.value.length == 0 && prev != "" && key == 8){
		for(var i=0; i<document.getElementById(form).elements.length; i++){
			if(document.getElementById(form).elements[i].name == prev){
				document.getElementById(form).elements[i].focus();
			}
		}
	}
}

function emailCheck(emailStr){
	var checkTLD=1;
	var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
	var emailPat=/^(.+)@(.+)$/;
	var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
	var validChars="\[^\\s" + specialChars + "\]";
	var quotedUser="(\"[^\"]*\")";
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
	var atom=validChars + '+';
	var word="(" + atom + "|" + quotedUser + ")";
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
	var matchArray=emailStr.match(emailPat);
	if(matchArray==null){
		return false;
	}
	var user=matchArray[1];
	var domain=matchArray[2];
	for (i=0; i<user.length; i++) {
		if (user.charCodeAt(i)>127) {
			return false;
	   }
	}
	for (i=0; i<domain.length; i++) {
		if (domain.charCodeAt(i)>127) {
			return false;
	   }
	}
	if (user.match(userPat)==null) {
		return false;
	}
	var IPArray=domain.match(ipDomainPat);
	if (IPArray!=null) {
		for (var i=1;i<=4;i++) {
			if (IPArray[i]>255) {
				return false;
		   }
		}
		return true;
	}
	var atomPat=new RegExp("^" + atom + "$");
	var domArr=domain.split(".");
	var len=domArr.length;
	for (i=0;i<len;i++) {
		if (domArr[i].search(atomPat)==-1) {
			return false;
	    }
	}
	if (checkTLD && domArr[domArr.length-1].length!=2 && domArr[domArr.length-1].search(knownDomsPat)==-1) {
		return false;
	}
	if (len<2) {
		return false;
	}
	return true;
}




function numbersonly(myfield, e, dec){
	keychar = String.fromCharCode(key);
	if(("0123456789").indexOf(String(keychar)) != -1){
		return true;
	}else if((key==0) || (key==8) || (key==9) || (key==13) || (key==27)){
		return true;
	}else if(dec && (keychar == ".")){
		myfield.form.elements[dec].focus();
		return false;
	}
	return false;
}

function in_array(array, text){
	for(var i=0; i<array.length; i++){
		if(array[i] == text){
			return true;
		}
	}
	return false;
}

function validForm(form, required){
	var valid = true;
	var validpass = true;
	var validterms = true;
	var Message = "";
	var Elements = new Array();
	var PasswordFields = new Array();
	if(required == null || required == "null" || required == undefined || required == "undefined"){
		required = new Array();
	}
	for(var i=0; i<form.elements.length; i++){
		if(in_array(required, form.elements[i].name)){
			if(form.elements[i].type == "checkbox"){
				if(!form.elements[i].checked){
					if(form.elements[i].name == "acceptterms"){
						Message = "You must agree to the terms and conditions.";
					}
					valid = false;
				}
			}else{
				if(form.elements[i].value == ""){
					valid = false;
				}
			}
		}
		if(String(form.elements[i].name).toLowerCase().indexOf("email") != -1){
			if(!emailCheck(form.elements[i].value)){
				valid = false;
				Message = "Please enter a valid email address.";
			}
		}
		if(String(form.elements[i].name).toLowerCase().indexOf("password") != -1 && in_array(required, form.elements[i].name)){
			PasswordFields[PasswordFields.length] = form.elements[i];
			if(!checkPassword(form.elements[i].value)){
				valid = false;
				Message = "Your password must have a minimum of 8 characters, contain at least one number, one symbol character, and one capital letter.";
			}
		}
	}
	if(PasswordFields.length > 1){
		var OriginalPass = "";
		var k = 0;
		for(var i=0; i<PasswordFields.length; i++){
			if(k == 0){
				OriginalPass = PasswordFields[i].value;
				k++;
			}else if(k == 1){
				if(OriginalPass != PasswordFields[i].value){
					valid = false;
					Message = "Your passwords do not match.";
					k = 0;
				}
			}
		}
	}
	if(!valid && Message != ""){
		alert(Message);
	}else if(!valid){
		alert("Please fill out all required fields.");
	}
	return valid;
}

function validFormUti(form, required){
	var valid = true;
	var validpass = true;
	var validterms = true;
	var Message = "";
	var Elements = new Array();
	var PasswordFields = new Array();
	var pwi1 = 0;
	var pwi2 = 0;
	
	if(required == null || required == "null" || required == undefined || required == "undefined"){
		required = new Array();
	}
	for(var i=0; i<form.elements.length; i++){
		if(in_array(required, form.elements[i].name)){
			if(form.elements[i].type == "checkbox"){
				if(!form.elements[i].checked){
					if(form.elements[i].name == "acceptterms"){
						Message = "You must agree to the terms and conditions.";
					}
					valid = false;
				}
			}else{
				if(form.elements[i].value == ""){
					valid = false;
					Message = "Please fill out the '" + form.elements[i].name + "' field.";
				}
			}
		}
		if(String(form.elements[i].name).toLowerCase().indexOf("email") != -1){
			if(!emailCheck(form.elements[i].value)){
				valid = false;
				Message = "Please enter a valid email address.";
			}
		}

		if (form.elements[i].name == "Password1") {
			pwi1 = i;
		}
		if (form.elements[i].name == "Password2") {
			pwi2 = i;
		}

//		if(String(form.elements[i].name).toLowerCase().indexOf("password") != -1 && in_array(required, form.elements[i].name)){
//			PasswordFields[PasswordFields.length] = form.elements[i];
//			if(!checkPassword(form.elements[i].value)){
//				valid = false;
//				Message = "Your password must have a minimum of 8 characters, contain at least one number, one symbol character, and one capital letter.";
//			}
//		}
	}
	
//	if(PasswordFields.length > 1){
//		var OriginalPass = "";
//		var k = 0;
//		for(var i=0; i<PasswordFields.length; i++){
//			if(k == 0){
//				OriginalPass = PasswordFields[i].value;
//				k++;
//			}else if(k == 1){
//				if(OriginalPass != PasswordFields[i].value){
//					valid = false;
//					Message = "Your passwords do not match.";
//					k = 0;
//				}
//			}
//		}
//	}

	if (form.elements[pwi1].value != form.elements[pwi2].value) {
		valid = false;
		Message = "Your passwords do not match.";
	}

	if(!valid && Message != ""){
		alert(Message);
	}else if(!valid){
		alert("Please fill out all required fields.");
	}
	return valid;
}


function submitForm(form, script, parent, required){
	var Elements = new Array();
	if(validForm(form, required)){
		var j = 0;
		for(var i=0; i<form.elements.length; i++){
			if(form.elements[i].type == "radio" && form.elements[i].checked){
				Elements[j] = form.elements[i].name + "=" + escape(form.elements[i].value);
				j++;
			}else if(form.elements[i].type == "checkbox" && form.elements[i].checked){
				Elements[j] = form.elements[i].name + "=" + escape(form.elements[i].value);
				j++;
			}else if(form.elements[i].type != "radio"){
				Elements[j] = form.elements[i].name + "=" + escape(form.elements[i].value);
				j++;
			}
		}
		var xmlReq = new XMLRequest(parent + "lib/" + script + ".php?" + Elements.join("&"), "GET", true, "xml");
		xmlReq.onComplete = function(contents){
			switch(script){
				case "qs" :
				questionClose();
				break;
				case "fs" :
					setFooterBlockActive('talktous','');
				break;
				case "cf" :
					var FormParent = form.parentNode;
					FormParent.innerHTML = "";
					var ResultMessage = document.createElement("span");
					while(FormParent.firstChild){
						FormParent.removeChild(FormParent.firstChild);
					}
					ResultMessage.innerHTML = getResultMessage(contents.responseXML);
					FormParent.appendChild(ResultMessage);
				break;
			}
		}
		xmlReq.Execute();
	}
}

function getResultMessage(xml){
	if(isIE){
		if(xml.childNodes[1].childNodes[0].getAttribute("Success") == "true"){
			return xml.childNodes[1].childNodes[0].childNodes[0].text;
		}else{
			return xml.childNodes[1].childNodes[0].childNodes[0].text;
		}
	}else{
		if(xml.firstChild.childNodes[1].getAttribute("Success") == "true"){
			return xml.firstChild.childNodes[1].childNodes[1].textContent;
		}else{
			return xml.firstChild.childNodes[1].childNodes[3].textContent;
		}
	}
	return "";
}
/*
  ------------------------------------------------
  PVII Equal CSS Columns scripts -Version 2
  Copyright (c) 2005 Project Seven Development
  www.projectseven.com
  Version: 2.1.0
  ------------------------------------------------
*/
function P7_colH2(){ //v2.1.0 by PVII-www.projectseven.com
 var i,oh,h=0,tg,el,np,dA=document.p7eqc,an=document.p7eqa;if(dA&&dA.length){
 for(i=1;i<dA.length;i+=2){dA[i+1].style.paddingBottom='';}for(i=1;i<dA.length;i+=2){
 oh=dA[i].offsetHeight;h=(oh>h)?oh:h;}for(i=1;i<dA.length;i+=2){oh=dA[i].offsetHeight;
 if(oh<h){np=h-oh;if(!an&&dA[0]==1){P7_eqA2(dA[i+1].id,0,np);}else{
 dA[i+1].style.paddingBottom=np+"px";}}}document.p7eqa=1;
 document.p7eqth=document.body.offsetHeight;
 document.p7eqtw=document.body.offsetWidth;}
}
function P7_eqT2(){ //v2.1.0 by PVII-www.projectseven.com
 if(document.p7eqth!=document.body.offsetHeight||document.p7eqtw!=document.body.offsetWidth){P7_colH2();}
}
function P7_equalCols2(){ //v2.1.0 by PVII-www.projectseven.com
 var c,e,el;if(document.getElementById){document.p7eqc=new Array();
 document.p7eqc[0]=arguments[0];for(i=1;i<arguments.length;i+=2){el=null;
 c=document.getElementById(arguments[i]);if(c){e=c.getElementsByTagName(arguments[i+1]);
 if(e){el=e[e.length-1];if(!el.id){el.id="p7eq"+i;}}}if(c&&el){
 document.p7eqc[document.p7eqc.length]=c;document.p7eqc[document.p7eqc.length]=el}}
 setInterval("P7_eqT2()",10);}
}
function P7_eqA2(el,p,pt){ //v2.1.0 by PVII-www.projectseven.com
 var sp=10,inc=20,g=document.getElementById(el);np=(p>=pt)?pt:p;
 g.style.paddingBottom=np+"px";if(np<pt){np+=inc;
 setTimeout("P7_eqA2('"+el+"',"+np+","+pt+")",sp);}
}


function questionClose(){
	if(document.getElementById('questioncontent').style.display!='') {
    	document.getElementById('question_name').value='Start typing here...';
    	document.getElementById('questionarrow').style.display="";
    	document.getElementById('questioncontent').style.display="";
    }
}

function questionOpen() {
    if(document.getElementById('questioncontent').style.display!='block') {
    	document.getElementById('question_name').value='';
    	document.getElementById('questionarrow').style.display="none";
    	document.getElementById('questioncontent').style.display="block";
    }
}



if( document.addEventListener ) document.addEventListener( 'DOMContentLoaded', quote, false);

function quote(){
  // Hide forms
  $( 'form.quote' ).hide().end();

  // Processing
  $( 'form.quote' ).find( 'li/label' ).not( '.nocmx' ).each( function( i ){
    var labelContent = this.innerHTML;
    var labelWidth = document.defaultView.getComputedStyle( this, '' ).getPropertyValue( 'width' );
    var labelSpan = document.createElement( 'span' );
        labelSpan.style.display = 'block';
        labelSpan.style.width = labelWidth;
        labelSpan.innerHTML = labelContent;
    this.style.display = '-moz-inline-box';
    this.innerHTML = null;
    this.appendChild( labelSpan );
  } ).end();

  // Show forms
  $( 'form.quote' ).show().end();
}
