
/*emg.js.php*/
/* 2:05 PM 8/6/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>*/

// 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();
}

// 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;
		}
		if(form[i].type == 'checkbox' || form[i].type == 'radio') {
			form[i].checked = false;	
		}
		else {
			form[i].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 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');	
	}
	ie6Check();
}

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


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);
	}
}
/*val-form.js.php*/
/*
07/16/09
Copyright © 2009 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 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_checked_max'),
 
 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_checked_max'), 
 failed: true, form: null, formObsFunc: null, submitBtn: null, ajaxRunning: new Object(), alertErrorsFlag: 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]); } else{ var V1934ee48 = $$('form[class*="val-form"]'); if(V1934ee48.length > 0){
 valForm.form = V1934ee48[0]; } 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.submitBtn.disabled = false; 
 } 
 valForm.inputs = document.getElementById(valForm.form.id).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.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.submitBtn.disabled = false; } } else{ if(valForm.alertErrorsFlag){ var Vcefb778c = '';
for(var fieldID in valForm.errors){ Vcefb778c += valForm.errors[fieldID] + "\n"; } alert(Vcefb778c);
} valForm.submitBtn.disabled = false; } }, 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+' 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+' selections.';
} 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+' selections.';
} 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) || field.value == ''){
 formated = ''; } 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; } };
 //Event.observe(window, 'load', valForm.init);
/*functions.js.php*/
/*<script>*/
function toggleTags(el) {
	toggle(el);
	var elAnchor = $(el + '-anchor');
	if (elAnchor.innerHTML == 'View Options') {
		elAnchor.innerHTML = 'Hide Options';
	}
	else {
		elAnchor.innerHTML = 'View Options';
	}
	elAnchor.toggleClassName('active');
}

