

var xmlHttpRequest;
var webPart;

function makeRequest(url,formObj,webPartName){

    var parameters = getParameters(formObj);

    document.getElementById("floatLoadingDiv").style.background = "#FFF url(/images/float_loading_trans.gif) no-repeat 50% 20%";
    document.getElementById("floatLoadingBoxDiv").style.display = "block";
    webPart = webPartName;
    xmlHttpRequest=GetXmlHttpObject();

    if (xmlHttpRequest==null){
        alert ("Browser does not support HTTP Request");
        document.getElementById("floatLoadingBoxDiv").style.display = "none";
        return false;
    }

    try{
        xmlHttpRequest.open("POST", url, true);
    /*Send the proper header information along with the request*/
    }catch(e){
        alert(e);
    }

    xmlHttpRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xmlHttpRequest.setRequestHeader("Content-length", parameters.length);
    xmlHttpRequest.setRequestHeader("Connection", "close");
    xmlHttpRequest.onreadystatechange = displayChange;
    xmlHttpRequest.send(parameters);

    return false;

}

function GetXmlHttpObject(){
    var xmlHttpRequest=null;
    try{
        /* Firefox, Opera 8.0+, Safari*/
        xmlHttpRequest=new XMLHttpRequest();
    }
    catch (e){
        /*Internet Explorer*/
        try{
            xmlHttpRequest=new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (e){
            xmlHttpRequest=new ActiveXObject("Microsoft.XMLHTTP");
        }
    }
    return xmlHttpRequest;
}


function getParameters(formObj) {

    if(typeof(formObj)=="string"){                                              /*If it is a string*/

        if (formObj==''){
            return '';
        }

        if(formObj.charAt(0)=="?"){
            return formObj.substring(1, formObj.length);
        }else{
            return "string="+formObj;
        }

    }


    /*if it is a object*/
    if(typeof(formObj)=="object"){

        var getstr = ""; /*?

        /*Get all input elements in form*/
        for (i=0; i<formObj.getElementsByTagName("input").length; i++) {

            if (formObj.getElementsByTagName("input")[i].type == "text") {
                getstr += formObj.getElementsByTagName("input")[i].name + "=" + URLencode(formObj.getElementsByTagName("input")[i].value) + "&";
            }
            if (formObj.getElementsByTagName("input")[i].type == "password") {
                getstr += formObj.getElementsByTagName("input")[i].name + "=" + formObj.getElementsByTagName("input")[i].value + "&";
            }
            if (formObj.getElementsByTagName("input")[i].type == "hidden") {
                getstr += formObj.getElementsByTagName("input")[i].name + "=" + formObj.getElementsByTagName("input")[i].value + "&";
            }
            if (formObj.getElementsByTagName("input")[i].type == "checkbox") {
                if (formObj.getElementsByTagName("input")[i].checked) {
                    getstr += formObj.getElementsByTagName("input")[i].name + "=" + formObj.getElementsByTagName("input")[i].value + "&";
                }else {
                    getstr += formObj.getElementsByTagName("input")[i].name + "=&";
                }
            }
            if (formObj.getElementsByTagName("input")[i].type == "radio") {
                if (formObj.getElementsByTagName("input")[i].checked) {
                    getstr += formObj.getElementsByTagName("input")[i].name + "=" + formObj.getElementsByTagName("input")[i].value + "&";
                }
            }
        }

        /*Get all select elements in form*/
        for (i=0; i<formObj.getElementsByTagName("select").length; i++) {
            var sel = formObj.getElementsByTagName("select")[i];
            getstr += sel.name + "=" + sel.options[sel.selectedIndex].value + "&";
        }

        /*Get all textarea elements in form*/
        for (i=0; i<formObj.getElementsByTagName("textarea").length; i++) {
            var textArea = formObj.getElementsByTagName("textarea")[i];
            getstr += textArea.name + "=" + URLencode(textArea.value) + "&";
        }

        return getstr;
    }

    return '';
    
}

function displayChange(){
    if (xmlHttpRequest.readyState==4 || xmlHttpRequest.readyState=="complete"){
        
        if(isRedirect(xmlHttpRequest.responseText)){                            /*Check is should redirect*/

            redirectPage(xmlHttpRequest.responseText);

        }else if (isReloadWebpart(xmlHttpRequest.responseText)){
            
            document.getElementById(webPart).innerHTML=xmlHttpRequest.responseText;
            reloadWebPart(xmlHttpRequest.responseText);

        }else if (isLightBox(xmlHttpRequest.responseText)){
            document.getElementById(webPart).innerHTML=xmlHttpRequest.responseText;
            document.getElementById('light').style.display='block';
            document.getElementById('fade').style.display='block';
        }else{
            
            document.getElementById(webPart).innerHTML=xmlHttpRequest.responseText;

        }
        document.getElementById("floatLoadingBoxDiv").style.display = "none";
    }
}

function isRedirect(string){
    if(string.match("redirect->")){
        return true;
    }
    return false;
}

function isReloadWebpart(string){
    if(string.match("reloadWebpart->")){
        return true;
    }
    return false;
}

function isContactList(string){
    if(string.match("<select name=\"ddl_contact_id\"")){
        return true;
    }
    return false;
}

function isLightBox(string){
    if(string.match("<div id=\"light\" class=\"lightbox_content\">")){
        return true;
    }
    return false;
}

function redirectPage(string){                                                  /*[reloadWebpart]->[redirect]->[forwarding]->[parameter to send]*/
    var part = string.split("->",2);
    if(part.length == 2){
        window.location = part[1];
    }
}

function reloadWebPart(string){                                                 /*[reloadWebpart]->[webpage to call]->[webpart to load]->[parameter to send]*/

    var part = string.split("->",4);
    if(part.length == 3){
        makeRequest(part[1],'',part[2]);
    }

    if(part.length == 4){
        makeRequest(part[1],part[3],part[2]);
    }
    
}

function URLencode(str) {
    return escape(str).replace(/\+/g, '%2B').replace(/\"/g,'%22').replace(/\'/g, '%27');
}