﻿
/* Global Variables */

var ua = navigator.userAgent.toLowerCase() ;
var isIE = ( ua.match( /msie (\d+)/ ) != null );
var isIE7 = ( isIE && parseInt( ua.match( /msie (\d+)/ )[1], 10 ) >= 7 );
var isIE6 = ( isIE && !isIE7 && parseInt( ua.match( /msie (\d+)/ )[1], 10 ) >= 6 );
var isSafari = (ua.match( / applewebkit/ ) != null);
var isFirefox = (ua.match( / firefox/ ) != null);
var timeoutId;
var default_long_winclose_timeout = 11000;
var default_winclose_timeout = 8000;
var default_med_winclose_timeout = 6500;
var default_short_winclose_timeout = 5000;
var default_medshort_winclose_timeout = 3750;
var default_xshort_winclose_timeout = 2500;
var default_xxshort_winclose_timeout = 1500;
var default_xxxshort_winclose_timeout = 750;
var glob_form_err = false;
var glob_form_index = 0;
var glob_field_l_bord_col = '#9A9A9A';
var glob_field_r_bord_col = '#C3C3C3';
var glob_field_t_bord_col = '#7D7D7D';
var glob_field_b_bord_col = '#C3C3C3';
var yui_editor_bord_col = '#818181';
var yui_editor_container_ext = '_container';
var textarea_check_max_interval = 250;

/* END Global Variables */








/* Browser Functions */

function iecompattest(){
	return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
}

function IsStrictMode( document ) {
	return ( 'CSS1Compat' == ( document.compatMode || ( isSafari ? 'CSS1Compat' : null ) ) ) ;
}


function getScreenScrollX() { 
	var scrolledX; 
	if( self.pageXOffset ) { 
	scrolledX = self.pageXOffset; 
	} else if( document.documentElement && document.documentElement.scrollLeft ) { 
	scrolledX = document.documentElement.scrollLeft; 
	} else if( document.body ) { 
	scrolledX = document.body.scrollLeft; 
	}
	return scrolledX;
}

function getScreenScrollY() { 
	var scrolledY; 
	if( self.pageYOffset ) { 
	scrolledY = self.pageYOffset; 
	} else if( document.documentElement && document.documentElement.scrollTop ) { 
	scrolledY = document.documentElement.scrollTop; 
	} else if( document.body ) { 
	scrolledY = document.body.scrollTop; 
	}
	return scrolledY;
}

function getScreenCenterX() { 
	// First, determine how much the visitor has scrolled
	var scrolledX = getScreenScrollX(); 
	// Next, determine the coordinates of the center of browser's window
	var centerX; 
	if( self.innerWidth ) { 
	centerX = self.innerWidth; 
	} else if( document.documentElement && document.documentElement.clientWidth ) { 
	centerX = document.documentElement.clientWidth; 
	} else if( document.body ) { 
	centerX = document.body.clientWidth; 
	}
	return scrolledX + (centerX / 2); 
} 		


function getScreenCenterY() { 
	// First, determine how much the visitor has scrolled
	var scrolledY = getScreenScrollY(); 
	// Next, determine the coordinates of the center of browser's window
	var centerY; 
	if( self.innerHeight ) { 
	centerY = self.innerHeight; 
	} else if( document.documentElement && document.documentElement.clientHeight ) { 
	centerY = document.documentElement.clientHeight; 
	} else if( document.body ) { 
	centerY = document.body.clientHeight; 
	}
	return scrolledY + (centerY / 2); 
} 	

function ScreenCenterElem(elem) {
	elem.style.display = 'block';
	elem.style.left = (getScreenCenterX()-elem.offsetWidth/2) + 'px';
	elem.style.top = (getScreenCenterY()-elem.offsetHeight/2) + 'px';
}




function getDivCenterX(div) { 
	return getAbsX(div) + (getElemWidth(div) / 2); 
} 

function getDivCenterY(div) { 
	return getAbsY(div) + (getElemHeight(div) / 2); 
} 

