var xmlreqs = new Array();
var javascriptFunction='';
var strJavascript='';

function CXMLReq(freed)
{
    this.freed = freed;
    this.xmlhttp = false;
    if (window.XMLHttpRequest)
    {
        this.xmlhttp = new XMLHttpRequest();
    }
    else if (window.ActiveXObject)
    {
        this.xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
}

function xmlreqGET(url)
{
    var tm=new Date();
    url=url+'&time='+tm.getTime();
    var pos = -1;
    for (var i=0; i<xmlreqs.length; i++)
    {
        if (xmlreqs[i].freed == 1)
        {
            pos = i;
            break;
        }
    }
    if (pos == -1)
    {
        pos = xmlreqs.length;
        xmlreqs[pos] = new CXMLReq(1);
    }
    if (xmlreqs[pos].xmlhttp)
    {
        xmlreqs[pos].freed = 0;
        xmlreqs[pos].xmlhttp.open("GET",url,true);
        xmlreqs[pos].xmlhttp.onreadystatechange = function()
        {
            if (typeof(xmlhttpChange) != 'undefined')
            {
                xmlhttpChange(pos);
            }
        }
        if (window.XMLHttpRequest)
        {
            xmlreqs[pos].xmlhttp.send(null);
        }
        else if (window.ActiveXObject)
        {
            xmlreqs[pos].xmlhttp.send();
        }
    }
}

function getScrollXY()
{
  var scrOfX = 0, scrOfY = 0;
  if( typeof( window.pageYOffset ) == 'number' ) {
    //Netscape compliant
    scrOfY = window.pageYOffset;
    scrOfX = window.pageXOffset;
  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
    //DOM compliant
    scrOfY = document.body.scrollTop;
    scrOfX = document.body.scrollLeft;
  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
    //IE6 standards compliant mode
    scrOfY = document.documentElement.scrollTop;
    scrOfX = document.documentElement.scrollLeft;
  }
  return [ scrOfX, scrOfY ];
}

function httpPost(url,data)
{
    var pos = -1;
    for (var i=0; i<xmlreqs.length; i++)
    {
        if (xmlreqs[i].freed == 1)
        {
            pos = i;
            break;
        }
    }
    if (pos == -1)
    {
        pos = xmlreqs.length;
        xmlreqs[pos] = new CXMLReq(1);
    }
    if (xmlreqs[pos].xmlhttp)
    {
        xmlreqs[pos].freed = 0;
        xmlreqs[pos].xmlhttp.open("POST",url,true);
        xmlreqs[pos].xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
        xmlreqs[pos].xmlhttp.send(data);
        xmlreqs[pos].freed = 1;
    }
}

function xmlreqPOST(url,data)
{
    var pos = -1;
    for (var i=0; i<xmlreqs.length; i++)
    {
        if (xmlreqs[i].freed == 1)
        {
            pos = i;
            break;
        }
    }
    if (pos == -1)
    {
        pos = xmlreqs.length;
        xmlreqs[pos] = new CXMLReq(1);
    }
    if (xmlreqs[pos].xmlhttp)
    {
        xmlreqs[pos].freed = 0;
        xmlreqs[pos].xmlhttp.open("POST",url,true);
        xmlreqs[pos].xmlhttp.onreadystatechange = function()
        {
            if (typeof(xmlhttpChange) != 'undefined')
            {
                xmlhttpChange(pos);
            }
        }
        xmlreqs[pos].xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");

        xmlreqs[pos].xmlhttp.send(data);
    }
}

function xmlhttpChange(pos)
{
    if (typeof(xmlreqs[pos]) != 'undefined' && xmlreqs[pos].freed == 0 && xmlreqs[pos].xmlhttp.readyState == 4)
    {
        if (xmlreqs[pos].xmlhttp.status == 200 || xmlreqs[pos].xmlhttp.status == 304)
        {
            if( xmlreqs[pos].xmlhttp.getResponseHeader('Content-type').indexOf('html') > 0 )
            {
                if(xmlreqs[pos].xmlhttp.responseText.length>0)
                {
                    response = xmlreqs[pos].xmlhttp.responseText;
                    var arr_data = new Array();
                    firstLine = response.indexOf("\n");
                    position = response.indexOf("#");
                    positionContent = response.indexOf("-->");
                    if(position==-1 || positionContent>firstLine || positionContent==-1)
                    {
                    	eval(response);
                        return false;
                    }
                    structure = response.substr(0,position);
                    content = response.substr(positionContent+positionContent.length,response.length - structure.length);
                    arr_data = structure.split(',');

                    /* run javascript in content */
                                        
                    strStart='<script language="JavaScript">';
                    strEnd='</script>';
                    posStart = content.indexOf(strStart);
                    if(posStart>-1)
                    {
                        posEnd = content.indexOf(strEnd,posStart);
                        posStart = posStart+strStart.length
                        strJavascript = content.substr(posStart,posEnd-posStart);
                        eval(strJavascript);
                        content=content.substr(posEnd+strEnd.length, content.length);
                    }

                    document.getElementById(arr_data[0].replace(/[^a-zA-Z0-9]/g,'')).innerHTML = content;
                }
            }
            if( xmlreqs[pos].xmlhttp.getResponseHeader('Content-type').indexOf( 'xml' ) > 0 )
            {

            }
        }
        else
        {
            alert('Error xmlhttp status');
        }
        xmlreqs[pos].freed = 1;
    }
}

function postFormAjax(myForm)
{

    myForm=myForm.name;
    poststr = 'x=x';
    strcheck='';

    for (i=0; i< document.forms[myForm].elements.length; i++)
    {
        switch(document.forms[myForm].elements[i].type)
        {
            case 'button':
            break;

            case 'checkbox':
                if(document.forms[myForm].elements[i].checked==true)
                {
                    poststr=poststr+'&'+document.forms[myForm].elements[i].name+'='+encodeURIComponent(document.forms[myForm].elements[i].value);
                }
            break;

            case 'radio':
                if(document.forms[myForm].elements[i].checked)
                {
                    poststr=poststr+'&'+document.forms[myForm].elements[i].name+'='+encodeURIComponent(document.forms[myForm].elements[i].value);
                }
            break;

            default:
                poststr=poststr+'&'+document.forms[myForm].elements[i].name+'='+encodeURIComponent(document.forms[myForm].elements[i].value);
                strcheck=strcheck+'&'+document.forms[myForm].elements[i].name+'='+encodeURIComponent(document.forms[myForm].elements[i].value)+'\n';
        }
    }
     xmlreqPOST('_Post/post.php',poststr);
}


function trim(str, chars)
{
    return ltrim(rtrim(str, chars), chars);
}

function ltrim(str, chars)
{
    chars = chars || "\\s";
    return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}

function rtrim(str, chars)
{
    chars = chars || "\\s";
    return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}








/* DEBUG! */

function postFormAjax2(myForm)
{

    myForm=myForm.name;
    poststr = 'x=x';
    strcheck='';

    for (i=0; i< document.forms[myForm].elements.length; i++)
    {
        switch(document.forms[myForm].elements[i].type)
        {
            case 'button':
            break;

            case 'checkbox':
                if(document.forms[myForm].elements[i].checked==true)
                {
                    poststr=poststr+'&'+document.forms[myForm].elements[i].name+'='+encodeURIComponent(document.forms[myForm].elements[i].value);
                }
            break;

            case 'radio':
                if(document.forms[myForm].elements[i].checked)
                {
                    poststr=poststr+'&'+document.forms[myForm].elements[i].name+'='+encodeURIComponent(document.forms[myForm].elements[i].value);
                }
            break;

            default:
                poststr=poststr+'&'+document.forms[myForm].elements[i].name+'='+encodeURIComponent(document.forms[myForm].elements[i].value);
                strcheck=strcheck+'&'+document.forms[myForm].elements[i].name+'='+encodeURIComponent(document.forms[myForm].elements[i].value)+'\n';
        }
    }
    alert(poststr);
}



