
/* emg.js.php */
/* 12:45 PM 12/1/2009
/*
Copyright © 2008 Eckx Media Group, LLC. All rights reserved.
Eckx Media Group respects the intellectual property of others, and we ask our users to do the same.
*/
/*<script>*/

function emgInit(){
	externalLinks();
	autoCompleteOff();
	defaultClear();
	if(typeof(BrowserDetect) == 'object'){
		BrowserDetect.init();
	}
	if(typeof(loginTimer) == 'object'){
		loginTimer.init();	
	}
	if(typeof(curtain) == 'object'){
		curtain.init();	
	}
	if(typeof(valForm) == 'object'){
		valForm.init();	
	}
	if(typeof(cart) == 'object'){
		cart.init('cart-headline');	
	}
	/*if(typeof(slideshow) == 'object'){
		slideshow.init(false, true);
	}*/
	ie6Check();
	
	//flash
	if($('flash-div')){
		showFlash(window.CR+'/flash/header.swf?CR='+window.CR+'&xmlPath='+window.CR+'/xml/slideshow.php?CR='+window.CR, 785, 152, 'logo');	
	}
	
	ieSelectExpand();
}

Event.observe(window, 'load', emgInit);

// Show / Hide object
function toggle(obj) {
	var el = $(obj);
	el.style.display = (el.style.display != 'block' ? 'block' : 'none' );
	el.blur();
}
function toggle2(obj) {
	var el = $(obj);
	el.style.display = (el.style.display != 'block' ? 'block' : 'none' );
	el.blur();
}
function toggleClass(id, className) {
	var el = $(id);
	if (el .hasClassName(className)) {
		el .removeClassName(className);
	}
	else {
		el .addClassName(className);
	}
}

// Reset form fields
function clearForm(id, skipType) {
	var form = document.getElementById(id);
	for (var i = 0; i < form.length; i++) {
		if(form[i].type == skipType || form[i].type == 'submit' || form[i].type == 'button' ){
			continue;
		}
		clearField(form[i]);
	}
}
// Reset form fieldset fields
function clearFieldset(id) {
	var fieldset = $$('#' + id + ' input[type="text"], ' + '#' + id + ' input[type="password"], ' + '#' + id + ' input[type="file"], ' + '#' + id + ' select, ' + '#' + id + ' textarea');
	
	for (var i = 0; i < fieldset.length; i++) {
		clearField(fieldset[i]);
	}
}
// Clear individual field
function clearField (field) {
	if(field.type == 'checkbox' || field.type == 'radio') {
		field.checked = false;	
	}
	else {
		field.value = '';
	}
}

function popUpA(URL) { //allow all features
day = new Date();
id = "aboutUS";
eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=1,scrollbars=1,location=1,statusbar=1,menubar=1,resizable=1,width=900,height=400,left = 240,top = 212');");
}

function popUpB(URL) { // disable all features
day = new Date();
id = "aboutUS";
eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width=300,height=300,left = 240,top = 212');");
}

function isset(obj){
	if(typeof obj == 'undefined'){
		return false;
	}
	else{
		return true;	
	}
}


function getMousePos(e) {
	var IE = document.all?true:false
	var scrollXY = getScrollXY();
	var mousePos = new Array();
	if (IE) { // grab the x-y pos.s if browser is IE
		tempX = e.x;
		tempY = e.y;
	} 
	else {  // grab the x-y pos.s if browser is NS
		tempX = e.clientX;
		tempY = e.clientY;
	}
	// catch possible negative values in NS4
	if (tempX < 0){tempX = 0}
	if (tempY < 0){tempY = 0}  
	mousePos['x'] = tempX + scrollXY[0];
	mousePos['y'] = tempY + scrollXY[1];
	return mousePos;
}


function getScrollXY() {
  var scrOfX = 0, scrOfY = 0;
  if( typeof( window.pageYOffset ) == 'number' ) {
    //Netscape compliant
    scrOfY = window.pageYOffset;
    scrOfX = window.pageXOffset;
  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
    //DOM compliant
    scrOfY = document.body.scrollTop;
    scrOfX = document.body.scrollLeft;
  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
    //IE6 standards compliant mode
    scrOfY = document.documentElement.scrollTop;
    scrOfX = document.documentElement.scrollLeft;
  }
  return [ scrOfX, scrOfY ];
}

function getPageDim(){
	if(document.all?true:false){ // IE
		if(document.body.clientHeight > document.body.scrollHeight){
			var height = document.body.clientHeight;
			var width = document.body.clientWidth;
		}
		else{
			var height = document.body.scrollHeight;
			var width = document.body.scrollWidth;
		}
	}
	else{
		var height = document.height;
		var width = document.weidth;
	}
	var viewPortHeight = document.viewport.getHeight();
	if(height < viewPortHeight){
		height = viewPortHeight;
	}
	return [ width, height ];
}

function getVisibleDim(){ alert('function getVisibleDim() decremented, use prototype viewport');
	if(!$('getTopLeft-fake-body')){ //generate fake div to get screen size
		var fakeDiv = document.createElement('div');
		fakeDiv.id = 'getTopLeft-fake-body';
		fakeDiv.style.visibility = 'hidden';
		fakeDiv.style.margin = '0';
		fakeDiv.style.padding = '0';
		fakeDiv.style.position = 'absolute';
		fakeDiv.style.top = '0';
		fakeDiv.style.bottom = '0';
		fakeDiv.style.left = '0';
		fakeDiv.style.right = '0';
		fakeDiv.style.width = '100%';
		fakeDiv.style.height = '100%';
		fakeDiv.style.zIndex = '-1';
		document.body.appendChild(fakeDiv);
	}
	
	var fakeDiv = $('getTopLeft-fake-body');
	var width = fakeDiv.getWidth();
	var height = fakeDiv.getHeight();
	return [ width, height ];
}


function alert2(text, dim, alertTime, className){ 
	//check if alert 2 already exist
	var i=0;
	while($('alert2_'+i)){
		i++;
	}
	var alert2 = document.createElement('div');
	alert2.id = 'alert2_'+i;
	alert2.style.visibility = 'hidden';
	document.body.appendChild(alert2);
	
	alert2 = $('alert2_'+i);
	if (className === undefined) {
		alert2.addClassName('alert2');
	}
	else {
		alert2.addClassName(className);	
	}
	
	alert2.innerHTML = text;
	if(dim){
		width = dim[0];
		height = dim[1];
		alert2.style.width = width+'px';
		alert2.style.height = height+'px';
	}
	else{
		width = alert2.getWidth();
		height = alert2.getHeight();
	}
	if(isNaN(width) || isNaN(height)){
		alert('Alert2() error, width or height isNaN');	
	}
	
	var xy = getScrollXY(); 
	var topLeft = getTopLeft(width, height);
	alert2.style.top = topLeft[0]+'%';
	alert2.style.left = topLeft[1]+'%';
	alert2.style.visibility = 'visible';
	if(!alertTime){
		alertTime = 2000;	
	}
	setTimeout("document.body.removeChild(document.getElementById('alert2_"+i+"'))", alertTime);
}


//return the top left percentage for an absolute centered layer, req 100% body height
function getTopLeft(width, height){
	//var visibleDim = getVisibleDim();
	//var windowWidth = visibleDim[0];
	//var windowHeight = visibleDim[1];
	document.viewport.getWidth()
	var windowWidth = document.viewport.getWidth();
	var windowHeight = document.viewport.getHeight();
	var ie = getIEVerNum();
	
	//compensate for scroll
	var xy = getScrollXY();
	
	//get %
	var top = (windowHeight/2 + xy[1] - (height/2)) / windowHeight;
	var left = (windowWidth/2 + xy[0] - (width/2)) / windowWidth;

	if(top < 0){
		top = 0;	
	}
	if(left <0){
		left = 0;	
	}
	
	//compensate for ie 6 usage of %, the entire document not just what u see is 100%
	if(ie == 6){ // ie 6
		var pxHeight = windowHeight * top; //get pixel height
		top = pxHeight/document.body.clientHeight; // get decimal height
	}
	
	top  = Math.round(top * 100); 
	left  = Math.round(left * 100);
			
	return [ top, left ];
}

function money(num){
	var formated = Math.round(num*100)/100;
	formated = formated.toString();
	if(formated.indexOf('.') == -1){
		formated += '.00';
	}
	else{
		var parts = formated.split('.');
		if(parts[1].length == 1){
			formated += '0';	
		}
	}
	return formated;
}

function urlencode(str) {
	str = escape(str);
	str = str.replace('+', '%2B');
	str = str.replace('%20', '+');
	str = str.replace('*', '%2A');
	str = str.replace('/', '%2F');
	str = str.replace('@', '%40');
	return str;
}

function urldecode(str) {
	str = str.replace('+', ' ');
	str = unescape(str);
	return str;
}

function htmlentities(html) {
	html = html.replace('<','&lt;');
	html = html.replace('>','&gt;');
	html = html.replace('"','&quot;');
	return html;
} 

function getJs(url){
	if(url.indexOf('?')==-1) {
		url += '?';	
	}
	var jsel = document.createElement('SCRIPT');
	jsel.type = 'text/javascript';
	jsel.src = url+'&klioe='+Math.random()*10000;
	document.body.appendChild(jsel);
}

//Get IE Version Number
function getIEVerNum() {
    var ua = navigator.userAgent;
    var MSIEOffset = ua.indexOf("MSIE ");
    
    if (MSIEOffset == -1) {
        return 0;
    } else {
        return parseFloat(ua.substring(MSIEOffset + 5, ua.indexOf(";", MSIEOffset)));
    }
}

function confirm2(e, title, yesEval, noEval){
	var delConfirm = document.createElement('div');
	delConfirm.id = 'confirm2';
	document.body.appendChild(delConfirm);
	curtain.load();
	curtain.content('<p><strong>'+title+'</strong></p><ul class="tools confirm"><li class="yes"><a href="#" id="confirm2-yes">Yes</a></li><li class="no"><a href="#" id="confirm2-no">No</a></li></ul>');
	//delConfirm = $('confirm2');
	//delConfirm.addClassName('confirm2');
	//delConfirm.innerHTML = '<div>'+title+'</div><input type="button" id="confirm2_yes" value="Yes"/><br/><input type="button" id="confirm2_no" value="No" />';
	
	//var mousePos = getMousePos(e);
	//delConfirm.style.left=mousePos['x']+'px';
	//delConfirm.style.top=mousePos['y']+'px';
	$('confirm2-yes').onclick= function(){ 
		//document.body.removeChild($('confirm2'));
		eval(yesEval);
		curtain.close();
		return false;
	}
	$('confirm2-no').onclick= function(){ 
		//document.body.removeChild($('confirm2'));
		eval(noEval); 
		curtain.close();
		return false;
	}
}