function DivCenterElem(div,elem) {
	elem.style.display = 'inline';
	elem.style.left = (getDivCenterX(div)-elem.offsetWidth/2) + 'px';
	elem.style.top = (getDivCenterY(div)-elem.offsetHeight/2) + 'px';
}


function CheckBrowserEdge(srcobj, destobj, whichedge){
    var edgeoffset=0
    if (whichedge=="rightedge"){
        var windowedge=isIE && !window.opera? iecompattest().scrollLeft+iecompattest().clientWidth-15 : window.pageXOffset+window.innerWidth-15
        var measure = destobj.offsetWidth
        if (windowedge-destobj.x < measure)
         edgeoffset=measure-srcobj.offsetWidth
    }
    else{
        var topedge=isIE && !window.opera? iecompattest().scrollTop : window.pageYOffset
        var windowedge=isIE && !window.opera? iecompattest().scrollTop+iecompattest().clientHeight-15 : window.pageYOffset+window.innerHeight-18
        var measure = destobj.offsetHeight
        //alert(destobj.offsetHeight);
        if (windowedge-destobj.y < measure){ //move up?
            edgeoffset=measure+srcobj.offsetHeight
            if ((destobj.y-topedge)<measure) //up no good either?
                edgeoffset=destobj.y+srcobj.offsetHeight-topedge
        }
    }
    return edgeoffset
}

/* END Browser Functions */









/* DOM Functions */

function RemoveNode(elem) {
	if(elem) elem.parentNode.removeChild(elem);
}

function GetChildNodes(elem,ignore_text) {
	var arr = new Array();
	if(elem.children) arr = elem.children;
	else arr = elem.childNodes;
	if(ignore_text) {
		var clean_arr = new Array();
		for(var e=0; e<arr.length; e++) if(arr[e].nodeType != 3) clean_arr[clean_arr.length] = arr[e];
		return clean_arr;
	}
	else {
		return arr;
	}
}

/* END DOM Functions */







/* Format Functions */

function FormatDate(d) {
	return (d.getMonth()+1) + '/' + d.getDate() + '/' + d.getFullYear();
}

/* END Format Functions */







/* Image Functions */

function preload() {
    this.length = preload.arguments.length;
    for (var i = 0; i < this.length; i++) {
            this[i+1] = new Image();
            this[i+1].src = preload.arguments[i];
    }
}

/* END Image Functions */





/* Icon Functions */

function IcoOv(imgname, rel_path, suffix) {
    var img = document.images[imgname+suffix];
    img.src = rel_path + 'Images/'+imgname+'-iconon.gif';
}   

function IcoOu(imgname, rel_path, suffix) {
    var img = document.images[imgname+suffix];
    img.src = rel_path + 'Images/'+imgname+'-icon.gif';
}   

/* END Icon Functions */









/* Element Functions */

function getAbsX(elt) { return (elt.x) ? elt.x : getAbsPos(elt,"Left"); }
function getAbsY(elt) { return (elt.y) ? elt.y : getAbsPos(elt,"Top"); }
function getAbsPos(elt,which) {
	iPos = 0;
	while (elt != null) {
	iPos += elt["offset" + which];
	elt = elt.offsetParent;
	}
	return iPos;		
}

function getScreenX(elt) { return getAbsX(elt) - getScreenScrollX(); }
function getScreenY(elt) { return getAbsY(elt) - getScreenScrollY(); }

function getElemWidth(elem) {
	var width = elem.offsetWidth;
	if(elem.offsetWidth == 0) {
		var arr = GetChildNodes(elem);
		for(var x=0; x<arr.length; x++) {
			if(width < arr[x].offsetWidth) width = arr[x].offsetWidth;  
		}
	}
	return width;
}

function getElemHeight(elem) {
	var height = elem.offsetHeight;
	if(elem.offsetHeight == 0) {
		var arr = GetChildNodes(elem);
		for(var x=0; x<arr.length; x++) {
			if(height < arr[x].offsetHeight) width = arr[x].offsetHeight;  
		}
	}
	return height;
}

