// Initialize global variables
var ie5=document.all&&document.getElementById
var ns6=document.getElementById&&!document.all
// Use object detection to determine browser
var ie4 = (document.all!=null)
var ie4Mac = ie4 && navigator.platform.indexOf("Mac")>=0
var ns4 = (document.layers!=null)
var DHTML = (document.getElementById || document.all || document.layers);

var timers = new Array();

function addLoadEvent(func) {
	
	/* Use this funciton to add multiple onload events in one of two ways:
		addLoadEvent(init_msgbox);
		addLoadEvent(function() {
	  // more code to run on page load
	});
	*/
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}

function addMouseEvent(func) {
	
	/* Use this funciton to add multiple onload events in one of two ways:
		addMouseEvent(init_msgbox);
		addMouseEvent(function() {
	  // more code to run on mouse move
	});
	*/
  var oldonmousemove = document.onmousemove;
  if (typeof document.onmousemove != 'function') {
    document.onmousemove = func;
  } else {
    document.onmousemove = function() {
      if (oldonmousemove) {
        oldonmousemove();
      }
      func();
    }
  }
}

function get_value(form_name,field_name)
{
	var e = document[form_name].elements;
	for(var i=0; i < e.length; i++)
	{
		if(e[i].name==field_name)
		{
			return e[i].value;
		}
	}
}

function set_value(form_name,field_name,field_value)
{
	var e = document[form_name].elements;
	for(var i=0; i < e.length; i++)
	{
		if(e[i].name==field_name)
		{
			e[i].value=field_value;
			return;
		}
	}
}

function toggle_display(source_obj,target_id)
{
	target_obj = new getObj(target_id);
	//alert(target_id+' '+target_obj.style.display);
	var vis = target_obj.style.display != 'none' ? 1 : 0; // visible, set to inline
	switch(source_obj.type)
	{
		case 'button': source_obj.value = vis == 1 ? '[ Show ]' : '[ Hide ]'; break;
		case 'href': source_obj.href = vis == 1 ? '-' : '+'; break;
		default: source_obj.value = vis == 1 ? '-' : '+'; break;
	}
	target_obj.style.display = vis == 1 ? 'none': 'inline';
}

var mouseX = 0;
var mouseY = 0;
var mouse = [];
function mouseCoords(ev)
{
	if(ev.pageX || ev.pageY){
		return {x:ev.pageX, y:ev.pageY};
	}
	return {
		x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
		y:ev.clientY + document.body.scrollTop  - document.body.clientTop
	};
}
function mouseDown(e) {
	if ((is.ns && e.which!=1) || (is.ie && event.button!=1)) return true
	e = e || window.event;
	mouse = mouseCoords(e)
	mouseX = mouse.x;
	mouseY = mouse.y;
	return true
}
function mouseMove(e) {
	
	e = e || window.event;
	mouse = mouseCoords(e)
	mouseX = mouse.x;
	mouseY = mouse.y;
	return true
}
function mouseUp(e) {
	e = e || window.event;
	mouse = mouseCoords(e)
	mouseX = mouse.x;
	mouseY = mouse.y;
	return true
}