function checkAll(name, trueFalse){
	var checkBoxes = document.getElementsByName(name);
	var len = checkBoxes.length;
	for(var i=0; i<len; i++){
		checkBoxes[i].checked = trueFalse;
	}
}

function externalLinks(container) {
	if(container){
		var anchors = container.select('a[rel*="external"]');
	}
	else{
		var anchors = $$('a[rel*="external"]');
	}
	for (var i=0; i<anchors.length; i++) {
		anchors[i].target = "_blank";
	}
}

function autoCompleteOff(){
	var inputs = $$('input.autocomplete-off');
	for (var i=0; i<inputs.length; i++) {
		inputs[i].setAttribute("autocomplete", "off");
	}
}

function defaultClear(){
	var inputs = $$('input.default-clear');
	for (var i=0; i<inputs.length; i++) {
		inputs[i].onfocus = function(){
			if(this.value == this.defaultValue){
				this.value = ''; 
			}
		}
		inputs[i].onblur = function(){
			if(this.value == ''){
				this.value = this.defaultValue;
			}
		}
	}
}

function bookMark(url, title){
	if(document.all?true:false){ // IE
		window.external.AddFavorite(url, title);
	}
	else{
		window.sidebar.addPanel(title, url, '')
	}
}

function ajaxFill(url, container, callback){
	$(container).innerHTML = '<div style="text-align:center"><img src="'+window.CR+'/images/library/loading.gif" /></div>';
	new Ajax.Request(url, { method: 'get', onSuccess: function(ajaxReturn) {
		if(ajaxReturn.responseText == 'died'){
			window.location = window.CR+'/action/died';
			return;
		}
		$(container).innerHTML = ajaxReturn.responseText;
		eval(callback);
	}}); 
}

function ie6Check() {
	if (BrowserDetect.browser == 'Explorer' && BrowserDetect.version < 7) {
		var ie6Notice = document.createElement('div');
		ie6Notice.id = 'ie6-notice';
		ie6Notice.innerHTML = '<p class="title">It seems like you are using Internet Explorer 6 or lower.</p><p>IE6 is an outdated web browser that cannot provide the rich web experience that a modern web browser is able to.  This site may not display and function correctly as a result.</p><p>You may want to upgrade to one of these newer web browsers:</p><ul class="browsers"><li><a href="http://www.microsoft.com/windows/downloads/ie/getitnow.mspx" title="Download Internet Explorer 8">Download Internet Explorer 8</a></li><li><a href="http://www.mozilla.com/en-US/firefox/" title="Download Mozilla Firefox">Download Mozilla Firefox</a></li><li><a href="http://www.google.com/chrome" title="Download Google Chrome">Download Google Chrome</a></li></ul><p class="hide-notice"><a href="#" onclick="document.getElementById(\'ie6-notice\').style.display = \'none\'; return false;" title="Hide this notice" rel="external">Hide this notice</a></p>';
		document.body.appendChild(ie6Notice);
	}
}
// verify the captcha
function verifyCaptcha(captchaFieldid){
	var url = window.CR + "/action/verify-captcha?area=" + captchaFieldid + "&captcha=" + urlencode($(captchaFieldid).value) + "&k=" + Math.round(100000*Math.random());
	valForm.ajaxRunning[captchaFieldid] = true;
	new Ajax.Request(url, { method: 'get',  onSuccess: function(verifyCaptcha2) {
			if(verifyCaptcha2.responseText == '0'){
				var error = ' is incorrect.'; //error
			}
			else{
				 var error = false; // no errror
			}
			valForm.errorHandler($(captchaFieldid), error);
			valForm.ajaxRunning[captchaFieldid] = false;
		}
	});
}

function refreshImg(id){
	var img = $(id);
	if(img.src.include('?')){
		img.src = img.src + '&k='+Math.random();
	}
	else{
		img.src = img.src + '?k='+Math.random();
	}
}

function showFlash(src, w, h, container){
	var s1 = new SWFObject(src,"mediaplayer",w, h,"7");
	s1.addParam("wmode", "transparent");
	if(!s1.write(container)){
		$(container).innerHTML = '<a href="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash">Click here to get the flash player.</a>';
	}
}

function textAreaExp(id){
	var label = $$('label[for="'+id+'"]');
	var header = '';
	if(label){
		header = '<h3>'+label[0].innerHTML+'</h3>';
	}

	var html = '<div class="emg-form">'+header+'<textarea rows="25" cols="100" id="'+id+'-expanded" class="fluid">'+$(id).value+'</textarea><br /><button onclick="$(\''+id+'\').value = $(\''+id+'-expanded\').value; curtain.close();">Update</button></div>';
	curtain.load();
	curtain.content(html);
}

//use to show all the properties of an object;
function objProperties(obj, objName){
	var output = '';
	for (var prop in obj ) {
		output += objName + "." + prop + " = " + obj[prop] + "\n" ;
	}
	alert(output);
}

function emailExist(emailFieldid){
	var url = window.CR + "/action/check-exist?check-field=login&check-value=" + urlencode($(emailFieldid).value) + "&k=" + Math.round(100000*Math.random());
	valForm.ajaxRunning[emailFieldid] = true;
	var resetPassUrl = new RegExp('\\' + window.CR + '\/reset-password(\/)?|\\' + window.CR + '\/newsletter-unsubscribe(\/)?$');
	new Ajax.Request(url, { method: 'get',  onSuccess: function(emailExist2) {
			if(location.pathname.match(resetPassUrl)){  // for reset password form
				var error = emailExist2.responseText == '0' ? ' does not exist.' : false;
			}
			else{
				var error = emailExist2.responseText == '1' ? ' already in use.' : false;
			}
			valForm.errorHandler($(emailFieldid), error);
			valForm.ajaxRunning[emailFieldid] = false;
		}
	}); 
}

// IE select expand
// Usage: ieSelectExpand('select.ie-expand')
function ieSelectExpand(selectSelector) {
	if (selectSelector === undefined) {
		selectSelector = 'select.ie-expand';
	}
	if (Prototype.Browser.IE) {
		$$(selectSelector).each(function(el) {
			el.observe('mouseover', function() {
				this.addClassName('expanded').removeClassName('clicked');
			}).observe('focus', function() {
				this.addClassName('expanded').removeClassName('clicked');
			}).observe('click', function() {
				this.toggleClassName('clicked');
			}).observe('mouseout', function() {
				if (!this.hasClassName('clicked')) {
					this.removeClassName('expanded');
				}
			}).observe('blur', function() {
				this.removeClassName('expanded clicked');
			});
		});
	}
}
/* browser-detect.js.php */
/*<script>*/
// Browser name:	BrowserDetect.browser
// Browser version:	BrowserDetect.version
// OS name:			BrowserDetect.OS
/* July 16 09 */ 
/*
Copyright Â© 2008 Eckx Media Group, LLC. All rights reserved.
Eckx Media Group respects the intellectual property of others, and we ask our users to do the same.
*/

