var debug_notice = false;
function debug(i,notice){
	if(!notice) notice = true;

	if(window.console.firebug){
		console.debug(i);
		if(notice && !debug_notice){
			var sp1 = document.createElement('div');
			sp1.setAttribute("id", "console_error_div");
			var sp1_content = document.createTextNode('Javascript Debug');
			sp1.appendChild(sp1_content);
			if(sp2 = document.body.firstChild){ //make sure there is a container div layer ie: <div id="container"></div>
				sp2.parentNode.insertBefore(sp1,sp2);

				// set the style to the new layer
				sp1.style.position = 'fixed';
				sp1.style.top = '0';
				sp1.style.left = window.innerWidth/2 - 50 +'px';
				sp1.style.fontSize = '10px';
				sp1.style.fontWeight = 'bold';
				sp1.style.color = '#FFF';
				sp1.style.backgroundColor = 'red';
				sp1.style.fontFamily = 'verdana';
				sp1.style.padding = '3px';
				sp1.style.zIndex = '100000';
			}
			debug_notice = true;
		}
		return true;
	}
	return false;
}

function MM_swapImgRestore() { //v3.0

  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;

}



function MM_preloadImages() { //v3.0

  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();

    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)

    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}

}



function MM_findObj(n, d) { //v4.01

  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {

    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}

  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];

  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);

  if(!x && d.getElementById) x=d.getElementById(n); return x;

}



function MM_swapImage() { //v3.0

  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)

   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}

}



function MM_showHideLayers() { //v3.0

var i,p,v,obj,args=MM_showHideLayers.arguments;

for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];

if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v='hide')?'hidden':v; }

obj.visibility=v; }

}



function MM_displayLayers() { //v3.0

var i,p,v,obj,args=MM_displayLayers.arguments;

for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];

if (obj.style) { obj=obj.style; v=(v=='show')?'block':(v='hide')?'none':v; }

obj.display=v; }

}

function findPos(obj) {
	var curleft = curtop = 0;
	if(obj){
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
		return [curleft,curtop];
	}else{
		return false;
	}

}


function check_all(class_name, flag) {
	checks = $$('input[class="'+class_name+'"]');
	if(typeof(checks)=="object"){
		checks.each(function(s) {
			$(s).checked = flag;
		});
	}
}

function is_numeric( value ){
	if(!value){
		return false;
	}else{
		return isFinite( (value * 1.0) );
	}
}


function valid_email(email){
	var reg = new RegExp("^[\\w-_\.+]*[\\w-_\.]\@([\\w]+\\.)+[\\w]+[\\w]$");
	return reg.test(email);
}


function change_file(){
	if($('mainfile').value != '' || file_temp != $('mainfile').value){
		s = $('mainfile').value;
		if(navigator.userAgent.indexOf("Windows") > -1){
			t = '\\';
		}else{
			t = '/';
		}
		s = s.substring(s.lastIndexOf(t)+1);
		if(s.substring(s.length-3) == 'doc'){
			i = 'word_ico';
		}else if(s.substring(s.length-3) == 'pdf'){
			i = 'pdf_ico';
		}else if(s.substring(s.length-3) == 'gif' || s.substring(s.length-3) == 'jpg' || s.substring(s.length-3) == 'png' || s.substring(s.length-3) == 'jpeg'){
			i = 'icon_jpg';
		}else{
			i = 'text_ico';
		}
		$('file_selected').update('<img src="/images/'+i+'.gif" border="0" align="top" style="margin:-3px 3px 0 0;"> <strong>'+ s +'</strong><a href="javascript:;" onclick="reset_file(); return false;"><img src="/images/article_close_bt.gif" width="12" height="12" border="0" align="top" style="margin:1px 0 0 5px"></a>');
		file_temp = $('mainfile').value;
	}
}

function reset_file(){
	$('main_file_span').update('<input type="file" name="mainfile" id="mainfile" class="flush-right" onchange="change_file();" style="width:auto;" align="right" />');
	$('file_selected').update('no file selected');
}

function change_file_dynamic(filediv,filelist){

	if($(filediv).value != '' || file_temp != $(filediv).value){

		s = $(filediv).value;
		if(navigator.userAgent.indexOf("Windows") > -1){
			t = '\\';
		}else{
			t = '/';
		}

		s = s.substring(s.lastIndexOf(t)+1);
		if(s.substring(s.length-3) == 'doc'){
			i = 'word_ico';
		}else if(s.substring(s.length-3) == 'pdf'){
			i = 'pdf_ico';
		}else if(s.substring(s.length-3) == 'gif' || s.substring(s.length-3) == 'jpg' || s.substring(s.length-3) == 'png' || s.substring(s.length-3) == 'jpeg'){
			i = 'icon_jpg';
		}else{
			i = 'text_ico';
		}

		$(filelist).update('<img src="/images/'+i+'.gif" border="0" align="top" style="margin:-3px 3px 0 0;"> <strong>'+ s +'</strong><a href="javascript:;" onclick="reset_file_dynamic(\''+ filediv +'\',\''+ filelist +'\'); return false;"><img src="/images/article_close_bt.gif" width="12" height="12" border="0" align="top" style="margin:1px 0 0 5px"></a>');

		file_temp = $(filediv).value;

	}

}