function checkElemBlock(elem) {
	var block = false;
    var pat = /^(div|ol|ul|p|blockquote|img|table)$/;
    var tag_name = elem.tagName.toLowerCase();
    var matchArray = tag_name.match(pat);
    if (matchArray != null) { block = true; }
    else {
    	var arr = GetChildNodes(elem);
		for(var x=0; x<arr.length; x++) {
			if(arr[x].tagName) {
			    tag_name = arr[x].tagName.toLowerCase();
			    matchArray = tag_name.match(pat);
			    if (matchArray != null) { block = true; }
			}
		}    	
    }
    return block;
}

	
function getElem(elem_name) {
    var elem = (document.getElementById)?document.getElementById(elem_name) : document.all? eval('document.all.'+elem_name) : eval('document.'+elem_name);    
    return elem;
}

function getFrameElem(frame_name, elem_name) {
    var elem = (document.getElementById)?window.frames[frame_name].document.getElementById(elem_name) : document.all? eval('window.frames['+frame_name+'].document.all.'+elem_name) : eval('window.frames['+frame_name+'].document.'+elem_name);    
    return elem;
}


function getPosOffset(what, offsettype){
    var totaloffset=(offsettype=="left")? what.offsetLeft : what.offsetTop;
    var parentEl=what.offsetParent;
    while (parentEl!=null){
        totaloffset=(offsettype=="left")? totaloffset+parentEl.offsetLeft : totaloffset+parentEl.offsetTop;
        parentEl=parentEl.offsetParent;
    }
    return totaloffset;
}


document.getElementsByClassName = function(cl) {
	var retnode = [];
	var myclass = new RegExp('\\b'+cl+'\\b');
	var elem = this.getElementsByTagName('*');
	for (var i = 0; i < elem.length; i++) {
	var classes = elem[i].className;
	if (myclass.test(classes)) retnode.push(elem[i]);
	}
	return retnode;
	};


/* END Element Functions */
	




/* Frame Functions */

function GetFrameDoc(frame_name) {
	return window.frames[frame_name].document;
}

function GetFrameWin(frame_name) {
	return window.frames[frame_name].window;
}

function ResizeContentFrame(elem, min_w, max_h) {
	var w = (elem.contentDocument ? elem.contentDocument.body.scrollWidth : elem.document.body.scrollWidth);
	var h = (elem.contentDocument ? elem.contentDocument.body.scrollHeight : elem.document.body.scrollHeight);
	if(max_h <= 0 || h < max_h) { elem.height = h; }
	else { elem.height = max_h; w += 20; }
	if(isIE && max_h > 0) { w += 16; }
	if(min_w <= 0 || w > min_w) { elem.width = w; }
	else { elem.width = min_w;  }
}

/* END Frame Functions */

	
	

	
	
	

/* Cookie Functions */

function GetCookie( check_name ) {
	// first we'll split this cookie up into name/value pairs
	// note: document.cookie only returns name=value, not the other components
	var a_all_cookies = document.cookie.split( ';' );
	var a_temp_cookie = '';
	var cookie_name = '';
	var cookie_value = '';
	var b_cookie_found = false; // set boolean t/f default f
	
	for ( i = 0; i < a_all_cookies.length; i++ )
	{
		// now we'll split apart each name=value pair
		a_temp_cookie = a_all_cookies[i].split( '=' );
		
		
		// and trim left/right whitespace while we're at it
		cookie_name = a_temp_cookie[0].replace(/^\s+|\s+$/g, '');
	
		// if the extracted name matches passed check_name
		if ( cookie_name == check_name )
		{
			b_cookie_found = true;
			// we need to handle case where cookie has no value but exists (no = sign, that is):
			if ( a_temp_cookie.length > 1 )
			{
				cookie_value = unescape( a_temp_cookie[1].replace(/^\s+|\s+$/g, '') );
			}
			// note that in cases where cookie is initialized but no value, null is returned
			return cookie_value;
			break;
		}
		a_temp_cookie = null;
		cookie_name = '';
	}
	if ( !b_cookie_found )
	{
		return null;
	}
}	


