

var errorBox = null

function $_(objectID)
{
    return document.getElementById(objectID);
}
function getContent(url,target, async )
{
     if (!async)
			async = false;
	 
	if (errorBox)
	{
		removeNode(errorBox);
	}
    var xht = createRequestObject();
    
    if (xht)
    {
	    
	    var ran=new String(Math.random()*5);
		url+="&r="+ran.split(".")[1];
        xht.open("get",url, async);
        xht.setRequestHeader("caller","ezajax");
        xht.setRequestHeader("userid","931084710 ");
        var moddate = new Date(1970,1,1)
        xht.setRequestHeader( "If-Modified-Since", moddate); 
        xht.setRequestHeader("Expires", moddate);  
		xht.setRequestHeader("Cache-Control", "no-cache");
        xht.onreadystatechange = function()
            {
                if(xht.readyState == 4 )
                {
                    if (xht.status == 200){
	                    
	                    //what do the server response ?
                       var ctype = xht.getResponseHeader("Content-type") 
                       //NOTE: apache return application/xhtml+xml, IIS return text/xml
	                   var rObj= null;
	                   if (ctype.indexOf("xml")>0)
							rObj = xht.responseXML;
	                   else 
							rObj = xht.responseText;
	               
	                    var t = typeof(target)
	                    switch(t)
	                    {
		                    case 'function': target(rObj);break;
		                    case 'object': target.innerHTML = rObj;break;
		                    case 'string':
		                    	if ($_(target))
		                    	{
			                    	//alert("string");
			                    	$_(target).innerHTML=xht.responseText;
			                    	
		                    	} else {
			                    	alert(xht.responseText);
			                    	
		                    	}
		                    	break;
		                    default:
		                    	
		                    	 var b = new outputBox()
	                     	     b.setAll(xht.responseText);
	                     	     setTimeout(function(){elemBody().removeChild(b);},5000);
	                    }
                        
                     } else 
                     {
								
								
								switch(xht.status)
								{
									
									case 700 :
										alert("Your session has been expired. You need to login.");
										window.location.reload();
										break;
									default:
										alert(xht.status); 
										errorBox = outputBox(0)
										errorBox.setAll("<div style='background:red;color:white'>BUGS:"+url+"</div>"+xht.responseText);
										setTimeout(function(){removeNode(errorBox);},2000);
								
								}
	                    
                        
                     }
                     
                }
                
            }
         xht.send(null);
    } 
}

function createRequestObject() 
{
	var req;
       	if(window.XMLHttpRequest)
	{
        	req = new XMLHttpRequest();
       	} 
	else if(window.ActiveXObject) 
	{
          	req = new ActiveXObject("Microsoft.XMLHTTP");
       	} 
	else 
	{
          	alert('Problem creating the XMLHttpRequest object');
       	}
     return req;
}

function postvalues(url,values,target)
{
	var ran=new String(Math.random()*5);
	values+="&r="+ran.split(".")[1];
	var xht = createRequestObject();
	
    if (xht)
    {
	  
	    xht.open("post",url);
	    xht.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	    xht.onreadystatechange = function()
            {
	            
                if(xht.readyState == 4 )
                {
					
	                
                    if (xht.status == 200){
	                  //what do the server response ?
                       var ctype = xht.getResponseHeader("Content-type") 
                       //NOTE: apache return application/xhtml+xml, IIS return text/xml
	                   var rObj= null;
					  
	                   if (ctype.indexOf("xml")>0)
							rObj = xht.responseXML;
	                   else 
							rObj = xht.responseText;
	                
	                    var t = String(typeof(target))
						
	                    switch(t)
	                    {
		                    case 'function': 
							target(rObj);
							break;
		                    case 'object': target.innerHTML = rObj;break;
		                    case 'string':
		                    	if ($_(target))
		                    	{
			                    	//alert("string");
			                    	$_(target).innerHTML=xht.responseText;
			                    	
		                    	} else {
			                    	alert(xht.responseText);
			                    	
		                    	}
		                    	break;
		                    default:
		                    	
		                    	 var b = new outputBox()
	                     	     b.setAll(xht.responseText);
	                     	     setTimeout(function(){elemBody().removeChild(b);},5000);
	                    }
                        
                        
                     } else 
                     {
					
                        		switch(xht.status)
								{
									case 700 :
										alert("You need to login.");
										window.location.reload();
										break;
									case 701 :
										alert("Your session has been expired. You need to login.");
										window.location.reload();
										break;
									default:
										alert("Error :"+xht.status); 
										errorBox = outputBox(0)
										errorBox.setAll("<div style='background:red;color:white'>BUGS:"+url+"</div>"+xht.responseText);
										setTimeout(function(){removeNode(errorBox);},5000);
										
								
								}
                     }
                }
            }
            try {xht.send(values);} catch(e){alert(e.description);}
    } else {
	    alert("can't submit values. Cannot create request.object");
    }
    
}
/*xml to JSON*/

function XmltoArrayOfMaps(objXML)
{
	var arrReturn = new Array();
	
 	var noderoot = objXML.firstChild;
 	if (!noderoot){
	 	 alert("the XML is not well-formatted");
	 	 return null;
 	 }
 	while (noderoot.nodeType!= 1){
	 	noderoot=noderoot.nextSibling;
	 	if (!noderoot) return;
 	}
 		 	
 	//get the children
 	var children = 	f_getElementNodes(noderoot);
 	
 	for (i =0; i < children.length;i++)
 	{
	 		arrReturn[i] = createObject(children[i]);
 	}
 	
 	return arrReturn;
}
function createObject(node)
{
		var returnObj = new Object
		var arrNode=f_getElementNodes(node);
		for (var ich=0; ich<arrNode.length; ich++){
			var propertyName= arrNode[ich].tagName;
			var thischildren= f_getElementNodes(arrNode[ich])
			if (thischildren.length>0)
			{
				//get child of this chlildrend;
				returnObj[propertyName] = new Array();
				for (ix = 0; ix< thischildren.length;ix++)
				{
					var obj = createObject(thischildren[ix]);
					returnObj[propertyName].push(obj);
				}
				
			}else{
				if(arrNode[ich].firstChild)
					returnObj[propertyName]=arrNode[ich].firstChild.nodeValue;
				else 
					returnObj[propertyName]="";
			}
		}
		return returnObj;
}

/* return nodes array with type =1 */
	function f_getElementNodes(n_noderoot)
	{
		var rnodes=new Array();
		var childnode = n_noderoot.firstChild;
		while (childnode)
		{
			if (childnode.nodeType==1)
			{
				rnodes.push(childnode);
			}
			childnode= childnode.nextSibling;
		}
		return rnodes;
	}