var PARAMS_SEP="&~&~&";
var	NAMEVALUE_SEP="=~=~=";

//////////////////////////////////////////////////////////////////////////////////////////////////
var ns4 = (document.layers);
var ie4 = (document.all && !document.getElementById);
var ie5 = (document.all && document.getElementById);
var ns6 = (!document.all && document.getElementById);
//////////////////////////////////////////////////////////////////////////////////////////////////

var dontsubmit=true;

///////////////////////////////////////////////////
ajax={};

ajax.x=function(){try{return new ActiveXObject('Msxml2.XMLHTTP')}catch(e){try{return new ActiveXObject('Microsoft.XMLHTTP')}catch(e){return new XMLHttpRequest()}}};


ajax.serialize=function(f){
		
				var str="";
				var FormName=f;
						for(var i= 0; i < FormName.length; i++){
						switch(FormName[i].type)
						{
						  case 'text':
						 	 	if (FormName[i].name!="")
						    	 str=str+URLEncode(FormName[i].name)+"="+URLEncode(FormName[i].value)+"&";
						   	break;
						   	
						    case 'textarea': 
						     	if (FormName[i].name!="")
						   	      	str=str+URLEncode(FormName[i].name)+"="+URLEncode(FormName[i].value)+"&";
						      	break;
							      case 'password':
							      	if(FormName[i].name!="")
							      	  str=str+URLEncode(FormName[i].name)+"="+URLEncode(FormName[i].value)+"&";
							      	break;
							      case 'hidden':
							      	if(FormName[i].name!="")
							      	  str=str+URLEncode(FormName[i].name)+"="+URLEncode(FormName[i].value)+"&";
							      	break;
							      case 'file':
							      	if(FormName[i].name!="")
							      	  str=str+URLEncode(FormName[i].name)+"="+URLEncode(FormName[i].value)+"&";
							        break;
							      case 'checkbox':
							      	
									if (FormName[i].value != ""){
										var objcheck=FormName[i];
										if(objcheck.checked)
										  str=str+URLEncode(objcheck.name)+"="+URLEncode(objcheck.value)+"&";
											
									}      	
									break;
							      case 'select-one':
									//if (FormName[i].value != "" ){
										var objselect=FormName[i];
										str=str+URLEncode(objselect.name)+"="+URLEncode(objselect.value)+"&";
									//}
							        break;
							      case 'select-multiple':
							      	if (FormName[i].selectedIndex != -1 ){
										var objselect=document.frmtest[0];
										var objoptions=objselect.options;	
										var lensel=objselect.options.length;	
										for(var j=0;j<lensel;j++){
											if(objoptions[j].selected)
												str=str+URLEncode(objselect.name)+"="+URLEncode(objoptions[j].value)+"&";					
										}
							      	}
									break;
								  case 'radio':
								  	var objrd=FormName[i];
								  	if(objrd.checked)
								  		  	str=str+URLEncode(objrd.name)+"="+URLEncode(objrd.value)+"&";
								  	break;	
							      
							    }
						  	}
						  	var newlen=str.length;
						  	str=str.substring(0,newlen-1);
						  	return str;	
		
		
};
	
ajax.send=function(u,f,m,a){var x=ajax.x();x.open(m,u,true);x.onreadystatechange=function(){if(x.readyState==4)f(x.responseText)};if(m=='POST')x.setRequestHeader('Content-type','application/x-www-form-urlencoded');x.send(a)};
ajax.sendNoCache=function(u,f,m,a){u = u + (u.indexOf('?') < 0 ? '?' : '&') + new Date().getTime();var x=ajax.x();x.open(m,u,true);x.onreadystatechange=function(){if(x.readyState==4)f(x.responseText)};if(m=='POST')x.setRequestHeader('Content-type','application/x-www-form-urlencoded');x.send(a)};
ajax.get=function(url,func){ajax.send(url,func,'GET')};
ajax.getNoCache=function(url,func){url = url + (url.indexOf('?') < 0 ? '?' : '&') + "__ajaxreq__=" + new Date().getTime();ajax.send(url,func,'GET');};
ajax.gets=function(url){var x=ajax.x();x.open('GET',url,false);x.send(null);return x.responseText};
ajax.getsNoCache=function(url){url = url + (url.indexOf('?') < 0 ? '?' : '&') + new Date().getTime();var x=ajax.x();x.open('GET',url,false);x.send(null);return x.responseText};
ajax.post=function(url,func,args){ajax.send(url,func,'POST',args)};
ajax.postNoCache=function(url,func,args){ajax.sendNoCache(url,func,'POST',args)};
ajax.update=function(url,elm){var e=$(elm);var f=function(r){e.innerHTML=r;};ajax.get(url,f);};
ajax.updateNoCache=function(url,elm){var e=$(elm);var f=function(r){e.innerHTML=r;};ajax.getNoCache(url,f);};
ajax.submit=function(url,elm,frm){var e=$(elm);var f=function(r){e.innerHTML=r;};ajax.post(url,f,ajax.serialize(frm))};
ajax.submitNoCache=function(url,elm,frm){var e=$(elm);var f=function(r){e.innerHTML=r;};ajax.postNoCache(url,f,ajax.serialize(frm))};
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


