
  /****************************** string functions ***********************************/
  
  String.prototype.trim = function(){
    return this.replace(/(^\s*)|(\s*$)/g, "");
  }
  
  String.prototype.toTitleCase = function(){
    var s,c; c = this.charAt(0); s = c.toUpperCase();      
    for (n=1; n< this.length; n++) {c = this.charAt(n); if (this.charAt(n-1) == " "){
    s=  s+c.toUpperCase();} else {s=s+c.toLowerCase();}}return s;
  }
  
  String.prototype.toNumber = function(){return this*1};

  String.prototype.URIencode = function(){return escape(this);}
  
  String.prototype.URIdecode = function(){if(this.search(/ /)>=0) {return this;}else{
  return unescape(this);}}
  
  /****************************** number functions ***********************************/
  
  Number.prototype.round = function(a){
    a=(!a?2:a);return Math.round(this * Math.pow(10,a))/Math.pow(10,a);
  }
  
  Number.prototype.toCurrency = function(){
    var c=this.round() + '';c=(c.charAt(0)=='.'?'0'+c:c);if (c.charAt(c.length-3)=='.'){
    return c;}else if(c.charAt(c.length-2)=='.'){return c+'0';} else {return c+'.00';}
  }
  
  /******************************* image functions ***********************************/
  
  function preloadImages() {
    var d=document; if(d.images){ if(!d.p) d.p=new Array();
    var i,j=d.p.length,a=preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.p[j]=new Image; d.p[j++].src=a[i];}}
  }
  
  function swapImage() {
    var i,j=0,x,a=swapImage.arguments; document.sr=new Array; for(i=0;i<(a.length-2);i+=3)
    if ((x=findElement(a[i]))!=null){document.sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
  }
  
  function swapImgRestore() {
    var i,x,a=document.sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
  }
  
  /*************************** querystring functions *********************************/
  
  function getArgs() {
    var args=new Object();var query=location.search.substring(1);
    var pairs=query.split("&");for(var i = 0; i < pairs.length; i++) {
  	var pos = pairs[i].indexOf('='); 	if (pos == -1) continue;                 
  	var argname = pairs[i].substring(0,pos).toLowerCase(); var value = pairs[i].substring(pos+1);   
  	args[argname] = value.URIdecode();} return args; 
  }
  
  function getArg(argname)
  {
    argname=argname.toLowerCase();var args = getArgs();if(args[argname]){
    return args[argname];}else{return "";}
  }
  
  /********************** DOM/browser compatibility functions ***********************/
  
  function findElement(n, d) {
    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=findElement(n,d.layers[i].document); 
    if(!x && document.getElementById) x=document.getElementById(n); return x;
  }
  
  function xfindElement(n, d) {
    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=findElement(n,d.layers[i].document); return x;
  }


  function showElement(n, d){
    var e=findElement(n, d);e.visibility = 'show';e.style.visibility = 'visible';
  }   

  function hideElement(n, d){
    var e=findElement(n, d);e.visibility = 'hide';e.style.visibility = 'hidden';
  }   

  function positionElement(n, x, y, d){
    var e=findElement(n, d);e.left=x;e.top=y;e.style.left=x;e.style.top=y;
  }   

  function resizeElement(n, x, y, d){
    var e=findElement(n, d);e.width=x;e.height=y;e.style.width=x;e.style.height=y;
  }   

  function writeHTML(n, s, d){
    var e=findElement(n,d);if(e.open){e.open();e.document.write(s);e.close();
    } else{e.innerHTML = s;}
  }

  function setColor(n, c){
    var e=findElement(n);e.backgroundcolor=c;e.style.backgroundColor=c;  
  }

  function getElementTop(n, d){
    var e=findElement(n);var x=e.offsetTop;var p=e; while(p=p.offsetParent){x+=p.offsetTop};
    return x;
  }

  function getElementLeft(n, d){
    var e=findElement(n);var x=e.offsetLeft;var p=e; while(p=p.offsetParent){x+=p.offsetLeft};
    return x;
  }

  function getElementRight(n, d){
    var e=findElement(n);var x=getElementLeft(n) + e.offsetWidth;
    return x;
  }

  function getElementBottom(n, d){
    var e=findElement(n);var x=getElementTop(n) + e.offsetHeight;
    return x;
  }

  function isInside(n, x, y, d){
    return(x>=getElementLeft(n) && x<=getElementRight(n) && y>=getElementTop(n)
    && y<=getElementBottom(n));
  }

  function getEventPageX(){if(event.pageX)return event.pageX;else return event.clientX;}
  function getEventPageY(){if(event.pageY)return event.pageY;else return event.clientY;}

  /******************************** menu functions ***********************************/

  function showMenu(n, m, dx, dy){
    if(document.curMenu)hideElement(document.curMenu);document.curMenu=m;
    positionElement(m,getElementLeft(n)+dx,getElementTop(n)+dy);showElement(m);
  }

  function hideMenu(n, m){
    var x=getEventPageX(); var y=getEventPageY();
    if(!isInside(n, x, y)&&!isInside(m, x, y)) hideElement(m);
  }

  /******************************* error functions ***********************************/
    
  function suppressErrors(m,u,l){return true;}
  
  function showErrors(m,u,l){return false;}
  

  /******************************** date functions ***********************************/

	function curDate()	{
		var days = new Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday");
		var d=new Date();	var day=days[d.getDay()-0];	return day.toUpperCase() + " " + 
		(d.getMonth()+1) + "." + (d.getDate()) + "." + (d.getYear());	
	}


  /******************************** popup functions ***********************************/

  function showPopup(u, w, h, r, s)
  {
    var args = 'width=' + w + ',height=' + h + ',top=' + (screen.availHeight-h)*.5
    + ',left=' + (screen.availWidth-w)*.5; if(r) args+=',resizable=yes'; 
    if(s) args+=',scrollbars=yes'; window.open(u, "popup",args);
  }