var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{
			string: navigator.userAgent,
			subString: "Chrome",
			identity: "Chrome"
		},
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari",
			versionSearch: "Version"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.userAgent,
			subString: "iPhone",
			identity: "iPhone/iPod"
	    },
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
/* curtain-v2.js.php */
/*
1:16 PM 2/18/2010
*/
/*
Copyright © 2010 Eckx Media Group, LLC. All rights reserved.
Eckx Media Group respects the intellectual property of others, and we ask our users to do the same.
*/
/*<script>*/
 
 var curtain = { index: -1, expandLink: false, expandView: false, hideSelects: new Array(),
 urls: new Array(), init: function(){ curtain.index = -1; var V25b46a50 = document.createElement('div');
V25b46a50.id = 'curtain_blinds'; document.body.appendChild(V25b46a50); curtain.initLinks($$('body').first());
Event.stopObserving(window, 'load', curtain.init); }, initLinks: function(element){ var V7a76872f = element.select('a[rel*="curtain"]');
for(var i=0; i<V7a76872f.length; i++){ V7a76872f[i].href ='javascript:curtain.ajax(\''+V7a76872f[i].href.replace(document.location.protocol+'//'+document.domain, '')+'\')';
}
 var V7a76872f = element.select('a[rel*="curtsame"]'); for(var i=0; i<V7a76872f.length; i++){
 V7a76872f[i].href ='javascript:curtain.ajax(\''+V7a76872f[i].href.replace(document.location.protocol+'//'+document.domain, '')+'\', true)';
}
 var forms = element.select('form[class*="curtain"]'); for(var i=0; i<forms.length; i++){ forms[i].onsubmit = function(){
 curtain.ajax(this.action, false, this); return false }; }
 var forms = element.select('form[class*="curtsame"]');
for(var i=0; i<forms.length; i++){ forms[i].onsubmit = function(){ curtain.ajax(this.action, true, this);
return false }; } }, urlToClassStr: function (url) { var cr = (window.CR == '/') ? window.CR : window.CR + '/';
 
 return url.split('?')[0].replace(cr, '').replace('ajax/', '').replace('action/', '').replace(/\//g, ' ');
}, load: function(){ curtain.openBlinds(); var loadPop = document.createElement('div'); loadPop.id = 'curtain_load';
document.body.appendChild(loadPop); loadPop = $('curtain_load'); loadPop.addClassName('curtain_load'); 
 V79ad18f7 = getTopLeft(loadPop.getWidth(), loadPop.getHeight()); loadPop.style.top = V79ad18f7[0]+'%';
loadPop.style.left = V79ad18f7[1]+'%'; loadPop.style.zIndex = curtain.index + 1; loadPop.innerHTML = '<img src="'+window.CR+'/images/library/loading.gif" />';
}, content: function(html, classStr, sameLayer, width, height, noPadding){ if(sameLayer == true){ 
 if(!$('curtain_popUp'+curtain.index)){ alert('curtain error: samelayer is set, but theres no curtain layer yet'); 
 } document.body.removeChild($('curtain_popUp'+curtain.index)); curtain.content(html, '', false, width, height, noPadding);
return; } if($('curtain_load')){ document.body.removeChild($('curtain_load')); } 
 var popUp = document.createElement('div'); 
 var Ve6e48e35 = document.createElement('div'); var V3c559b6d = document.createElement('div'); var bodyLayer = document.createElement('div'); 
 popUp.id = 'curtain_popUp'+curtain.index; Ve6e48e35.id = 'curtain_closeLayer'+curtain.index; V3c559b6d.id = 'curtain_contentLayer'+curtain.index;
bodyLayer.id = 'curtain_bodyLayer'+curtain.index; 
 popUp.appendChild(Ve6e48e35); popUp.appendChild(V3c559b6d);
V3c559b6d.appendChild(bodyLayer); document.body.appendChild(popUp); 
 popUp = $('curtain_popUp'+curtain.index);
Ve6e48e35 = $('curtain_closeLayer'+curtain.index); V3c559b6d = $('curtain_contentLayer'+curtain.index);
bodyLayer = $('curtain_bodyLayer'+curtain.index); popUp.style.visibility = 'hidden'; popUp.addClassName('curtain_popUp' + (classStr ? ' ' + classStr : ''));
Ve6e48e35.addClassName('curtain_close'); bodyLayer.addClassName('curtain_body'); if (noPadding) { V3c559b6d.addClassName('no-padding'); 
 } 
 if (curtain.expandLink) { closeLayerHtml = '<a href="javascript:curtain.expand()" id="curtain_expand'+curtain.index+'" class="expand" title="Expand / Contract"></a>';
closeLayerHtml += '<a href="javascript:curtain.close()" class="close" title="Close"></a>'; } else {
 closeLayerHtml = '<a href="javascript:curtain.close()" class="close" title="Close"></a>'; } Ve6e48e35.innerHTML = closeLayerHtml;
 bodyLayer.innerHTML = html; V3c559b6d.addClassName('curtain_content'); if(curtain.expandView){ curtain.expand();
} else if(parseFloat(width) != width || parseFloat(height) != height){ curtain.autoSize(); } else{ 
 curtain.resizeContent(width, height); } popUp.style.zIndex = curtain.index + 1; popUp.style.visibility = 'visible';
}, autoSize: function(){ 
 var popUp = $('curtain_popUp'+curtain.index); var V3c559b6d = $('curtain_contentLayer'+curtain.index);
var Vcf7a960f = V3c559b6d.firstDescendant(); var Ve6e48e35 = $('curtain_closeLayer'+curtain.index);
width = Vcf7a960f.getWidth(); height = Vcf7a960f.getHeight(); maxW = document.viewport.getWidth();
maxH = document.viewport.getHeight(); if(height >= (maxH - 25)){ height = maxH - 50; } if(width >= (maxW - 25)){
 width = maxW - 25; } V3c559b6d.style.height = height+'px'; height += Ve6e48e35.getHeight(); width += 18; 
 var V79ad18f7 = getTopLeft(width, height); popUp.style.width = width+'px'; popUp.style.height = height+'px';
popUp.style.top = V79ad18f7[0]+'%'; popUp.style.left = V79ad18f7[1]+'%'; }, resizeContent: function(width, height){
 var popUp = $('curtain_popUp'+curtain.index); var V3c559b6d = $('curtain_contentLayer'+curtain.index);
var Ve6e48e35 = $('curtain_closeLayer'+curtain.index); var V79ad18f7 = getTopLeft(width, height); popUp.style.width = width+'px';
popUp.style.height = height+'px'; popUp.style.top = V79ad18f7[0]+'%'; popUp.style.left = V79ad18f7[1]+'%';
V3c559b6d.style.height = (height - Ve6e48e35.getHeight())+'px'; }, close: function(){ document.body.removeChild($('curtain_popUp'+curtain.index));
curtain.closeBlinds(); }, resize: function(){ var curtain_blinds = $('curtain_blinds'); var V1b808491 = getPageDim();
curtain_blinds.style.width = V1b808491[0] + 'px'; curtain_blinds.style.height = V1b808491[1] + 'px';
}, expand: function(){ curtain.expandView = true; var width = document.viewport.getWidth() - 25;
var height = document.viewport.getHeight() - 50; curtain.resizeContent(width, height); $('curtain_expand'+curtain.index).href = 'javascript:curtain.shrink()';
 }, shrink: function(){ curtain.expandView = false; $('curtain_expand'+curtain.index).href = 'javascript:curtain.expand()';
curtain.autoSize(); }, openBlinds: function(){ if( getIEVerNum() == 6){ curtain.hideSelects(); }
var curtain_blinds = $('curtain_blinds'); curtain.index +=2; curtain_blinds.style.zIndex = curtain.index;
curtain_blinds.style.display='block'; var V1b808491 = getPageDim(); curtain_blinds.style.width = V1b808491[0] + 'px';
curtain_blinds.style.height = V1b808491[1] + 'px'; Event.observe(window, 'resize', curtain.resize); 
 }, closeBlinds: function(){ var curtain_blinds = $('curtain_blinds'); curtain.index-=2; curtain_blinds.style.zIndex = curtain.index;
if(curtain.index == -1){ curtain_blinds.style.display='none'; Event.stopObserving(window, 'resize', curtain.resize); 
 } if( getIEVerNum() == 6){ curtain.showSelects(); } }, hideSelects: function(){ curtain.hideSelects[curtain.index] = new Array(); 
 if(curtain.index != -1){ var V68694ec3 = $('curtain_popUp'+curtain.index).select('select'); } else{ 
 var V68694ec3 = $$('select'); } for(var i=0; i < V68694ec3.length; i++){ if(V68694ec3[i].style.visibility != 'hidden'){
 V68694ec3[i].style.visibility = 'hidden'; curtain.hideSelects[curtain.index][i] = V68694ec3[i]; } }
}, showSelects: function(){ var V6861a8a7 = curtain.hideSelects[curtain.index]; for(var i=0; i < V6861a8a7.length; i++){
 V6861a8a7[i].style.visibility = 'visible'; } }, ajax: function(url, sameLayer, form, post, callback){ if(!sameLayer){
 curtain.load(); } curtain.urls[curtain.index] = url; 
 if(window.UR && url.include(window.UR)){ 
 url = window.UR +'/ajax'+ url.replace(window.UR, ''); } else{ url = window.CR +'/ajax'+ url.replace(window.CR, '');
} var V34d1c350 = Math.round(100000*Math.random()); if(url.include('?')){ url += '&k='+V34d1c350;
} else{ url += '?k='+V34d1c350; } var callBackSuccess = function(ajaxReturn) { if(ajaxReturn.responseText == 'died'){ 
 window.location = window.CR+'/action/died'; return; } var classStr = curtain.urlToClassStr(url); if(!sameLayer){
 curtain.content(ajaxReturn.responseText, classStr); } else{ curtain.content(ajaxReturn.responseText, classStr, true);
} var newCurtain = $('curtain_contentLayer'+curtain.index);
 curtain.initLinks(newCurtain); externalLinks(newCurtain); 
 if(valForm){ var forms = $(newCurtain).select('form[class*="val-form"]'); if(forms.length > 0){ valForm.init(forms[0].id);
} } 
if(callback){
	eval(callback);	
}

}; var callBackFailed = function(){ curtain.content(''); alert2('Request failed, please try again.');
curtain.close(); }; if(form){ form.request({onSuccess: callBackSuccess, onFailure: callBackFailed}); 
 } else{ var method = post ? 'post' : 'get'; var postBody = post ? post : ''; new Ajax.Request(url, { method: method, postBody: postBody, onSuccess: callBackSuccess, onFailure: callBackFailed}); 
 } }, refresh: function(prev){ if(prev){ var V7f54f96b = curtain.index - 2; } else{ var V7f54f96b = curtain.index;
} curtain.ajax(curtain.urls[V7f54f96b], true); } }; 
/* functions.js.php */
/*<script>*/
function toggleSourceOther(page){
	if($(page + '-form-source').value == 'Other'){
		$(page + '-form-source-other-cont').removeClassName('hide');
		$(page + '-form-other-source').addClassName('val_req');
	}
	else{
		$(page + '-form-source-other-cont').addClassName('hide');
		$(page + '-form-other-source').removeClassName('val_req');
		$(page + '-form-other-source').value == '';
	}
}


function moveItem(draggable, droparea){
	var choiceid = draggable.id.replace("choice-", "");
	var questionid = droparea.id.replace("answer-cont-", "");
	if(droparea.getElementsByTagName('div').length < 1){
		if (!droparea.cleared) {
			droparea.innerHTML = '';
			droparea.cleared = true;
		}
		
		var parentNodeid = draggable.parentNode.id;
		draggable.parentNode.removeChild(draggable); 
		droparea.appendChild(draggable); // put the choice into the answer container
		 
		// update the quiz form
		if(parentNodeid != 'drag-drop-choice-' + choiceid){
			var questionid = parentNodeid.replace("answer-cont-", "");
			$('answer-' + questionid).value = '';
		}
		
	}
	else{
		var parentNodeid = draggable.parentNode.id;
		// remove the previous choice from droparea if there is one
		$A(droparea.getElementsByTagName('div')).each(
			function(item) {
				droparea.removeChild(item); 
				var itemChoiceid = item.id.replace("choice-", "");
				$('drag-drop-choice-' + itemChoiceid).appendChild(item); // put the previous choice back into the choice column
				
				// update the quiz form
				if(parentNodeid != 'drag-drop-choice-'+choiceid){ // if dragging choice from a previous answer container, need to update the form
					var questionid = parentNodeid.replace("answer-cont-", "");
					$('answer-' + questionid).value = '';
				}
			}
		);
		
		// then put the new choice into the answer container
		draggable.parentNode.removeChild(draggable);
		droparea.appendChild(draggable);
	}
	
	// and put the default text back in
	if(parentNodeid != 'drag-drop-choice-'+choiceid && parentNodeid != draggable.parentNode.id){ // second condition is important
		$(parentNodeid).innerHTML = '<span class="hint">Drag answer here.</span>';
		$(parentNodeid).cleared = false;
	}
	
	// update the quiz form
	$('answer-' + questionid).value = choiceid;
	
	movedItem = true;
}

function dragEnd(draggable, event){
	var choiceid = draggable.element.id.replace("choice-", "");
	var parentNodeid = draggable.element.parentNode.id;
	
	if(!movedItem && parentNodeid != 'drag-drop-choice-' + choiceid){ 
		// remove the choice from the answer area and put it back in the choices column
		$A(draggable.element.parentNode.getElementsByTagName('div')).each( // draggable.element.parentNode != null
			function(item) {
				draggable.element.parentNode.removeChild(item); 
				$('drag-drop-choice-' + choiceid).appendChild(item);
				
				// update the quiz form
				var questionid = parentNodeid.replace("answer-cont-", "");
				$('answer-' + questionid).value = '';
			} 
		);
		
		// and put the default text back in to the answer container
		$(parentNodeid).innerHTML = '<span class="hint">Drag answer here.</span>';
		$(parentNodeid).cleared = false;
	}
}

function dragStart(draggable, event){
	movedItem = false;
}

Event.observe(window, 'load', function() {
			
	if($('course-test-form') != null){ 
		// need this global variable for the drag and drop exercises
		var movedItem = false;
		Event.observe('course-test-form', 'submit', function() {
			if(courseTestTimer != null){
				clearTimeout(courseTestTimer);
			}
			serialize('course-test-form', 'list'); // need to serialize the sorting exercises
		});
	}
	
	if($('course-exercise-form') != null){ 
		// need this global variable for the drag and drop exercises
		var movedItem = false;
		
		Event.observe('course-exercise-form', 'submit', function() {
			serialize('course-exercise-form', 'list');	// need to serialize the sorting exercises	
		});
	}
	
	if($('test-time-remaining') != null){
		var courseTestTimer;
		testCountdown();
	}
	
	$A($$('.drag-drop-choice')).each( // initialize the draggable items
		function(item) {
			new Draggable(item, {
				revert: true,
				ghosting: false,
				scroll: window
				, onStart: dragStart
				, onEnd: dragEnd
			});
	   }
	);
	
	$A($$('.drag-drop-answer')).each( // initialize the droppable containers
		function(item) {
			Droppables.add(
			item, {
				hoverclass: 'droppableHover',
				onDrop: moveItem,
				Overlap: 'horizontal'
			});
		}
   );
	
	$A($$('ol.exercise.sort')).each( // initialize the sortable items
		function(item) {
			Sortable.create(item ,{
							tag:'li'
							});
		}
   );
	
	// For speaking exercises: set ids for all the speaking questions and answers
	
	var speakingQuestionsCount = 0;
	$A($$('span.speaking-question')).each(
		function(item) {
			item.id = 'speaking-question-' + speakingQuestionsCount;
			speakingQuestionsCount++;
		}
   );
	
	// For speaking exercises: set ids for all the speaking answers
	var speakingAnswerCount = 0;
	$A($$('span.speaking-answer')).each(
		function(item) {
			item.id = 'speaking-answer-' + speakingAnswerCount;
			speakingAnswerCount++;
		}
   );
	
	if ($('payment-method-credit-card') != null && $('billing-info') != null) {
		Event.observe($('payment-method-credit-card'), 'click', function() {
			changePaymentMethod();
		});
		
	}
	
	if ($('payment-method-paypal') != null && $('billing-info') != null) {
		Event.observe($('payment-method-paypal'), 'click', function() {
			changePaymentMethod();
		});
		
	}
	
	if ($('payment-method-google-checkout') != null && $('billing-info') != null) {
		Event.observe($('payment-method-google-checkout'), 'click', function() {
			changePaymentMethod();
		});
		
	}
	
	if ($('payment-method-none') != null && $('billing-info') != null) {		/* Stacy */
		Event.observe($('payment-method-none'), 'click', function() {
			changePaymentMethod();
		});
		
	}
	if ($('b-country') != null) {
		Event.observe($('b-country'), 'change', function() {
			changeCountry(this.value, 'b-');
		});
	}
	
	// redirect user to forum thread after registering
	if ($('redirect-to-forum-link') != null) {
		var forumUrl = $('redirect-to-forum-link').href; 
		setTimeout("window.location = '" + forumUrl + "'", 3000);
	}
	
	// redirect user to portal after registering
	if ($('redirect-to-portal-link') != null) {
		var portalUrl = $('redirect-to-portal-link').href; 
		setTimeout("window.location = '" + portalUrl + "'", 3000);
	}
	
	
	
});

function changeCountry(country, pre){
	if (country == 'US') {
		$(pre + 'province-container').addClassName('hide');
		$(pre + 'state-container').removeClassName('hide');
		$(pre + 'state').addClassName('val_req');
		$(pre + 'province').removeClassName('val_req');
		$(pre + 'province').value = '';
		$(pre + 'zip').addClassName('val_req');
		$(pre + 'zip').addClassName('val_exist zip');
	}
	else {
		$(pre + 'province').addClassName('val_req');
		$(pre + 'province-container').removeClassName('hide');
		$(pre + 'state-container').addClassName('hide');
		$(pre + 'state').removeClassName('val_req');
		$(pre + 'state').value = '';
		$(pre + 'zip').removeClassName('val_req');
		$(pre + 'zip').removeClassName('val_exist zip');
	}
}

function valCC(){
	if ($('cctype').value == '') { // no cc type, let cc type req validation take over
		return false;
	}
	var ccNumField = $('ccnumber');
	if (ccNumField.value.length == 0) { // no cc, let req validation take over
		return false;
	}
	if (checkCreditCard(ccNumField.value, $('cctype').value)) { //valid cc
		return false;
	}
	else { // invalid cc
		return " is invalid.";
	}
}

function setBillingInfoReq(req){
	/*var reqFields = new Array('b-first_name', 'b-last_name', 'b-address1', 'b-city', 'b-country', 'b-zip', 'cctype', 'ccnumber', 'cccode', 'ccexp0', 'ccexp1');
	*/
	
	var reqFields = new Array('cctype', 'ccnumber', 'cccode', 'ccexp0', 'ccexp1');
	/*
	if ($('b-country').value == 'US') {
		reqFields[reqFields.length] = 'b-state';
	}
	else {
		reqFields[reqFields.length] = 'b-province';
	}
	*/

	for (var i = 0; i < reqFields.length; i++) {
		if (req) {
			$(reqFields[i]).addClassName('val_req');
		}
		else {
			$(reqFields[i]).removeClassName('val_req');
		}
	}
}

function changePaymentMethod(){ 
	if ($('payment-method-credit-card').checked) {
		if ($('billing-info').hasClassName('hide')) {
			$('billing-info').removeClassName('hide');
		}
		if ($('promo-comp').value == '1') {
			var promoValue = $('promo-code').value;
			$('promo-code').value = '';
			$('promo-comp').value = '';
			$('promo-info').innerHTML = '';
			alert('Promo code "' + promoValue + '" has been removed.');
		}
		setBillingInfoReq(true);
	}
	else {
		if (!$('billing-info').hasClassName('hide')) {
			$('billing-info').addClassName('hide');
		}
		setBillingInfoReq(false);
	}
}

function serialize(formName, name){ // serialize the sortable list
	$A($$('ol.exercise.sort')).each(
			function(item) {
				var serializedData = Sortable.serialize( item.id,{ name:name} );
				serializedData = serializedData.replace(/list\[\]=/g, ""); 
				if(serializedData != ''){
					var serializedArray = serializedData.split("&");
					for (var i = 0; i < serializedArray.length; i++) {
						$('answer-' + serializedArray[i]).value = i + 1;
					}
				}
			}
	   );
	
	$(formName).submit();
}

function getExerciseResults(){
	var url = window.CR + '/action/account/exercise';
	new Ajax.Request(url, { method: 'post', parameters: {data:$('course-exercise-form').serialize()} , onSuccess: function(getExerciseResults2) {
		$('background-info').addClassName('hidden');
		$('exercise-questions').addClassName('hidden');
		$('exercise-additional-info').addClassName('hidden');
		$('exercise-results').innerHTML = getExerciseResults2.responseText;
		window.scrollTo(0,0);
		playAudio('/uploads/applause.mp3');
	}}); 
}

function testCountdown(){
	if(window.CR != ''){
		var crRegEx = new RegExp('^\\' + window.CR);
		var path = location.pathname.replace(crRegEx, "");
	}
	else{
		var crRegEx = new RegExp('');
		var path = location.pathname;
	}
	
	path = path.replace(/\/test(\/)?$/, ""); 
	var url = window.CR + '/action' + path + '/get-test-time-remaining';
	new Ajax.Request(url, { method: 'get', onSuccess: function(testCountdown2) {
		
		if(testCountdown2.responseText == '0'){
			$('test-time-remaining').innerHTML = 'Time Remaining: 0:00';
			alert2('Your time has ended. Your test will be submitted now.');
			setTimeout("serialize('course-test-form', 'list')", 3000);
		}
		else if(testCountdown2.responseText == ''){ // if there was an error
			window.location = window.CR + path;
		}
		else{
			$('test-time-remaining').innerHTML = testCountdown2.responseText;
			courseTestTimer = setTimeout("testCountdown()", 1000);
		}
	}}); 
}

function clearActive(cssSelector) {
	$A($$(cssSelector)).each(
		function(item) {
			item.removeClassName('active');
		}
	);
}

/*
function selectCourse(courseId) {
	var selectedCourseList = new Array();
	
	$A($$('ul.courses.enroll li.active')).each(
		function(item) {
			var selectedCourseid = item.id.replace("course-", "");
			if(selectedCourseid != courseId){
				selectedCourseList.push(selectedCourseid);
			}
		}
	);
	
	if($('course-' + courseId).hasClassName('active')){
		$('course-' + courseId).removeClassName('active');
	}
	else{
		$('course-' + courseId).addClassName('active');
		selectedCourseList.push(courseId);
	}

	$('course-selection').value = selectedCourseList.join('-');
}

function selectPaymentMethod(paymentMethodId, paymentMethod) {
	clearActive('ul.payment-methods li');
	$('payment-method-' + paymentMethodId).addClassName('active');
	$('payment-method-selection').value = paymentMethod;
}
*/
function playAudio(filePath){
	if($('audio-main') != null){
		$('audio-main').innerHTML = 'Hello, you either have JavaScript turned off or an old version of Adobe\'s Flash Player. <a href="http://www.adobe.com/go/getflashplayer/" title="Get the latest Flash player">Get the latest Flash player</a>.';
		var s0 = new SWFObject(window.CR + '/flash/player.swf','player','384','32','9');
		s0.addParam('allowfullscreen','true');
		s0.addParam('allowscriptaccess','always');
		s0.addParam('wmode','opaque');
		
		s0.addVariable('icons','false'); //set this to false to hide the play button and buffering icon in the middle of the video. Available since 4.2.
		s0.addVariable('controlbar','bottom'); //position of the controlbar. Can be set to bottom, over and none
		
		s0.addVariable('skin',window.CR + '/flash/skins/modieus/stylish.swf');
		s0.addVariable("file",window.CR + filePath);
		s0.addVariable('autostart','true');
		s0.write('audio-main');	
	}
}

function toggleSpeakingAnswers(toggleLinkid) {
	var show = false;
	$A($$('span.speaking-answer')).each(
		function(item) {
			if ($(item.id).hasClassName('hide')) {
				$(item.id).removeClassName('hide');
				show = true;
			}
			else {
				$(item.id).addClassName('hide');
			}
		}
	);
	
	if(!isNaN(parseInt(toggleLinkid))){
		if(show){
			$('speaking-answer-toggle-' + toggleLinkid).innerHTML = 'Hide Answers';
		}
		else{
			$('speaking-answer-toggle-' + toggleLinkid).innerHTML = 'Show Answers';
		}
	}
	
}

function toggleSpeakingQuestions(toggleLinkid) {
	var show = false;
	$A($$('span.speaking-question')).each(
		function(item) {
			if ($(item.id).hasClassName('hide')) {
				$(item.id).removeClassName('hide');
				show = true;
			}
			else {
				$(item.id).addClassName('hide');
			}
		}
	);
	
	if(!isNaN(parseInt(toggleLinkid))){
		if(show){
			$('speaking-question-toggle-' + toggleLinkid).innerHTML = 'Hide Questions';
		}
		else{
			$('speaking-question-toggle-' + toggleLinkid).innerHTML = 'Show Questions';
		}
	}
	
}

function forumUsernameExist(usernameFieldid){
	var url = window.CR + "/action/check-exist?check-field=username&check-value=" + urlencode($(usernameFieldid).value) + "&k=" + Math.round(100000*Math.random());
	valForm.ajaxRunning[usernameFieldid] = true;
	
	new Ajax.Request(url, { method: 'get',  onSuccess: function(ajaxReturn) {
			var error = ajaxReturn.responseText == '1' ? ' already in use.' : false;
			valForm.errorHandler($(usernameFieldid), error);
			valForm.ajaxRunning[usernameFieldid] = false;
		}
	}); 
}

function validateNewUsername(usernameFieldid){
	var url = window.CR + "/action/validate-new-username?check-value=" + urlencode($(usernameFieldid).value) + "&k=" + Math.round(100000*Math.random());
	valForm.ajaxRunning[usernameFieldid] = true;
	
	new Ajax.Request(url, { method: 'get',  onSuccess: function(ajaxReturn) {
			var error = ajaxReturn.responseText == '0' ? false : ' already in use.';
			valForm.errorHandler($(usernameFieldid), error);
			valForm.ajaxRunning[usernameFieldid] = false;
		}
	}); 
}

function applyPromo(formid){
	var promoFieldid = 'register-enter-promo-code';
	var promoValue = $(promoFieldid).value;
	
	if (promoValue == '') {
		// nothing
	}
	else {
		$('promo-code').value = '';
		$('promo-comp').value = '';
		var url = window.CR + "/action/check-promo-exist?check-value=" + urlencode(promoValue) + "&k=" + Math.round(100000*Math.random());
		
		var courseOptionName = 'course-optionids[]';
		var courseOptionids = $(formid).select('select[name="' + courseOptionName + '"]');
		
		
		for (var i = 0; i < courseOptionids.length; i++) {
			
			if (courseOptionids[i].value != '') {
				url += '&' + courseOptionName + '=' + courseOptionids[i].value;
			}
		}
		
		
		new Ajax.Request(url, { method: 'get',  onSuccess: function(promoExist2) {
				var error = false;
				
				// check for custom promo msg
				var badPromoMsg = new RegExp('^Invalid Promo:');
				var badPromo = promoExist2.responseText.match(badPromoMsg);
				if (badPromo) {
					var promoError = promoExist2.responseText.replace(badPromoMsg, "");
					alert(promoError);
				}
				else {
					$('promo-code').value = promoValue;
					$('promo-comp').value = '';
					var promoMsg = 'Promo Code <strong>"' + promoValue + '"</strong> was applied.';
					if (promoExist2.responseText == 'comp') {
						if (!$('billing-info').hasClassName('hide')) {
							$('billing-info').addClassName('hide');
						}
						setBillingInfoReq(false);
						$('promo-comp').value = '1';
						promoMsg += ' No payment information needed.';
						
					}
					else {
						promoMsg += ' You will receive ' + promoExist2.responseText + ' off your purchase.';
/*						if ($('billing-info').hasClassName('hide')) {
							$('billing-info').removeClassName('hide');
						}
						setBillingInfoReq(true); */
					}
					
					$(promoFieldid).value = '';
					$('promo-info').innerHTML = promoMsg;
				}
			}
		}); 
	}
}

function validateField(type, field) {
	var validated = true;
	var fieldErrorCont = $(field.id + '_error');
	var label = field.name.replace(/-/g, ' ');
	label = ucwords(label);
	
	if (type == 'req') {
		if (field.value.length != 0) {
			fieldErrorCont.innerHTML = '';
		}
		else {
			fieldErrorCont.innerHTML = label + ' is required.';
			validated = false;
		}
	}
	else if (type == 'email') {
		if (field.value.length != 0) {
			// check if email is valid
			if (field.value.match(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/)) {
				fieldErrorCont.innerHTML = '';
			} 
			else {
				fieldErrorCont.innerHTML = label + ' is not a valid email address.';
				validated = false;
			}
		}
		else {
			fieldErrorCont.innerHTML = label + ' is required.';
			validated = false;
		}
	}
	
	return validated;
}

function validateRegisterForEventForm(){
	var formid = 'register-for-event-form';
	var validated = true;
	
	// validate fullname
	var fullNameField = $(formid + '-full-name');
	if (!validateField('req', fullNameField)) {
		validated = false;
	}
	
	// validate email
	var emailField = $(formid + '-email');
	if (!validateField('email', emailField)) {
		validated = false;
	}
	
	// validate country
	var countryField = $(formid + '-country');
	if (!validateField('req', countryField)) {
		validated = false;
	}
	
	return validated;
}

function ucwords(str) {
	return (str + '').replace(/^(.)|\s(.)/g, function ($1) {
											 	return $1.toUpperCase();
											 }
							  );
}
/* scroll-fixed.js.php */
/*<script>*/
// Returns size of associative array
Object.size = function(obj) {
    var size = 0, key;
    for (key in obj) {
        if (obj.hasOwnProperty(key)) size++;
    }
    return size;
};
// Fixed element ids
scrollFixedElements = ['drag-drop-choice-cont'];

// Store element objects
var els = {};
// Original top positions
var tops = {};
// Fixed top positions
var fixedTops = {};

// Event handler
Event.observe(window, 'scroll', function(event) {
	if (Object.size(scrollFixedElements) > 0) {
		scrollFixedElements.each(function(id) {
			if (Object.size(els) == 0) {
				// Populate array of element objects
				els[id] = $(id);
				// If object exists, get original top position & default it's fixed position to 0
				if (els[id]) {
					//tops[id] = window.pageYOffset + els[id].viewportOffset().top;
					tops[id] = getScrollXY()[1] + els[id].viewportOffset().top;
					fixedTops[id] = 0;
				}
			}
			scrollFixed(id);
		});
	}							 
});

// Toggle element position attribute based on vertical positioning
function scrollFixed(id) {	
	if (els[id]) {
		// Current position
		var position = els[id].viewportOffset();
			
		fixedTops[id] = (-getScrollXY()[1] + tops[id]);
		// If element position crosses threshold, then toggle 'fixed' class name
		if (fixedTops[id] <= 0) {
			els[id].addClassName('fixed');
		}
		else {
			els[id].removeClassName('fixed');
		}
	}
}

// [x, y] page offsets
function getScrollXY() {
	var scrOfX = 0, scrOfY = 0;
	if( typeof( window.pageYOffset ) == 'number' ) {
		//Netscape compliant
		scrOfY = window.pageYOffset;
		scrOfX = window.pageXOffset;
	} else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
		//DOM compliant
		scrOfY = document.body.scrollTop;
		scrOfX = document.body.scrollLeft;
	} else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
		//IE6 standards compliant mode
		scrOfY = document.documentElement.scrollTop;
		scrOfX = document.documentElement.scrollLeft;
	}
	return [ scrOfX, scrOfY ];
}
/* swf-obj.js.php */
/**
 * SWFObject v1.5: Flash Player detection and embed - http://blog.deconcept.com/swfobject/
 *
 * SWFObject is (c) 2007 Geoff Stearns and is released under the MIT License:
 * http://www.opensource.org/licenses/mit-license.php
 *
 */
