// Common Javascript Library - ver 1.1
// Copyright (c) 2007 - Advantia Software
// --------------------------------------
// written and maintained by Mario Stocco
// last updated on Friday June 8th, 2007


//String Formatting Functions
function prettyText(textValue) {var prettified=trim(replaceChar(textValue,'_',' '));if(prettified.length>0){var capNext=true;var trimmedText=new String(prettified);prettified='';for (var index=0; index<trimmedText.length; index++){if((prettified.charAt(index -1)==' ')||(prettified.charAt(index -1)=='-')||(prettified.charAt(index -1)=='/')){capNext=true;}switch(index){case 2:if((prettified.indexOf('Mc')==0)||(prettified.indexOf("O'")==0)){capNext=true;}break;case 3:if((prettified.indexOf('Mac')==0)){capNext=true;}break;}if(capNext){prettified += trimmedText.charAt(index).toUpperCase();} else {prettified += trimmedText.charAt(index).toLowerCase();}capNext=false;}}return prettified;}
function ucase(textValue) {return trim(textValue.toUpperCase());}
function lcase(textValue) {return trim(textValue.toLowerCase());}
function trim(textValue) {if(textValue.length>0){textValue=rightTrim(textValue);textValue=leftTrim(textValue);}return textValue;}
function rightTrim(textValue) {var w_space=String.fromCharCode(32);var v_length=textValue.length;var strTemp="";if(v_length<0){return'';}var iTemp=v_length-1;while(iTemp>-1){if(textValue.charAt(iTemp)==w_space){}else{strTemp=textValue.substring(0,iTemp+1);break;}iTemp=iTemp-1;}return strTemp;}
function leftTrim(textValue) {var w_space=String.fromCharCode(32);if(v_length<1){return'';}var v_length=textValue.length;var strTemp='';var iTemp=0;while(iTemp<v_length){if(textValue.charAt(iTemp)==w_space){}else{strTemp=textValue.substring(iTemp,v_length);break;}iTemp=iTemp+1;}return strTemp;}
function replaceChar(textValue,oldChar,newChar) {var splitText=textValue.split(oldChar);var cleanText=new String(splitText[0]);for(index=1;index<splitText.length;index++){cleanText=cleanText+newChar+splitText[index];}return cleanText;}