// verify the zip code
function zipExist(zipFieldid){
	var zip = $(zipFieldid);
	var url = window.CR + "/action/chk-exist?area=zip&value=" + zip.value + "&k=" + Math.round(100000*Math.random());
	valForm.ajaxRunning[zipFieldid] = true;
	new Ajax.Request(url, { method: 'get',  onSuccess: function(zipExist2) {
			if(zipExist2.responseText == '0'){
				var error = ' not found.'; //error
			}
			else{
				 var error = false; // no errror
			}
			valForm.errorHandler(zip, error);
			valForm.ajaxRunning[zipFieldid] = false;
		}
	}); 
}
// verify the captcha
function verifyCaptcha(captchaFieldid){
	var url = window.CR + "/action/verify-captcha?area=" + captchaFieldid + "&captcha=" + $(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 captchaRefresh(area) {
	$(area + '-img').src = '/show-captcha.php?area=' + area + '&'+Math.random();
}
function campClickCounter(campid, type){
	var url = window.CR+'/action/camp-click-count?campid='+campid+'&type='+type;
	new Ajax.Request(url, { method: 'get',  onSuccess: function(response) {
			// no need to worry about a response
		}
	});
}
function flagCamp(flag, campid){
	var currentURL = window.location;
	var url = window.CR + "/action/camp-flag?flag=" + flag + "&campid=" + campid + "&k=" + Math.round(100000*Math.random());
	new Ajax.Request(url, { method: 'get',  onSuccess: function(flagCamp2) {
			location.reload(true);
		}
	}); 
}
function checkFees(campTypeFieldid){
	if($(campTypeFieldid).checked){
		$(campTypeFieldid + '-fees-cont').style.display = "block";
	}
	else{
		$(campTypeFieldid + '-fees-cont').style.display = "none";
	}
}
/*curtain-v2.js.php*/
/*07/16/09*/
/*
Copyright © 2009 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 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)';
} }, 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, 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');
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){ 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; } new Ajax.Request(url, { method: 'get', onSuccess: function(ajaxReturn) {
 if(ajaxReturn.responseText == 'died'){ window.location = window.CR+'/action/died'; return;
} if(!sameLayer){ curtain.content(ajaxReturn.responseText); } else{ curtain.content(ajaxReturn.responseText, 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); } } }}); }, refresh: function(prev){ if(prev){
 var V7f54f96b = curtain.index - 2; } else{ var V7f54f96b = curtain.index; } curtain.ajax(curtain.urls[V7f54f96b], true); 
 } }; 
 //Event.observe(window, 'load', curtain.init); 
/*login-timer.js.php*/
/*7/20/09 16:29*/
/*
Copyright Â© 2009 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 loginTimer = {
	init: function(){
		loginTimer.extendTimeout(0);
	},
	setExtendTimeout: function setExtendTimeout(){
		var url = ($('keep-logged-in').checked) ? window.CR + "/action/set-extend-timeout?extend=1&k=" + Math.round(100000*Math.random()) : window.CR + "/action/set-extend-timeout?extend=0&k=" + Math.round(100000*Math.random());
		
		new Ajax.Request(url, { method: 'get',  onSuccess: function(setExtendTimeout2) {
				location.reload(true);
			}
		}); 
	},
	extendTimeout: function (showAlert){
		var loginInterval, promptInterval, timeRemaining, numIdleSeconds, numIdleMinutes, loginInterval;
		loginInterval 		= 0;
		promptInterval 		= timeRemaining = numIdleSeconds = numIdleMinutes = loginInterval;
					return false;
					if(showAlert) {
			var time 		= new Date();
			var curHour 	= (time.getHours() > 12) ? time.getHours() - 12 : time.getHours();
			var curTime 	= curHour + " : " + time.getMinutes() + " : " + time.getSeconds();
			var seconds 	= time.getSeconds();
			seconds 		+= timeRemaining;
			time.setSeconds(seconds);
			var logoutHour 	= (time.getHours() > 12) ? time.getHours() - 12 : time.getHours();
			//var idleStr 	= (numIdleMinutes < 1) ? numIdleSeconds + ' seconds' : numIdleMinutes + ' minutes';
			var idleStr 	= numIdleMinutes + ' minutes';
			//== SHOW CURTAIN
			timeRemaining 	= timeRemaining - 5; // 5 second padding
			//alert(timeRemaining);
			
			var html 		= '<p>You have been idle for ' + idleStr + '.</p><p>You will be logged out in: <span id="time-remaining"></span></p><p><a href="javascript:location.reload(true);">Keep Me Logged In</a></p>';
							curtain.load();
				curtain.content(html);
				window.focus();
				var minRemaining = (timeRemaining > 60) ? timeRemaining / 60 : 0;
				minRemaining	 = parseInt(minRemaining);
				var secRemaining = (timeRemaining > 60) ? timeRemaining % 60 : timeRemaining;
				loginTimer.countdown(secRemaining, minRemaining);
						} // end if
		
	},
	
	countdown:	function(seconds, minutes){
		if(seconds == 0 && minutes == 0){
			window.location = window.CR + '/action/logout?k=' + Math.round(100000*Math.random());
		}
		else{
			if (seconds <= 0){
				seconds =  59;
				minutes -= 1;
			}
			if (minutes <= -1){
				seconds =  0;
				minutes += 1;
			}
			else{
				seconds -= 1;
			}
			$('time-remaining').innerHTML = minutes + ":" + seconds;
			setTimeout("loginTimer.countdown(" + seconds + ", " + minutes + ")", 1000);
		}
	}
	
};

//Event.observe(window, 'load', loginTimer.init);
/*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"
		}
	]

};
/*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;
}

/*============================================================================*/
/*functions-ecom.js.php*/
/*<script>*/
function deleteOrderFile(order_file_uploadid, orderid){
	var url = window.CR+"/action/account/order-file-delete/?orderid="+orderid+"&order_file_uploadid="+order_file_uploadid+"&k="+ Math.round(100000*Math.random());
	new Ajax.Request(url, { method: 'get',  onSuccess: function(deleteOrderFile2) {
			if(deleteOrderFile2.responseText == 1){
				alert2('File deleted successfully.');
				orderDetails(orderid, true);
			}
			else{
				alert2('File delete failed, please contact site administrator.');
			}
		}
	}); 
}
	
function shipChangeStateType(){
	if($('shipping_country').value == 'US'){//USA
		$('shipping_provinceField').style.display = 'none';
		$('shipping_stateField').style.display = 'block';
		$('shipping_state').addClassName('val_req');
		$('shipping_province').removeClassName('val_req');
		$('shipping_province').value = '';
		$('shipping_zip').addClassName('val_req');
	}
	else{	
		$('shipping_province').addClassName('val_req');
		$('shipping_provinceField').style.display = 'block';
		$('shipping_stateField').style.display = 'none';
		$('shipping_state').removeClassName('val_req');
		$('shipping_state').value = '';
		$('shipping_zip').removeClassName('val_req');
	}
}
function billChangeStateType(){

	if($('billing_country').value == 'US'){//USA
		$('billing_provinceField').style.display = 'none';
		$('billing_stateField').style.display = 'block';
		$('billing_state').addClassName('val_req');
		$('billing_province').value = '';
		$('billing_province').removeClassName('val_req');
		$('billing_zip').addClassName('val_req');
	}
	else{
		$('billing_provinceField').style.display = 'block';
		$('billing_province').addClassName('val_req');
		$('billing_stateField').style.display = 'none';
		$('billing_state').removeClassName('val_req');
		$('billing_state').value = '';
		$('billing_zip').removeClassName('val_req');
	}
}

function fillBillInfo() {
	var fields = new Array('fname', 'lname', 'phone', 'address1', 'address2', 'city', 'state', 'province', 'country', 'zip');
	var same = $('same_info');
	
	if (!same.checked) {
		for (var i = 0; i < fields.length; i++) {
			$('billing_' + fields[i]).value = '';
		}
	}
	else {
		for (var i = 0; i < fields.length; i++) {
			$('billing_' + fields[i]).value = $('shipping_' + fields[i]).value;
		}
		//reset state/provice field
		billChangeStateType();
	}
	
}

function editCC() {
	$('old_cc_number').style.display = 'none';
	$('cc_number').style.display = 'block';
	$('billing_ccnumber').addClassName('val_req');
	$('billing_cctype').addClassName('val_req');
	$('billing_cccode').addClassName('val_req');
	$('billing_ccexp0').addClassName('val_req');
	$('billing_ccexp1').addClassName('val_req');
}

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

function setBillingInfoReq(req){
	var reqFields = new Array('billing_fname', 'billing_lname', 'billing_address1', 'billing_city', 'billing_state', 'billing_province', 'billing_country', 'billing_zip');
	if(!$('old_cc_number')){
		var reqCC = true;
	}
	else if($('old_cc_number').visible() == false){
		var reqCC = true;
	}
	if(reqCC){
		reqFields[reqFields.length] = 'billing_cctype';
		reqFields[reqFields.length] = 'billing_ccnumber';
		reqFields[reqFields.length] = 'billing_cccode';
		reqFields[reqFields.length] = 'billing_ccexp0';
		reqFields[reqFields.length] = 'billing_ccexp1';
		
	}
	
	for(var  i=0; i<reqFields.length; i++){
		if(req){
			$(reqFields[i]).addClassName('val_req');
			billChangeStateType(); //determine the province req
		}
		else{
			$(reqFields[i]).removeClassName('val_req');
		}
	}
}

function alternativePayment(){
	var types = new Array('use_google', 'use_paypal', 'use_cashu', 'use_amazon');
	var useAltPayment = false;
	for(var  i=0; i<types.length; i++){
		if($(types[i])){
			if($(types[i]).checked){
				useAltPayment = true;
			}
		}
	}
	if(useAltPayment){
		setBillingInfoReq(false);
	}
	else{
		setBillingInfoReq(true);
	}
}

function preCartAdd(itemid){

	//no item options, no need to worry about rest
	if(!$('item-option-container')){
		if(itemid){ //adding to cart
			cart.add(itemid);
		}
		return;
	}

	var reqOptionNames = $('required-option-names').value.split(' ') ;
	var itemOptionsTmp = $('item-option-container').select('select', 'input[type="checkbox"]', 'input[type="radio"]'); //new Array(); //holde selected options
	
	//remove duplicates
	var itemOptions = new Array();
	var currentOptionName = '';
	for(var i=0; i<itemOptionsTmp.length; i++){
		if(currentOptionName != itemOptionsTmp[i].name){
			itemOptions[itemOptions.length] = itemOptionsTmp[i];
			currentOptionName = itemOptionsTmp[i].name;
		}
	}
	
	var missReqField = false;
	var selected = new Array();
	var priceChange = 0; //calculate if options has extra cost
	for(var i=0; i<itemOptions.length; i++){
		var parts = itemOptions[i].name.split('-');
		optid = parts[2];
		//check if require
		var require = false;
		for(var j=0; j<reqOptionNames.length; j++){
			if(itemOptions[i].name == reqOptionNames[j]){
				require = true;
			}
		}
		if(itemOptions[i].type == 'checkbox' || itemOptions[i].type == 'radio' ){
			var values = $('item-option-container').select('input[name="'+itemOptions[i].name+'"]');
			var checked = new Array();
			for(var j = 0; j<values.length; j++){
				if(values[j].checked){
					checked[checked.length] = values[j].value;
					priceChange += parseFloat($('option-value-price-'+values[j].value).value);
				}
			}
			if(checked.length == 0 && require){ // no items were checked
				missReqField = itemOptions[i].title;
			}
			if(checked.length != 0) {
				selected[selected.length] = optid+'-'+checked.join('-');
			}
		}
		else{
			if(itemOptions[i].value == '' && require){
				missReqField = itemOptions[i].title;
			}
			if(itemOptions[i].value != ''){
				selected[selected.length] = optid+'-'+itemOptions[i].value;
				priceChange += parseFloat($('option-value-price-'+itemOptions[i].value).value);
			}
		}
	}
	if(itemid){
		if(missReqField){
			alert2(missReqField);
			return;
		}
		cart.add(itemid, selected.join('_'));
	}
	else{
		var newPrice = priceChange + parseFloat($('default-price').value);
		var formated = Math.round(newPrice*100)/100;
		formated = formated.toString();
		if(formated.indexOf('.') == -1){
			formated += '.00';
		}
		else{
			var parts = formated.split('.');
			if(parts[1].length == 1){
				formated += '0';	
			}
		}
		
		$('item-current-price').innerHTML = formated;
	}
}


function processPayment(){
	setTimeout('window.location = \''+window.CR+'/action/process-payment\'', 5000);
	/*
	var url = window.CR+"/action/process-payment/?k="+ Math.round(100000*Math.random());	
	new Ajax.Request(url, { method: 'get',  onSuccess: function(processPayment2) {
			if(processPayment2.responseText == 'died'){
				window.location = window.CR+'/action/died'; return;
			}
			if(processPayment2.responseText == 'good'){
				window.location = window.CR+'/account/orders/';
			}
			else{
				alert(processPayment2.responseText);
				window.location = window.CR+'/account/shipping-billing-info/?r=checkout';
			}
		}
	});*/ 
}

function verifyShipSel(){
	var choices = document.getElementsByName('shipping-method');
	for(var i=0; i<choices.length; i++){
		if(choices[i].checked){
			return true;
		}
	}
	alert2('Please choose a shipping method.');
	return false;
}

// when login exist is bad
function emailExist(emailFieldid){
	var email = $(emailFieldid);
	var url = window.CR+"/action/chk-exist?area=customer&value="+email.value+"&k="+ Math.round(100000*Math.random());
	valForm.ajaxRunning[emailFieldid] = true;
	new Ajax.Request(url, { method: 'get',  onSuccess: function(emailExist2) {
			if(emailExist2.responseText == '1'){
				var error = 'already in use, please enter another.'; //error
			}
			else{
				 var error = false; // no errror
			}
			valForm.errorHandler(email, error);
			valForm.ajaxRunning[emailFieldid] = false;
		}
	}); 
}
// when login exist is good
function loginExist(loginFieldid){
	var login = $(loginFieldid);
	var url = window.CR + "/action/chk-exist?area=login&value=" + login.value + "&k=" + Math.round(100000*Math.random());
	valForm.ajaxRunning[loginFieldid] = true;
	new Ajax.Request(url, { method: 'get',  onSuccess: function(loginExist2) {
			if(loginExist2.responseText == '0'){
				var error = ' not found.'; //error
			}
			else{
				 var error = false; // no errror
			}
			valForm.errorHandler(login, error);
			valForm.ajaxRunning[loginFieldid] = false;
		}
	}); 
}
	
function starSelect(containerid, inputidPrefix, value){
	var startContainer = $(containerid);
	var starSelectidPrefix = 'selected-';
	//remove existing class that dictates the amount of stars
	var classNames = startContainer.className.split(' ');
	for(var i = 0; i<classNames.length; i++){
		if(classNames[i].include(starSelectidPrefix)){
			startContainer.removeClassName(classNames[i]);
		}
	}
	
	startContainer.addClassName(starSelectidPrefix+value);
	$(inputidPrefix+value).checked = true;
}

function swapMainItemImg(psml, pmed, pbig, position){
	var mainImg = $('image-main-img');
	var mainLink = $('image-main-link');
	var smlImg = $('item-img-'+position);
	var smlLink = $('item-img-link-'+position);
	var mainImgName = mainImg.src.replace(document.location.protocol+'//'+document.domain+pmed, '');
	var smlImgName = smlImg.src.replace(document.location.protocol+'//'+document.domain+psml, '');
	mainImg.src = pmed+smlImgName;
	mainLink.href = pbig+smlImgName;
	smlImg.src = psml+mainImgName;
	smlLink.href = pbig+mainImgName;
}