function centerObj(obj, id)
{
	if(id!=null) obj = document.getElementById(id);
	
	var tmp = GetInnerSize();
	iWidth = tmp[0];
	iHeight = tmp[1];
	var tmp = GetScrollXY();
	scrollX = tmp[0];
	scrollY = tmp[1];
	var objW = parseInt(obj.style.width);
	obj.style.left = parseInt((iWidth-objW)/2 + scrollX) + 'px';
	var objH = parseInt(obj.style.height);
	obj.style.top = parseInt((iHeight-objH)/2 + scrollY) + 'px';
	//alert(obj.style.left + ' ' + obj.style.top);
}
function center_layer(id)
{
	var obj = document.getElementById(id);
	if(!obj || !obj.style) return;
	
	if(!obj.style.height) obj.style.height='auto';
	if(!obj.style.width)  obj.style.width='auto';
	
	var winW = document.body ? document.body.clientWidth : window.innerWidth;
	var winH = document.body ? document.body.clientHeight : window.innerHeight;


	var offsetX = window.pageXOffset ||
	         document.body.scrollLeft ||
	         document.documentElement.scrollLeft;
	offsetX = parseInt(offsetX);
	var offsetY = window.pageYOffset ||
	         document.body.scrollTop ||
	         document.documentElement.scrollTop;
	offsetY = parseInt(offsetY);

	var w = parseInt(obj.style.width)
	var h = parseInt(obj.style.height)

	x = parseInt((winW - w) / 2 ) + offsetX;
	y = parseInt((winH - h) / 2) + offsetY;	

  obj.style.top = y + 'px';
  obj.style.left = x + 'px';
	//alert(obj.style.left + ' ' + obj.style.top); return;
}

function getObj(name)
{
	this.obj = null;
	if(document.getElementById(name)) document.getElementById(name).style.height='auto';
  if (document.getElementById)
  {
  	this.obj = document.getElementById(name);
		if(this.obj) 
		{
			this.style = document.getElementById(name).style;
			this.style.height=this.obj.offsetHeight;
		}
  }
  else if (document.all)
  {
		this.obj = document.all[name];
		if(this.obj) 
		{
			this.style = document.all[name].style;
			this.style.height=this.obj.offsetHeight+10;
		}
  }
  else if (document.layers)
  {
   	this.obj = document.layers[name];
   	if(this.obj) 	
   	{
   		this.style = document.layers[name];
			this.style.height=this.obj.offsetHeight;
   	}
  }
  if(this.obj) 
  {
  	var tmp = this.style.height.toString();
  	this.style.height = parseInt(tmp.replace('px', ''));
  	this.innerHTML = this.obj.innerHTML;
  }
}

function show_popup(msg,pos)
{
	var ele = document.getElementById(pos);
	var xpos = ele.style.left;
	var ypos = ele.style.top;
	var pop = document.getElementById('popup_box');
	//alert(xpos + " " + pop.style.left);
	set_prop('popup_box','left',xpos);
	set_prop('popup_box','top',ypos);
	set_prop('popup_box','visibility','visible');
	update_html('popup_box','popup_msg',msg);
}

function update_html(container,display,text){
	if(!document.getElementById(display)) alert(text);
	else 
	{
		document.getElementById(display).innerHTML = text;
		if(container) 
		{
			document.getElementById(container).style.visibility = 'visible';
			document.getElementById(container).style.visibility = text != '' ? 'visible' : 'hidden';
			if(document.getElementById(container).style.display) document.getElementById(container).style.display = text != '' ? 'inline' : 'none';
		}
	}
}
function iecompattest(){
	return (!window.opera && document.compatMode && document.compatMode!='BackCompat')? document.documentElement : document.body
}

var popWin;
function popUp(url,w,h,set_str,x,y,center)
{
	if (popWin!=null && !popWin.closed && popWin.location) {
		popWin.location.href = url;
	}
	else {

		// create popup
		if(w==null) w=500;
		if(h==null) h=350;
		if(set_str==null) set_str = 'screenX=400,screenY=100,toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,resizable=1,width='+w+',height='+h;
		else 
		{
			if(w) set_str += ',width='+w;
			if(h) set_str += ',height='+h;
		}
		popWin=window.open(url,"popWin",set_str);
		if (popWin && !popWin.opener) popWin.opener = self;
		// place popup in center of window
		winl = screen.width;
		wint = screen.height;
		if(center) 
		{
			var center_x = (winl - w) / 2;
			var center_y = (winl - h) / 2;
			popWin.moveTo(center_x,center_y);
		}
		if(x!=null && y!=null) popWin.moveTo(x,y);
	}

	if (window.focus) {popWin.focus()}
	return false;	
}

function set_prop(id,prop,val) {
	var obj = new getObj(id);
	eval('obj.style.'+prop+'= val;');
}

