
if (typeof($) != 'function')
{
  function $(e){return document.getElementById(e)}
}

var XHTTP_CHARSET = '' != '' ? '' : 'UTF-8';

var MIT = {};

(MIT.AJAX = {
  name:'mustafa',
/*
  genUID:function(iLen)
  {
    sChrs = '_qwertyuiopasdfghjklzxcvbnm';
    sRnd  = '';
    for (i = 0; i < iLen; i++)
    {
      randomPoz = Math.floor(Math.random() * sChrs.length);
      sRnd += sChrs.substring(randomPoz,randomPoz+1);
    }
    return sRnd;
  },
*/
  doReq:function(method, urlObj, callBacks)
  {
    if(typeof(method) == 'object' && (typeof(urlObj) == 'object' || typeof(urlObj) == 'function' || typeof(urlObj) == 'string') && typeof(callBacks) == 'undefined')
    {
      if(typeof(urlObj) == 'object')
      {
        callBacks = urlObj;
      }
      else if(typeof(urlObj) == 'function')
      {
        callBacks = {onLoad:urlObj};
      }
      else if(typeof(urlObj) == 'string')
      {
        callBacks = {onLoad:new Function('data', 'document.getElementById("' + urlObj + '").innerHTML=data;')};
      }
      urlObj    = method;
      method    = '';
    }
    else if(typeof(method) == 'string' && (typeof(urlObj) == 'object' || typeof(urlObj) == 'string' || typeof(urlObj) == 'function') && typeof(callBacks) == 'undefined')
    {
      if(typeof(urlObj) == 'object')
      {
        callBacks = urlObj;
      }
      else if(typeof(urlObj) == 'function')
      {
        callBacks = {onLoad:urlObj};
      }
      else if(typeof(urlObj) == 'string')
      {
        callBacks = {onLoad:new Function('data', 'document.getElementById("' + urlObj + '").innerHTML=data;')};
      }
      else
      {
        callBacks = {};
      }
      urlObj    = {url:method};
      method    = '';
    }
    else if(typeof(method) == 'string' && typeof(urlObj) == 'undefined' && typeof(callBacks) == 'undefined')
    {
      urlObj    = {url:method};
      callBacks = {};
      method    = '';
    }
    else if(typeof(method) == 'object' && typeof(urlObj) == 'undefined' && typeof(callBacks) == 'undefined')
    {
      urlObj    = method;
      callBacks = {};
      method    = '';
    }

    if(typeof(callBacks.onLoad) != 'function' && method == '')
    {
      method = 'h';
    }

    if(typeof(urlObj.url) == 'undefined')
    {
      if(typeof(callBacks.onError) == 'function')
      {
        callBacks.onError('-100', 'URL yok');
      }
    }
    else
    {

      /*
      timeX                     = genUID(10);
      document['ajaObj_'+timeX] = new JAAX2_engine(urlObj, callBacks, method);
      tmpObj                    = document['ajaObj_'+timeX];
      */

      //setTimeout("document['ajaObj_"+timeX+"'].runAJAX()",Math.random()*200);
      //alert(this.name +','+ method +','+ urlObj.url +','+ callBack.onStart());

      var req = this.getXMLHttpObj();

      req.onreadystatechange = function()
      {
        if (req.readyState == 4)
        {
          if (req.status < 400)
          {
            if(typeof(callBacks.onLoad) == 'function')
            {
              if(method == 'h')
              {
                callBacks.onLoad(req.getResponseHeader('Content-Length'), req.getResponseHeader('Content-Type'));
              }
              else
              {
                callBacks.onLoad(req.responseText, req.status);
              }
            }
          }
          else
          {
            if(typeof(callBacks.onError) == 'function')
            {
              callBacks.onError(req.status, req.statusText);
            }
          }
        }
      }


      if(method == '') method = 'g';

      if (method == "POST" || method == "post" || method == "p")
      {
        req.open("POST", urlObj.url, true);
        req.setRequestHeader('Content-Type','application/x-www-form-urlencoded' + (XHTTP_CHARSET != '' ? '; charset='+XHTTP_CHARSET : ''));
        if(XHTTP_CHARSET != '') req.setRequestHeader('charset',XHTTP_CHARSET);
        req.send(urlObj.data);
      }
      else if(method == "HEAD" || method == "head" || method == "h")
      {
        req.open("HEAD", urlObj.url, true);
        req.setRequestHeader('Content-Type','text/html' + (XHTTP_CHARSET != '' ? '; charset='+XHTTP_CHARSET : ''));
        if(XHTTP_CHARSET != '') req.setRequestHeader('charset',XHTTP_CHARSET);
        req.send(null);
      }
      else if(method == "GET" || method == "get" || method == "g")
      {
        req.open("GET", urlObj.url, true);
        req.setRequestHeader('Content-Type','text/html' + (XHTTP_CHARSET != '' ? '; charset='+XHTTP_CHARSET : ''));
        if(XHTTP_CHARSET != '') req.setRequestHeader('charset',XHTTP_CHARSET);
        req.send(null);
      }

      if(typeof(callBacks.onStart) == 'function')
      {
        callBacks.onStart();
      }
    }
    return false;
  },

  getXMLHttpObj:function()
  {
    var _XH_ACTIVE_X_IDENTS =
    [
      'MSXML2.XMLHTTP.6.0',
      "MSXML2.XMLHTTP.5.0",
      "MSXML2.XMLHTTP.4.0",
      "MSXML2.XMLHTTP.3.0",
      "MSXML2.XMLHTTP.2.0",
      "MSXML2.XMLHTTP.1.0",
      "MSXML2.XMLHTTP",
      "MICROSOFT.XMLHTTP.2.0",
      "MICROSOFT.XMLHTTP.1.0",
      "MICROSOFT.XMLHTTP.1",
      "MICROSOFT.XMLHTTP",
      'MSXML2.DOMDocument.6.0',
      'MSXML2.DOMDocument.5.0'
    ], _xh_ieProgId = undefined;
    if (typeof(XMLHttpRequest) == "undefined" && typeof(ActiveXObject) != "undefined")
    {
      for(var a=0;a<_XH_ACTIVE_X_IDENTS.length;a++)
      {
        var b=_XH_ACTIVE_X_IDENTS[a];
        try
        {
          new ActiveXObject(b);
          _xh_ieProgId=b;
          break;
        } catch(c) {}
      }
    }
    var xmlhttp=false;
    /*@cc_on @*/
    /*@if (@_jscript_version>=5)
    try {
      xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
    } catch(e) {
      try {
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      } catch(E) {
        xmlhttp=false;
      }
    }
    @end @*/
    if (_xh_ieProgId != undefined) {
      xmlhttp = new ActiveXObject(_xh_ieProgId);
    }
    if (!xmlhttp&&typeof(XMLHttpRequest)!='undefined')
    {
      try
      {
        xmlhttp=new XMLHttpRequest();
      }
      catch (e)
      {
        xmlhttp = false;
      }
    }
    if (!xmlhttp&&window.createRequest)
    {
      try
      {
        xmlhttp=window.createRequest();
      }
      catch(e)
      {
        xmlhttp=false;
      }
    }
    return xmlhttp;
  },
  setForm:function(formName)
  {
    //formName
    xForm           = document.getElementById(formName);
    xForm.onError   = new Function('a','b','this.innerHTML="Hata:"+a+"="+b;');
    xForm.onLoad    = new Function('a','b','this.innerHTML=a;');
    xForm.onStart   = new Function('this.innerHTML="Yukleniyor...";');

    xForm.onsubmit  = new Function('MIT.AJAX.doReq("'+xForm.method+'",{url:"'+xForm.action+'",data:"' + MIT.AJAX.getElementInForm(formName) + '"},this);return false;');
  },
  getElementInForm:function(formName)
  {
    var allowedType = new Array();
    xForm                   = document.getElementById(formName);
    allowedType['text']     = 1;
    allowedType['password'] = 1;
    allowedType['checkbox'] = 1;
    allowedType['radio']    = 1;

    x_inputs = new Array();
    arrtextarea     = xForm.getElementsByTagName("textarea");
    for(xPuts in arrtextarea)
    {
      if(arrtextarea[xPuts].tagName == "textarea" || arrtextarea[xPuts].tagName == "TEXTAREA")
      {
        x_inputs.push(arrtextarea[xPuts].name+"="+escape(arrtextarea[xPuts].innerHTML));
      }
    }
    arrInputs       = xForm.getElementsByTagName("input");
    for(xPuts in arrInputs)
    {
      if(allowedType[arrInputs[xPuts].type])
      {
        x_inputs.push(arrInputs[xPuts].name+"="+escape(arrInputs[xPuts].value));
      }
    }
    return x_inputs.join("&");
  }

});