/*<script>*/
if(typeof deconcept=="undefined"){var deconcept=new Object();}if(typeof deconcept.util=="undefined"){deconcept.util=new Object();}if(typeof deconcept.SWFObjectUtil=="undefined"){deconcept.SWFObjectUtil=new Object();}deconcept.SWFObject=function(_1,id,w,h,_5,c,_7,_8,_9,_a){if(!document.getElementById){return;}this.DETECT_KEY=_a?_a:"detectflash";this.skipDetect=deconcept.util.getRequestParameter(this.DETECT_KEY);this.params=new Object();this.variables=new Object();this.attributes=new Array();if(_1){this.setAttribute("swf",_1);}if(id){this.setAttribute("id",id);}if(w){this.setAttribute("width",w);}if(h){this.setAttribute("height",h);}if(_5){this.setAttribute("version",new deconcept.PlayerVersion(_5.toString().split(".")));}this.installedVer=deconcept.SWFObjectUtil.getPlayerVersion();if(!window.opera&&document.all&&this.installedVer.major>7){deconcept.SWFObject.doPrepUnload=true;}if(c){this.addParam("bgcolor",c);}var q=_7?_7:"high";this.addParam("quality",q);this.setAttribute("useExpressInstall",false);this.setAttribute("doExpressInstall",false);var _c=(_8)?_8:window.location;this.setAttribute("xiRedirectUrl",_c);this.setAttribute("redirectUrl","");if(_9){this.setAttribute("redirectUrl",_9);}};deconcept.SWFObject.prototype={useExpressInstall:function(_d){this.xiSWFPath=!_d?"expressinstall.swf":_d;this.setAttribute("useExpressInstall",true);},setAttribute:function(_e,_f){this.attributes[_e]=_f;},getAttribute:function(_10){return this.attributes[_10];},addParam:function(_11,_12){this.params[_11]=_12;},getParams:function(){return this.params;},addVariable:function(_13,_14){this.variables[_13]=_14;},getVariable:function(_15){return this.variables[_15];},getVariables:function(){return this.variables;},getVariablePairs:function(){var _16=new Array();var key;var _18=this.getVariables();for(key in _18){_16[_16.length]=key+"="+_18[key];}return _16;},getSWFHTML:function(){var _19="";if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.length){if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","PlugIn");this.setAttribute("swf",this.xiSWFPath);}_19="<embed type=\"application/x-shockwave-flash\" src=\""+this.getAttribute("swf")+"\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\" style=\""+this.getAttribute("style")+"\"";_19+=" id=\""+this.getAttribute("id")+"\" name=\""+this.getAttribute("id")+"\" ";var _1a=this.getParams();for(var key in _1a){_19+=[key]+"=\""+_1a[key]+"\" ";}var _1c=this.getVariablePairs().join("&");if(_1c.length>0){_19+="flashvars=\""+_1c+"\"";}_19+="/>";}else{if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","ActiveX");this.setAttribute("swf",this.xiSWFPath);}_19="<object id=\""+this.getAttribute("id")+"\" classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\" style=\""+this.getAttribute("style")+"\">";_19+="<param name=\"movie\" value=\""+this.getAttribute("swf")+"\" />";var _1d=this.getParams();for(var key in _1d){_19+="<param name=\""+key+"\" value=\""+_1d[key]+"\" />";}var _1f=this.getVariablePairs().join("&");if(_1f.length>0){_19+="<param name=\"flashvars\" value=\""+_1f+"\" />";}_19+="</object>";}return _19;},write:function(_20){if(this.getAttribute("useExpressInstall")){var _21=new deconcept.PlayerVersion([6,0,65]);if(this.installedVer.versionIsValid(_21)&&!this.installedVer.versionIsValid(this.getAttribute("version"))){this.setAttribute("doExpressInstall",true);this.addVariable("MMredirectURL",escape(this.getAttribute("xiRedirectUrl")));document.title=document.title.slice(0,47)+" - Flash Player Installation";this.addVariable("MMdoctitle",document.title);}}if(this.skipDetect||this.getAttribute("doExpressInstall")||this.installedVer.versionIsValid(this.getAttribute("version"))){var n=(typeof _20=="string")?document.getElementById(_20):_20;n.innerHTML=this.getSWFHTML();return true;}else{if(this.getAttribute("redirectUrl")!=""){document.location.replace(this.getAttribute("redirectUrl"));}}return false;}};deconcept.SWFObjectUtil.getPlayerVersion=function(){var _23=new deconcept.PlayerVersion([0,0,0]);if(navigator.plugins&&navigator.mimeTypes.length){var x=navigator.plugins["Shockwave Flash"];if(x&&x.description){_23=new deconcept.PlayerVersion(x.description.replace(/([a-zA-Z]|\s)+/,"").replace(/(\s+r|\s+b[0-9]+)/,".").split("."));}}else{if(navigator.userAgent&&navigator.userAgent.indexOf("Windows CE")>=0){var axo=1;var _26=3;while(axo){try{_26++;axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+_26);_23=new deconcept.PlayerVersion([_26,0,0]);}catch(e){axo=null;}}}else{try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");}catch(e){try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");_23=new deconcept.PlayerVersion([6,0,21]);axo.AllowScriptAccess="always";}catch(e){if(_23.major==6){return _23;}}try{axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash");}catch(e){}}if(axo!=null){_23=new deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","));}}}return _23;};deconcept.PlayerVersion=function(_29){this.major=_29[0]!=null?parseInt(_29[0]):0;this.minor=_29[1]!=null?parseInt(_29[1]):0;this.rev=_29[2]!=null?parseInt(_29[2]):0;};deconcept.PlayerVersion.prototype.versionIsValid=function(fv){if(this.major<fv.major){return false;}if(this.major>fv.major){return true;}if(this.minor<fv.minor){return false;}if(this.minor>fv.minor){return true;}if(this.rev<fv.rev){return false;}return true;};deconcept.util={getRequestParameter:function(_2b){var q=document.location.search||document.location.hash;if(_2b==null){return q;}if(q){var _2d=q.substring(1).split("&");for(var i=0;i<_2d.length;i++){if(_2d[i].substring(0,_2d[i].indexOf("="))==_2b){return _2d[i].substring((_2d[i].indexOf("=")+1));}}}return "";}};deconcept.SWFObjectUtil.cleanupSWFs=function(){var _2f=document.getElementsByTagName("OBJECT");for(var i=_2f.length-1;i>=0;i--){_2f[i].style.display="none";for(var x in _2f[i]){if(typeof _2f[i][x]=="function"){_2f[i][x]=function(){};}}}};if(deconcept.SWFObject.doPrepUnload){if(!deconcept.unloadSet){deconcept.SWFObjectUtil.prepUnload=function(){__flash_unloadHandler=function(){};__flash_savedUnloadHandler=function(){};window.attachEvent("onunload",deconcept.SWFObjectUtil.cleanupSWFs);};window.attachEvent("onbeforeunload",deconcept.SWFObjectUtil.prepUnload);deconcept.unloadSet=true;}}if(!document.getElementById&&document.all){document.getElementById=function(id){return document.all[id];};}var getQueryParamValue=deconcept.util.getRequestParameter;var FlashObject=deconcept.SWFObject;var SWFObject=deconcept.SWFObject;
/* val-cc.js.php */
/*<script>*/
//11:15 AM 7/21/2009
/*============================================================================*/

/*

This routine checks the credit card number. The following checks are made:

1. A number has been provided
2. The number is a right length for the card
3. The number has an appropriate prefix for the card
4. The number has a valid modulus 10 number check digit if required

If the validation fails an error is reported.

The structure of credit card formats was gleaned from a variety of sources on 
the web, although the best is probably on Wikepedia ("Credit card number"):

  http://en.wikipedia.org/wiki/Credit_card_number

Parameters:
            cardnumber           number on the card
            cardname             name of card as defined in the card list below

Author:     John Gardner
Date:       1st November 2003
Updated:    26th Feb. 2005      Additional cards added by request
Updated:    27th Nov. 2006      Additional cards added from Wikipedia

*/

/*
   If a credit card number is invalid, an error reason is loaded into the 
   global ccErrorNo variable. This can be be used to index into the global error  
   string array to report the reason to the user if required:
   
   e.g. if (!checkCreditCard (number, name) alert (ccErrors(ccErrorNo);
*/

var ccErrorNo = 0;
var ccErrors = new Array ()

ccErrors [0] = "Unknown card type";
ccErrors [1] = "No card number provided";
ccErrors [2] = "Credit card number is in invalid format";
ccErrors [3] = "Credit card number is invalid";
ccErrors [4] = "Credit card number has an inappropriate number of digits";

function checkCreditCard (cardnumber, cardname) {
     
  // Array to hold the permitted card characteristics
  var cards = new Array();

  // Define the cards we support. You may add addtional card types.
  
  //  Name:      As in the selection box of the form - must be same as user's
  //  Length:    List of possible valid lengths of the card number for the card
  //  prefixes:  List of possible prefixes for the card
  //  checkdigit Boolean to say whether there is a check digit
  
  cards [0] = {name: "Visa", 
               length: "13,16", 
               prefixes: "4",
               checkdigit: true};
  cards [1] = {name: "MasterCard", 
               length: "16", 
               prefixes: "51,52,53,54,55",
               checkdigit: true};
  cards [2] = {name: "Diners Club", 
               length: "14,16", 
               prefixes: "300,301,302,303,304,305,36,38,55",
               checkdigit: true};
  cards [3] = {name: "Carte Blanche", 
               length: "14", 
               prefixes: "300,301,302,303,304,305,36,38",
               checkdigit: true};
  cards [4] = {name: "American Express", 
               length: "15", 
               prefixes: "34,37",
               checkdigit: true};
  cards [5] = {name: "Discover", 
               length: "16", 
               prefixes: "6011,650",
               checkdigit: true};
  cards [6] = {name: "JCB", 
               length: "15,16", 
               prefixes: "3,1800,2131",
               checkdigit: true};
  cards [7] = {name: "Enroute", 
               length: "15", 
               prefixes: "2014,2149",
               checkdigit: true};
  cards [8] = {name: "Solo", 
               length: "16,18,19", 
               prefixes: "6334, 6767",
               checkdigit: true};
  cards [9] = {name: "Switch", 
               length: "16,18,19", 
               prefixes: "4903,4905,4911,4936,564182,633110,6333,6759",
               checkdigit: true};
  cards [10] = {name: "Maestro", 
               length: "16", 
               prefixes: "5020,6",
               checkdigit: true};
  cards [11] = {name: "VisaElectron", 
               length: "16", 
               prefixes: "417500,4917,4913",
               checkdigit: true};
               
  // Establish card type
  var cardType = -1;
  for (var i=0; i<cards.length; i++) {

    // See if it is this card (ignoring the case of the string)
    if (cardname.toLowerCase () == cards[i].name.toLowerCase()) {
      cardType = i;
      break;
    }
  }
  
  // If card type not found, report an error
  if (cardType == -1) {
     ccErrorNo = 0;
     return false; 
  }
   
  // Ensure that the user has provided a credit card number
  if (cardnumber.length == 0)  {
     ccErrorNo = 1;
     return false; 
  }
    
  // Now remove any spaces from the credit card number
  cardnumber = cardnumber.replace (/\s/g, "");
  
  // Check that the number is numeric
  var cardNo = cardnumber
  var cardexp = /^[0-9]{13,19}$/;
  if (!cardexp.exec(cardNo))  {
     ccErrorNo = 2;
     return false; 
  }
       
  // Now check the modulus 10 check digit - if required
  if (cards[cardType].checkdigit) {
    var checksum = 0;                                  // running checksum total
    var mychar = "";                                   // next char to process
    var j = 1;                                         // takes value of 1 or 2
  
    // Process each digit one by one starting at the right
    var calc;
    for (i = cardNo.length - 1; i >= 0; i--) {
    
      // Extract the next digit and multiply by 1 or 2 on alternative digits.
      calc = Number(cardNo.charAt(i)) * j;
    
      // If the result is in two digits add 1 to the checksum total
      if (calc > 9) {
        checksum = checksum + 1;
        calc = calc - 10;
      }
    
      // Add the units element to the checksum total
      checksum = checksum + calc;
    
      // Switch the value of j
      if (j ==1) {j = 2} else {j = 1};
    } 
  
    // All done - if checksum is divisible by 10, it is a valid modulus 10.
    // If not, report an error.
    if (checksum % 10 != 0)  {
     ccErrorNo = 3;
     return false; 
    }
  }  

  // The following are the card-specific checks we undertake.
  var LengthValid = false;
  var PrefixValid = false; 
  var undefined; 

  // We use these for holding the valid lengths and prefixes of a card type
  var prefix = new Array ();
  var lengths = new Array ();
    
  // Load an array with the valid prefixes for this card
  prefix = cards[cardType].prefixes.split(",");
      
  // Now see if any of them match what we have in the card number
  for (i=0; i<prefix.length; i++) {
    var exp = new RegExp ("^" + prefix[i]);
    if (exp.test (cardNo)) PrefixValid = true;
  }
      
  // If it isn't a valid prefix there's no point at looking at the length
  if (!PrefixValid) {
     ccErrorNo = 3;
     return false; 
  }
    
  // See if the length is valid for this card
  lengths = cards[cardType].length.split(",");
  for (j=0; j<lengths.length; j++) {
    if (cardNo.length == lengths[j]) LengthValid = true;
  }
  
  // See if all is OK by seeing if the length was valid. We only check the 
  // length if all else was hunky dory.
  if (!LengthValid) {
     ccErrorNo = 4;
     return false; 
  };   
  
  // The credit card is in the required format.
  return true;
}

/*============================================================================*/
/* val-form.js.php */
 /* 11:35 AM 2/12/2010 */
/*
Copyright © 2008 Eckx Media Group, LLC. All rights reserved.
Eckx Media Group respects the intellectual property of others, and we ask our users to do the same.
*/
/*<script>*/

 var valForm = { 
 errorTag: 'div', errorClass: 'val_error',
 
 classList: new Array('val_req', 'val_min', 'val_max', 'val_maxNum', 'val_minNum', 'val_alpha', 'val_alpha_num', 'val_alpha_num_sym', 'val_alpha_space', 'val_alpha_num_space', 'val_num', 'val_int', 'val_email', 'val_len', 'val_same', 'val_notSame', 'val_url', 'val_ajax', 'val_money', 'val_func', 'val_checked', 'val_checked_min', 'val_selected_min', 'val_checked_max', 'val_date', 'val_datetime', 'val_phone'),
 
 dependents: new Array('val_len', 'val_min', 'val_max', 'val_maxNum', 'val_minNum', 'val_same', 'val_notSame', 'val_ajax', 'val_func', 'val_checked', 'val_checked_min', 'val_selected_min', 'val_checked_max'), 
 failed: true, form: null, formObsFunc: null, submitBtn: null, submitBtnDefaultVal: null, ajaxRunning: new Object(), 
 alertErrorsFlag: false, containerErrorsFlag: false, hideErrorsFlag: false, errors: new Object(), errorFocusedFlag: false, 
 inputs: null, inputObsFuncs: null, originalSubmit: null, stopSubmit: false, init: function(){
 
 if(Object.isString(arguments[0])){ valForm.form = $(arguments[0]); if(valForm.form.hasClassName('container-errors')){
valForm.containerErrorsFlag = true; 
} if(valForm.form.hasClassName('alert-errors')){
    valForm.alertErrorsFlag = true; 
}
if(valForm.form.hasClassName('hide-errors')){
    valForm.hideErrorsFlag = true; 
} } else{ var V1934ee48 = $$('form[class*="val-form"]');
if(V1934ee48.length > 0){ valForm.form = V1934ee48[0]; if(valForm.form.hasClassName('container-errors')){
valForm.containerErrorsFlag = true; 
} if(valForm.form.hasClassName('alert-errors')){
    valForm.alertErrorsFlag = true; 
}
if(valForm.form.hasClassName('hide-errors')){
    valForm.hideErrorsFlag = true; 
} } else{ return; } } if(arguments[1]){ 
 if(arguments[1].include('ae')){ valForm.alertErrorsFlag = true; } if(arguments[1].include('he')){
 valForm.hideErrorsFlag = true; } } 
 valForm.failed = true; valForm.stopSubmit = false; valForm.ajaxRunning = new Object();
if(valForm.inputs){ for(var i=0; i<valForm.inputs.length; i++){ Event.stopObserving(valForm.inputs[i], 'blur', valForm.inputObsFuncs[i]); 
 } Event.stopObserving(valForm.form, 'submit', valForm.formObsFunc); } valForm.inputs = new Array();
valForm.inputObsFuncs = new Array(); if(!valForm.form){ alert('setupFormVal, form id dosnt exist');
return false; } 
 var Vf9b843c0 = valForm.form.select('input[type="submit"]'); if(Vf9b843c0.length == 0){
 alert('valForm init error: no submit button'); } else{ valForm.submitBtn = Vf9b843c0[0]; valForm.submitBtnDefaultVal = valForm.submitBtn.defaultValue;
valForm.resetSubmit(); } 
 valForm.inputs = valForm.form.elements; 
 
 var focusThisFlag = false; var validNodes = new Array('INPUT', 'TEXTAREA', 'SELECT'); for(var i=0; i<valForm.inputs.length; i++){
 if(valForm.inputs[i].disabled || validNodes.indexOf(valForm.inputs[i].nodeName) == -1){ continue; 
 } var inputType = valForm.inputs[i].type.toLowerCase(); if(!focusThisFlag && valForm.inputs[i].name && inputType != 'hidden'){
 focusThisFlag = true; if( inputType != 'radio' && inputType != 'checkbox'){ /*valForm.inputs[i].focus();*/
} } valForm.inputObsFuncs[i] = valForm.fieldCheck.bindAsEventListener(valForm.inputs[i]); Event.observe(valForm.inputs[i], 'blur', valForm.inputObsFuncs[i]); 
 if($w(valForm.inputs[i].className).indexOf('val_ajax') != -1 ){ valForm.ajaxRunning[valForm.inputs[i].id] = false;
} } 
 valForm.originalSubmit = valForm.form.readAttribute('onsubmit'); valForm.form.onsubmit = null; 
 valForm.formObsFunc = valForm.submitCheck.bindAsEventListener(valForm.form); Event.observe(valForm.form, 'submit', valForm.formObsFunc); 
 }, submitCheck: function(event){ valForm.errorFocusedFlag = false; valForm.submitBtn.disabled = true; 
 valForm.submitBtn.value = 'Please wait...'; valForm.errors = new Object(); valForm.failed = false;
for(var fieldID in valForm.ajaxRunning){ valForm.ajaxRunning[fieldID] = true; } for(var i=0; i<valForm.inputs.length; i++){
 valForm.fieldCheckSubmit(valForm.inputs[i]); if(valForm.errors[valForm.inputs[i].id] && !valForm.errorFocusedFlag){ 
 valForm.inputs[i].focus(); valForm.errorFocusedFlag = true; } } setTimeout('valForm.submitAjaxChk()', 1);
 Event.stop(event); return false; }, 
 submitAjaxChk: function(){ var Vc5417c1e = false; for(var fieldID in valForm.ajaxRunning){
 if(valForm.ajaxRunning[fieldID]){ Vc5417c1e = true; } else{ if(valForm.errors[fieldID] && !valForm.errorFocusedFlag){ 
 $(fieldID).focus(); valForm.errorFocusedFlag = true; } } } if(Vc5417c1e){ setTimeout('valForm.submitAjaxChk()', 100);
} else if(!valForm.failed){ eval(valForm.originalSubmit); if(!valForm.stopSubmit){ valForm.form.submit();
} else{ valForm.resetSubmit(); } } else{ if(valForm.alertErrorsFlag){ var Vcefb778c = ''; for(var fieldID in valForm.errors){
 Vcefb778c += valForm.errors[fieldID] + "\n"; } alert(Vcefb778c); } if(valForm.containerErrorsFlag && $(valForm.form.id + '-errors-cont') != null) {
	var Vcefb778c = '<ul class="' + valForm.errorClass + '">'; 
    for(var fieldID in valForm.errors){
 		Vcefb778c += '<li>' + valForm.errors[fieldID] + '</li>';
    } 
    
    Vcefb778c += '</ul>';
    $(valForm.form.id + '-errors-cont').innerHTML = Vcefb778c;
	scroll(0, 230);
}  valForm.resetSubmit(); } }, resetSubmit: function(){
 valForm.submitBtn.disabled = false; valForm.submitBtn.value = valForm.submitBtnDefaultVal; }, fieldCheck: function(){ 
 var classes = $w(this.className);
 var index = classes.indexOf('val_combo'); if(index != -1){ 
 if(index+1 == classes.length){ alert('val_combo id required'); return; } var comboID = classes[index + 1];
if($(valForm.comboID+'_error')){ $(valForm.comboID+'_error').remove(); } if(valForm.errors[comboID]){ 
 valForm.errors[comboID] = false; } var comboFields = valForm.form.select('.' + comboID); for(var i=0; i<comboFields.length; i++){
 valForm.validate(comboFields[i], comboID); if(valForm.errors[comboID]){ return; } } return; } valForm.validate(this);
return; }, fieldCheckSubmit: function(field){ var classes = $w(field.className);
 var index = classes.indexOf('val_combo');
if(index != -1){ if(index+1 == classes.length){ alert('val_combo id required'); return; } var comboID = classes[index + 1];
if($(valForm.comboID+'_error')){ $(valForm.comboID+'_error').remove(); } if(valForm.errors[comboID]){ 
 valForm.errors[comboID] = false; } var comboFields = valForm.form.select('.' + comboID); for(var i=0; i<comboFields.length; i++){
 valForm.validate(comboFields[i], comboID); if(valForm.errors[comboID]){ return; } } return; } valForm.validate(field);
return; }, validate: function(field, comboID){ var classes = $w(field.className); 
 var V0fb06b86 = classes.indexOf('val_skipifis');
if(V0fb06b86 != -1 && V0fb06b86 != (classes.length - 1)){ var ifisInput = $(classes[V0fb06b86 + 1]);
if( ifisInput.value != '' && field.value.strip() == ifisInput.value){ if(classes.indexOf('val_ajax') !=-1 ){ 
 valForm.ajaxRunning[field.id] = false; } valForm.errorHandler(field, false); return; } } for(var i=0; i<classes.length; i++){
 if(valForm.classList.indexOf(classes[i]) == -1){ continue; } if(valForm.dependents.indexOf(classes[i]) == -1){ 
 var run = 'var error = valForm.'+classes[i]+'(field);'; } else{ if(i+1 == classes.length){ alert('valForm dependent required');
return false; } var run = 'var error = valForm.'+classes[i]+'(field, "'+classes[i+1]+'");'; } eval(run); 
 if(classes[i] == 'val_ajax'){ continue; } var V3cf7317e = field; if(comboID){ V3cf7317e = $(comboID);
} if(valForm.errorHandler(V3cf7317e, error)){ break; } } }, errorHandler: function(field, error){ 
 if(field.name.indexOf('[') != -1 ){ var V943db850 = valForm.form.select('[name="'+field.name+'"]')[0].id;
} else{ var V943db850 = field.id; } var label = valForm.form.select('label[for=' + V943db850 + ']');
 if($(field.id+'_error')){ $(field.id+'_error').remove(); label[0].removeClassName('val-error'); }
 if(!error){ return false; } valForm.failed = true; 
 if(valForm.ajaxRunning[field.id]){ valForm.ajaxRunning[field.id] = false;
} if(!label[0]){ alert(field.id+' label is missing, check label id'); return; }
 var Vd17549fa = label[0].innerHTML;
var colonPos = label[0].innerHTML.indexOf(':'); if(colonPos == -1){ var htmlOpenPos = label[0].innerHTML.indexOf('<');
if(htmlOpenPos != -1){ var Vd17549fa = label[0].innerHTML.substring(0, htmlOpenPos-1); } } else{ var Vd17549fa = label[0].innerHTML.substring(0, colonPos);
} Vd17549fa = Vd17549fa.gsub(/:|<em>\*<\/em>|<EM>\*<\/EM>/, '') + ' ' + error;
 if(!valForm.hideErrorsFlag){
 
 var classNames = $w(field.className); var findKeyword = classNames.indexOf('val_errorAfter');
if( findKeyword != -1){ if(findKeyword == (classNames.length - 1)){ alert('val_form: val_errorAfter is missing an id');
} else{ new Insertion.After($(classNames[findKeyword+1]), '<'+valForm.errorTag+' id="'+field.id+'_error" class="'+valForm.errorClass+'">'+Vd17549fa+'</'+valForm.errorTag+'>');
label[0].addClassName('val-error'); } } else{ new Insertion.After(field, '<'+valForm.errorTag+' id="'+field.id+'_error" class="'+valForm.errorClass+'">'+Vd17549fa+'</'+valForm.errorTag+'>');
label[0].addClassName('val-error'); } } valForm.errors[field.id] = Vd17549fa; return true; }, 
 
 val_num : function(field) { if(field.value.match(/(^-?\d\d*\.\d*$)|(^-?\d\d*$)|(^-?\.\d\d*$)/) || field.value == '') {
 return false; } else { return 'needs to be a number.'; } }, val_req : function(field) { var fieldType = field.type.toLowerCase();
if(fieldType == 'checkbox' || fieldType == 'radio'){ var values = valForm.form.select('[name="'+field.name+'"]');
for(var i=0; i<values.length; i++){ if(values[i].checked){ return false; } } } else if(field.value.strip().length != 0) {
 return false; } return 'is required.'; }, val_min : function(field, minLen) { if(field.value.length < parseFloat(minLen) && field.value != ''){
 return 'must be at least '+minLen+' characters long.'; } else{ return false; } }, val_max : function(field, maxLen) {
 if(field.value.length > parseFloat(maxLen) && field.value != ''){ return 'must be at most '+maxLen+' characters long.';
} else{ return false; } }, val_maxNum : function(field, maxNum){ if( !isNaN(field.value) && field.value > parseFloat(maxNum)){ 
 return 'must be '+maxNum+' or less.'; } else{ return false; } }, val_minNum : function(field, minNum){
 if(!isNaN(field.value) && (field.value < parseFloat(minNum))){ return 'must be '+minNum+' or greater.';
} else{ return false; } }, val_len : function(field, len) { if(field.value.length != parseFloat(len) && field.value != ''){
 return 'must be '+len+' characters long.'; } else{ return false; } }, val_same : function(field, field2){
 var field2Obj = $(field2); if(!field2Obj){ alert('val_same: '+field2+' is not defined'); return true;
} if(field.value != field2Obj.value && field2Obj.value != ''){ var label = valForm.form.select('label[for=' + field2Obj.id + ']');
return 'does not match '+label[0].innerHTML.gsub(/:|<em>\*<\/em>|<EM>\*<\/EM>/, '')+'.'; } return false;
}, val_notSame : function(field, field2){ if(!$(field2)){ alert('val_notSame: '+field2+' is not defined');
return 'error'; } if(field.value.strip().length == 0){ return false; } var checkFields = $(field2).value.split(' ');
for(var i=0; i<checkFields.length; i++){ if(checkFields[i] == field.id){ continue; } if(!$(checkFields[i])){
 alert('val_notSame: '+checkFields[i]+' is not defined'); return 'error'; } if(field.value == $(checkFields[i]).value){
 return ' has already been entered.'; } } return false; }, val_email : function(field){ if(field.value.match(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/) || field.value == '') {
 return false; } else { return 'is not a valid email address.'; } }, val_alpha : function(field) {
 if(field.value.match(/^[a-zA-Z]+$/) || field.value == '') { return false; } else { return 'should contain only letters.';
} }, val_alpha_space : function(field) { if(field.value.match(/^[a-zA-Z\s]*$/) || field.value == '') {
 return false; } else { return 'should contain only letters and spaces.'; } }, val_alpha_num : function(field) {
 if(field.value.match(/^[a-zA-Z0-9]*$/) || field.value == '') { return false; } else { return 'should contain only letters and numbers.';
} }, val_alpha_num_space : function(field) { if(field.value.match(/^[a-zA-Z0-9\s]*$/) || field.value == '') {
 return false; } else { return 'value should contain only letters, numbers, and spaces.'; } }, val_alpha_num_sym : function(field) {
 if(field.value.match(/^[a-zA-Z0-9_\-.]*$/) || field.value == '') { return false; } else { return 'should contain only letters, numbers, and "-", "_", or ".".';
} }, val_int : function(field) { if(field.value.match(/(^-?\d\d*$)/) || field.value == '') { return false;
} else { return 'needs to be a whole number.'; } }, val_url : function(field) { if(field.value.match(/^(http|https|ftp):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)(:(\d+))?\/?/i) || field.value == '') {
 return false; } else { return 'needs to be a valid url.'; } }, val_checked : function(field, len){
 var checked = 0; var values = valForm.form.select('[name="'+field.name+'"]'); for(var i=0; i<values.length; i++){
 if(values[i].checked){ checked++; } } if(checked != len){ return 'requires '+len+' selection(s).';
} return false; }, 

val_selected_min : function(field, len){
		var selected = 0;
		var values = valForm.form.select('[name="'+field.name+'"]');
		for(var i=0; i<values.length; i++){
			if(values[i].value != ''){
				selected++;
			}
		}
		if(selected < len){
			if(len == '1'){
				return 'requires at least 1 selection.';
			}
			else{
				return 'requires at least '+len+' selections.';
			}
		}
		return false;
	},

val_checked_min : function(field, len){ var checked = 0; var values = valForm.form.select('[name="'+field.name+'"]');
for(var i=0; i<values.length; i++){ if(values[i].checked){ checked++; } } if(checked < len){ return 'requires at least '+len+' selection(s).';
} return false; }, val_checked_max : function(field, len){ var checked = 0; var values = valForm.form.select('[name="'+field.name+'"]');
for(var i=0; i<values.length; i++){ if(values[i].checked){ checked++; } } if(checked > len){ return 'requires at most '+len+' selection(s).';
} return false; }, val_ajax: function(field, func){ eval(func + "('"+field.id+"')"); return true;
}, val_func: function(field, func){ eval('var valForm_error = '+func + "('"+field.id+"')"); if(valForm_error){
 return valForm_error; } else{ return false; } }, 
 val_money : function(field){ if(isNaN(field.value)){
 formated = '0.00'; } else{ var formated = Math.round(field.value*100)/100; formated = formated.toString();
if(formated.indexOf('.') == -1){ formated += '.00'; } else{ var parts = formated.split('.'); if(parts[1].length == 1){
 formated += '0'; } } } field.value = formated; }, 
 val_date : function(field) { if(field.value.match(/^[0-9]{2}\/[0-9]{2}\/[0-9]{4}$/) || field.value == '') {
 return false; } else { return 'needs to be mm/dd/yyyy.'; } }, 
 val_phone : function(field) {
		if(field.value == ''){
			return false;	
		}
		var numbers = field.value.replace(/[^0-9]/g, ''); //remove all non numerics
		if(numbers.length < 10){
			return 'needs to be 10 digits.';	
		}
		field.value = numbers.substr(0, 3) + '-' + numbers.substr(3, 3) + '-' + numbers.substr(6, 4);
		// handle extensions
		if(numbers.length > 10){
			field.value += ' x ' + numbers.substr(10);
		}
		return false;
	},
 val_datetime : function(field) { if(field.value.match(/^[0-9]{2}\/[0-9]{2}\/[0-9]{4} [0-9]{2}:[0-9]{2} (am|pm)$/) || field.value == '') {
 return false; } else { return 'needs to be mm/dd/yyyy hh:mm am/pm.'; } } }; 