function get_prop(id,prop) {
	var obj = new getObj(id);
	val = eval('obj.style.'+prop+';');
	return val;
}

function set(elem,color) {
	elem.setAttribute('bgColor',color);
	elem.style.cursor = 'hand';
}
function setback(elem,color) {
	elem.setAttribute('bgColor',color);
	elem.style.cursor = 'default';

}

var checkboxes = new Array();
function get_checkboxes()
{
	// use addLoadEvent(get_checkboxes); to set up an onload event for this function

	var x=document.getElementsByTagName('input') 	
	for(var i=0,c=0; i < x.length; i++)
	{
		if(x[i].getAttribute('type')=='checkbox')
		{
			checkboxes[c] = x[i];
			c++;
		}
	}
}	
var vars = new Array();
function check_all(target_name,source_object,form_object)
{
	vars[target_name] = vars[target_name] == 1 ? 0 : 1;
	for(var i=0; i < checkboxes.length; i++)
	{
		var obj = checkboxes[i];
		var field_name = obj.name;
		var tmp = field_name.split('[',2); // in case field is an array
		field_name = tmp[0];
		if(target_name != '' && field_name==target_name) obj.checked = vars[target_name];
	}
}

var active_menus = new Array();
function toggle_visibility(x,target_id,visible,source_obj)
{
	//toggle_ablility(visible?0:1);
	clearTimeout(timeoutMenuID);
	for(var i=0; i < active_menus.length; i++)
	{
		if(x!=i) 
		{
			target_obj = new getObj('sub_menu'+i);
			if(target_obj!=null && target_obj.style) target_obj.style.visibility = 'hidden';
		}
	}
	target_obj = new getObj(target_id+x);
	//alert(target_obj);
	if(target_obj==null || !target_obj.style) return;
	if(visible==null) visible = target_obj.style.visibility == 'visible' ? 0 : 1;
	active_menus[x]=visible;
	if(typeof(source_obj)=='object') source_obj = new getObj(source_obj.id);
	else source_obj = new getObj(source_obj);
	target_obj.style.visibility = visible != 1 ? 'hidden' : 'visible';
	// change visibility
	target_obj.style.display = visible != 1 ? 'none' : 'inline';
}

function show_menu(id,bool_display,bool_inline)
{
	var obj = document.getElementById(id);
	if(1 || timers[id]!=null) clearTimeout(timers[id]);
	if(bool_display)
	{
		if(obj.style.display=='none') set_prop(id,'display', bool_inline ? 'inline' : 'block');
	}
	else 
	{
		if(obj.style.visibility=='hidden') set_prop(id,'visibility','visible');
	}
}
function hide_menu(id,ms,bool_display)
{
	if(!ms) ms = 1000;
	var obj = document.getElementById(id);
	if(bool_display)
	{
		if(obj.style.display!='none') timers[id] = setTimeout("set_prop('"+id+"','display','none')",ms);
	}
	else 
	{
		if(obj.style.visibility=='visible') timers[id] = setTimeout("set_prop('"+id+"','visibility','hidden')",ms);
	}
}
function toggle_menu(id)
{
	if(1 || timers[id]!=null) clearTimeout(timers[id]);
	var obj = document.getElementById(id);
	set_prop(id,'visibility',obj.style.visibility=='visible'?'hidden':'visible');
}

var timeoutMenuID;
function hidemenu(x)
{
	clearTimeout(timeoutMenuID);
	toggle_visibility(x,'sub_menu',0,'main_menu');
	active_menus[x]=0;
}
function toggle_ablility(ability)
{
	var x=document.getElementsByTagName('select') 	
	for(var i=0,c=0; i < x.length; i++)
	{
		//if(ability==0) x[i].style.visibility = 'hidden';
		//if(ability==1) x[i].style.visibility = 'visible';
		if(ability==0) x[i].disabled = true;
		if(ability==1) x[i].disabled = false;
	}
	var x=document.getElementsByTagName('input') 	
	for(var i=0,c=0; i < x.length; i++)
	{
		var type = x[i].getAttribute('type');
		//if(i==0 || x[i].name=='sel_master') alert(x[i].name);
		switch(type)
		{
			case 'checkbox':
			case 'select':
			case 'radio':
			if(ability==0) x[i].disabled = true;
			if(ability==1) x[i].disabled = false;
			break;
		}
	}
}	

