

/* emg.js.php */
/* 
2:04 PM 10/14/2010
3:52 PM 10/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>*/

function emgInit(){
			BrowserDetect.init();				initValForm();			ie6Check();
	
	//emg link
	if($('emg-link')){
		$('emg-link').style.display = 'none';
	}
	
	if(window.siteInit){
		siteInit();
	}
	
	markupInit();
}

//function to run initial function that changes markup
function markupInit(){
	var bodyElement = $$('body')[0]; // cant use document.body because error in IE7, no .select
	confirmInit(bodyElement);
	externalLinks(bodyElement);
	autoCompleteOff(bodyElement);
	defaultClear(bodyElement);
}

//Event.observe(window, 'load', emgInit);
document.observe('dom:loaded', 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, skipids) {
	if(!skipids){
		skipids = new Array();
	}
	var form = document.getElementById(id);
	for (var i = 0; i < form.length; i++) {
		if(skipids.indexOf(form[i].id) != -1 || form[i].type == 'submit' || form[i].type == 'button' ){
			continue;
		}
		if(form[i].type == 'checkbox' || form[i].type == 'radio') {
			form[i].checked = false;	
		}
		if(form[i].options){ // drop downs
			form[i].selectedIndex = 0;
		}
		else {
			form[i].value = '';
		}
		
	}
}

// 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);
	modal.load();
	modal.content('<p><strong>'+title+'</strong></p><ul class="tools confirm"><li class="yes"><span><a href="#" id="confirm2-yes">Yes</a></span></li><li class="no"><span><a href="#" id="confirm2-no">No</a></span></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);
		modal.close();
		return false;
	}
	$('confirm2-no').onclick= function(){ 
		//document.body.removeChild($('confirm2'));
		eval(noEval); 
		modal.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 confirmInit(container){
	var anchors = container.select('a[rel~="confirm"]');
	for(var i = 0; i < anchors.length; i++){
		anchors[i].href  = 'javascript:confirm2(null, \'' + anchors[i].title + '\', \'window.location=\\\'' + anchors[i].href + '\\\'\', \'\')';
	}
}

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

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

function defaultClear(container){
	var inputs = container.select('input[class~="default-clear"]');
	
	var defaultClassName = 'default';
	
	for (var i=0; i<inputs.length; i++) {
		inputs[i].onfocus = function(){
			if(this.value == this.defaultValue){
				this.value = '';
				this.removeClassName(defaultClassName);
			}
		}
		inputs[i].onblur = function(){
			if(this.value == ''){
				this.value = this.defaultValue;
				this.addClassName(defaultClassName);
			}
		}
	}
}

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

function ajaxFill(url, containerid, callback){
	alert('depercated, please use EmgAjax.call()');
	return;
	var container = $(containerid);
	if(!container){
		alert('ajaxFill(): '+containerid+' id dosnt exist');
		return;
	}
	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;
		curtain.initLinks(container); //curtain reference
		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=" + $(captchaFieldid).value + "&k=" + Math.round(100000*Math.random());
	var valFormIndex = getValFormIndex(captchaFieldid);
	valForms[valFormIndex].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
			}
			valForms[valFormIndex].errorHandler($(captchaFieldid), error);
			valForms[valFormIndex].ajaxRunning[captchaFieldid] = false;
		}
	});
}

function refreshCaptcha(formid) {
	var textInput = $(formid + '-captcha');
	textInput.value = '';
	$(formid + '-captcha-img').src = '/ajax/show-captcha?area=' + formid + '-captcha&amp;k=' + Math.random();
	textInput.focus();
}

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, parameters, variables){
	alert('decremented, use swfobject.embedSWF(window.CR + \'/swf/player.swf\', containerid, w, h, \'9.0.0\', \'expressInstall.swf\', variables, parameters);'); return;
	var s1 = new SWFObject(src, 'mediaplayer', w, h,'7');
	if(parameters){
		parameters = parameters.split('&');
		for(var i = 0; i < parameters.length; i++){
			var parts = parameters[i].split('=');
			s1.addParam(parts[0], parts[1]);
		}
	}
	if(variables){
		s1.addParam('flashvars', variables);
	} 
	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>';
	}
}

//controlbar: over, under
function showPlayer(flv, w, h, containerid, preview, skin, controlbar){
	var parameters = {};
	parameters.allowfullscreen = true;
	parameters.allowscriptaccess = 'always';
	parameters.wmode = 'opaque';
	
	var variables = {file: flv};
	if(preview){
		variables.image = preview;
	}
	if(skin){
		variables.skin = skin;
	}
	if(controlbar){
		variables.controlbar = controlbar;
	}
	swfobject.embedSWF(window.CR + '/swf/player.swf', containerid, w, h, '9.0.0', 'expressInstall.swf', variables, parameters);
}

