var kHTTP={
  getURLVal:function(d){
    var r=new Array();
    if(typeof(d)=='object') for(var item in d) r.push(item+"="+encodeURI(d[item]));
    return r.join("&"); 
  },
  getExpDate:function(days,hours,minutes){     
    var expDate=new Date(); 
    if(typeof days=="number" && typeof hours=="number" && typeof hours=="number"){ 
      expDate.setDate(expDate.getDate()+parseInt(days)); 
      expDate.setHours(expDate.getHours()+parseInt(hours)); 
      expDate.setMinutes(expDate.getMinutes()+parseInt(minutes)); 
      return expDate.toGMTString(); 
    }
    return false;
  },
  getCookieVal:function(offset){
    var endstr=document.cookie.indexOf(";", offset); 
    if(endstr==-1) endstr=document.cookie.length; 
    return unescape(document.cookie.substring(offset, endstr)); 
  }, 
  getCookie:function(name){
    var arg=name+"="; 
    var alen=arg.length; 
    var clen=document.cookie.length; 
    var i=0; 
    while(i<clen){ 
      var j=i+alen; 
      if(document.cookie.substring(i,j)==arg) return getCookieVal(j); 
      i=document.cookie.indexOf(" ",i)+1; 
      if(i==0) break;  
    } 
    return ""; 
  }, 
  setCookie:function(name, value, expires, path, domain, secure) { 
    document.cookie=name+"="+escape(value)+ 
    ((expires)?"; expires=" + expires : "")+
    ((path)?"; path="+path:"")+
    ((domain)?"; domain="+domain:"")+
    ((secure)?"; secure":""); 
  }, 
  deleteCookie:function(name,path,domain){ 
    if (getCookie(name)){ 
      document.cookie = name + "=" + 
      ((path) ? "; path=" + path : "") + 
      ((domain) ? "; domain=" + domain : "") + 
      "; expires=Thu, 01-Jan-70 00:00:01 GMT"; 
    } 
  },
  sGet:function(vn){
    var c=getCookie("sJS");
    if(c!=""){
      var h=c.split(";");
      for(var i=0;i<h.length;i++){
        var t=h[i].split(",");
        if(t[0]==vn) return t[1];
      }
    }
    return null;
  },
  sSet:function(vn,vv){
    var maxItem=20;
    var nh=[];
    var c=getCookie("sJS");
    var i=0;
    if(c!=""){
      var h=c.split(";");
      var j=0;
      for(i=h.length-1;i>=0;i--){
        nh[j]=h[i].split(",");
        j++;
        if(j==maxItem-1) break; 
      }
      for(i=0;i<nh.length;i++) if(nh[i][0]==vn){ nh[i][1]=vv; break; } 
    }
    if(i==nh.length) nh[i]=new Array(vn,vv);
    var res=[];
    for(i=0;i<nh.length;i++) res[i]=nh[i][0]+','+nh[i][1];
    setCookie("sJS",res.join(";"));
  },
  get:function(name){
    var qs=document.location.search;         
    var r="";
    do{
      ind=qs.indexOf(name+'=');
      if(ind!=-1){
        qs=qs.substr(ind+name.length+1,qs.length-ind);
        e=qs.indexOf('&');
        if(e!=-1) value=qs.substr(0,e); else value=qs;                
        value=decodeURI(value);
        if(r=='' || value=='') r+=value; else r+=','+value;
      }
    }while(ind!=-1);
    return r;      
  },
  ajax:function(_url,_callback,_data,_method,_async){
    var that=this;      
    var url=_url;        
    var method=_method && !_method.empty()?_method:"GET";
    var data=_data && typeof _data=="string"?_data:"";
    var async=_async==null?true:_async;
    this.callback=_callback || function(){};  
    this.updating=false;
    this.update=function(d,m){    
      var _d=d?d:data;
      var _m=m?m:method;
      if(that.updating==true){ return false; }
      that.updating=true;                       
      var AJAX=null;                          
      if(window.XMLHttpRequest){ AJAX=new XMLHttpRequest(); }else{ AJAX=new ActiveXObject("Microsoft.XMLHTTP"); }                                             
      if(AJAX==null) return false;                               
      AJAX.onreadystatechange=function(){  
        if(AJAX.readyState==4){
          that.updating=false;                
          if(AJAX.status==200) that.callback(AJAX.responseText);        
          delete AJAX;                                         
        }                                                      
      }            
      if(_m=="POST") {
        AJAX.open("POST",url,async);
        AJAX.setRequestHeader("Content-type","application/x-www-form-urlencoded");
        AJAX.send(_d);
      }else{
        AJAX.open("GET",url+(_d==""?"":"?"+_d),async);                             
        AJAX.send(null);                                         
      }              
      return true;                                             
    }
    this.update();
  } 
};