function swap_image(name, path)
{
	document.images[name].src = path;
}

function number_value(str)
{
	str.replace(/[\$\,]/g,'');
	return str;
}

function nl2br(str)
{
	return str.replace(/\n/gi,'<br>');
}

function preview(dest,arSrc,toggle,title,html)
{
	var obj=new getObj(dest);
	var text = "";
	if(arSrc.length) 
	{
		html = get_value(arSrc[0],arSrc[1]);
	}
	if(html)
	{
		html = nl2br(html);
		text += "<fieldset style='padding:15px;text-align:left;'>";
		if(title) text += "<legend id='legend'>$title</legend>";
		text += html;
		text += "</fieldset>";
		document.getElementById(dest).innerHTML=text;
	}	
	if(toggle) obj.style.display='inline';
	else obj.style.display='none';	
}

function showByPosition(id,e) 
{
	// x and y should be set, probably relative to mouse coordinates
	var object = document.getElementById(id);
 	if(!object) return;

 	if(!e) e = event;
		
	var posX = 0;
	var posY = 0;
	var marginH = 50;
	var marginW = 50;
	
  if (document.layers) 
  {
	  var offsetX = window.pageXOffset;
	  var offsetY = window.pageYOffset;
	 
		var offsetW = window.innerWidth;
		var offsetH = window.innerHeight;
	 
		var width = object.clip.width;
		var height = object.clip.height;

		posX = e.pageX;
		posY = e.pageY;
	}
  else
  {		
	  var offsetX = document.body.scrollLeft;
	  var offsetY = document.body.scrollTop;
	 
		var offsetW = document.body.clientWidth;
		var offsetH = document.body.clientHeight;
	 		
		var width = parseInt(object.clientWidth);
		var height = parseInt(object.clientHeight);

		posX = e.clientX + offsetX;
		posY = e.clientY + offsetY;
  }
  	
	var newY = posY - height + marginH;
	var newX = posX + marginW;
		
	if(newY < offsetY)
		newY = offsetY; 
	else if(newY > offsetY + offsetH)
		newY = offsetY + offsetH - height;
	
	if(newX < offsetX)
		newX = document.body.scrollWidth; 
	else if(newX + width > offsetX + offsetW)
		newX = offsetX + offsetW - width;
	
	// FOR TESTING:  alert('objW=' + width + '\nobjH=' + height + '\nwinW=' + offsetW + '\nwinH=' + offsetH + '\nscrollTop=' +offsetY + '\nscrollLeft=' +offsetX + '\nX: offsetX=' + offsetX + ' newX=' + newX + ' posX=' + posX + '\n Y: offsetY=' + offsetY + ' newY=' + newY + ' posY=' + posY);

  object.style.left = newX+'px';
  object.style.top = newY+'px';
  object.style.visibility = 'visible';
}

function hide(id) 
{
	var object = document.getElementById(id);
 	if(!object) return;
  object.style.visibility = 'hidden';
}

var scrollXY = []
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;
  }
  scrollXY.x = scrOfX;
  scrollXY.y = scrOfY;
  
  //alert([scrOfX, scrOfY]);
  return [ scrOfX, scrOfY ];
}

function GetInnerSize() 
{
  var myWidth = 0, myHeight = 0;
  if( typeof( window.innerWidth ) == 'number' ) {
    //Non-IE
    myWidth = window.innerWidth;
    myHeight = window.innerHeight;
  } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
    //IE 6+ in 'standards compliant mode'
    myWidth = document.documentElement.clientWidth;
    myHeight = document.documentElement.clientHeight;
  } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
    //IE 4 compatible
    myWidth = document.body.clientWidth;
    myHeight = document.body.clientHeight;
  }
  //alert([ myWidth, myHeight, mouse.x ]);
  return [ myWidth, myHeight ];
}