// skin: (default) | bekle
// controlbar: bottom (default) | top | over | none
// autostart: false (default) | true
// stretching: uniform (default) | fill | exactfit | none
// volume: (integer)
// mute: false (default) | true
function showVideo(flv, w, h, containerid, image, skin, controlbar, autostart, stretching, volume, mute) {
	var parameters = {};
	// Standard parameters
	parameters.allowfullscreen = true;
	parameters.allowscriptaccess = 'always';
	parameters.wmode = 'opaque';
	
	// Flash variables
	var variables = {file: flv};
	if (image !== undefined){
		variables.image = window.CR + '/images/video-previews/' + image;
	}
	if (skin !== undefined){
		variables.skin = window.CR + '/swf/skins/' + skin + '/overlay.swf';
	}
	variables.controlbar = controlbar === undefined ? 'bottom' : controlbar;
	variables.autostart = autostart === undefined ? 'false' : autostart;
	variables.stretching = stretching === undefined ? 'uniform' : stretching;
	variables.volume = volume === undefined ? 100 : volume;
	variables.mute = mute === undefined ? 'false' : mute;
	
	swfobject.embedSWF(window.CR + '/swf/player.swf', containerid, w, h, '9.0.0', 'expressInstall.swf', variables, parameters);
}


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; modal.close();">Finish</button></div>';
	modal.load();
	modal.content(html);
}

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


function checkedToStr(inputName){
	var checkboxes = document.getElementsByName(inputName);
	var values = new Array();
	for(var i=0; i<checkboxes.length; i++){
		if(checkboxes[i].checked){
			values[values.length] = checkboxes[i].value;
		}
	}
	return values.join('-');
}

function moneyFormat(value, nosymbol) {
	if (isNaN(value)) {
		var formatted = '0.00';
	}
	else {
		var formatted = Math.round(value*100)/100;
		formatted = formatted.toString();
		if (formatted.indexOf('.') == -1) {
			formatted += '.00';
		}
		else {
			var parts = formatted.split('.');
			if (parts[1].length == 1) {
				formatted += '0';
			}
		}
	}
	if(!nosymbol){
		formatted = '$' + formatted;
	}
	return formatted;
}

function emailInUse(emailFieldid){
	emailAjaxCheck(emailFieldid, 'in use');
}

function emailNotExist(emailFieldid){
	emailAjaxCheck(emailFieldid, 'not exist');
}

function emailAjaxCheck(emailFieldid, useToggle){
	var url = window.CR + "/action/check-exist?check-field=login&check-value=" + $(emailFieldid).value + "&k=" + Math.round(100000*Math.random());
	var valFormIndex = getValFormIndex(emailFieldid);
	valForms[valFormIndex].ajaxRunning[emailFieldid] = true;
		new Ajax.Request(url, { method: 'get',  onSuccess: function(emailExist2) {
			
			if(useToggle == 'not exist'){  // for reset password form
				var error = emailExist2.responseText == '0' ? ' does not exist.' : false;
			}
			else{
				var error = emailExist2.responseText == '1' ? ' already in use.' : false;
			}
			
			valForms[valFormIndex].errorHandler($(emailFieldid), error);
			valForms[valFormIndex].ajaxRunning[emailFieldid] = false;
		}
	}); 
}

// Scrolls to hash instead of instant jump
// Also doesn't append hash to current url
// Requires Scriptaculous
function enableHashScroll(duration) {
	// Set default duration to 1 second
	duration = isNaN(duration) ? 1 : duration;
	// Anchor events
	$$('a[href^="#"]').each(function(el) {
		var hash = el.href.split(/#/)[1];
		if (hash) {
			el.onclick = Function("Effect.ScrollTo('" + hash + "', {duration: '" + duration + "'}); return false;");
		}
	});
}

// Get document height, or viewport if body height is less
function getDocHeight() {
	return Math.max(
		Math.max(document.body.scrollHeight, document.documentElement.scrollHeight),
		Math.max(document.body.offsetHeight, document.documentElement.offsetHeight),
		Math.max(document.body.clientHeight, document.documentElement.clientHeight)
	);
}

/* 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"
		}
	]

};

/* functions.js.php */
/*<script>*/
function siteInit() {
	slideshow.init("slideshow", true, 5, 'fade', 1);
}

function relative_time(time_value) {
  var values = time_value.split(" ");
  time_value = values[1] + " " + values[2] + ", " + values[5] + " " + values[3];
  var parsed_date = Date.parse(time_value);
  var relative_to = (arguments.length > 1) ? arguments[1] : new Date();
  var delta = parseInt((relative_to.getTime() - parsed_date) / 1000);
  delta = delta + (relative_to.getTimezoneOffset() * 60);

  if (delta < 60) {
    return 'less than a minute ago';
  } else if(delta < 120) {
    return 'about a minute ago';
  } else if(delta < (60*60)) {
    return (parseInt(delta / 60)).toString() + ' minutes ago';
  } else if(delta < (120*60)) {
    return 'about an hour ago';
  } else if(delta < (24*60*60)) {
    return 'about ' + (parseInt(delta / 3600)).toString() + ' hours ago';
  } else if(delta < (48*60*60)) {
    return '1 day ago';
  } else {
    return (parseInt(delta / 86400)).toString() + ' days ago';
  }
}

function twitterCallback(twitters) {
  var statusHTML = [];
  for (var i=0; i<twitters.length; i++){
    var username = twitters[i].user.screen_name;
    var status = twitters[i].text.replace(/((https?|s?ftp|ssh)\:\/\/[^"\s\<\>]*[^.,;'">\:\s\<\>\)\]\!])/g, function(url) {
      return '<a href="'+url+'">'+url+'</a>';
    }).replace(/\B@([_a-z0-9]+)/ig, function(reply) {
      return  reply.charAt(0)+'<a href="http://twitter.com/'+reply.substring(1)+'">'+reply.substring(1)+'</a>';
    });
    statusHTML.push('<li>'+status+' <a class="time" href="http://twitter.com/'+username+'/statuses/'+twitters[i].id+'" rel="external">'+relative_time(twitters[i].created_at)+'</a></li>');
  }
  document.getElementById('twitter_update_list').innerHTML = statusHTML.join('');
}


