function GetXmlHttpObject(){
	var xmlHttp=null;

	try{
 		// Firefox, Opera 8.0+, Safari
 		xmlHttp=new XMLHttpRequest();
 	}	

 	catch (e){
 		//Internet Explorer
 		try{
  			xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
  		}
 
  		catch (e){
  			xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
  		}
 	}
	return xmlHttp;
}

/*
xmlHttp.readyState
0: Request Not Initialized
1: Request Has Been Setup
2: Request Has Been Sent
3: Request is in Progress
4: Request Complete

XMLHttpRequest.open(sMethod, sUrl [, bAsync] [, sUser] [, sPassword]);

*/

function GET(url, values, state_func){
	
	xmlHttp=GetXmlHttpObject();
	xmlHttp.open("GET", url+"?"+values, true);
	xmlHttp.onreadystatechange=state_func;
	xmlHttp.send(null);
	
}

function POST(url, values, state_func){
	
	xmlHttp=GetXmlHttpObject();
	xmlHttp.open("POST", url, true);
	xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
	xmlHttp.onreadystatechange=state_func;
	xmlHttp.send(values);

}

function build_form_vars(formname){
	
	var values = "";
	var i, a;
	var form_value= "";
	var d=document.forms[formname];
	
	for (i=0;i<d.length;i++){

		switch (d.elements[i].type.toLowerCase()){
			
			case 'text':
				form_value=d.elements[i].value;
				break;
				
			case 'textarea':
				form_value=d.elements[i].value;
				break;
				
			case 'checkbox':
				form_value = d.elements[i].checked ? 'on' : '';
				break;
			
			case 'radio':
				form_value = d.elements[i].checked ? d.elements[i].value : '';
				break;
				
			// selects without multiple keyword	
			case 'select-one':
				form_value = d.elements[i].options[d.elements[i].selectedIndex].value;
				break;	
				
			// selects with mutliple keyword
			case 'select-multiple':
				
				for (a=0; a<d.elements[i].options.length; a++) {
				   
					if (d.elements[i].options[a].selected){
						
						form_value=d.elements[i].options[a].value;					
					}
				    
					if (form_value != ''){
		
						values=values+d.elements[i].name+"="+form_value;
							
						if (a!=(d.elements[i].options.length-1)){
							
							values=values+"&";
							
						}				
					}					
				}
				form_value="";
				break;	
			
			
			default:
				form_value=d.elements[i].value;
				break;
			
		}
		
//		if (form_value != ''){
		
			values=values+d.elements[i].name+"="+form_value;
				
			if (i!=(d.length-1)){
				
				values=values+"&";				
			}	
//		}	
	}
	
 return values;
	
}