function mouseCoord(e) 
{
  if( !e ) {
    if( window.event ) {
      //Internet Explorer
      e = window.event;
    } else {
      //total failure, we have no way of referencing the event
      return;
    }
  }
  if( typeof( e.pageX ) == 'number' ) {
    //most browsers
    var xcoord = e.pageX;
    var ycoord = e.pageY;
  } else if( typeof( e.clientX ) == 'number' ) {
    //Internet Explorer and older browsers
    //other browsers provide this, but follow the pageX/Y branch
    var xcoord = e.clientX;
    var ycoord = e.clientY;
    var badOldBrowser = ( window.navigator.userAgent.indexOf( 'Opera' ) + 1 ) ||
     ( window.ScriptEngine && ScriptEngine().indexOf( 'InScript' ) + 1 ) ||
     ( navigator.vendor == 'KDE' )
    if( !badOldBrowser ) {
      if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
        //IE 4, 5 & 6 (in non-standards compliant mode)
        xcoord += document.body.scrollLeft;
        ycoord += document.body.scrollTop;
      } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
        //IE 6 (in standards compliant mode)
        xcoord += document.documentElement.scrollLeft;
        ycoord += document.documentElement.scrollTop;
      }
    }
  } else {
    //total failure, we have no way of obtaining the mouse coordinates
    return;
  }
  return [ xcoord, ycoord ];
}

function debug(msg)
{
	//return;
	var debugit = document.getElementById('debugit');
	if(debugit) debugit.innerHTML += msg+'<br>';
}

function cls()
{
	var debugit = document.getElementById('debugit');
	if(debugit) debugit.innerHTML = '';
}

function getAllSheets() {
	if( !window.ScriptEngine && navigator.__ice_version ) { return document.styleSheets; }
	if( document.getElementsByTagName ) { var Lt = document.getElementsByTagName('link'), St = document.getElementsByTagName('style');
	} else if( document.styleSheets && document.all ) { var Lt = document.all.tags('LINK'), St = document.all.tags('STYLE');
	} else { return []; } for( var x = 0, os = []; Lt[x]; x++ ) {
		var rel = Lt[x].rel ? Lt[x].rel : Lt[x].getAttribute ? Lt[x].getAttribute('rel') : '';
		if( typeof( rel ) == 'string' && rel.toLowerCase().indexOf('style') + 1 ) { os[os.length] = Lt[x]; }
	} for( var x = 0; St[x]; x++ ) { os[os.length] = St[x]; } return os;
}


/* ----------------------- EVENTS ------------------*/
// http://www.biasecurities.com/blogs/jim/archive/2005/08/09/2054.aspx
// Example:  AttachEvent(window, "load", Load_EventHandler(event));

var JavascriptEventCache = function() {
 var listEvents = [];
 return {
  listEvents : listEvents,
  add : function(elementObj, eventName, eventHandlerFunctionName) { 
   listEvents[listEvents.length] =  arguments; 
  },
  flush : function() {
   for (var i = listEvents.length - 1; i >= 0; i--) {
    var eventItem = listEvents[i];
    DetachEvent(eventItem[0], eventItem[1], eventItem[2]);
   }
  }
 }
}();

function AttachEvent(elementObj, eventName, eventHandlerFunctionName) {
 if (elementObj.addEventListener) {
  elementObj.addEventListener(eventName, eventHandlerFunctionName, false);
 } else if (elementObj.attachEvent) {
  elementObj.attachEvent('on' + eventName, eventHandlerFunctionName);
 } else { 
  var currentEventHandler = elementObj['on' + eventName];
  if (currentEventHandler == null) {
   elementObj['on' + eventName] = eventHandlerFunctionName;
  } else {
   elementObj['on' + eventName] = function(e) { currentEventHandler(e); eventHandlerFunctionName(e); }
  }
 }
 JavascriptEventCache.add(elementObj, eventName, eventHandlerFunctionName);
}