/* scroller.js.php */
/*<script>*/
/*
Class: Scroller
    Adds a scrollbar to a specific div. The scrollbar is implemented using a Script.aculo.us slider.
    The class reparents the original div, creates a slider and ties the reparented div to the slider,
    setting any properties necessary on the divs to make it all work. The scrollbar can be styled using
    CSS. The track of the scrollbar has class 'scroll-track', 'scroll-track-top' and 'scroll-track-bot',
    the thumb has class 'scroll-handle', 'scroll-handle-top' and 'scroll-handle-bot'.
    
properties:
    myIndex - an integer used to generate a unique ID for use in, for example, div ids.
    outerBox - the div that holds the scrollpane + scrollbar
    innerBox - the div that holds the scrollpane
    innerHeight - the height of the inner box.
    viewportHeight - the height of the view onto the scrolled div.
    track - a div that holds the script.aculo.us slider (the scrollbar)
    trackHeight - the height of the slider
    handle - the div for the 'thumb' of the scrollbar
    handleHeight - the height of the thumb
    slider - the script.aculo.us slider itself
    ieDecreaseBy - a fudge factor used when calculating the width of innerBox
    
*/
var Scroller = Class.create();

/*
property: Scroller.ids
    A cache of Scrollers indexed by the ID of the original div.
 */
Scroller.ids = new Object();

/*
property: Scroller.i
    A unique ID generator.
 */
Scroller.i = 0;