function SetCookie( name, value, expires, path, domain, secure ) {
	// set time, it's in milliseconds
	var today = new Date();
	today.setTime( today.getTime() );
	
	/*
	if the expires variable is set, make the correct 
	expires time, the current script below will set 
	it for x number of days, to make it for hours, 
	delete * 24, for minutes, delete * 60 * 24
	*/
	if ( expires )
	{
	expires = expires * 1000 * 60 * 60 * 24;
	}
	var expires_date = new Date( today.getTime() + (expires) );
	
	document.cookie = name + "=" +escape( value ) +
	( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) + 
	( ( path ) ? ";path=" + path : "" ) + 
	( ( domain ) ? ";domain=" + domain : "" ) +
	( ( secure ) ? ";secure" : "" );
}	


	
function DeleteCookie( name, path, domain ) {
	if ( GetCookie( name ) ) document.cookie = name + "=" +
	( ( path ) ? ";path=" + path : "") +
	( ( domain ) ? ";domain=" + domain : "" ) +
	";expires=Thu, 01-Jan-1970 00:00:01 GMT";
}		


/* END Cookie Functions */







/* Report Functions */

function ColHeadOv(elem) { 
    elem.style.cursor='pointer';
}   

function ColHeadOu(elem) {
    elem.style.cursor='';
}   	

var glob_sel_row = '';
function RowOv(elem) {
	if(glob_sel_row == '' || glob_sel_row != elem.id) if(elem.className.indexOf(' on') <= 0) elem.style.backgroundColor='#E8E7E3';
}   

function RowOu(elem) {
	if(glob_sel_row == '' || glob_sel_row != elem.id) if(elem.className.indexOf(' on') <= 0) elem.style.backgroundColor='';
}   	

/* END Report Functions */



/* Page Nav */              

function PageNavBox(elem, status, skip) {
    if(skip != 'skip') {
        if(status == 'over') {
            elem.style.borderColor='#679AC8';
            elem.style.cursor='pointer';
        }
        else {
            elem.style.borderColor='#D0DAEF';
            elem.style.cursor='default';                
        }
    }
}            

/* END Page Nav */   







/* Button Functions */

function BtnOv(elem) {
    elem.className = 'btnon';
    elem.style.cursor='pointer';
}   

function BtnOu(elem) {
	elem.className = 'btn';
    elem.style.cursor='';
}   	

/* END Button Functions */








/* Box Functions */

function BoxOv(elem) {
	if(elem.className != 'on') elem.style.backgroundColor='#e7effc';
    elem.style.cursor='pointer';
}   

function BoxOu(elem, s) {
	elem.style.backgroundColor='';
    elem.style.cursor='';
}

/* END Box Functions */






/* Drag Mod Functions */

function DragModHandleOver(elem) {
	elem.className = 'header draghandlemodon';
}

function DragModHandleOut(elem) {
	elem.className = 'header draghandle';
}

function DragModArrowOver(elem) {
	elem.style.backgroundColor='#E8ECEE';
	elem.style.cursor='pointer';
}

function DragModArrowOut(elem,force) {
	//elem.style.backgroundColor='#F0F6FA';
	elem.style.backgroundColor='';
	elem.style.cursor='';
}		

/* END Drag Mod Functions */





/* Drag Win Functions */

function DragWinHandleOver(elem) {
	elem.className = 'header draghandlewinon';
}

function DragWinHandleOut(elem) {
	elem.className = 'header draghandle';
}

function DragWinCloseOver(elem) {
	elem.style.backgroundColor='#ECE6B9';
	elem.style.cursor='pointer';
}

function DragWinCloseOut(elem) {
	//elem.style.backgroundColor='#EFEBCA';
	elem.style.backgroundColor='';
	elem.style.cursor='';
}	

/* END Drag Win Functions */






/* Event Functions */

function AddEventListener( sourceObject, eventName, listener ) {
	if(isIE)
		sourceObject.attachEvent( 'on' + eventName, listener ) ;
	else 
		sourceObject.addEventListener( eventName, listener, false ) ;
}

