// JavaScript Document
function getKey(e) {
      return window.event ? window.event.keyCode
           : e            ? e.which
           :                0;
   	}
function isPrintable(key){
      return ( key >= 32 && key < 127 );
    }
function isNumber(key){
		return ( (key >= 48 && key <= 57) || (key >= 96 && key <= 105) ); 
	}
function findKey(key){
	var k=[];
	k[48]=0;
	k[49]=1;
	k[50]=2;
	k[51]=3;
	k[52]=4;
	k[53]=5;
	k[54]=6;
	k[55]=7;
	k[56]=8;
	k[57]=9;
	k[96]=0;
	k[97]=1;
	k[98]=2;
	k[99]=3;
	k[100]=4;
	k[101]=5;
	k[102]=6;
	k[103]=7;
	k[104]=8;
	k[105]=9;
	k[65]='a'; 	
	k[66]='b'; 	
	k[67]='c'; 	
	k[68]='d'; 	
	k[69]='e'; 	
	k[70]='f';
	k[71]='g';
	k[72]='h';
	k[73]='i';
	k[74]='j';
	k[75]='k';
	k[76]='l';
	k[77]='m';
	k[78]='n';
	k[79]='o';
	k[80]='p';
	k[81]='q';
	k[82]='r';
	k[83]='s';
	k[84]='t';
	k[85]='u';
	k[86]='v';
	k[87]='w';
	k[88]='x';
	k[89]='y';
	k[90]='z';
	return k[key];
}
function isAlpha(elem){
	var z = gid(elem);
	var x =getValue(elem);
	if(x=='') return true;
	var alphaExp = /^[0-9a-zA-Z.,"?!-@$&]+$/;
	if(x.match(alphaExp)){
		return true;
	}else{
		alert("use only letters, numbers periods commas question marks ect... (the usual simple stuff)");
		z.focus();
		setRed(elem);
		return false;
	}
}

function mousehand(){
document.body.style.cursor = 'hand';
}
function mouseauto(){
document.body.style.cursor = 'auto';
}
function mousewait(){
document.body.style.cursor = 'wait';
}
function mhand(){
document.body.style.cursor = 'hand';
}
function mauto(){
document.body.style.cursor = 'auto';
}
function damnit(){
	alert('fuckkk');
}
//  //  mouseevents
function proto(wht,name,func){
	for(var x in wht){
		var z = wht[x];
		z[name]=func;
	}
}
function pro(wht,name,func){
	wht[name]=func;
}
//  //  proto
function setStyle(wht,stylex,setTo){
	var x = gid(wht);
	if(!x) return false;
	x.style[stylex]=setTo;
}//  //  setStyle
Date.prototype.addHours = function (n) {this.setHours (this.getHours () + n)}

Date.prototype.toDateString = function () {return [this.getDate(), this.getMonth() + 1, this.getFullYear()].join ('-')}

Date.prototype.toSql = function () {return [this.getFullYear(),  this.getDate(), this.getMonth() + 1].join ('-')}

Date.prototype.toString = function () {return [this.toDateString(), this.toTimeString()].join (' ')}

function showDate(x){
	var year = x.charAt(0)+x.charAt(1)+x.charAt(2)+x.charAt(3);
	var month = x.charAt(5)+x.charAt(6);
	var day = x.charAt(8)+x.charAt(9);
	month = month-1;
	var mon = gsa.date.MonthName[month];
	mon=mon.charAt(0)+mon.charAt(1)+mon.charAt(2);
	if(day.charAt(0)==0){ var d = day.charAt(1); }else{ var d=day; }
	var result = mon+' '+d;
	return result;
}//  //  showdate
function changeDate(x){
	var z = [];
	if(x.indexOf('/')!=-1){
	z=x.split("/");
	var d = z[2]+'-'+z[0]+'-'+z[1]; 
	d=d.replace(' ','');
	return d; 
	}
	return x;
}
function displayDate(x){
	var z = [];
	if(x.indexOf('-')!=-1){
	z=x.split("-");
	var d = z[1]+'/'+z[2]+'/'+z[0]; 
	d=d.replace(' ','');
	return d; 
	}
	return x;
}

function displayDateFromStamp(x){
	var z = []; var f = [];
	if(x.indexOf(' ')!=-1){
	f=x.split(" ");
	if(f[0].indexOf('-')!=-1){
	z=f[0].split("-");
	var d = z[1]+'/'+z[2]+'/'+z[0]; 
	d=d.replace(' ','');
	return d; 
	}
	}
	return x;
}

function trySplit(x,y){
	if(y.indexOf(x)!=-1) return y.split(x);
	else
	return false;
}

function splitDateTime(x){
	if(!x)return false;
	if(x.indexOf(' ')!=-1){
		var y=[]; var r=[];
		y = x.split(' ');
		r.date = y[0];
		var t = y[1];
		var time = trySplit(':',t);
		if(time)r.time = time[0]+':'+time[1];
		else r.time=false;
		var d = trySplit('-',r.date);
		if(d) r.showDate=d[1]+'-'+d[2]+'-'+d[0];
		else
			r.showDate='';
		return r;
	}else
		return false;
}

			
	
	
//  //  dates
/////////
function ge(x){
	if(document.getElementById(x)) {
		var z = document.getElementById(x);
		return z;
	}else{
		setError('no element - ge - '+x);
	}
	
}//  //  get element
function gid(x){
	if(document.getElementById(x)) {
	var z = document.getElementById(x);
	return z;
	}else{
		setError('no element - gid - '+x);
	}
}//  //  gid
//  //  element
function closelayer(layerdiv){
	if(document.getElementById(layerdiv)){
		document.getElementById(layerdiv).style.display = 'none';
		mouseauto()
	}else{
		setError('no element - closelayer - '+layerdiv);
	}
}//  //  closelayer
function openlayer(layerdiv){
	if(!document.getElementById(layerdiv)){ setError('no element found - openlayer - '+layerdiv); return; }
	document.getElementById(layerdiv).style.display = 'block';
	}//  //  openlayer
function emptylayer(x){
	if(!document.getElementById(x)){ setError('no element found - emptylayer - '+x); return; }
	document.getElementById(x).value='';
}
function clearValue(x){
	if(!document.getElementById(x)){ setError('no element found - clearValue - '+x); return; }
	document.getElementById(x).value='';
}//  //  empty layer / clear value
function clearselect(x){
	if(!document.getElementById(x)){ setError('no element found - clearselect - '+x); return; }
	document.getElementById(x).selectedIndex=0;
}//  //  clear select
function eraselayer(x){
	if(document.getElementById(x))document.getElementById(x).innerHTML='';
}//  //  erase layer
//  //  layer
function setValue(x,y){
	if(!document.getElementById(x)){ setError('no element found - setValue - '+x); return; }
	document.getElementById(x).value = y;
}//  //  setValue
function getValue(x,y){
	if(!document.getElementById(x)){ setError('no element found - getValue - '+x); return; }

		
	var z = document.getElementById(x).value;
	if(y){
		if(z=='') return false;
	}
	return z;
}//  //  getValue
//  //  value
function checkon(x){
	if(!document.getElementById(x)){ setError('no element found - checkon - '+x); return; }
	document.getElementById(x).checked = true;
	
}//  //  checkon
function checkoff(c){
	if(!document.getElementById(c)){ setError('no element found - clearoff - '+c); return; }
	document.getElementById(c).checked = false;
		
}//  //  checkoff
function setcheck(x,y){
	if(!document.getElementById(x)){ setError('no element found - setcheck - '+x); return; }
	document.getElementById(x).checked = y;
}//  //  setcheck
function getcheck(x){
	if(!document.getElementById(x)){ setError('no element found - getcheck - '+x); return; }
	var z = document.getElementById(x).checked;
	return z;
}//  //  getcheck
//  //  check
function sethtml(x,y){
	if(!document.getElementById(x)){ setError('no element found - sethtml - '+x); return; }
	document.getElementById(x).innerHTML=y;
}//  //  sethtml
function gethtml(x){
	if(!document.getElementById(x)){ setError('no element found - gethtml - '+x); return; }
	var z = document.getElementById(x).innerHTML;
	return z;
}//  //  gethtml
//  //  html
function getRadio(radioObj) {
	if(!radioObj)return "";
	if(!document.getElementById(radioObj)){ setError('no element found - getRadio - '+radioObj); return; }
	var radioLength = radioObj.length;
	if(radioLength == undefined)
		if(radioObj.checked)
			return radioObj.value;
		else
			return "";
	for(var i = 0; i < radioLength; i++) {
		if(radioObj[i].checked) {
			return radioObj[i].value;
		}
	}
	return "";
}//  //  getradio
//  //  get and set
//////////
var Urlset = {

    // public method for url encoding
    encode : function (string) {
        return escape(this._utf8_encode(string));
    },

    // public method for url decoding
    decode : function (string) {
        return this._utf8_decode(unescape(string));
    },

    // private method for UTF-8 encoding
    _utf8_encode : function (string) {
        string = string.replace(/\r\n/g,"\n");
        var utftext = "";

        for (var n = 0; n < string.length; n++) {

            var c = string.charCodeAt(n);

            if (c < 128) {
                utftext += String.fromCharCode(c);
            }
            else if((c > 127) && (c < 2048)) {
                utftext += String.fromCharCode((c >> 6) | 192);
                utftext += String.fromCharCode((c & 63) | 128);
            }
            else {
                utftext += String.fromCharCode((c >> 12) | 224);
                utftext += String.fromCharCode(((c >> 6) & 63) | 128);
                utftext += String.fromCharCode((c & 63) | 128);
            }

        }

        return utftext;
    },

    // private method for UTF-8 decoding
    _utf8_decode : function (utftext) {
        var string = "";
        var i = 0;
        var c = c1 = c2 = 0;

        while ( i < utftext.length ) {

            c = utftext.charCodeAt(i);

            if (c < 128) {
                string += String.fromCharCode(c);
                i++;
            }
            else if((c > 191) && (c < 224)) {
                c2 = utftext.charCodeAt(i+1);
                string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
                i += 2;
            }
            else {
                c2 = utftext.charCodeAt(i+1);
                c3 = utftext.charCodeAt(i+2);
                string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
                i += 3;
            }

        }

        return string;
    }

}//  //  encode url
function limitChar(str,num,ws){
	var i=0; var result=[];
	for(i=0; i<num; i++){
		if(ws){
			if(str.charAt(i)==' ' && i>2) return result.join("");
		}
		result.push(str.charAt(i));
	}
	return result.join("");
}//  //  limitchar
function randomString(x) {
	var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
	var string_length = 15;
	if(x)string_length = x;
	var randomstring = '';
	for (var i=0; i<string_length; i++) {
		var rnum = Math.floor(Math.random() * chars.length);
		randomstring += chars.substring(rnum,rnum+1);
	}
	return randomstring;
}//  //  random string
function trim(inputString) 
{
  if (typeof inputString == "string")
  {
    var firstNonWhite = inputString.search(/\S/);

    if (firstNonWhite != -1)
    {
      for (var i=inputString.length-1; i >= 0; i--)
      {
        if (inputString.charAt(i).search(/\S/) != -1)
        {
          inputString = inputString.substring(firstNonWhite, i+1);
          break;
        }
      }
    }
  }

  return inputString;
}//  //  trim
//  //  strings
function mouseX(evt) {
	if (!evt) evt = window.event; 
		if (evt.pageX) 
			return evt.pageX; 
		else if (evt.clientX)
			return evt.clientX + (document.documentElement.scrollLeft ?  document.documentElement.scrollLeft : document.body.scrollLeft); 
		else 
		return 0;}
function mouseY(evt) {
		if (!evt) evt = window.event; 
		if (evt.pageY) return evt.pageY; 
			else if (evt.clientY)return evt.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop); 
			else return 0;
		}