///////////////////////////////////////////
///_ProcessAjaxResponse(AjaxResponse)
////////////////////////////////////////////
function _ProcessAjaxResponse(AjaxResponse){
	
		//alert(AjaxResponse);
		
		var i=0;
		var Arraylen=0;
		var tempArray=null;
		var obj=null;
		
		if(AjaxResponse==null || AjaxResponse=="")
			return false;
			
		tempArray=new Array();				
		tempArray=AjaxResponse.split(PARAMS_SEP);
		Arraylen=tempArray.length;
		
		if(Arraylen==0)
			return false;
			
		//alert(Arraylen);
				
		var ZEntry= PutInArray(tempArray);
		if(ZEntry!=null){
			
			for(i=0;i<ZEntry[0].length;i++){
				
				//alert(ZEntry[0][i] + '=' + ZEntry[1][i]);
				
				ZEntry[0][i] = SearchAndReplace(ZEntry[0][i], "\r", "");
				ZEntry[0][i] = SearchAndReplace(ZEntry[0][i], "\n", "");
				
				if(ZEntry[0][i] == "OPERATION"){
					switch(ZEntry[1][i]){
						
						case "DONTSUBMIT":							
							dontsubmit=true;							
							break;
						
						case "SUBMIT":							
							dontsubmit=false;							
							break;	
							
						default:
							break;
					}
				}
				
				else{					
					updateObjectValue($(ZEntry[0][i]), ZEntry[1][i]);
				}
				
			}			
		}
}

///////////////////////////////////////////
///function PutInArray(myEntry)
////////////////////////////////////////////

function PutInArray(myEntry){
		
		var j=0;
		var myEntryLen=0;
		var tempArray=new Array();
		var ArrayOp=new Array(2);
		
		ArrayOp[0]=new Array();
		ArrayOp[1]=new Array();
		myEntryLen=myEntry.length;
		
		if(myEntryLen==0)
				return;
		else{
			for(j=0;j<myEntryLen;j++){
				tempArray=myEntry[j].split(NAMEVALUE_SEP);
				if(tempArray!=null){					
					ArrayOp[0][j]=(tempArray[0]);
					ArrayOp[1][j]=(tempArray[1]);
				}				
			}
		
			return ArrayOp; 
		}					
}

///////////////////////////////////////////
///function URLEncode(PlainText_)
////////////////////////////////////////////
function URLEncode(PlainText_)
{
	// The Javascript escape and unescape functions do not correspond
	// with what browsers actually do...
	var SAFECHARS = "0123456789" +					// Numeric
					"ABCDEFGHIJKLMNOPQRSTUVWXYZ" +	// Alphabetic
					"abcdefghijklmnopqrstuvwxyz" +					
					"-_.!~*'()";					// RFC2396 Mark characters
	var HEX = "0123456789ABCDEF";

	var plaintext = PlainText_;
	var encoded = "";
	for (var i = 0; i < plaintext.length; i++ ) {
		var ch = plaintext.charAt(i);
	    if (ch == " ") {
		    encoded += "+";				// x-www-urlencoded, rather than %20
		} else if (SAFECHARS.indexOf(ch) != -1) {
		    encoded += ch;
		} else {
		    var charCode = ch.charCodeAt(0);
			if (charCode > 255) {
			    /*alert( "Unicode Character '" 
                        + ch 
                        + "' cannot be encoded using standard URL encoding.\n" +
				          "(URL encoding only supports 8-bit characters.)\n" +
						  "A space (+) will be substituted." );
				encoded += "+";*/
				encoded += ch;
				;
			} else {
				encoded += "%";
				encoded += HEX.charAt((charCode >> 4) & 0xF);
				encoded += HEX.charAt(charCode & 0xF);
			}
		}
	} // for	
	return encoded;
}