function reset_file_dynamic(filediv,filelist){
	$(filediv + '_span').update('<input type="file" name="'+ filediv +'" id="'+ filediv +'" class="flush-right" onchange="change_file_dynamic(\''+ filediv +'\',\''+ filelist +'\');" style="width:auto;" align="right" />');
	$(filelist).update('no file selected');
}


function textCounter(field) {
	maxlimit = 500;
	if ($(field).value.length > maxlimit){ // if too long...trim it!
		$(field).value = $(field).value.substring(0, maxlimit);
	}
	t = $(field).id+'_count';
	$(t).update(maxlimit - $(field).value.length);
}

/*------------------- IS NUMERIC for text form feilds-------------------------------*/

//how to use: onkeypress="return numbersonly(this, event)"

function numbersonly(myfield, e, dec){
	var key;
	var keychar;

	if (window.event){
		key = window.event.keyCode;
	}else if (e){
		key = e.which;
	}else{
		return true;
	}

	keychar = String.fromCharCode(key);
	// control keys
	
	if ((key==null) || (key==0) || (key==8) || (key==9) || (key==13) || (key==27) ){
		return true;
	}else if ((("0123456789").indexOf(keychar) > -1)) {// numbers
		return true;
	}else if (dec && (keychar == ".")) {  // decimal point jump
		myfield.form.elements[dec].focus();
		return false;
	}else{
		return false;
	}
}

function numbers_decimal_only(myfield, e, dec){
	var key;
	var keychar;

	if (window.event){
		key = window.event.keyCode;
	}else if (e){
		key = e.which;
	}else{
		return true;
	}

	keychar = String.fromCharCode(key);
	// control keys
	
	if ((key==null) || (key==0) || (key==8) || (key==9) || (key==13) || (key==27) ){
		return true;
	}else if ((("0123456789.").indexOf(keychar) > -1)) {// numbers
		return true;
	}else if (dec && (keychar == ".")) {  // decimal point jump
		myfield.form.elements[dec].focus();
		return false;
	}else{
		return false;
	}
}

function num_letter_only(myfield, e, dec){
	var illegalChars = /\W/; // allow letters, numbers, and underscores
	var key;
	var keychar;

	if (window.event){
		key = window.event.keyCode;
	}else if (e){
		key = e.which;
	}else{
		return true;
	}

	keychar = String.fromCharCode(key);

	// control keys
	if ((key==null) || (key==0) || (key==8) || (key==9) || (key==13) || (key==27) ){
		return true;
	}else if (!illegalChars.test(keychar)) {// numbers
		return true;
	}else if (dec && (keychar == ".")) {  // decimal point jump
		myfield.form.elements[dec].focus();
		return false;
	}else{
		return false;
	}


}


function format_phone(obj, e){
	
	var key;
	var keychar;

	if (window.event){
		key = window.event.keyCode;
	}else if (e){
		key = e.which;
	}else{
		return true;
	}

	keychar = String.fromCharCode(key);
	
	n = obj.value;
	obj.setAttribute('maxlength', 12);
	var re= /\D/;
	// test for this format: (xxx)xxx-xxxx
	var re2 = /^\({1}\d{3}\)\d{3}-\d{4}/; 
	// test for this format: xxx-xxx-xxxx
	//var re2 = /^\d{3}-\d{3}-\d{4}/;

	//for (i=0; i<nums.length;i++){
		var num=obj.value;

		var newNum;
		if (num != "" && re2.test(num)!=true){
			if (num != ""){
				while (re.test(num)){
					num = num.replace(re,"");
				}
			}
			
			if ((key==null) || (key==0) || (key==8) || (key==9) || (key==13) || (key==27) || (key==46) || (key==37) || (key==39) || (key==16) || (key==224) || (key==17) ){
				return true;
			}else{

				if(num.length < 3){
					newNum = num.substring(0,3);
				}else if(num.length < 6){
					newNum = num.substring(0,3) + '-' + num.substring(3,6);
				}else if(num.length <= 10){
					newNum = num.substring(0,3) + '-' + num.substring(3,6) + '-' + num.substring(6,10);
				}else{
					if (num != ""){
						while (re.test(num)){
							num = num.replace(re,"");
						}
					}
					newNum = num.substring(0,3) + '-' + num.substring(3,6) + '-' + num.substring(6,10);
				}
				obj.value=newNum;
			}
			
			
		/*	if (num.length != 10){
						alert('Please enter a 10 digit phone number');
						obj.select();
						return false;
					}
					else {
						// for format (xxx)xxx-xxxx
						//newNum = '(' + num.substring(0,3) + ') ' + num.substring(3,6) + '-' + num.substring(6,10);
						// for format xxx-xxx-xxxx
						 newNum = num.substring(0,3) + '-' + num.substring(3,6) + '-' + num.substring(6,10);
						obj.value=newNum;
					}*/
		}
	//}
}