function dateformat(odbcdatetime,format) {
	var datearray=odbcdatetime.substr(0,10).split('-');
	var datestring=odbcdatetime;
	try{
		var m=new Number(datearray[1] - 1);
		var d=datearray[2].split(' ');
		var dateobject=new Date(datearray[0],m,d[0]);
		m=null;
		d=null;
	}catch(err){
		return datestring;
	}
	var weekday=new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');
	var month=new Array('January','February','March','April','May','June','July','August','September','October','November','December');
	switch(format){
		case 'full':
			datestring=weekday[dateobject.getDay()];
			datestring+=', '+month[dateobject.getMonth()];
			datestring+=' '+dateobject.getDate();
			datestring+=', '+dateobject.getFullYear();
			break;
		case 'long':
			datestring=month[dateobject.getMonth()];
			datestring+=' '+dateobject.getDate();
			datestring+=', '+dateobject.getFullYear();
			break;
		case 'short':
			datestring=month[dateobject.getMonth()].substr(0,3).toUpperCase()+'-';
			if(dateobject.getDate()<10){
				datestring+='0';
			}
			datestring+=dateobject.getDate();
			datestring+='-' + dateobject.getFullYear();
			break;
		case 'key':
			datestring=Math.round(((((Date.parse(month[dateobject.getMonth()]+' '+dateobject.getDate()+', '+dateobject.getFullYear())/1000)-946713600)/60)/60)/24);
			break;
		case 'odbc':
			datestring=dateobject.getFullYear()+'-';
			if(dateobject.getMonth()<9){
				datestring+='0';
			}
			datestring+= (dateobject.getMonth()+1).toString()+'-';
			if(dateobject.getDate()<10){
				datestring+='0';
			}
			datestring+=(dateobject.getDate()).toString();
			break;
		default:
			alert(datestring + ',' + format);
	}
	weekday=null;month=null;
	return datestring;
}
function dollarformat(num) {var string=new String(num);if(num==''){return '0.00';}if(!isNaN(num)){if(string.indexOf('.')==-1){return string+'.00';}else{var parts=string.split('.');var whole=parts[0];var decimal=parts[1];if(whole.length==0){whole='0';}switch(decimal.length){case 0: decimal='00';break;case 1: decimal+='0';break;case 2: decimal=decimal;break;default:decimal=Math.round(decimal.substr(0,3) /10);if(decimal==100){whole=new Number(whole);whole++;decimal='00';}else if(decimal==0){decimal='00';}else if(decimal<10){decimal='0' + decimal.toString();}}return whole+'.'+decimal;}}return '0.00';}
function telephoneformat(value) {if(isNaN(value)==false){if(value.toString().length==10){var areacode=value.toString().substr(0,3);var prefix=value.toString().substr(3,3);var suffix=value.toString().substr(6,4);return'('+areacode+') '+prefix+'-'+suffix;}}return value;}
function timeformat(odbcdatetime,format) {var timearray=odbcdatetime.substr(11,9).split(':');var timestring=odbcdatetime;var timeindicator=' AM';try{var timeobject=new Date(1999,11,31,timearray[0],timearray[1],timearray[2],0);}catch(err){return'error';}if(timearray[0]>12){timeindicator=' PM';if(format.indexOf('h')!=-1){timearray[0]=(timearray[0]-12);}}if((format.indexOf('hh')!=-1)||(format.indexOf('HH')!=-1)){if(timearray[0].toString().length==1){timearray[0]='0'+timearray[0].toString();}}timestring=timearray[0]+':'+timearray[1];if((format.indexOf('s')!=-1)||(format.indexOf('S')!=-1)){timestring+=':'+timearray[2];}if((format.indexOf('t')!=-1)||(format.indexOf('T')!=-1)){timestring+=timeindicator;}return timestring;}
function titleformat(textValue) {var prettified=trim(replaceChar(textValue,'_',' '));if(prettified.length>0){var capNext=true;var trimmedText=new String(prettified);prettified='';for(var index=0;index<trimmedText.length;index++){if((prettified.charAt(index -1)==' ')||(prettified.charAt(index-1)=='.')||(prettified.charAt(index -1)=='-')||(prettified.charAt(index-1)=='/')){capNext=true;}if((prettified.charAt(index -1)=="'")&&(prettified.charAt(index-2)=='O')){capNext=true;}if((prettified.charAt(index-1)=="c")&&(prettified.charAt(index-2)=='M')){capNext=true;}if((prettified.charAt(index -1)=="c")&&(prettified.charAt(index-2)=='a')&&(prettified.charAt(index-3)=='M')){capNext=true;}if(capNext){prettified+=trimmedText.charAt(index).toUpperCase();}else{prettified+=trimmedText.charAt(index).toLowerCase();}capNext=false;}}return prettified;}
function asciiformat(text) {var modified=new String('');var thisChar;var thisCharCode;for(var index=0;index<text.length;index++){thisChar=text.charAt(index);thisCharCode=text.charCodeAt(index);if(thisCharCode>128){switch(thisCharCode){case 160:thisChar=' ';break;case 169:thisChar='(c)';break;case 174:thisChar='(r)';break;case 188:thisChar='1/4';break;case 189:thisChar='1/2';break;case 190:thisChar='3/4';break;case 215:thisChar='x';break;case 8216:thisChar="'";break;case 8217:thisChar="'";break;case 8218:thisChar=',';break;case 8220:thisChar='"';break;case 8221:thisChar='"';break;case 8226:thisChar='-';break;case 8482:thisChar='(tm)';break;case 8230:thisChar='...'; break;default:thisChar='';}}modified+=thisChar;}return modified;}