function DetachEvent(elementObj, eventName, eventHandlerFunctionName) {
 if (elementObj.removeEventListener) {
  elementObj.removeEventListener(eventName, eventHandlerFunctionName, false);
  elementObj[eventName] = null;
 } else if (elementObj.detachEvent) { 
  elementObj.detachEvent('on' + eventName, eventHandlerFunctionName);
  elementObj['on' + eventName] = null;
 }
}

// @eventArgs is an interface of type Event: http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-Event
function Load_EventHandler(eventArgs){  
	alert("here");
}
/* ----------------------- END EVENTS ------------------*/


AttachEvent(window, "resize", windowResize);
AttachEvent(window, "load", windowResize);

// The windowResize function keeps track of the window size for us
function windowResize( )
{
	winSize = {
		x: ( document.body.clientWidth ) ? document.body.clientWidth : window.innerWidth ,
		y: ( document.body.clientHeight ) ? document.body.clientHeight : window.innerHeight
	}
}

function hasClass(ele,cls) {
	return ele.className.match(new RegExp('(\\s|^)'+cls+'(\\s|$)'));
}
function addClass(ele,cls) {
	if (!this.hasClass(ele,cls)) ele.className += " "+cls;
}
function removeClass(ele,cls) {
	if (hasClass(ele,cls)) {
		var reg = new RegExp('(\\s|^)'+cls+'(\\s|$)');
		ele.className=ele.className.replace(reg,' ');
	}
}


function getCSSRule(ruleName, deleteFlag) {               // Return requested style obejct
   ruleName=ruleName.toLowerCase();                       // Convert test string to lower case.
   if (document.styleSheets) {                            // If browser can play with stylesheets
      for (var i=0; i<document.styleSheets.length; i++) { // For each stylesheet
         var styleSheet=document.styleSheets[i];          // Get the current Stylesheet
         var ii=0;                                        // Initialize subCounter.
         var cssRule=false;                               // Initialize cssRule. 
         do {                                             // For each rule in stylesheet
            if (styleSheet.cssRules) {                    // Browser uses cssRules?
               cssRule = styleSheet.cssRules[ii];         // Yes --Mozilla Style
            } else {                                      // Browser usses rules?
               cssRule = styleSheet.rules[ii];            // Yes IE style. 
            }                                             // End IE check.
            if (cssRule)  {                               // If we found a rule...
               if (cssRule.selectorText.toLowerCase()==ruleName) { //  match ruleName?
                  if (deleteFlag=='delete') {             // Yes.  Are we deleteing?
                     if (styleSheet.cssRules) {           // Yes, deleting...
                        styleSheet.deleteRule(ii);        // Delete rule, Moz Style
                     } else {                             // Still deleting.
                        styleSheet.removeRule(ii);        // Delete rule IE style.
                     }                                    // End IE check.
                     return true;                         // return true, class deleted.
                  } else {                                // found and not deleting.
                     return cssRule;                      // return the style object.
                  }                                       // End delete Check
               }                                          // End found rule name
            }                                             // end found cssRule
            ii++;                                         // Increment sub-counter
         } while (cssRule)                                // end While loop
      }                                                   // end For loop
   }                                                      // end styleSheet ability check
   return false;                                          // we found NOTHING!
}                                                         // end getCSSRule 

function killCSSRule(ruleName) {                          // Delete a CSS rule   
   return getCSSRule(ruleName,'delete');                  // just call getCSSRule w/delete flag.
}                                                         // end killCSSRule

