// JavaScript Document
   var idTarget = "page";
   var processing= false;
   var timer;
   var cancel = false;
   var timeout = 15000; //milidetik = 15 detik
   var http_request = false;
   var lastHistoryUrl;
   var temp;

Ajax= function(){
   if (window.XMLHttpRequest) { // Mozilla, Safari,...
      http_request = new XMLHttpRequest();
      if (http_request.overrideMimeType) {
         http_request.overrideMimeType('text/html');
      }
   } else if (window.ActiveXObject) { // IE
      try {
         http_request = new ActiveXObject("Msxml2.XMLHTTP");
      } catch (e) {
         try {
            http_request = new ActiveXObject("Microsoft.XMLHTTP");
         } catch (e) {}
      }
   }
	  
   if (!http_request) {
      alert('Create Ajax Engine failed!\nWeb Run Without Ajax');
   }	
   
   if (GetId('textloader')!=undefined)
		 GetId("textloader").style.display="none";
}

Request = function(vMethod, vUrl , vForm, vTarget) {
	if (!http_request) return true;
	if (processing)  return false;
	if (vTarget!='') idTarget=vTarget; else idTarget="page";
    if (GetId('textloader')!=undefined)
   		GetId("textloader").style.display = "block";
   cancel=false;
   //timer = setTimeout("Timeout()", timeout);
   processing = true;
   if (vForm == ""){
	  http_request.open('get', vUrl);
      http_request.onreadystatechange = Handle;
      http_request.send(null);  
   }
   else {
      var reqList = '';
      for(i = 0; i < vForm.length; i++){
       	if (reqList.length) reqList += '&';
       	reqList += vForm.elements[i].name + '=' + encodeURI(vForm.elements[i].value);
   }
   if (vMethod == "") vMethod='post'; 
     http_request.open(vMethod , vUrl , true);
     http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
     http_request.onreadystatechange = Handle;
     http_request.send(reqList);
  }
  return false;
}

Handle = function(){	
	if (cancel) return false;
	if (http_request.readyState == 4) {
		if (GetId('textloader')!=undefined)
		 GetId("textloader").style.display= "none";
		clearTimeout(timer);
		processing = false; 
		if (http_request.status == 200) {      
			result = http_request.responseText;
			GetId(idTarget).innerHTML = result; 
			//timer2 = setTimeout("DeleteMessage()", 5000);
		} else {
			cancel = true;
			http_request.abort();
			alert('Data Request Failed!');
		}
	}
}
   
Timeout = function(){
        cancel = true;
        clearTimeout(timer);
        if (GetId('textloader')!=undefined)
		 GetId("textloader").style.display="none";
        http_request.abort();
        alert('Server Respon Too Long\nRequest Canceled!');
        processing = false;
		return false;
}

// Alternative AJAX
function iRequest(vForm,vUrl)	{
		GetId('ifr_buff').innerHTML="<iframe name='loader' id='loader' style='display:none'></iframe>";
		vForm.setAttribute('target','loader');
		vForm.setAttribute('action',vUrl);
		vForm.setAttribute('enctype','multipart/form-data');
		vForm.setAttribute('method','post');
		vForm.submit();
		return false;
}

function delMessage(){
		if (GetId('msg')!=undefined)
			GetId('msg').innerHTML='';	
}

function loadParent( parent, child ){
	if ( parent.length <= 1 ){
		parent.length = 0;
		for (var i = 0; i < optionParent.length; i++) {
			parent.options[i] = new Option(optionParent[i],valueParent[i]);
		}	
		parent.options[defaultParentId].selected = true;		
		loadChild( parent, child );		
		child.options[defaultChildId].selected = true;
	}
}

function loadChild( parent, child ){
	var currParent = parent.selectedIndex;
	child.length = 0;
		var currOptionChild = optionChild[currParent];
		var currValueChild 	= valueChild[currParent];
		
		for (var i = 0; i < currOptionChild.length; i++)
			child.options[i] = new Option(currOptionChild[i], currValueChild[i]);	
	child.options[0].selected = true;
}

GetId = function(id){
   if (document.getElementById)
      return document.getElementById(id);
   else if (document.all)
      return document.all[id];
}