Scroller.prototype = {
    /*
    constructor: initialize 
        Wrap the passed div in a scrollpane.
    
    parameters: 
        el - the div to add a scrollbar to.
     */
  initialize: function(el) {
    this.outerBox = el;
    this.decorate();
  },
  
  /*
  function: decorate  
    create the necessary elements to implement the scrollbar and wire up events.
   */
  decorate: function() {
    $(this.outerBox).makePositioned(); // Fix IE
    
    // Seed a unique ID
    Scroller.i = Scroller.i + 1;
    this.myIndex = Scroller.i;
    
    //wrap the existing content in an intermediate inner box
    this.innerBox = document.createElement("DIV");
    this.innerBox.className="scroll-innerBox";
    $(this.innerBox).makePositioned();  // Fix IE
    this.innerBox.style.cssFloat=this.innerBox.style.styleFloat='left'; // Need the scrollbar to appear next to the scrollpane
    this.innerBox.id="scroll-innerBox-"+Scroller.i;
    this.innerBox.style.top = "0px";
    
    //Transfer the contents of Outer Box to Inner Box
    while (this.outerBox.hasChildNodes()) {
        this.innerBox.appendChild(this.outerBox.firstChild);
    }
    this.innerBox.style.overflow="hidden";
    //turn off scrolling on the outer div
    this.outerBox.style.overflow="hidden";

    // create a track
    this.track=document.createElement('div');
    this.track.className="scroll-track";
    $(this.track).makePositioned();
    this.track.style.cssFloat=this.track.style.styleFloat='left';
    this.track.id="scroll-track-"+Scroller.i;
    // Fix IE line-height bug. Sigh.
    this.track.appendChild(document.createComment(''));

    // Create the top button
    this.tracktop=document.createElement('div');
    this.tracktop.className="scroll-track-top";
    $(this.tracktop).makePositioned();
    this.tracktop.style.cssFloat=this.tracktop.style.styleFloat='left';
    this.tracktop.id="scroll-track-top-"+Scroller.i;
    // Fix IE line-height bug. Sigh.
    this.tracktop.appendChild(document.createComment(''));
    
    // Create the bottom button
    this.trackbot=document.createElement('div');
    this.trackbot.className="scroll-track-bot";
    $(this.trackbot).makePositioned();
    this.trackbot.style.cssFloat=this.trackbot.style.styleFloat='left';
    this.trackbot.id="scroll-track-bot-"+Scroller.i;
    // Fix IE line-height bug. Sigh.
    this.trackbot.appendChild(document.createComment(''));

    // Create the handle
    this.handle=document.createElement('div');
    this.handle.className="scroll-handle-container";
    this.handle.id="scroll-handle-container"+Scroller.i;

    // Create the handle middle
    this.handle_middle=document.createElement('div');
    this.handle_middle.className="scroll-handle";
    $(this.handle_middle).makePositioned();
    this.handle_middle.id="scroll-handle-"+Scroller.i;
    // Fix IE line-height bug. Sigh.
    this.handle_middle.appendChild(document.createComment(''));

    // Create the handle top cap
    this.handletop=document.createElement('div');
    this.handletop.className="scroll-handle-top";
    $(this.handletop).makePositioned();
    this.handletop.id="scroll-handle-top-"+Scroller.i;
    // Fix IE line-height bug. Sigh.
    this.handletop.appendChild(document.createComment(''));

    // Create the handle bottom cap
    this.handlebot=document.createElement('div');
    this.handlebot.className="scroll-handle-bot";
    $(this.handlebot).makePositioned();
    this.handlebot.id="scroll-handle-bot-"+Scroller.i;
    // Fix IE line-height bug. Sigh.
    this.handlebot.appendChild(document.createComment(''));

    this.track.hide();
    this.tracktop.hide();
    this.trackbot.hide();

    this.outerBox.appendChild(this.innerBox);
    this.outerBox.appendChild(this.tracktop);
    this.handle.appendChild(this.handletop);
    this.handle.appendChild(this.handle_middle);
    this.handle.appendChild(this.handlebot);
    this.track.appendChild(this.handle);
    this.outerBox.appendChild(this.track);
    this.outerBox.appendChild(this.trackbot);

    this.slider = new Control.Slider($(this.handle).id, $(this.track).id, {axis:'vertical',
                                     minimum: 0,
                                     maximum: $(this.outerBox).clientHeight});
    this.slider.options.onSlide = this.slider.options.onChange = this.onChange.bind(this);
    setTimeout(this.resetScrollbar.bind(this, false), 10);

    this.domMouseCB = this.MouseWheelEvent.bindAsEventListener(this, this.slider);
    this.mouseWheelCB = this.MouseWheelEvent.bindAsEventListener(this, this.slider);
    this.trackTopCB = this.tracktopEvent.bindAsEventListener(this, this.slider);
    this.trackBotCB = this.trackbotEvent.bindAsEventListener(this, this.slider);
    
    //Events control
    $(this.outerBox).observe('DOMMouseScroll', this.domMouseCB); // Mozilla
    $(this.outerBox).observe('mousewheel', this.mouseWheelCB);// IE/Opera
    $(this.tracktop).observe('mousedown', this.trackTopCB);
    $(this.trackbot).observe('mousedown', this.trackBotCB);
  },
  
  release: function() {
    $(this.outerBox).stopObserving('DOMMouseScroll', this.domMouseCB);
    $(this.outerBox).stopObserving('mousewheel', this.mouseWheelCB);// IE/Opera
    $(this.tracktop).stopObserving('mousedown', this.trackTopCB);
    $(this.trackbot).stopObserving('mousedown', this.trackBotCB);
  },
  
  /*
  function: resetScrollbar  
    Re-calculate the geometry of the scrollbar. Typically called from an event handler.
    
    args:   
        repeat - if true, set timer to re-calculate to fix IE bug on resize window.
   */
  resetScrollbar: function(repeat) {
	  	this.borderWidth = 1;
	  
        this.track.hide();
        this.tracktop.hide();
        this.trackbot.hide();
        this.enableScroll = false;
        this.innerHeight = $(this.outerBox).clientHeight;
        this.innerBox.style.height = this.innerHeight + "px";
        var newWidth = $(this.outerBox).clientWidth;

        var tth = Element.getStyle(this.tracktop,"height");
        if (tth)
           tth = tth.replace("px","");
        else
           tth = 0;
    
        var hth = Element.getStyle(this.handletop,"height");
        if (hth)
           hth = hth.replace("px","");
        else
           hth = 0;
    
        if (this.innerHeight < this.innerBox.scrollHeight) {
            this.viewportHeight = this.innerHeight - tth*2 - (this.borderWidth * 2);
            this.slider.trackLength = this.viewportHeight;
            this.track.style.height = this.viewportHeight + "px";    
            this.handleHeight = Math.round(this.viewportHeight * this.innerHeight / this.innerBox.scrollHeight);    
            if(this.handleHeight < (hth*2))
                this.handleHeight = (hth*2);
            if (this.handleHeight < 10)
                 this.handleHeight = 10;
            this.handle.style.height = this.handleHeight + "px";
            this.handle_middle.style.height = this.handleHeight - hth*2 + "px";
            this.handletop.style.height = hth + "px";
            this.slider.handleLength = this.handleHeight;
            this.track.style.display = 'inline';
            this.tracktop.style.display = 'inline';
            this.trackbot.style.display = 'inline';
            this.ieDecreaseBy = 1;   // Firefox seems to have an off-by one error, so allow for it.
            if (this.outerBox.currentStyle) {
                var borderWidth = this.outerBox.currentStyle["borderWidth"].replace("px","");
                if(!isNaN(borderWidth)) {
                    this.ieDecreaseBy = (borderWidth) * 2;
                }
            }
            newWidth = ($(this.outerBox).clientWidth - $(this.track).clientWidth - this.ieDecreaseBy);
            this.enableScroll = true;
        }
        //Set the width of of the scrollpane (aka innerBox).
        this.innerBox.style.width = newWidth + "px";
        //Fix IE resize event Bug 
        if(repeat) {
            setTimeout(this.resetScrollbar.bind(this, false), 10);
        }
  },
  
    //Mouse wheel code from http://adomas.org/javascript-mouse-wheel/
    MouseWheelEvent: function(event, slider) {
        var delta = 0;
        if (!event) //For IE.
            event = window.event;
        if (event.wheelDelta) { //IE/Opera.
            delta = event.wheelDelta / 120;
            /*if (window.opera) //In Opera 9, delta differs in sign as compared to IE
                delta = -delta;   But it isn't necessary with Opera v9.51*/
        } else if (event.detail) { //Mozilla case
            delta = -event.detail / 3;
        }
        if (delta)
            slider.setValueBy(-delta / 10);
        Event.stop(event);
    },

    trackbotEvent: function(event, slider) {
        if (Event.isLeftClick(event)) { 
            slider.setValueBy(0.2);
            Event.stop(event);
        }
    },

    tracktopEvent: function(event, slider) {
        if (Event.isLeftClick(event)) {
            slider.setValueBy(-0.2);
            Event.stop(event);
        }
    },

  /*
  function: onChange  
    Called when the script.aculo.us slider has changed (i.e. when it has been dragged). Scroll the inner box.
    
    args:   
        val - not used.
   */
    onChange: function(val) {
        if(this.enableScroll)
            this.innerBox.scrollTop = Math.round (val * (this.innerBox.scrollHeight-this.innerBox.offsetHeight));
    }
}

