// JavaScript Document
var bustcachevar=1; //bust potential caching of external pages after initial request? (1=yes, 0=no)
var loadstatustext="<div class='ajaxLoading'> &#272;ang t&#7843;i d&#7919; li&#7879;u... </div>";

var loadedobjects="";
var bustcacheparameter="";

function CreatAjax(){
	var page_request = false;
	if (window.XMLHttpRequest) // if Mozilla, Safari etc
		page_request = new XMLHttpRequest();
	else if (window.ActiveXObject){ // if IE
		try {
			page_request = new ActiveXObject("Msxml2.XMLHTTP");
		} 
		catch (e){
			try{
				page_request = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (e){}
		}
	}	
	return page_request;	
}

function AjaxPost(form,containerid,revattribute,func){
	loadObjsCs(revattribute);
	loadObjsJs(revattribute);
	var page_request = CreatAjax();
	if(page_request) {
		parameters = getParameter(form);
		url = form.action;
		
		if(document.getElementById(containerid)){
			document.getElementById(containerid).innerHTML=loadstatustext;
		}
		page_request.onreadystatechange=function(){
				loadpage(page_request, containerid, revattribute);
				loadFunction(page_request,func);
		};	
		
		if (bustcachevar) //if bust caching of external page
			bustcacheparameter=(url.indexOf("?")!=-1)? "&"+new Date().getTime() : "?"+new Date().getTime();
		
		page_request.open('POST', url+bustcacheparameter, true);
		page_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		page_request.setRequestHeader("Content-length", parameters.length);
		page_request.setRequestHeader("Connection", "close");
		page_request.send(parameters);	
	}
}

function AjaxGet(url,containerid,revattribute,func){
	loadObjsCs(revattribute);
	loadObjsJs(revattribute);
	var page_request = CreatAjax();
	if(page_request) {
		if(document.getElementById(containerid)){
			document.getElementById(containerid).innerHTML=loadstatustext;
		}
		page_request.onreadystatechange=function(){
				loadpage(page_request, containerid, revattribute);
				loadFunction(page_request,func);
		};
		if (bustcachevar) //if bust caching of external page
			bustcacheparameter=(url.indexOf("?")!=-1)? "&"+new Date().getTime() : "?"+new Date().getTime();
		page_request.open('GET', url+bustcacheparameter, true);
		page_request.send(null);
	}
}

function getParameter(form){
	var parameter = "";
	var cs = form.elements;			
	var l = cs.length;		
	var i = 0;			
	
	while(i < l){				
		if (!(cs[i].type && (cs[i].type.toLowerCase() == "button" || cs[i].type.toLowerCase() == "reset" || cs[i].type.toLowerCase() == "submit")) && cs[i].name != undefined) {							
			var name = cs[i].name;
			var value = cs[i].value;
			
			if(!((cs[i].type.toLowerCase() == "checkbox" || cs[i].type.toLowerCase() == "radio") && !cs[i].checked)){						
				//if (parameter=="") parameter = name + "=" + escape(encodeURI(value));
				//else parameter = parameter + "&" + name + "=" + escape(encodeURI(value));
				//dung trong truong hop co dau & tren bien truyen ve
				if (parameter=="") parameter = name + "=" + encodeURIComponent(value);
				else parameter = parameter + "&" + name + "=" + encodeURIComponent(value);
				/*
					if (parameter=="") parameter = name + "=" + encodeURI(value);
				else parameter = parameter + "&" + name + "=" + encodeURI(value);*/
			}			
		}		
		i++;
	}
	
	return parameter;
}

function loadpage(page_request, containerid,revattribute){
	if (page_request.readyState == 4 && (page_request.status==200 || window.location.href.indexOf("http")==-1)){
		//loadObjsCs(revattribute);
		if(document.getElementById(containerid)){
			document.getElementById(containerid).innerHTML=page_request.responseText;
		}
		else{
			containerid = containerid + "=" + page_request.responseText ;
			eval(containerid);
		}
		//loadObjsJs(revattribute);
	}
}

function loadFunction(page_request,func){
	if (page_request.readyState == 4 && (page_request.status==200 || window.location.href.indexOf("http")==-1)){		
		if(func!=null && func!=""){
			eval(func);
		}		
	}	
}

function loadObjsJs(revattribute){
	if (revattribute!=null && revattribute!=""){ //if "rev" attribute is defined (load external .js or .css files)
		var objectlist = revattribute.split(/\s*,\s*/); //split the files and store as array
		for (var i=0; i<objectlist.length; i++){
			var file=objectlist[i];
			var fileref="";
			if (loadedobjects.indexOf(file)==-1){ //Check to see if this object has not already been added to page before proceeding
				if (file.indexOf(".js")!=-1){ //If object is a js file
					fileref=document.createElement('script');
					fileref.setAttribute("type","text/javascript");
					fileref.setAttribute("src", file);
				}				
			}
			if (fileref!=""){
				document.getElementsByTagName("head").item(0).appendChild(fileref);
				loadedobjects+=file+" "; //Remember this object as being already added to page
			}
		}
	}
}

function loadObjsCs(revattribute){
	if (revattribute!=null && revattribute!=""){ //if "rev" attribute is defined (load external .js or .css files)
		var objectlist=revattribute.split(/\s*,\s*/); //split the files and store as array
		for (var i=0; i<objectlist.length; i++){
			var file=objectlist[i];
			var fileref="";
			if (loadedobjects.indexOf(file)==-1){ //Check to see if this object has not already been added to page before proceeding
				if (file.indexOf(".css")!=-1){ //If object is a css file
					fileref=document.createElement("link");
					fileref.setAttribute("rel", "stylesheet");
					fileref.setAttribute("type", "text/css");
					fileref.setAttribute("href", file);
				}
			}
			if (fileref!=""){
				document.getElementsByTagName("head").item(0).appendChild(fileref);
				loadedobjects+=file+" "; //Remember this object as being already added to page
			}
		}
	}
}