function autojump(field, e){  //Must have a maxLength set to use this function
	key = get_key_code(e);
	n = $(field).nextSiblings();
	if(key==46 || key==8 || key==9 || key==16 || key==37 || key==39){
		return false;
	}else{
		if($(field).value.length >= $(field).maxLength){
			$(n[0]).select();
		}
	}

}

function get_key_code(e){
	var key;
	var keychar;

	if (window.event){
		key = window.event.keyCode;
	}else if (e){
		key = e.which;
	}else{
		return true;
	}

	keychar = String.fromCharCode(key);
	return key;
}


function getURLParam(strParamName){
	var strReturn = "";
	var strHref = window.location.href;
	if ( strHref.indexOf("?") > -1 ){
		var strQueryString = strHref.substr(strHref.indexOf("?")).toLowerCase();
		var aQueryString = strQueryString.split("&");
		for ( var iParam = 0; iParam < aQueryString.length; iParam++ ){
			if (
			aQueryString[iParam].indexOf(strParamName.toLowerCase() + "=") > -1 ){
				var aParam = aQueryString[iParam].split("=");
				strReturn = aParam[1];
				break;
			}
		}
	}
	return unescape(strReturn);
}

function popup(url,x,y) {

	xMax = screen.width;
	yMax = screen.height;

	var xOffset = (xMax - x)/2, yOffset = (yMax - y)/2;

	windowHandle = window.open(url,'','top='+yOffset+',left='+xOffset+',toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=1,width='+x+'px,height='+y+'px');
}

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


String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
}
String.prototype.ltrim = function() {
	return this.replace(/^\s+/,"");
}
String.prototype.rtrim = function() {
	return this.replace(/\s+$/,"");
}

function addslashes(str) {
	//str=str.replace(/\'/g,'\\\'');
	//str=str.replace(/\"/g,'\\"');
	//str=str.replace(/\\/g,'\\\\');
	//str=str.replace(/\0/g,'\\0');
	//return str;
	return str.replace(/(["'\\])/g, "\\$1").replace(/\0/g, "\\0");
}

function stripslashes(str) {
	//str=str.replace(/\\'/g,'\'');
	//str=str.replace(/\\"/g,'"');
	//str=str.replace(/\\\\/g,'\\');
	//str=str.replace(/\\0/g,'\0');
	//return str;
	return str.replace(/\\0/g, '\0').replace(/\\(.)/g, '$1');
}

getURLpound_param = function(strParamName){
  var strReturn = "";
  var strHref = window.location.href;
  if ( strHref.indexOf("#") > -1 ){
    //var strQueryString = strHref.substr(strHref.indexOf("#")).toLowerCase();
    var strQueryString = strHref.substr(strHref.indexOf("#"));
    var aQueryString = strQueryString.split("&");
    for ( var iParam = 0; iParam < aQueryString.length; iParam++ ){
     // if (aQueryString[iParam].indexOf(strParamName.toLowerCase() + "=") > -1 ){
      if (aQueryString[iParam].indexOf(strParamName + "=") > -1 ){
        var aParam = aQueryString[iParam].split("=");
        strReturn = aParam[1];
        break;
      }
    }
  }
  return unescape(strReturn);
}

function select_by_value(id, v){
	var cbo= $(id);
	for(var i=0; i<cbo.length; i++){
		if(cbo.options[i].value==v){
			cbo.selectedIndex=i;
			return;
		}
	}
}


function pause(millis){
var date = new Date();
var curDate = null;

do { curDate = new Date(); }
while(curDate-date < millis);
}


function addCommas(nStr)
{
	nStr += '';
	x = nStr.split('.');
	x1 = x[0];
	x2 = x.length > 1 ? '.' + x[1] : '';
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1)) {
		x1 = x1.replace(rgx, '$1' + ',' + '$2');
	}
	return x1 + x2;
}


function initChecklist() {
	if (document.all && document.getElementById) {
		// Get all unordered lists
		var lists = document.getElementsByTagName("ul");

		for (i = 0; i < lists.length; i++) {
			var theList = lists[i];

			// Only work with those having the class "checklist"
			if (theList.className.indexOf("checklist") > -1) {
				var labels = theList.getElementsByTagName("label");

				// Assign event handlers to labels within
				for (var j = 0; j < labels.length; j++) {
					var theLabel = labels[j];
					theLabel.onmouseover = function() { this.className += " hover"; };
					theLabel.onmouseout = function() { this.className = this.className.replace(" hover", ""); };
				}
			}
		}
	}
}


in_array = function(needle, haystack){
	for (key in haystack) {
		if (haystack[key] == needle){
			return true;
			break;
		}
	}
}