function RemoveEventListener( sourceObject, eventName, listener ) {
	if(isIE)
		sourceObject.detachEvent( 'on' + eventName, listener ) ;
	else 
		sourceObject.removeEventListener( eventName, listener, false ) ;	
}

/* End Event Functions */





/* String Format */


function trim(inputString) {
   if (typeof inputString != "string") { return inputString; }
   var retValue = inputString;
   var ch = retValue.substring(0, 1);
   while (ch == " ") { // Check for spaces at the beginning of the string
      retValue = retValue.substring(1, retValue.length);
      ch = retValue.substring(0, 1);
   }
   ch = retValue.substring(retValue.length-1, retValue.length);
   while (ch == " ") { // Check for spaces at the end of the string
      retValue = retValue.substring(0, retValue.length-1);
      ch = retValue.substring(retValue.length-1, retValue.length);
   }
   while (retValue.indexOf("  ") != -1) { // Note that there are two spaces in the string - look for multiple spaces within the string
      retValue = retValue.substring(0, retValue.indexOf("  ")) + retValue.substring(retValue.indexOf("  ")+1, retValue.length); // Again, there are two spaces in each of the strings
   }
   return retValue; // Return the trimmed string back to the user
}

/* END String Format */






/* Validation */

function emailcheck(emailStr) {
    var emailPat = /^.+\@.+\..+$/;
    var matchArray = emailStr.match(emailPat);
    if (matchArray == null) {
    	return false;
    }
    else {
        emailStr = trim(emailStr);
        emailPat = /\s/;
        matchArray = emailStr.match(emailPat);
        if (matchArray != null) {
    	    return false;
        }
        else {
    	    return true;
        }    
    }
}		        

function intcheck(str) {
	str = str.replace(/ /g, '');		
	str = str.replace(/,/g, '');					
	if(!(isNaN(str))) {
		var Pat = /^[0-9]*$/;
		var matchArray = str.match(Pat);		
		if (matchArray == null) {
			return false;				
		}	
		else {
			if(str <= 2000000000) {
				return true;
			}	
			else {	
				return 'max';			
			}				
		}
	}	
	else {
		return false;		
	}
}			


function datecheck(dateStr, format) {
   dateStr = dateStr.replace(/ /g, '');	
   if (format == null) { format = "MDY"; }
   format = format.toUpperCase();
   if (format.length != 3) { format = "MDY"; }
   if ( (format.indexOf("M") == -1) || (format.indexOf("D") == -1) || (format.indexOf("Y") == -1) ) { format = "MDY"; }
   var reg1, reg2;
   if (format.substring(0, 1) == "Y") { // If the year is first
      reg1 = /^\d{2}(\/)\d{1,2}\1\d{1,2}$/
      reg2 = /^\d{4}(\/)\d{1,2}\1\d{1,2}$/		  
   } else if (format.substring(1, 2) == "Y") { // If the year is second
      reg1 = /^\d{1,2}(\/)\d{2}\1\d{1,2}$/
      reg2 = /^\d{1,2}(\/)\d{4}\1\d{1,2}$/		  
   } else { // The year must be third
      reg1 = /^\d{1,2}(\/)\d{1,2}\1\d{2,4}$/
      reg2 = /^\d{1,2}(\/)\d{1,2}\1\d{2,4}$/		  
   }
   // If it doesn't conform to the right format (with either a 2 digit year or 4 digit year), fail
   if ( (reg1.test(dateStr) == false) && (reg2.test(dateStr) == false) ) { return false; }
   var parts = dateStr.split(RegExp.$1); // Split into 3 parts based on what the divider was
   var mm, dd, yy;
   // Check to see if the 3 parts end up making a valid date
   if (format.substring(0, 1) == "M") { mm = parts[0]; } else 
      if (format.substring(1, 2) == "M") { mm = parts[1]; } else { mm = parts[2]; }
   if (format.substring(0, 1) == "D") { dd = parts[0]; } else 
      if (format.substring(1, 2) == "D") { dd = parts[1]; } else { dd = parts[2]; }
   if (format.substring(0, 1) == "Y") { yy = parts[0]; } else 
      if (format.substring(1, 2) == "Y") { yy = parts[1]; } else { yy = parts[2]; }
   if (parseFloat(yy) <= 50) { yy = (parseFloat(yy) + 2000).toString(); }
   if (parseFloat(yy) <= 99) { yy = (parseFloat(yy) + 1900).toString(); }
   var dt = new Date(parseFloat(yy), parseFloat(mm)-1, parseFloat(dd), 0, 0, 0, 0);
   if (parseFloat(dd) != dt.getDate()) { return false; }
   if (parseFloat(mm)-1 != dt.getMonth()) { return false; }
   if (parseFloat(yy) < 1900) { return false; }
   return true;
}	    




