/*@cc_on @if (@_win32 && @_jscript_version >= 5) if (!window.XMLHttpRequest)
window.XMLHttpRequest = function() { return new ActiveXObject('Microsoft.XMLHTTP') }
@end @*/

function get(url,id,callback){
 var xmlhttp=false;
 xmlhttp = new XMLHttpRequest();
 xmlhttp.open("GET", url,true);

 if (id){
 xmlhttp.onreadystatechange=function() {
  
  if (xmlhttp.readyState===4) {
	   var item=document.getElementById(id);
	   
	   if (item){
		   var response=xmlhttp.responseText.replace(/^\s+|\s+$/g, "");
		   //if this in input tag, set that, otherwise set the inner html
		   if (item.tagName==="INPUT"){
			item.value=response;
		   }else{
			item.innerHTML=response;
		
		   }
		   if (callback){
			eval(callback+'()');
		   }
		  }
	 }
	};
}
 
 xmlhttp.send(null);
}

function getAndBlock(url,id,callback){
 var xmlhttp=false;
 xmlhttp = new XMLHttpRequest();
 xmlhttp.open("GET", url,false);

 if (id){
 xmlhttp.onreadystatechange=function() {
  
  if (xmlhttp.readyState===4) {
	   var item=document.getElementById(id);
	   
	   if (item){
		   var response=xmlhttp.responseText.replace(/^\s+|\s+$/g, "");
		   //if this in input tag, set that, otherwise set the inner html
		   if (item.tagName==="INPUT"){
			item.value=response;
		   }else{
			item.innerHTML=response;
		
		   }
		   if (callback){
			eval(callback+'()');
		   }
		  }
	 }
	};
}
 
 xmlhttp.send(null);
}



function getXML(url,id){
 var xmlhttp=false;
 xmlhttp = new XMLHttpRequest();

 xmlhttp.open("GET", url,true);
 
   xmlhttp.onreadystatechange=function() {
	  if (xmlhttp.readyState===4) {
	   var item=document.getElementById(id);
	   if (item){
	   var response=xmlhttp.responseText.replace(/^\s+|\s+$/g, "");
	   //if this in input tag, set that, otherwise set the inner html
	   if (item.tagName==="INPUT"){
		item.value=response;
	   }else{
		item.innerHTML=response;
	
	   }
	   if (callback){
		eval(callback+'()');
	   }
	  }
	  }
	 };

 xmlhttp.send(null);
 }



function getValue(element){
	if (!element) { return null; }
	var val='';
	if (element.tagName === "INPUT") {
		if (element.type === "text"||element.type === "hidden") {
			val=element.value;
		}else if (element.type === "checkbox") {
		   if (element.checked===true) {
			  val='1';
		   } else {
			  val='0';
		   }
		}else if (element.type === "radio") {
		   if (element.checked===true) {
			  val=element.value;
		   }else{
              val=null;
		   }
		}
	 }   
	 
	if (element.tagName === "SELECT") {
		val=element.options[element.selectedIndex].value;
	 }
	if (element.tagName === "TEXTAREA"){
		val=element.value;
	}
	return val;
}


//posts a form and drops the content into an id
function getForm(url,obj,id,callback)
{
    var parameters="ajax=true&";
    //generate the request URI
    for (i=0; i<obj.elements.length; i++) {
		var element=obj.elements[i];
		var val=getValue(element);
		val=encodeURI(val).replace(/&/g,'%26').replace(/\+/g,'%2B');
		
		if (val!==null) { parameters+=element.name+"="+val+"&"; }
    }
     var xmlhttp=false;
	 xmlhttp = new XMLHttpRequest();

     xmlhttp.open('POST', url, false);
    
    //xmlhttp.setRequestHeader("Content-type", "application/x-www-obj-urlencoded");
    xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
    xmlhttp.setRequestHeader("Content-length", parameters.length);
    xmlhttp.setRequestHeader("Connection", "close");
    xmlhttp.send('1=1&'+parameters);
   var item=document.getElementById(id);
	   if (item){
	   var response=xmlhttp.responseText.replace(/^\s+|\s+$/g, "");
	   //if this in input tag, set that, otherwise set the inner html
	   if (item.tagName==="INPUT"){
		item.value=response;
	   }else{
		item.innerHTML=response;
	   }
   }
   if (callback){
	eval(callback+'()');
   }
}


function getAutoForm(obj, id)
{
var url=obj.action;
getForm(url,obj,id);
}


//this method returns back a javascript list of objects based on a table
//it gets standard xml, and turns it into a list of maps for that object
function getObjects(table,filter,orderBy,limit,include){
	var i;
	var j;
	var url="/dia/_kernel/list.jsp?xml&table="+table;
	if (orderBy && orderBy.length>0) { url+="&orderBy="+orderBy; }
	if (limit && limit.length>0) { url+="&numRows="+limit; }
	if (include && include.length>0) { url+="&include="+include; }
	if (filter){
		for (i in filter){
			url+="&filterColumn="+escape(i)+"&filterValue="+escape(filter[i]);
		}
	}
	var xmlhttp= new XMLHttpRequest();
	xmlhttp.open("GET", url,false);
	xmlhttp.send(null);
	
	
	var xmlobject = (new DOMParser()).parseFromString(xmlhttp.responseText, "text/xml");
	var root = xmlobject.getElementsByTagName('data')[0];
	var items = root.getElementsByTagName("row");
	var allObjs=[];
	
	for (i = 0 ; i < items.length ; i++) {
		var item = items[i];
		var thisObj = {};
		for (j = 0; j < item.childNodes.length; j++) {
		  try {
			thisObj[item.childNodes[j].nodeName]=item.childNodes[j].firstChild.nodeValue;
		  } catch(Exception) {
		        thisObj[item.childNodes[j].nodeName]="";
		  }
		}

		allObjs[i]=thisObj;
	}

	return allObjs;
}

function c(id){
	var item=document.getElementById(id);
	item.className="write";
}
function b(id,table,key){
	var item=document.getElementById(id);
	if (item){
	 var val=getValue(item);
	 var url="/dia/_kernel/save.jsp?ajax&table="+table+"&key="+key+"&";
	 if (val!==null) { url+=item.name+"="+encodeURIComponent(val).replace(/&/g,'%26')+"&"; 
		 get(url);
		 item.className="";
	 }
  }
}