function followPanel(){
	this.offX = 0;          // X offset from mouse position
	this.offY = 0; 
	this.move = function(wht) {
		var evt = window.event;
		if (document.getElementById(wht)) {
			var obj = document.getElementById(wht).style; 
			obj.visibility = 'visible';
			var adjy = this.offY-50;
			obj.left = 	(parseInt(mouseX(evt))+this.offX) + 'px';
			obj.top = 	(parseInt(mouseY(evt))+this.offY-200) + 'px';}
	}
	this.moveright=function(wht) {
		var evt = window.event;
		if (document.getElementById) {
			var obj = document.getElementById(wht).style; 
			obj.visibility = 'visible';
			obj.left = (parseInt(mouseX(evt))+20) + 'px';
			obj.top = (parseInt(mouseY(evt))+this.offY) + 'px';}
	}
}
//  //  follow

function followpre(){	
	if (!gsa.display.IE) document.captureEvents(Event.MOUSEMOVE)
	document.onmousemove = getMouseXY;
	gsa.display.mouse=[];
	gsa.display.mouse.x=0;
	gsa.display.mouse.y=0;
}//  //  followpre
function getMouseXY(e) {
	
	if (gsa.display.IE) { // grab the x-y pos.s if browser is IE
		gsa.display.mouse.x = event.clientX + document.body.scrollLeft
		gsa.display.mouse.y = event.clientY + document.body.scrollTop
	 } else {  // grab the x-y pos.s if browser is NS
		gsa.display.mouse.x = e.pageX
		gsa.display.mouse.y = e.pageY
	}  
	 if (gsa.display.mouse.x < 0){gsa.display.mouse.x = 0}
	 if (gsa.display.mouse.y < 0){gsa.display.mouse.y = 0} 
}
function followMe(wht){
		this.topOffSet =0;
		this.wht=wht;
		this.hx=0;
		this.width=0;
		this.topOffSet=0;
		this.leftOffSet=0;
		this.leftOverride=0;
		this.topOverride=0;
		this.rightOverride=0;
		this.bottomOverride=0;
	this.center = function(){
		var info = screenInfo();
		if(gsa.display.IE){
			var ww = info.width/2;
			var www = this.width/2;
			var xxx = ww-www+info.scrollleft;
			var hh = info.height/2;
			var hhh = this.hx/2;
			var yyy = hh-hhh+info.scrolltop;
		}else{
			var ww = info.width/2;
			var www = this.width/2;
			var xxx = ww-www+info.scrollleft;
			//alert(ww+" "+this.width+" "+info.scrollleft);
			var hh = info.height/2;
			var hhh = this.hx/2;
			var yyy = hh-hhh+info.scrolltop;
		}
		
		var dis = gid(this.wht);
		dis.style.left=xxx+'px';
		if(yyy<0)yyy=0;
		dis.style.top=yyy+'px';
		var chg = gid(this.wht); 
		chg.style.width = this.width+'px';
		chg.style.height = this.hx+'px';
	}
	this.move=function(){
		var ckk = '';
		var xx = gsa.display.mouse.x;
		var yy = gsa.display.mouse.y;
		var xxx = xx;
		var yyy = yy;
		var info = screenInfo(xx,yy);
		var yz = yy;
		var ss = this.hx-this.topOffSet;
		var sc = info.bottom-ss;
		if(gsa.display.IE){
			if(info.right<this.width+20){
				 xx=info.width-this.width-20+info.scrollleft;
				 ckk+='right ';}
			else if(info.left<Math.abs(this.leftOffSet)){
				xx=20+info.scrollleft;
				ckk+='left ';
			}
			else{
				ckk+='middle ';
				xx=xx+this.leftOffSet+info.scrollleft;
			}
			
			if(sc<0)	{
				ckk+='bottom ';
				yy=info.height-this.hx-20+info.scrolltop;
			}else if(info.top<30+this.topOffSet){
				ckk+='top ';
				yy=20+info.scrolltop;
			}else{
				ckk+='middle ';
				yy=yy-this.topOffSet+info.scrolltop;	}
		}else{
			if(info.right<this.width+20)
				xx=info.width-this.width-20+info.scrollleft;
			else if(info.left<info.scrollleft+Math.abs(this.leftOffSet))
				xx=20+info.scrollleft;
			else
				xx=xx+this.leftOffSet;
				
				
			if(info.bottom<this.hx-this.topOffSet)
				yy=info.height-this.hx-20+info.scrolltop;
			else if(info.top<30+this.topOffSet)
				yy=20+info.scrolltop;
			else 
				yy=yy-this.topOffSet;
			 
		}
		
			//alert(ckk+" bottom "+info.bottom+" < "+this.hx+" - "+this.topOffSet+" + "+info.scrolltop+" yz"+yz+" || "+ss+" "+sc+" || "+info.height);
		if(this.zerox==0)
		xxx = xx-gsa.display.zerox;
		else
		xxx = xx-this.zerox;
		
		if(this.zeroy==0)
		yyy = yy-gsa.display.zeroy;
		else
		yyy = yy-this.zeroy;
		
		var dis = gid(this.wht);
		dis.style.left=xxx+'px';
		dis.style.top=yyy+'px';
		var chg = gid(this.wht);
		chg.style.width = this.width+'px';
		chg.style.height = this.hx+'px';
		//chg.style.overflow='hidden';
	}
	this.zero = function(x,y){
		this.zerox=x;
		this.zeroy=y;
	}
	this.offset = function(top,left){
		this.leftOffSet=left;
		this.topOffSet=top;
	}
	this.override = function(top,bottom,left,right){
		this.bottomOverride=top;
		this.leftOverride=left;
		this.rightOverride=right;
		this.topOverride = top;
	}
	this.dim = function(w,h){
		this.width = w;
		this.hx = h;
	}
	
}
function getWindow(){
   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;
  }
  gsa.display.dim=[];
  gsa.display.dim.width=myWidth;
  gsa.display.dim.height=myHeight;
}
function getWindowWidth(){
  var ww = 0;
  d = document;
   if ( typeof window.innerWidth != 'undefined' )
     ww = window.innerWidth;  // NN and Opera version
   else
   {
     if ( d.documentElement
       && typeof d.documentElement.clientWidth!='undefined'
       && d.documentElement.clientWidth != 0 )
       ww = d.documentElement.clientWidth;
     else
       if ( d.body
         && typeof d.body.clientWidth != 'undefined' )
         ww = d.body.clientWidth;
     else alert ("Can't identify window width - please tell me which browser you are using.")
   }
   return ww;
}