function timecheck(timeStr) {
    // Checks if time is in HH:MM:SS AM/PM format.
    // The seconds and AM/PM are optional.

    var timePat = /^(\d{1,2}):(\d{2})(:(\d{2}))?(\s?(AM|am|PM|pm))?$/;
    var matchArray = timeStr.match(timePat);
    if (matchArray == null) {
        //alert("Time is not in a valid format.");
        return false;
    }
    hour = matchArray[1];
    minute = matchArray[2];
    second = matchArray[4];
    ampm = matchArray[6];

    if (second=="") { second = null; }
    if (ampm=="") { ampm = null }

    if (hour < 0  || hour > 23) {
        //alert("Hour must be between 1 and 12. (or 0 and 23 for military time)");
        return false;
    }
    if (hour <= 12 && ampm == null) {
        //alert("You must specify AM or PM.");
        return false;
    }
    if  (hour > 12 && ampm != null) {
        //alert("You can't specify AM or PM for military time.");
        return false;
    }
    if (minute<0 || minute > 59) {
        //alert ("Minute must be between 0 and 59.");
        return false;
    }
    if (second != null && (second < 0 || second > 59)) {
        //alert ("Second must be between 0 and 59.");
        return false;
    }
    return true;
}









function yearcheck(yearStr) {
    var yearPat;
    var yearStrTmp;		
    var matchArray;
    var matchMax = 0;
    var matchCounter = 0;	
    if (parseFloat(yearStr) < 1800) { return false; }
    else {
        matchMax += 1;
        yearPat = /^\d{4}$/;
        matchArray = yearStr.match(yearPat);
        if (matchArray == null) {
	        matchCounter += 1;
        }
        if (matchCounter == matchMax) {
	        return false;
        }	
        else {
            return true;
        }
    }	
}	 	        

function zipcheck(zipStr) {
    var valid = "0123456789-";
    var hyphencount = 0;
    if (zipStr.length!=5 && zipStr.length!=10) {
	    //alert("Please enter a valid Zip Code.");
	    return false;
    }
    for (var i=0; i < zipStr.length; i++) {
    temp = "" + zipStr.substring(i, i+1);
    if (temp == "-") hyphencount++;
    if (valid.indexOf(temp) == "-1") {
	    //alert("There are invalid characters in your Zip Code. Please try again.");
	    return false;
    }
    if ((hyphencount > 1) || ((zipStr.length==10) && ""+zipStr.charAt(5)!="-")) {
	    //alert("The hyphen character should be used with a properly formatted zip code (e.g. 12345-6789). Please try again.");
	    return false;
       }
    }
    return true;
}  

function phonecheck(phoneStr) {
    var phonePat;
    var matchArray;
    var matchMax = 0;
    var matchCounter = 0;	
    // US
    matchMax += 1;
    phonePat = /^1?[\.\-\/ ]?\(?(\d{3})\)?[\.\-\/ ]?(\d{3})[\.\-\/ ]?(\d{4})$/;
    matchArray = phoneStr.match(phonePat);
    if (matchArray == null) {
	    matchCounter += 1;
    }
    if (matchCounter == matchMax) {
	    return false;
    }	
    else {
    	return true;
    }
}		

function urlcheck(s) {
    var regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
    return regexp.test(s);
}