// Other Functions
function sha1(msg) {function rotate_left(n,s){var t4=(n<<s)|(n>>>(32-s));return t4;};function lsb_hex(val){var str="";var i;var vh;var vl;for(i=0;i<=6;i+=2 ){vh=(val>>>(i*4+4))&0x0f;vl=(val>>>(i*4))&0x0f;str+=vh.toString(16)+vl.toString(16);}return str;};function cvt_hex(val){var str="";var i;var v;for(i=7;i>=0;i-- ){v=(val>>>(i*4))&0x0f;str += v.toString(16);}return str;};function Utf8Encode(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;};var blockstart;var i, j;var W=new Array(80);var H0=0x67452301;var H1=0xEFCDAB89;var H2=0x98BADCFE;var H3=0x10325476;var H4=0xC3D2E1F0;var A, B, C, D, E;var temp;msg=Utf8Encode(msg);var msg_len=msg.length;var word_array=new Array();for(i=0;i<msg_len-3;i+=4){j=msg.charCodeAt(i)<<24|msg.charCodeAt(i+1)<<16|msg.charCodeAt(i+2)<<8|msg.charCodeAt(i+3);word_array.push(j);} switch(msg_len % 4){case 0:i=0x080000000;break;case 1:i=msg.charCodeAt(msg_len-1)<<24|0x0800000;break;case 2:i=msg.charCodeAt(msg_len-2)<<24|msg.charCodeAt(msg_len-1)<<16|0x08000;break;case 3:i=msg.charCodeAt(msg_len-3)<<24|msg.charCodeAt(msg_len-2)<<16|msg.charCodeAt(msg_len-1)<<8	| 0x80;break;}word_array.push(i);while((word_array.length % 16)!= 14)word_array.push(0);word_array.push(msg_len>>>29);word_array.push((msg_len<<3)&0x0ffffffff);for(blockstart=0;blockstart<word_array.length;blockstart+=16 ){for(i=0;i<16;i++)W[i]=word_array[blockstart+i];for(i=16;i<=79;i++)W[i]=rotate_left(W[i-3] ^ W[i-8] ^ W[i-14] ^ W[i-16],1);A=H0;B=H1;C=H2;D=H3;E=H4;for(i=0;i<=19;i++){temp=(rotate_left(A,5)+((B&C)|(~B&D))+E+W[i]+0x5A827999)& 0x0ffffffff;E=D;D=C;C=rotate_left(B,30);B=A;A=temp;}for(i=20;i<=39;i++){temp=(rotate_left(A,5)+(B ^ C ^ D)+E+W[i]+0x6ED9EBA1)& 0x0ffffffff;E=D;D=C;C=rotate_left(B,30);B=A;A=temp;}for(i=40;i<=59;i++){temp=(rotate_left(A,5)+((B&C)|(B&D)|(C&D))+E+W[i]+0x8F1BBCDC)& 0x0ffffffff;E=D;D=C;C=rotate_left(B,30);B=A;A=temp;}for(i=60;i<=79;i++){temp=(rotate_left(A,5)+(B ^ C ^ D)+E+W[i]+0xCA62C1D6)& 0x0ffffffff;E=D;D=C;C=rotate_left(B,30);B=A;A=temp;} H0=(H0+A)& 0x0ffffffff;H1=(H1+B)& 0x0ffffffff;H2=(H2+C)& 0x0ffffffff;H3=(H3+D)& 0x0ffffffff;H4=(H4+E)& 0x0ffffffff;} var temp=cvt_hex(H0)+cvt_hex(H1)+cvt_hex(H2)+cvt_hex(H3)+cvt_hex(H4);return temp.toLowerCase();} 
function typeOf(value) {var s=typeof value;if(s==='object'){if(value){if(value instanceof Array){s='array';}}else{s='null';}}return s;}
function randrange(low,high) {return Math.floor(Math.random()*(high-low+1))+low;}