function screenInfo(xx,yy){

  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;
  }
  var res = [];
  res.width=myWidth;
  res.height=myHeight;
  res.scrolltop = document.documentElement.scrollTop;
  res.scrollleft= document.documentElement.scrollLeft;
 	var aa 	   = yy-res.scrolltop;
	
		
	res.top = aa;
	res.left = xx-res.scrollleft;
	if(gsa.display.IE){
		res.right = Math.abs(xx-res.width);
		res.left = xx;
		res.bottom = res.height-yy;
		res.top=yy;
	}else{
		res.bottom = res.height-aa;
		res.left = xx-res.scrollleft;
		res.right = Math.abs(xx-res.width-res.scrollleft+20);
	}
	
return res;
}
//  //  follow
function sortAss(iAssocArray) {
    var newArrIndex = new Array;
	var temp=[];
    for (var property in iAssocArray) {
        newArrIndex[newArrIndex.length] = property;
		
    }
	newArrIndex.sort();
    return newArrIndex;
}//  //  sortAss
function sortAssoc(arr){
	var temp = []; var result=[];
	for(var x in arr){
		temp.push(x);
	}
	temp.sort();
	var len=temp.length;
	for(var i=0; i<len; i++){
		result[temp[i]]=arr[temp[i]];
	}
	return result;
}
function sortBy(arr,wht){
	gsa.test=[]; gsa.test2=[];
	var temp = []; var result=[]; var temp2 = [];
	for(var x=0; x<arr.length; x++){
		var z = arr[x];
		if(z[wht]){
			gsa.test.push(z[wht]);
			gsa.test2.push(z);
			temp.push(z[wht]);
			temp2.push(z);
		}
	}
	gsa.test=temp;
	temp.sort();
	gsa.test2=[];
	gsa.test2=temp;
	var len=temp.length;
	for(var i=0; i<len; i++){
		gsa.test.push(temp[i]);
		result.push(temp2[temp[i]]);
	}
	return result;
}
//  //  sorting 
function getForm(formName,tableName){
	var elems=document.getElementsByName(formName);
	var temp =[];
	for(var i=0;i<elems.length;i++){
		var elem = elems[i].id.replace(tableName+"_",'');
		
		temp[elem]=elems[i].value;
	}
	
	return temp;

}//  //  get Form
function captializeFirstInForm(wht){
	var val = getValue(wht);
	var x = [];
	x=val.split("");
	x[0]=x[0].toUpperCase();
	setValue(wht,x.join(""));
}//  //  captializeFirstInForm
function selectOptionInsert(id,text,value) {
if(!document.getElementById(id))return;
  var elSel = document.getElementById(id);
    var elOptNew = document.createElement('option');
    elOptNew.text = text;
    elOptNew.value = value;
    var elOptOld = elSel.options[elSel.selectedIndex];  
    try {
      elSel.add(elOptNew, elOptOld); // standards compliant; doesn't work in IE
    }
    catch(ex) {
      elSel.add(elOptNew, elSel.selectedIndex); // IE only
   
  }
}//  //  insert select option
//  //  form
function setRatio(x1,y1,x2){
	var r = parseInt(y1)*parseInt(x2)/parseInt(x1);
	return r;
}
function removeOption() {
  var elSel = document.getElementById('zoneselect1');
  elSel.remove(0);
}//  //  insert remove
function stripPhone(x){
		var z = []; var r=''; 
		z=x.split("("); r=z.join("");
		z=r.split(")"); r=z.join("");
		z=r.split(" "); r=z.join("");
		z=r.split("-"); r=z.join("");
		var zz = r.split('');
		if(zz[0]=='1') zz.shift();
		r=limitChar(r,10);
		if(zz.length==7){
			r = zz[0]+zz[1]+zz[2]+'-'+zz[3]+zz[4]+zz[5]+zz[6];
		}else if(zz.length==10){
			r = zz[0]+zz[1]+zz[2]+'-'+zz[3]+zz[4]+zz[5]+'-'+zz[6]+zz[7]+zz[8]+zz[9];
		}else{
			r = zz.join("");
		}
		return r;
	}
function setRed(x){
	var bx = gid(x);
	bx.style.border='1px red solid';
}
function borderOff(x){
	var bx = gid(x);
	bx.style.border='';
}//  //  setBoder
function setFocus(x)
  {
	if(gid(x))
  document.getElementById(x).focus();
  else return false;
  }
function getVal(x){
	if(document.getElementById(x)){
		var z = document.getElementById(x).value;
		if(z=='')return false;
		return z;
	}
	return false;
}
		