function domaincheck(s) {
    var regexp = /^(\w+\.)*\w+(\w+\.)+[A-Za-z]+$/
    return regexp.test(s);
}


/* END Validation */








/* Field Validation */  

function CheckFieldError(field_name, valid, msg, is_editor) {
    // Error Msg
    var msgelem = getElem(field_name+'Msg');
    if(msgelem) msgelem.innerHTML = msg;

    
    // Field Border
    var fieldelem = eval('document.forms['+glob_form_index+'].'+field_name);
    if(fieldelem.type && fieldelem.type.indexOf('select') > -1) {
    	field_name += 'Div';
        if(!valid) {
        	if(!msgelem) DispFormErrorMsg();
        	DispFieldError(field_name);
        }
        else if(valid) {
        	ClearFieldError(field_name, '#FFFFFF');
        	if(!msgelem) ClearFormErrorMsg();
        }            
    }
    else if(fieldelem.type && fieldelem.type.indexOf('hidden') > -1) {
        if(!valid) {
        	DispFormErrorMsg();
        }
        else if(valid) {
        	ClearFormErrorMsg();
        }    	
    }
    else {
        if(!valid) {
        	if(!msgelem) DispFormErrorMsg();
        	if(!is_editor) DispFieldError(field_name);
        	else DispFieldError(field_name + yui_editor_container_ext);
        }
        else if(valid) {
        	if(!is_editor) ClearFieldError(field_name);
        	else ClearFieldError(field_name + yui_editor_container_ext, yui_editor_bord_col);        	
        	if(!msgelem) ClearFormErrorMsg();
        }
    }
}


function DispFormErrors(field_list) {
	glob_form_err = true;
	DispFormErrorMsg();
    var field_arr = field_list.split();
    for(var f=0; f < field_arr.length; f++) {
    	DispFieldError(field_arr[f]);
    }
}

function DispFormErrorMsg() {
	var elem = getElem('FormErrorMsg');
    if(elem) elem.style.display = 'block';
	elem = getElem('FormEmptyErrorMsg');
    if(elem) elem.style.display = 'none';
}

function DispFieldError(name, col) {
	if(col) {} else col = "red";
	var fieldelem = getElem(name);
	if(fieldelem) fieldelem.style.border = "1px solid " + col;
}


function ClearFormErrors(field_list) {
	glob_form_err = false;
	ClearFormErrorMsg();
    var field_arr = field_list.split();
    for(var f=0; f < field_arr.length; f++) {
    	ClearFieldError(field_arr[f]);
    }
}

function ClearFormErrorMsg() {
	var elem = getElem('FormErrorMsg');
    if(elem) elem.style.display = 'none';
	elem = getElem('FormEmptyErrorMsg');
    if(elem) elem.style.display = 'block';	
}


function ClearFieldError(name, col) {
    var r_col,l_col,t_col,b_col;
	if(col) { l_col = col; r_col = col; t_col = col; b_col = col; } else { l_col = glob_field_l_bord_col; r_col = glob_field_r_bord_col; t_col = glob_field_t_bord_col; b_col = glob_field_b_bord_col; }
    var fieldelem = getElem(name);
	if(fieldelem) {
	    fieldelem.style.borderLeft = "1px solid " + l_col;
	    fieldelem.style.borderRight = "1px solid " + r_col;
	    fieldelem.style.borderTop = "1px solid " + t_col;
	    fieldelem.style.borderBottom = "1px solid " + b_col;
	}
}


function CheckTextAreaMax(elem,max) { 
    if(elem.value.length > max) elem.value = elem.value.substring(0,max);
}        


/* END Field Validation */  





	



/* Dim */

