var xmlHttpRequest
var webPart

function makeRequest(url,formObj,webPartName){
    
    document.getElementById("floatLoadingDiv").style.display = "block";
    webPart = webPartName
    var parameters = getParameters(formObj)
	xmlHttpRequest=GetXmlHttpObject()
    
	if (xmlHttpRequest==null){
		alert ("Browser does not support HTTP Request")
        document.getElementById("floatLoadingDiv").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 it is a string
    if(typeof(formObj)=="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 if (isSuccessful(xmlHttpRequest.responseText)){

                document.getElementById("message").value = "Type Message Here";
                document.getElementById(webPart).innerHTML=xmlHttpRequest.responseText
                
            }else{

                document.getElementById(webPart).innerHTML=xmlHttpRequest.responseText

            }
            document.getElementById("floatLoadingDiv").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 isSuccessful(string){
    if(string.match("successfully")){
        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');
  }