///////////////////////////////////////////////////
function $(e){
	if(typeof e=='string')
		e=document.getElementById(e);
		return e;
}

///////////////////////////////////////////
///function URLDecode(encoded)
////////////////////////////////////////////
function URLDecode(encoded){
	
				   // Replace + with ' '
				   // Replace %xx with equivalent character
				   // Put [ERROR] in output if %xx is invalid.
				   //alert('encoded=' + encoded);
				   var HEXCHARS = "0123456789ABCDEFabcdef";    
				   var _plaintext = "";
				   var j = 0;
				   while (j < encoded.length) {
				       var ch = encoded.charAt(j);
				       //alert('ch=' + ch);
					   if (ch == "+") {
					   		_plaintext += " ";
						   j++;
					   } 
					   else if (ch == "%") {
					   		if (j < (encoded.length-2) 
									&& HEXCHARS.indexOf(encoded.charAt(j+1)) != -1 
									&& HEXCHARS.indexOf(encoded.charAt(j+2)) != -1 ) {
									_plaintext += unescape( encoded.substr(j,3) );
								j += 3;
							} else {
								//alert( 'Bad escape combination near ...' + encoded.substr(i) );
								//_plaintext += "%[ERROR]";
								j++;
							}
						} 
						else {
						   _plaintext = _plaintext+ ch;
						   j++;
						}
					} // while
					
					//alert('plaintext=' + _plaintext);
				   
				   return _plaintext;
}

///////////////////////////////////////////
///function updateObjectValue(obj,evalue)
////////////////////////////////////////////

function updateObjectValue(obj,evalue){
						
		if(obj==null)			
			return;
						
		var StrTagName=obj.tagName.toLowerCase();
		
		
						
		if(StrTagName=="a"){
			obj.href=evalue;
		}						
		else if(StrTagName=="div" || StrTagName=="p" || StrTagName=="span"){							
			obj.innerHTML=evalue;
		}
		else{								
			switch(obj.type.toLowerCase()){
														
			  case 'text':						 	 	
			    obj.value=evalue;	
			   	break;
		  	
			  case 'textarea': 
			   	obj.value=evalue;	
			    break;
							    
			  case 'password':
			  	obj.value=evalue;
			   	break;
						     	
			case 'hidden':
				obj.value=evalue;
				break;
							   	
			case 'file':
			  	obj.value=evalue;
			    break;
							    
			 case 'select-one':
			  	for(var j=0;j<obj.options.length;j++){
			  		if(obj.options[j].value==evalue){
			  			obj.selectedIndex=j;
			 			break;
			  		}
			  	}
				break;
							  	
			 case 'radio':
			  	if(evalue!="")
			  		obj.checked=true;
			  	break;
							  	
			  default:
			  	obj.innerHTML=evalue;
			  	break;
			}
		}
}
////////////////////////////////////////////////////////////////
function SearchAndReplace(Content, SearchFor, ReplaceWith) {

   var tmpContent = Content;
   var tmpBefore = new String();   
   var tmpAfter = new String();
   var tmpOutput = new String();
   var intBefore = 0;
   var intAfter = 0;

   if (SearchFor.length == 0)
      return;


   while (tmpContent.toUpperCase().indexOf(SearchFor.toUpperCase()) > -1) {
   
      // Get all content before the match
      intBefore = tmpContent.toUpperCase().indexOf(SearchFor.toUpperCase());
      tmpBefore = tmpContent.substring(0, intBefore);
      tmpOutput = tmpOutput + tmpBefore;

      // Get the string to replace
      tmpOutput = tmpOutput + ReplaceWith;


      // Get the rest of the content after the match until
      // the next match or the end of the content
      intAfter = tmpContent.length - SearchFor.length + 1;
      tmpContent = tmpContent.substring(intBefore + SearchFor.length);

   }

   return tmpOutput + tmpContent;

}

