/*
<ChangeLog>
 <Versions>
  <Version> 
   <Version>1.0</Version> 
   <DateTime>17.12.2008 17:34:42</DateTime>
   <Author>Marek Skotnica</Author> 
   <Description>Dokumentace v manualu. Mel by to byt nejrychlejsi a nejmensi navrh.</Description> 
  </Version> 
 </Versions>
</ChangeLog>
*/


/// <reference path="Karsa.js />

var KarsaAjax = {
    ///<summary>KarsaAjax object declaration. Dont forget to init KarsaAjax.ajaxPagePath in header of page.</summary>
    
    ajaxPagePath : 'AjaxPage.aspx' , 
    ///<value>Absolute path to AjaxPage.aspx </value>
    
    GetHTTPObject: function() {
    ///<summary>GetInstance of HTTP object</summary>
    ///<returns type="domElement">Instance of HTTPObject</returns>
     var http;
        try {
          http = new XMLHttpRequest;
            GetHTTPObject = function() {
              return new XMLHttpRequest;
            };
        }
        catch(e) {
          var msxml = [
            'MSXML2.XMLHTTP.3.0',
            'MSXML2.XMLHTTP',
            'Microsoft.XMLHTTP'
          ];
          for (var i=0, len = msxml.length; i < len; ++i) {
            try {
              http = new ActiveXObject(msxml[i]);
              GetHTTPObject = function() {
                return new ActiveXObject(msxml[i]);
              };
              break;
            }
            catch(e) {}
          }
        }
        return http;	
    }, 
    
    DirectCall : function(url, callbackArguments, method){
        ///<summary>simple ajax call when we need to call .aspx page</summary>
        ///<param name="url" type = "string" >ajax call url</param>
        ///<param name="callbackArguments" type = "string" >callback string</param>
        ///<param name="method" type = "string" >Optional method parameter. Default value is 'POST'.</param>
        ///<returns type="string">Callback page html code</returns>
        if(method==null){method = 'POST'; }
        var xmlHttp = this.GetHTTPObject();
        if (xmlHttp) 
        {
            xmlHttp.abort();
            xmlHttp.open(method, url, false);
            xmlHttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');                            
            xmlHttp.send(callbackArguments);
            return xmlHttp.responseText;
        }
    }, 
    
    GetCallback : function(callbackArguments){            
        ///<summary>call ajax refresh with direct string callback arguments</summary>
        ///<param name="callbackArguments" type = "string">ajax callback arguments separated by ';'. Ex. "controlname=SampleAjaxControll.ascx;data1=hello;data2=world"</param>
        ///<returns type="string">Callback control html code</returns>
        return this.DirectCall(this.ajaxPagePath, callbackArguments);
    } , 
    
    RefreshDiv : function(divID, callbackArguments){  
       ///<summary>call ajax refresh with direct string callback arguments - call ajax page with callback arguments and fill it into divID</summary>
       ///<param name="divID">string ID of div where we want to insert control html</param>
       ///<param name="callbackArguments">ajax callback arguments separated by ';'. Ex. "controlname=SampleAjaxControll.ascx;data1=hello;data2=world"</param>
       var output = this.GetCallback(callbackArguments);
        if(output){
            $(divID).innerHTML = output;
        }
    } 
    
}
