var ajaxQueue = new Array();

function pickleForm(formobj) {
	var formfields=new String('');
	for(var index=0;index<formobj.elements.length;index++){
		if((formobj.elements[index].name)&&(formobj.elements[index].name.indexOf('_')!= 0)){
			if(formfields.length>0){
				formfields+='&';
			}
			formfields+=formobj.elements[index].name+'=';
			if(formobj.elements[index].type.indexOf('select')!=-1){
				if(formobj.elements[index].options.length==0){
					trace('Error: At least one item must be added to the list');
				return;
			}
			formobj.elements[index].options[0].selected=true;
			for(var option=0;option<formobj.elements[index].options.length;option++){if(option>0){formfields+=',';}
			formfields+=escape(formobj.elements[index].options[option].value);}
			
			}else{
				if((formobj.elements[index].type.indexOf('text')!=-1)||(formobj.elements[index].type=='password')){
					if(formobj.elements[index].value.length==0){
						formobj.elements[index].value = trim(formobj.elements[index].value);
						if((formobj.elements[index].getAttribute('class'))&&(formobj.elements[index].getAttribute('class').indexOf('require')!=-1)){
						trace('Error: Please complete this required field');
						formobj.elements[index].focus();
						return;
						}
					}
					formfields+=escape(asciiformat(trim(formobj.elements[index].value)));
				} else if (formobj.elements[index].type == 'hidden') {
					formfields+=escape(formobj.elements[index].value);
				} else if (formobj.elements[index].type == 'checkbox') {
					formfields+=formobj.elements[index].checked;
				}
			}
		}
	}
	return formfields;
}

function AjaxObject() {
	var request=false;
	if(window.XMLHttpRequest){
		try{
			request=new XMLHttpRequest();
		}catch(e){
			request=false;
		}
	}else if(window.ActiveXObject){
		try{
			request=new ActiveXObject("Msxml2.XMLHTTP");
		}catch(e){
			try{
				request=new ActiveXObject("Microsoft.XMLHTTP");
			}catch(e){
				request=false;
			}
		}
	}
	return request;
}

function ajaxRequest(method,url,handler) {
	var method=method.toUpperCase();
	var params=null;
	var index=ajaxQueue.length;
	ajaxQueue[index]=new AjaxObject(); 
	ajaxQueue[index].onreadystatechange=function(){
		if(ajaxQueue[index].readyState==4){
			if(ajaxQueue[index].status==200){
				trace('Parsing reply...');
				try{
					var response=eval('(' + ajaxQueue[index].responseText + ')');
				}catch(err){
					trace('Error: Not able to parse server response ('+ ajaxQueue[index].responseText.length+')');
					traceicon('img/alert.gif');
					if (ajaxDebug) {
						debugr = window.open('','debugwindow');
						debugr.document.write(ajaxQueue[index].responseText);
					}
					return;
				}
				if(!response.error){
					eval(handler+'('+ajaxQueue[index].responseText+')');
				}else{
					trace('Error: '+response.error);
				}
			} else {
				trace('Error: '+ajaxQueue[index].status+' '+ajaxQueue[index].statusText);
			}
		}else{
			trace('<span style="color:#999999;">Waiting for reply...</span>');
			traceicon('img/spinner.gif');
		}
	}; 
	ajaxQueue[index].open(method, url, true);
	if(method=='POST'){
		ajaxQueue[index].setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		params=arguments[3];
	}
	ajaxQueue[index].send(params);
}

// Message Tracing
var traceTimerId = 0;
function trace(message) {
	clearTrace();
	try{
		clearInterval(traceTimerId);
	}catch(err){}
	if(message.toLowerCase().indexOf('error')!=-1){
		traceicon('img/alert.gif');
		message='<span style="color:#CC0000;">'+message+'</span>';
	}
	traceTimerId=setTimeout('clearTrace()',10000);
	document.getElementById('trace').innerHTML=message;
	return;
}
function traceicon(imagepath) {try{document.getElementById('traceicon').innerHTML='<img src="'+imagepath+'" alt="" height="16" width="16" style="vertical-align:middle;" />';}catch(err){}return;}
function clearTrace() {try{document.getElementById('trace').innerHTML='';document.getElementById('traceicon').innerHTML='';}catch(err){}return;}

//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 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;}
