/*
    Ajax Functions and Utils
    Created by : José Mendonça (kitnos@gmail.com)
*/

//Panels
var flags = new Array();
var locations = new Array();
//posts
var submitButton = "";
//Time
var timerID = new Array();

/*
  AJAX - Processar XmlHttpRequest
  @param    serverPage  String  Page to be Loaded
  @param    obj         Obj     Object where content will be loaded
  @param    getOrPost   String  if 'GET' the method to use is GET else if 'POST' the method will be POST
  @param    str         String  Extra content to innerHtml
*/
function ajax(serverPage, obj, getOrPost, str, exitType){
	
	//alert(serverPage+"-"+obj+"-"+getOrPost+"-"+str+"-"+exitType);
	
	var xmlhttp = false;

    try {

        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    } 
    catch (e) {
        try {        
                xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
            } 
            catch (e) {        
                xmlhttp = false;
            }
    }

    if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
        xmlhttp = new XMLHttpRequest();
    }
	if (getOrPost == "get"){
		xmlhttp.open("GET", serverPage);
        xmlhttp.setRequestHeader("Cache-Control","no-store, no-cache, must-revalidate");
        xmlhttp.setRequestHeader("Expires","content=-1");
        xmlhttp.setRequestHeader("Cache-Control","post-check=0, pre-check=0");
        xmlhttp.setRequestHeader("Pragma","no-cache");
		xmlhttp.onreadystatechange = function() {
			if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
				obj.innerHTML = xmlhttp.responseText + str;
			}
            else if(xmlhttp.readyState == 1)
            {
                obj.innerHTML = '<div class="load"><img src="images/ajax-loader.gif" border="0"  alt="Loading..."></div>';                
            } 
		}
		xmlhttp.send(null);
	} 
	else {
		xmlhttp.open("POST", serverPage, true);
		xmlhttp.setRequestHeader('Content-Type',"application/x-www-form-urlencoded; charset=iso-8859-1");
        xmlhttp.setRequestHeader("Cache-Control","no-store, no-cache, must-revalidate");
        xmlhttp.setRequestHeader("Cache-Control","post-check=0, pre-check=0");
        xmlhttp.setRequestHeader("Pragma","no-cache");
		xmlhttp.onreadystatechange = function() {
			if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
				if (exitType == 'html')
					$e(obj).innerHTML = xmlhttp.responseText;
				else if (exitType == 'input')
					$e(obj).value = xmlhttp.responseText;
			}
		}
		xmlhttp.send(str);
	}
}
/*
    Prepares a post of a submit
    @param  objID       string  Form Id
    @param  serverpage  string  Page to be loaded
    @param  div         string  Div Container ID
*/
function post(objID, serverpage, div)
{
    var post = submitButton;
    var obj = document.getElementById(objID);
    for(var i = 0; i < obj.elements.length; i++){
        //alert(obj.elements[i].name);
        if(obj.elements[i].type == 'checkbox'){
            if(obj.elements[i].checked)
                post += obj.elements[i].name + "=" + encodeURI(obj.elements[i].value) + "&";
        }else
           post += obj.elements[i].name + "=" + encodeURI(obj.elements[i].value) + "&";      
    }
    var div_ = document.getElementById(div);
    //alert(post);
	//div_.innerHTML = '';
    ajax(serverpage, div, "post", post);
}
function post2(postVars, serverpage, div)
{
    
    var div_ = document.getElementById(div);
	//alert(div);
    //alert(post);
	div_.innerHTML = '';
    ajax(serverpage, div_, "post", postVars);
}
//Stores POST
function setButton( post , add )
{   if(add=0){
        submitButton = post;
    }else{
        submitButton += post;
    }      
}
/*
   Minimize or Maximize Panel
   @param   url     string      Page to be loaded
   @param   div     string      Div Container ID
   @param   n       string      Container ID
   @param   height  int         Panel Height
   @param   width   int         Panel Width
   @param   top     int         Panel Top
   @param   left    int         Panel Left
   @param   button  boolean     Show or Hide Buttons
   @param   drag    boolean     Dragable or Fixed Panel
   @param   top_bar boolean     Show or Hide Top Bar
   
*/
function showHideContent(url, div, n, height, width, top, left, button, drag, top_bar) {
    
    var pageLoad = url;
    var objID = div;
    var obj = document.getElementById(objID);
	if(flags[n] == null)
	{
		flags[n] = true;
        ajax(pageLoad,obj,"get","");	
	}
	
    
    var topDiv =  document.getElementById('top_'+n); 
    
    if(drag){
        var mainDiv = document.getElementById('main_'+n);
    }else{
        var mainDiv = document.getElementById('mainnodrag_'+n);
    }
    
    
	var imgID = "img_"+n;
    if (flags[n] == true || (flags[n] == false && button == false)){
		
        mainDiv.style.width = ""+width;
        mainDiv.style.height = ""+height;
        
        if(top_bar){
            topDiv.style.width = ""+width;
        }
        
        if(drag && locations[n] == null){
            
            locations[n] = true;
            mainDiv.style.left = ""+left;
            mainDiv.style.top = ""+top;
            
        }
        if(!drag){
            
            mainDiv.style.left = ""+left;
            mainDiv.style.top = ""+top;
        }
        if(top_bar){document.getElementById(imgID).src = "/images/_.gif";}
		var serverPage = pageLoad;
		flags[n] = false;
		obj.style.display='block';
		 
		
    } else if( flags[n] == false && button == true) {

        if(top_bar){document.getElementById(imgID).src = "/images/+.gif";}
		obj.style.display='none'; 
        mainDiv.style.height = 'auto';
        document.getElementById(objID).style.height = 'auto';
        flags[n] = true;
        
    } 
}
/*
    Close Panel
    @param  id  string  Div Container Id
*/
function closeTag(id)
{
    var objId = document.getElementById(id);
	objId.style.visibility = "hidden";
}

/*
    Validate Alphanumeric Box
    @param alphane  int value to be validate
*/
function alphanumeric(alphane)
{
	for(var j=0; j < alphane.length; j++)
		{
		  var alphaa = numaric.charAt(j);
		  var hh = alphaa.charCodeAt(0);
		  if((hh > 47 && hh<59) || (hh > 64 && hh<91) || (hh > 96 && hh<123))
		  {
		  }
		else	{
			 return false;
		  }
		}
 return true;
}

///Set continuous data to object
var servPage = "";
var objPage = "";
/*
    Sets Data with time interval
    @param  id          string  Timer Id
    @param  obj         string  Object Container ID
    @param  serverpage  string  Page to be loaded
    @param  interval    int     Time Interval in milliseconds 
*/ 
function setData( id, obj, serverpage, interval )
{
    servPage = serverpage;
    objPage = obj; 
    objID = document.getElementById( objPage ); 
    ajax(serverpage,objID,"get","");
    timerID[id] = window.setInterval( "ajax(servPage,objID,'get','');", interval);

}
//Kill Timer
function killTimer( id )
{
    window.clearInterval(timerID[id]);
}



function $e (target) {
	return document.getElementById(target);
}