/*
function: Scroller.setAll
    Search for divs of the class 'makeScroll' and wrap them in a Scroller.
 */
Scroller.setAll = function () {
    $$('.makeScroll').each(function(item) {
        Scroller.ids[item.id] = new Scroller(item);
    });
}

/*
function: Scroller.reset
    If the passed element has class 'makeScroll', wrap it in a Scroller.
 */
Scroller.reset = function (body_id) {
    if ($(body_id).className.match(new RegExp("(^|\\s)makeScroll(\\s|$)"))) {
       if (Scroller.ids[body_id])
           Scroller.ids[body_id].release();
           
        Scroller.ids[body_id] = new Scroller($(body_id));
    }
}

/*
property: Scroller.updateAll
    Reset all of the scrollbars.
 */
Scroller.updateAll = function () {
    $H(Scroller.ids).each(function(pair) {
        Scroller.ids[pair.key].resetScrollbar(true);
    });
}

/*
    Hook up some global event handlers.
 */
Event.observe(window, "load", Scroller.setAll);
Event.observe(window, "resize", Scroller.updateAll);

/* slideshow.js.php */
/*<script>*/
// 11:36 AM 9/8/2010
// requires scriptaculous
// slideshow.init("slideshow", true, 4, 'fade', 1)

var slideshow = {
	
	interval: 4, // seconds
	
	slideshowid: 'slideshow', // slideshow container
	slidesClass: 'slides', // ul of slides within slideshow container
	navClass: 'nav', // ul of links within slideshow container
	slidesWidth: 0,
	slideWidth: 0,
	
	slidesList: false,
	navsList: false,
	
	transition: false, // fade, scroll
	transitions: ['fade', 'scroll'],
	transitionInterval: 0, // seconds
	
	slidePrefix: 'slide-',
	linkPrefix: 'slide-link-',
	
	curclass: 'current',
	curPrevclass: 'current-previous', //allow fading out of current
	
	//private
	current: 1, //current slide #
	autoplayFlag: true,
	count: 0,
	loaded: false,
	
	init: function(slideshowid, autoplay, interval, transition, transitionInterval){
		this.slideshowid = slideshowid;
		if (!$(this.slideshowid)) {
			return;
		}
		this.autoplayFlag = autoplay;
		this.interval = interval;
		if (transition !== undefined) {
			if (this.transitions.indexOf(transition) !== false) {
				this.transition = transition;
			}
		}
		if (transitionInterval !== undefined) {
			this.transitionInterval = transitionInterval;
		}
		
		this.slidesList = $$('#' + this.slideshowid + ' ul.' + this.slidesClass)[0];
		this.navsList = $$('#' + this.slideshowid + ' ul.' + this.navClass)[0];
		
		this.count = this.slidesList.childElements().length;
		
		if (this.count < 1) {
			return;
		}
		
		this.slidesWidth = this.slidesList.getDimensions().width;
		this.slideWidth = this.slidesWidth / this.count;
		
		this.loaded = true;
		setTimeout('slideshow.autoplay()', this.interval * 1000);
		
		// Stop autoplay if list item is clicked on
		$$('#' + slideshowid + ' ul.slides > li').invoke('observe', 'click', (function(event) {
			this.stop();
		}).bind(this));
	},
	
	autoplay: function(){
		if(!this.autoplayFlag){
			return;
		}
		var next = this.current + 1;
		if(next > this.count){
			next = 1;
		}
		this.swap(next, true);
		// Account for transition time
		setTimeout('slideshow.autoplay()', (this.interval + this.transitionInterval) * 1000);
	},
	
	swap: function(number, autoplay){
		if(!this.loaded){
			return;	
		}
		
		if(!autoplay){
			this.autoplayFlag = false;	
		}
        else{
        	this.autoplayFlag = true;
        }
		
		// Do nothing if swap target is current
		if (number == this.current) {
			return;
		}
		
		// Clear classes
		this.clearClasses(this.slidesList);
		this.clearClasses(this.navsList);
		
		// Set new current
		var targetSlide = $(this.slidePrefix + number);
		targetSlide.addClassName(this.curclass);
		
		// Fade
		if (this.transition == 'fade') {
			$(this.slidePrefix + this.current).addClassName(this.curPrevclass); //so we can fade out from it
			targetSlide.setStyle({ opacity: 0 }); // for fade in
			targetSlide.fade({ duration: this.transitionInterval, from: 0, to: 1 }); //fade in
		}
		// Scroll
		else if (this.transition == 'scroll') {
			var displacement = -(this.slideWidth) * (number - this.current);
			new Effect.MoveBy(this.slidesList, 0, displacement, 
				{
					duration: this.transitionInterval,  
					transition: Effect.Transitions.sinoidal,
					queue: 'end'
				});
		}
		
		var targetLink = $(this.linkPrefix + number)
		if(targetLink != null){
			targetLink.addClassName(this.curclass);
		}
		
		this.current = number;
	},
	
	next: function(){
		var next = this.current + 1;
		if(next > this.count){
			next = 1;
		}
		this.swap(next, false);
	},
	
	prev: function(){
		var prev = this.current - 1;
		if(prev < 1){
			prev = this.count;
		}
		this.swap(prev, false);
	},
	
	clearClasses: function(ul) {
		if (ul) {
			ul.childElements().each(function(el) {
				el.removeClassName(this.curclass);
				el.removeClassName(this.curPrevclass);
			}, this);
		}
	},
	
	stop: function() {
		this.autoplayFlag = false;
	}
}