var dim_cover;
function DimOn() {
	// Setup the DIV that will be used to cover.
	dim_cover = document.createElement( 'div' ) ;
	DimResetStyles( dim_cover ) ;
	DimSetStyles( dim_cover,
		{
			'position' : 'absolute',
			'zIndex' : '1',
			'top' : '0px',
			'left' : '0px',
			'backgroundColor' : '#999999'
		} ) ;
	DimSetOpacity( dim_cover, 0.50 ) ;
	
	// For IE6-, we need to fill the cover with a transparent IFRAME,
	// to properly block <select> fields.
	if ( isIE6 )
	{
		var iframe = document.createElement( 'iframe' ) ;
		DimResetStyles( iframe ) ;
		iframe.hideFocus = true ;
		iframe.frameBorder = 0 ;
		iframe.src = DimGetVoidUrl() ;
		DimSetStyles( iframe,
			{
				'width' : '100%',
				'height' : '100%',
				'position' : 'absolute',
				'left' : '0px',
				'top' : '0px',
				'filter' : 'progid:DXImageTransform.Microsoft.Alpha(opacity=0)'
			} ) ;
		dim_cover.appendChild( iframe ) ;
	}

	// We need to manually adjust the cover size on resize.
	AddEventListener( document, 'resize', DimResizeHandler ) ;
	DimResizeHandler() ;

	document.body.appendChild( dim_cover ) ;
}

function DimOff() {
	RemoveNode( dim_cover ) ;
}

function DimResetStyles(elem) {
	elem.style.cssText = 'margin:0;' +
	'padding:0;' +
	'border:0;' +
	'background-color:transparent;' +
	'background-image:none;' ;
}
function DimSetStyles(elem,styledict) {
	var style = elem.style ;
	for ( var stylename in styledict ) style[ stylename ] = styledict[ stylename ] ;
}
function DimSetOpacity(elem,opacity) {
	if ( isIE ) {
		opacity = Math.round( opacity * 100 ) ;
		elem.style.filter = ( opacity > 100 ? '' : 'progid:DXImageTransform.Microsoft.Alpha(opacity=' + opacity + ')' ) ;
	}
	else
		elem.style.opacity = opacity ;
}
function DimGetVoidUrl() {
	if ( isIE ) {
		if ( isIE7 || !isIE6 ) return "" ; // IE7+ / IE5.5
		else return "javascript: '';" ;	// IE6+
	}
	return "javascript: void(0);" ;	// All other browsers.
}

var DimResizeHandler = function()
{
	if ( !dim_cover ) return ;

	var relElement = IsStrictMode( document ) ? document.documentElement : document.body ;

	DimSetStyles( dim_cover,
		{
			'width' : Math.max( relElement.scrollWidth,
				relElement.clientWidth,
				document.scrollWidth || 0 ) - 1 + 'px',
			'height' : Math.max( relElement.scrollHeight,
				relElement.clientHeight,
				document.scrollHeight || 0 ) - 1 + 'px'
		} ) ;
}

/* End Dim */




/* Editor */

function GetEditorContents(name)
{
	return FCKeditorAPI.GetInstance(name).GetXHTML( true ); // "true" means you want it formatted
}

/* END Editor */



/* Yui Calendar */

function SelCalDate(calobj, date) {
	var month = date.getMonth()+1;
	var year = date.getFullYear();
	calobj.select(date); 
	calobj.cfg.setProperty("pagedate", month + "/" + year); 
	calobj.render();
}

/* END Calendar */




/* Hex */

function HexToR(h) {return parseInt((cutHex(h)).substring(0,2),16)}
function HexToG(h) {return parseInt((cutHex(h)).substring(2,4),16)}
function HexToB(h) {return parseInt((cutHex(h)).substring(4,6),16)}
function cutHex(h) {return (h.charAt(0)=="#") ? h.substring(1,7):h}    

/* End Hex */
 	






/* Search */

function CheckSearchSubmit() {
    var val = document.forms[0].Search.value;
    if(val != '' && val != 'Search') {
        document.location.href=base_url+'/Search/?keyword='+val;
        return false;
    }
    else {
        return false;
    }
}   

/* END Search */



/* Top Nav */

function ChangeClient(elem) {
    var guid = elem.options[elem.options.selectedIndex].value;
    if(guid == '') elem.options.selectedIndex = 0;
    else document.location.href = base_url+'/User/ChangeClient.aspx?g='+guid;
}    

/* END Top Nav */