function addCSSRule(ruleName) {                           // Create a new css rule
   if (document.styleSheets) {                            // Can browser do styleSheets?
      if (!getCSSRule(ruleName)) {                        // if rule doesn't exist...
         if (document.styleSheets[0].addRule) {           // Browser is IE?
            document.styleSheets[0].addRule(ruleName, null,0);      // Yes, add IE style
         } else {                                         // Browser is IE?
            document.styleSheets[0].insertRule(ruleName+' { }', 0); // Yes, add Moz style.
         }                                                // End browser check
      }                                                   // End already exist check.
   }                                                      // End browser ability check.
   return getCSSRule(ruleName);                           // return rule we just created.
} 

function setClassName(obj,cname,remove)
{
	if(remove) removeClass(obj,obj.className);
	obj.setAttribute("class", cname); 
	obj.setAttribute("classname", cname); 
	addClass(obj,cname);
}

function preloadImages(imgs)
{
	if(document.images && imgs.length)
	{
		var pix = [];
		for(var i=0; i < imgs.length; i++) { pix[i] = new Image(); pix[i].src = imgs[i]; }
	}				
}


String.prototype.trim = function() {

return this.replace(/(?:(?:^|\n)\s+|\s+(?:$|\n))/g,"");

}

function formData2QueryString(docForm, pattern) 
{
	var submitContent = '';
	var formElem;
	var lastElemName = '';
	
	//alert(docForm.name);return;
	
	for (var i = 0; i < docForm.elements.length; i++) 
	{
	
		formElem = docForm.elements[i];
		
		if(pattern)
		{
			var name = formElem.name;
			var myregexp = new RegExp(pattern); // can use modifiers as the second parameter. Example: new RegExp(pattern, \"gims\");
			mymatch = myregexp.exec(name);
		  if(!mymatch) continue	;
		}
	
		switch (formElem.type) 
		{
			// Text fields, hidden form elements
			case 'text':
			case 'hidden':
			case 'password':
			case 'textarea':
			case 'select-one':
			submitContent += formElem.name + '=' + escape(formElem.value) + '&'
			break;
			
			// Radio buttons
			case 'radio':
			if (formElem.checked) {
			submitContent += formElem.name + '=' + escape(formElem.value) + '&'
			}
			break;
		
			// Select-Multiple
			case 'select-multiple':
			var ar = new Array();
			for(var x=0; x < formElem.options.length; x++)
			{
				if(formElem.options[x].selected)
				{
					var value = formElem.options[x].value; //// ? formElem.options[x].value : formElem.options[x].text;
					ar.push(escape(value));
				}
			}
			if(ar.length)
			{
				submitContent += formElem.name + '=' + ar.join(',') + '&'
			}
			break;
			
			// Checkboxes
			case 'checkbox':
			if (formElem.checked) {
			// Continuing multiple, same-name checkboxes
			if (formElem.name == lastElemName) {
			// Strip of end ampersand if there is one
			if (submitContent.lastIndexOf('&') == submitContent.length-1) {
			submitContent = submitContent.substr(0, submitContent.length - 1);
			}
			// Append value as comma-delimited string
			submitContent += ',' + escape(formElem.value);
			}
			else {
			submitContent += formElem.name + '=' + escape(formElem.value);
			}
			submitContent += '&';
			lastElemName = formElem.name;
			}
			break;
			default:
			///alert(formElem.type); // can use this to test if ele type not included
			break;
			
		}
	}
		
	// Remove trailing separator
	submitContent = submitContent.substr(0, submitContent.length - 1);
	
	/********  FOR TESTING  ********
	//var tmp = submitContent.split('&');
	// use this to view the query parameters
	//alert(submitContent);
	*******************************/
	
	return submitContent;
}

function getKeyCode(e)
{
	if(window.event) // IE
		{
		keynum = e.keyCode;
		}
	else if(e.which) // Netscape/Firefox/Opera
		{
		keynum = e.which;
		}
	keynum;
}


/*
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+$/,"");
}

String.prototype.fulltrim = function() {

return this.replace(/(?:(?:^|\n)\s+|\s+(?:$|\n))/g,"").replace(/\s+/g," ");

}
*/