// @cvs-id $Id: ajax.js,v 1.1.1.1 2006/04/19 20:05:25 nsadmin Exp $ $Name: bridge-release-2_6_0 $
// global xml get begin 

// Check to make sure we haven't already run this script
if (!ajaxJsRunP) {

  var ajaxJsRunP = 1;
var agt = navigator.userAgent.toLowerCase();
var is_mac = (agt.indexOf("mac") != -1);

var ad_host = "";
var cookie_name = "";
var counter = 1;

var post_ajax_command = "";
var pre_ajax_command = "";

var ajax_array = new Array();
var ajax_concurrent = true;
var ajax_debug_p = false;

function AJAX (url, alt_url, div, message, forcerefresh, vars, checkstate_func) {
    if (ajax_debug_p == true) {
        setTimeout("throw Error('Enter: AJAX')", 0);
    }
    var req;
    if (window.XMLHttpRequest) {
                req = new XMLHttpRequest();
        } else if (window.ActiveXObject  && !is_mac) {
                req = new window.ActiveXObject("Msxml2.XMLHTTP");
        } else {
             if (alt_url != "") {
                location.replace(alt_url)
              }
        }
    this.req = req;
    this.div = div;
    this.url = url;
    this.message = message;
    this.forcerefresh = forcerefresh;
    this.vars = vars;
    this.checkstate_func = checkstate_func;
    if (ajax_debug_p == true) {
        setTimeout("throw Error('Exit: AJAX')", 0);
    }
}
// global xml post begin 
var orig_height = "";
var vars2 = "";                                                                                                                                                            

function checkstate (ajax_id) {
    if (ajax_debug_p == true) {
        setTimeout("throw Error('Enter: checkstate')", 0);
    }
    var req = ajax_array[ajax_id].req;
    var div = ajax_array[ajax_id].div;
    var url = ajax_array[ajax_id].url;
    var message = ajax_array[ajax_id].message;
    var forcerefresh = ajax_array[ajax_id].forcerefresh;
    var ajax_i;
    stats = getByID("output");
    if (ajax_debug_p == true) {
        setTimeout("throw Error('Checkstate: readyState: " + req.readyState + "')", 0);
    }
    if (stats) {
        stats.innerHTML = req.readyState;
    }
    if (req.readyState == 4) {
        if (ajax_debug_p == true) {
            setTimeout("throw Error('Checkstate: status: " + req.status + "')", 0);
        }
    
        if (req.status == 500) {
            
            var the_error_obj = window.open("", "error",'width=800,height=600,resizable=yes,toolbar=no,location=on,scrollbars=yes,status=yes');    
            the_error_obj.focus();
            the_error_obj.moveTo(1,1);
        //    the_error_obj.document.body.innerHTML="";
            the_error_obj.document.write(req.responseText);
            
//            alert(req.responseText);
            if (ajax_debug_p == true) {
                setTimeout("throw Error('Exit: checkstate')", 0);
            }
            return;
        }
 //            alert(req.responseText);
        var ua = navigator.userAgent.toLowerCase();
        isIE = ((ua.indexOf("msie") != -1) && (ua.indexOf("opera") == -1) && (ua.indexOf("webtv") == -1)); 
        isSafari = (ua.indexOf("safari") != -1);
        var use_xml = 0;
        if (isSafari) {
            x = document.createElement('div');
            x.innerHTML = req.responseText;

            var thedocument = x.getElementsByTagName('thedocument');
            if (thedocument[0]) {
                use_xml = 1;
            }
        }

        if ((isIE && req.responseXML.documentElement) || (isSafari && use_xml == 1)) {
            
                getByID('ajaxOutPutMessage').innerHTML="";
                var astring = req.responseText.replace(/[\n\r]+/g, " ");
                
                var bstring = astring.replace(/.*<message>/, "");
                var cstring = bstring.replace(/<\/message>.*/, "");
                if (astring != cstring) {
                    getByID('ajaxOutPutMessage').innerHTML=cstring;
                }
            if (div != "") {
                getByID(div).innerHTML = "";
                var astring = req.responseText.replace(/[\n\r]+/g, " ");
                
                var bstring = astring.replace(/.*<thebody>/, "");
                var cstring = bstring.replace(/<\/thebody>.*/, "");
                if (astring == cstring) {
                    getByID(div).innerHTML="";
                } else {    
                    getByID(div).innerHTML=cstring;
                }
            }
            if (isIE) {
                var post_ajaxs = req.responseXML.getElementsByTagName('post_ajax');
                for (ajax_i= 0; ajax_i< post_ajaxs.length; ajax_i++) {
                //    alert(post_ajaxs[ajax_i]);
                    var commands = post_ajaxs[ajax_i].firstChild.nodeValue;
                    commands=commands.replace(/&amp;/g,"\&");
                //    alert(commands);
                    commands=commands.replace(/&lt;/g,"\<");
                    commands=commands.replace(/&gt;/g,"\>");
                //    alert(commands);
                    eval(commands);
                }
            } else {
                x = document.createElement('div');
                x.innerHTML = req.responseText;
                var post_ajaxs = x.getElementsByTagName('post_ajax');
                for (ajax_i= 0; ajax_i< post_ajaxs.length; ajax_i++) {
                    var commands = post_ajaxs[ajax_i].innerHTML;
                    commands=commands.replace(/&amp;/g,"\&");
                    commands=commands.replace(/&lt;/g,"\<");
                    commands=commands.replace(/&gt;/g,"\>");
                    eval(commands);
                } 

            }

        } else if (!isIE && req.responseXML) {

        //    alert(req.responseText);            
        var messages = req.responseXML.getElementsByTagName('message');
            getByID('ajaxOutPutMessage').innerHTML="";
            if (messages[0]) {
                x = document.createElement('xml');
                x.appendChild(messages[0]);
                getByID('ajaxOutPutMessage').appendChild(x);
                getByID('ajaxOutPutMessage').innerHTML += "";
            } else {
                getByID('ajaxOutPutMessage').innerHTML="";
            }
            if (div != "") {
                var body = req.responseXML.getElementsByTagName('thebody');
                getByID(div).style.height = orig_height;
                getByID(div).innerHTML = "";
                if (body[0]) {
                    x = document.createElement('xml');
                    // alert(x.canHaveHTML);
                    x.appendChild(body[0]);
                    getByID(div).appendChild(x);
                    
                    getByID(div).innerHTML += "";
                }
            }
            var post_ajaxs = req.responseXML.getElementsByTagName('post_ajax');
        
            var ajax_commands;
        //    alert('test');
            for (ajax_i= 0; ajax_i < post_ajaxs.length; ajax_i++) {
            //    alert('test');
                ajax_commands = post_ajaxs[ajax_i].firstChild.nodeValue;
                
                ajax_commands=ajax_commands.replace(/&amp;/g,"\&");
                ajax_commands=ajax_commands.replace(/&lt;/g,"\<");
                ajax_commands=ajax_commands.replace(/&gt;/g,"\>");
            //    alert(ajax_commands);
                eval(ajax_commands);
            //    alert('post eval')
            }
        } else {
        
            
                    // getByID(div).style.height = orig_height;
         if (div != "") {
                 getByID(div).innerHTML = req.responseText;
        }
                x = document.createElement('div');
                x.innerHTML = req.responseText;
                
                if (isIE) {
                    
                    var result = req.responseText;
                    if (result.replace("<script>", "") != result) {
                        result = result.replace(/\n/g, 'RETURNCHARREPLACE');
                        result = result.replace(/\<\/script\>.*?<script>/gim, "OPENSCRIPTCLOSESCRIPT");
                        result = result.replace(/\<\/script\>.*/, "");
                        result = result.replace(/.*\<script\>/, "");
                        result = result.replace(/RETURNCHARREPLACE/g, '\n');
                        var post_ajaxs = result.split(/OPENSCRIPTCLOSESCRIPT/);
                        for (var ajax_i = 0; ajax_i < post_ajaxs.length; ajax_i++) {
                                
                            setTimeout(post_ajaxs[ajax_i]);
                        }
                    }
                } else {
                    var post_ajaxs = x.getElementsByTagName('script');
                    //    alert(post_ajaxs.innerHTML);
                    for (var ajax_i = 0; ajax_i < post_ajaxs.length; ajax_i++) {
                        //alert(post_ajaxs[ajax_i].innerHTML);
                        setTimeout(post_ajaxs[ajax_i].innerHTML, 0);
                    }
                }
             if (div != "") {
                } else {
                if (getByID('ajaxOutPutMessage')) {
                    getByID('ajaxOutPutMessage').innerHTML = "";
                }

            }
                }                                                                                                                                             
                                    

        if (post_ajax_command) {
            eval(post_ajax_command);
        }

        setTimeout(from_response_javascript, 0);
            if (ajax_debug_p == true) {
                setTimeout("throw Error('Exit: checkstate')", 0);
            }
        return req.status;
    } else if (req.readyState == 0) {
        
            if (ajax_debug_p == true) {
                setTimeout("throw Error('Exit: checkstate')", 0);
            }
        return "";
    } else {
        
            if (ajax_debug_p == true) {
                setTimeout("throw Error('Exit: checkstate')", 0);
            }
        return "";
    }

}

function findPosY(obj)
{
    var curtop = 0;
    if (obj.offsetParent)
    {
    while (obj.offsetParent)
    {
         curtop += obj.offsetTop
         obj = obj.offsetParent;
    }
    }
    else if (obj.y)
    curtop += obj.y;
    return curtop;
}


function format_form_element_for_ajax(obj) {
    
    if (ajax_debug_p == true) {
        setTimeout("throw Error('Enter: format_form_element_for_ajax')", 0);
    }
    var str = "";
    if (obj.type=='checkbox') {
        if (obj.checked) {
            str += obj.name + "=" + escape(obj.value) + "&";
        } else {
            str += obj.name + "=&";
        }
    } else if (form[i].type=='radio') {
            if (form[i].checked) {
                str += form[i].name + "=" + escape(form[i].value) + "&";
            }
    } else {
        str += obj.name + "=" + escape(obj.value) + "&";
    }
    if (ajax_debug_p == true) {
        setTimeout("throw Error('Exit: format_form_element_for_ajax')", 0);
    }
    return str;
}

function format_form_for_ajax (form) {
    
    if (ajax_debug_p == true) {
        setTimeout("throw Error('Enter: format_form_for_ajax')", 0);
    }
    var str = "";
    for (var i =0 ; i < form.length; i++) {
        if (form[i].type=='checkbox') {
            if (form[i].checked) {
                str += form[i].name + "=" + escape(form[i].value) + "&";
            } else {
                str += form[i].name + "=&";
            }
        } else if (form[i].type=='radio') {
            if (form[i].checked) {
                str += form[i].name + "=" + escape(form[i].value) + "&";
            }
        } else {
            str += form[i].name + "=" + escape(form[i].value) + "&";
        }
    }
    str += "from_ajax=true";
    if (ajax_debug_p == true) {
        setTimeout("throw Error('Exit: format_form_for_ajax')", 0);
    }
    return str;
}

function xmlpostform(form, div, message, forcerefresh) {
    
    if (ajax_debug_p == true) {
        setTimeout("throw Error('Enter: xmlpostform')", 0);
    }
    var str = format_form_for_ajax (form);
    xmlpost (form.action, '', div, message, forcerefresh, str);
//    alert(str);
    if (ajax_debug_p == true) {
        setTimeout("throw Error('Exit: xmlpostform')", 0);
    }
    return false;
}

function xmlquick (url, div) {
    
    if (ajax_debug_p == true) {
        setTimeout("throw Error('Enter/Exit: xmlquick')", 0);
    }
    return xmlpost (url, "", div, "", 0, "")
}

function xmlget (url, alt_url, div, message, forcerefresh) {
    
    if (ajax_debug_p == true) {
        setTimeout("throw Error('Enter/Exit: xmlget')", 0);
    }
    return xmlpost (url, alt_url, div, message, forcerefresh, "")
}

function xmlpost (url, alt_url, div, message, forcerefresh, vars) {
    
    if (ajax_debug_p == true) {
        setTimeout("throw Error('Enter: xmlpost')", 0);
    }
    if (ajax_debug_p == true) {
        setTimeout("throw Error('XMLPOST vars = " + vars + "')", 0);
    }
    
    var ajax_id = ajax_array.length;
    ajax_array[ajax_array.length]= new AJAX(url, alt_url, div, message, forcerefresh, vars, "");
    
    xmlprepost(ajax_id)
    if (ajax_debug_p == true) {
        setTimeout("throw Error('Exit: xmlpost')", 0);
    }
}

function xmlprepost (ajax_id) {
    
    if (ajax_debug_p == true) {
        setTimeout("throw Error('Enter: prepost')", 0);
    }
    var message = ajax_array[ajax_id].message;
    var div = ajax_array[ajax_id].div;
    if (message != "") {
    var ajaxOutPutMessage = getByID('ajaxOutPutMessage');
    if (!ajaxOutPutMessage) {
        ajaxOutPutMessagex = document.createElement('div');
        ajaxOutPutMessagex.id='ajaxOutPutMessage'
        ajaxOutPutMessagex.style.position='absolute'; 
        ajaxOutPutMessagex.style.top=0; 
        ajaxOutPutMessagex.style.left=0; 
        ajaxOutPutMessagex.style.textAlign="left";
        //ajaxOutPutMessagex.style.padding="5px";
        ajaxOutPutMessagex.style.filter="alpha(opacity=75)";
        ajaxOutPutMessagex.style.opacity=.75;
        ajaxOutPutMessagex.style.background="#FFFFFF";
        if (div == "") {
            ajaxOutPutMessagex.innerHTML = message
        }
        document.body.insertBefore(ajaxOutPutMessagex, document.body.childNodes[0]);
    } else {
        if (div == "") {
            ajaxOutPutMessage.innerHTML = message
        }
    }    
    }
    var change_heights = 0;
    if (change_heights) {
        if (div != "") {
            orig_height = getByID(div).style.height;
        }
    }
        if (div != "" && message != "") {
        if (change_heights) {    
            var top_height_div = div + "_top_height_div";
            var bottom_height_div = div + "_bottom_height_div";
            if (!getByID(top_height_div)) {
                getByID(div).innerHTML = "<div id='" + top_height_div + "'></div>" + getByID(div).innerHTML + "<div id='" + bottom_height_div + "'></div>";
                        setTimeout('xmlprepost(' + ajax_id + ')', 0);
                    if (ajax_debug_p == true) {
                        setTimeout("throw Error('Exit: prepost')", 0);
                    }
                return;
            } else {
                getByID(div).style.height = findPosY(getByID(bottom_height_div)) - findPosY(getByID(top_height_div));
            }    
        }
        
            getByID(div).innerHTML = message;
        setTimeout('xmlpost2(' + ajax_id + ')', 0);
        } else {
                   xmlpost2(ajax_id);
        }
    if (ajax_debug_p == true) {
            setTimeout("throw Error('Exit: prepost')", 0);
    }
}
function xmlpost2(ajax_id) {
    
    if (ajax_debug_p == true) {
        setTimeout("throw Error('Enter: xmlpost2')", 0);
    }
    var req = ajax_array[ajax_id].req;
    var div = ajax_array[ajax_id].div;
    var url = ajax_array[ajax_id].url;
    var checkstate_func = ajax_array[ajax_id].checkstate_func;


    var message = ajax_array[ajax_id].message;
    var forcerefresh = ajax_array[ajax_id].forcerefresh;
    var vars = ajax_array[ajax_id].vars;
    if (pre_ajax_command) {
        eval(pre_ajax_command);
    }
//    var pattern = new RegExp ("&", 'gi');
//    alert(vars.replace(pattern, "\n"));

    if (!ajax_concurrent) {
        if (ajax_id > 0) {
            if (ajax_array[ajax_id - 1].req.readyState < 4) {
                setTimeout('xmlpost2(' + ajax_id + ')', 0);
                if (ajax_debug_p == true) {
                    setTimeout("throw Error('Exit: xmlpost2')", 0);
                }
                return;
            }
        }
        } 
        if (forcerefresh) {
                document.cookie = cookie_name + "=1; domain=." + ad_host + "; path=/";
//                document.cookie = cookie_name + "; expires=Thu, 01-Jan-1970 00:00:01 GMT; domain=." + ad_host + "; path=/";
        }    

    if (vars == "") {
        req.open("GET", url, true);
    } else {
            req.open("POST", url, true);
    }


    
    if (checkstate_func == "") {    
        req.onreadystatechange=function () {checkstate(ajax_id)};
    } else {
        req.onreadystatechange=function () {checkstate_func(ajax_id)};
    }
    req.send(vars);
//    checkstate(ajax_id);
    
        if (ajax_debug_p == true) {
            setTimeout("throw Error('Exit: xmlpost2')", 0);
            }
    return;
        
}

function from_response_javascript() {
    
    if (ajax_debug_p == true) {
        setTimeout("throw Error('Enter: from_response_javascript')", 0);
    }
    var obj = getByID('post_ajax');
    if (obj) {
        if (obj.innerHTML != "") {
            
            var commands = obj.innerHTML;
            commands=commands.replace(/&amp;/g,"\&");
            commands=commands.replace(/&lt;/g,"\<");
            commands=commands.replace(/&gt;/g,"\>");
            
            eval(commands);
            
            obj.innerHTML = "";
            obj.id = '';
            setTimeout(from_response_javascript, 0);
        }
    }
    if (ajax_debug_p == true) {
        setTimeout("throw Error('Exit: from_response_javascript')", 0);
    }
}

/*
function readCookie(name)
{
    
    if (ajax_debug_p == true) {
        setTimeout("throw Error('Enter: readCookie')", 0);
    }
  var ca = document.cookie.split(';');
  var nameEQ = name + "=";
  for(var i=0; i < ca.length; i++) {
    var c = ca[i];
    while (c.charAt(0)==' ') c = c.substring(1, c.length); //delete spaces
    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
  }

    if (ajax_debug_p == true) {
        setTimeout("throw Error('Exit: readCookie')", 0);
    }
  return null;
}
*/
// global xml get end 

function leftTrim(sString)
{
    
    if (ajax_debug_p == true) {
        setTimeout("throw Error('Enter: leftTrim')", 0);
    }
    while (sString.substring(0,1) == ' ')
    {
    sString = sString.substring(1, sString.length);
    }
    if (ajax_debug_p == true) {
        setTimeout("throw Error('Exit: leftTrim')", 0);
    }
    return sString;
}

function rightTrim(sString)
{

    if (ajax_debug_p == true) {
        setTimeout("throw Error('Enter: rightTrim')", 0);
    }
while (sString.substring(sString.length-1, sString.length) == ' ')
{
sString = sString.substring(0,sString.length-1);
}
    if (ajax_debug_p == true) {
        setTimeout("throw Error('Exit: rightTrim')", 0);
    }
return sString;
}


function trimAll(sString)
{
    
    if (ajax_debug_p == true) {
        setTimeout("throw Error('Enter: TrimAll')", 0);
    }
    while (sString.substring(0,1) == ' ')
    {
        sString = sString.substring(1, sString.length);
    }
    while (sString.substring(sString.length-1, sString.length) == ' ')
    {
        sString = sString.substring(0,sString.length-1);
    }
    if (ajax_debug_p == true) {
        setTimeout("throw Error('Exit: TrimAll')", 0);
    }
    return sString;
}

// End of if (!ajaxJsRunP) block
}