/* valform-v2.js.php */
 /* 1:13 PM 8/16/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 valForms = new Array(); function initValForm(container){
 if(container){ var forms = container.select('form[class*="val-form"]');
} else{ var forms = $$('form[class*="val-form"]'); }; 
 for(var i = forms.length; i > 0; i--){
 
 var existFlag = false; for(var j = 0; j < valForms.length; j++){ if(valForms[j].form.id == forms[i-1].id){
 
 valForms[j].reset(); valForms[j].init(forms[i-1]); existFlag = true; } } if(!existFlag){ var nextIndex = valForms.length;
valForms[nextIndex] = new Valform(); valForms[nextIndex].init(forms[i-1]); } } } function valFormsResetSubmit(){
 for(var i = 0; i < valForms.length; i++){ valForms[i].resetSubmit(); } } function getValFormIndex(nodeid){ 
 for(var valFormIndex = 0; valFormIndex < valForms.length; valFormIndex++){ if(valForms[valFormIndex].form.id == nodeid ){
 return valFormIndex; } for(var i = 0; i < valForms[valFormIndex].inputs.length; i++){ if(valForms[valFormIndex].inputs[i].id == nodeid ){
 return valFormIndex; } } } alert('valform index not found'); } function Valform() { 
 this.errorTag = 'div';
this.errorClass = 'val_error';
 
 this.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', 'val_date', 'val_datetime', 'val_phone');
 
 this.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');
this.failed = true; this.form = null; this.formObsFunc = null; this.submitBtn = null; this.submitBtnDefaultVal = null; 
 this.ajaxRunning = new Object(); this.alertErrorsFlag = false; this.hideErrorsFlag = false; this.errors = new Object();
this.errorFocusedFlag = false; this.inputs = new Array(); this.inputObsFuncs = new Array(); this.originalSubmit = null; 
 this.init = function(form){ if(!form){ alert('Valform.init(), form object dosnt exist'); return false;
} this.form = form; 
 if(form.hasClassName('alert-errors')){ this.alertErrorsFlag = true; } if(form.hasClassName('hide-errors')){
 this.hideErrorsFlag = true; } 
 var submitBtns = this.form.select('input[type="submit"]'); if(submitBtns.length == 0){
 alert('valForm init error: no submit button'); } else{ this.submitBtn = submitBtns[0]; this.submitBtnDefaultVal = this.submitBtn.defaultValue;
this.resetSubmit(); } 
 var validNodes = new Array('INPUT', 'TEXTAREA', 'SELECT'); for(var i = 0; i < this.form.elements.length; i++){
 if(this.form.elements[i].disabled || validNodes.indexOf(this.form.elements[i].nodeName) == -1){ continue; 
 } this.inputs[this.inputs.length] = this.form.elements[i]; } 
 var focusThisFlag = true; if(form.hasClassName('auto-focus-on')){
 focusThisFlag = false; } for(var i=0; i < this.inputs.length; i++){ var inputType = this.inputs[i].type.toLowerCase();
 
 if(!focusThisFlag && this.inputs[i].name && inputType != 'hidden'){ focusThisFlag = true; if( inputType != 'radio' && inputType != 'checkbox'){ 
 this.inputs[i].focus(); } } 
 this.inputObsFuncs[i] = this.fieldCheck.bindAsEventListener(this.inputs[i], this); 
 Event.observe(this.inputs[i], 'blur', this.inputObsFuncs[i]); if($w(this.inputs[i].className).indexOf('val_ajax') != -1 ){
 this.ajaxRunning[this.inputs[i].id] = false; } } 
 this.originalSubmit = this.form.onsubmit; this.form.onsubmit = null; 
 this.formObsFunc = this.submitCheck.bindAsEventListener(this.form, this); Event.observe(this.form, 'submit', this.formObsFunc); 
 }; this.reset = function(){
 this.failed = true; this.ajaxRunning = new Object(); if(this.inputs){ 
 for(var i=0; i<this.inputs.length; i++){ Event.stopObserving(this.inputs[i], 'blur', this.inputObsFuncs[i]); 
 } } this.inputs = new Array(); this.inputObsFuncs = new Array(); if(this.formObsFunc){ Event.stopObserving(this.form, 'submit', this.formObsFunc); 
 } }; this.submitCheck = function(event){ var Va956af09 = $A(arguments); var parent = Va956af09[1]; 
 parent.errorFocusedFlag = false; if(!parent.form.hasClassName('dont-disable')){ parent.submitBtn.disabled = true; 
 } parent.submitBtn.value = 'Please wait...'; parent.errors = new Object(); parent.failed = false;
for(var fieldID in this.ajaxRunning){ this.ajaxRunning[fieldID] = true; } for(var i=0; i < parent.inputs.length; i++){
 parent.fieldCheckSubmit(parent.inputs[i]); if(parent.errors[parent.inputs[i].id] && !parent.errorFocusedFlag){ 
 parent.inputs[i].focus(); parent.errorFocusedFlag = true; } } parent.submitAjaxChk();
 Event.stop(event); 
 return false; }; this.submitAjaxChk = function(){ var Vc5417c1e = false; for(var fieldID in this.ajaxRunning){
 if(this.ajaxRunning[fieldID]){ Vc5417c1e = true; } else{ if(this.errors[fieldID] && !this.errorFocusedFlag){ 
 $(fieldID).focus(); this.errorFocusedFlag = true; } } } if(Vc5417c1e){ var valFormIndex = getValFormIndex(this.form.id);
setTimeout('valForms[' + valFormIndex + '].submitAjaxChk()', 100); } else if(!this.failed){ var tosubmit = true; 
 if(this.originalSubmit){ tosubmit = this.originalSubmit.call(this.form); } if(tosubmit == 'dont reset'){ 
 } else if(tosubmit){ this.form.submit(); } else{ this.resetSubmit(); } } else{ if(this.alertErrorsFlag){
 var Vcefb778c = ''; for(var fieldID in this.errors){ Vcefb778c += this.errors[fieldID] + "\n"; } alert(Vcefb778c);
} this.resetSubmit(); } }; this.resetSubmit = function(){ this.submitBtn.disabled = false; this.submitBtn.value = this.submitBtnDefaultVal;
}; this.fieldCheck= function(event){ var Va956af09 = $A(arguments); var parent = Va956af09[1]; 
 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($(parent.comboID + '_error')){ $(parent.comboID + '_error').remove(); } if(parent.errors[comboID]){ 
 parent.errors[comboID] = false; } var comboFields = parent.form.select('.' + comboID); for(var i=0; i<comboFields.length; i++){
 parent.validate(comboFields[i], comboID); if(parent.errors[comboID]){ return; } } return; } parent.validate(this);
return; }; this.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($(this.comboID + '_error')){ $(this.comboID + '_error').remove(); } if(this.errors[comboID]){ 
 this.errors[comboID] = false; } var comboFields = this.form.select('.' + comboID); for(var i=0; i < comboFields.length; i++){
 this.validate(comboFields[i], comboID); if(this.errors[comboID]){ return; } } return; } this.validate(field);
return; }; this.validate= function(field, comboID){ if(field.value && field.type.toLowerCase() != 'file'){ 
 field.value = field.value.strip(); } 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 == ifisInput.value){ if(classes.indexOf('val_ajax') !=-1 ){ 
 this.ajaxRunning[field.id] = false; } this.errorHandler(field, false); return; } } for(var i=0; i<classes.length; i++){
 if(this.classList.indexOf(classes[i]) == -1){ continue; } if(this.dependents.indexOf(classes[i]) == -1){ 
 var run = 'var error = this.'+classes[i]+'(field);'; } else{ if(i+1 == classes.length){ alert('valForm dependent required');
return false; } var run = 'var error = this.'+classes[i]+'(field, "'+classes[i+1]+'");'; } eval(run); 
 if(classes[i] == 'val_ajax'){ continue; } var V3cf7317e = field; if(comboID){ V3cf7317e = $(comboID);
} if(this.errorHandler(V3cf7317e, error)){ break; } } }; this.errorHandler= function(field, error){ 
 var fieldType = field.type.toLowerCase(); if(fieldType == 'checkbox' && field.name.indexOf('[') != -1 ){ 
 var V943db850 = this.form.select('[name="'+field.name+'"]')[0].id; } else{ var V943db850 = field.id;
} var label = this.form.select('label[for=' + V943db850 + ']'); if($(field.id+'_error')){ $(field.id+'_error').remove();
label[0].removeClassName('val-error'); } if(!error){ return false; } this.failed = true; 
 if(this.ajaxRunning[field.id]){
 this.ajaxRunning[field.id] = false; } if(!label[0]){ alert(field.id+' label is missing, check label id');
return; }
 var errorMsg = label[0].innerHTML;
 errorMsg = errorMsg.gsub(/^\s+|\s+$|:|<em>\*<\/em>/i, '') + ' ' + error;
errorMsg = errorMsg.stripTags(); if(!this.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]), '<'+this.errorTag+' id="'+field.id+'_error" class="'+this.errorClass+'">'+errorMsg+'</'+this.errorTag+'>');
label[0].addClassName('val-error'); } } else{ new Insertion.After(field, '<'+this.errorTag+' id="'+field.id+'_error" class="'+this.errorClass+'">'+errorMsg+'</'+this.errorTag+'>');
label[0].addClassName('val-error'); } } this.errors[field.id] = errorMsg; return true; }; 
 this.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.'; } }; this.val_req = function(field) { var fieldType = field.type.toLowerCase();
if(fieldType == 'checkbox' || fieldType == 'radio'){ var values = this.form.select('[name="'+field.name+'"]');
for(var i=0; i<values.length; i++){ if(values[i].checked){ return false; } } } else if(field.value.length != 0) {
 return false; } return 'is required.'; }; this.val_min = function(field, minLen) { if(field.value.length < parseFloat(minLen) && field.value != ''){
 return 'must be at least '+minLen+' characters long.'; } else{ return false; } }; this.val_max = function(field, maxLen) {
 if(field.value.length > parseFloat(maxLen) && field.value != ''){ return 'must be at most '+maxLen+' characters long.';
} else{ return false; } }; this.val_maxNum = function(field, maxNum){ if( !isNaN(field.value) && field.value > parseFloat(maxNum)){ 
 return 'must be '+maxNum+' or less.'; } else{ return false; } }; this.val_minNum = function(field, minNum){
 if(!isNaN(field.value) && (field.value < parseFloat(minNum))){ return 'must be '+minNum+' or greater.';
} else{ return false; } }; this.val_len = function(field, len) { if(field.value.length != parseFloat(len) && field.value != ''){
 return 'must be '+len+' characters long.'; } else{ return false; } }; this.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 = this.form.select('label[for=' + field2Obj.id + ']');
return 'does not match '+label[0].innerHTML.gsub(/:|<em>\*<\/em>|<EM>\*<\/EM>/, '')+'.'; } return false;
}; this.val_notSame = function(field, field2){ if(!$(field2)){ alert('val_notSame: '+field2+' is not defined');
return 'error'; } if(field.value.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; }; this.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.'; } }; this.val_alpha = function(field) {
 if(field.value.match(/^[a-zA-Z]+$/) || field.value == '') { return false; } else { return 'should contain only letters.';
} }; this.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.'; } }; this.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.';
} }; this.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.'; } }; this.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 ".".';
} }; this.val_int = function(field) { if(field.value.match(/(^-?\d\d*$)/) || field.value == '') {
 return false; } else { return 'needs to be a whole number.'; } }; this.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.'; } }; this.val_checked = function(field, len){
 var checked = 0; var values = this.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; }; this.val_checked_min = function(field, len){ var checked = 0; var values = this.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; }; this.val_checked_max = function(field, len){ var checked = 0; var values = this.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; }; this.val_ajax= function(field, func){ eval(func + "('"+field.id+"')"); return true;
}; this.val_func= function(field, func){ eval('var valForm_error = '+func + "('"+field.id+"')"); if(valForm_error){
 return valForm_error; } else{ return false; } }; 
 this.val_money = function(field){ field.value = field.value.replace(/[^0-9\.]/g, '');
if(field.value == ''){ return; } 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; }; this.val_date = function(field) {
 if(field.value == ''){ return false; } else if(field.value.match(/^[0-9]{2}\/[0-9]{2}\/[0-9]{4}$/)) {
 
 var dateParts = field.value.split('/'); var day = dateParts[1]; var month = dateParts[0]; var year = dateParts[2];
var dteDate = new Date(year, month - 1, day); if(day == dteDate.getDate() && (month == dteDate.getMonth() + 1) && year == dteDate.getFullYear()){
 return false; } return 'is an invalid date.'; } else { return 'needs to be mm/dd/yyyy.'; } }; this.val_datetime = function(field) {
 if(field.value.match(/^[0-9]{2}\/[0-9]{2}\/[0-9]{4} [0-9]{2}:[0-9]{2}(:[0-9]{2})? (am|pm|AM|PM)$/) || field.value == '') {
 return false; } else { return 'needs to be mm/dd/yyyy hh:mm:ss am/pm.'; } }; this.val_phone = function(field) {
 if(field.value == ''){ return false; } var numbers = field.value.replace(/[^0-9]/g, ''); if(numbers.length < 10){
 return 'needs to be 10 digits.'; } field.value = numbers.substr(0, 3) + '-' + numbers.substr(3, 3) + '-' + numbers.substr(6, 4);
 
 if(numbers.length > 10){ field.value += ' x ' + numbers.substr(10); } return false; }; } 
