Subversion Repositories DevTools

Rev

Rev 6651 | Blame | Compare with Previous | Last modification | View Log | RSS feed

<!--

var xmlHttp;
var is_ie = (navigator.userAgent.indexOf('MSIE') >= 0) ? 1 : 0;
var is_ie5 = (navigator.appVersion.indexOf("MSIE 5.5")!=-1) ? 1 : 0;
var is_opera = ((navigator.userAgent.indexOf("Opera6")!=-1)||(navigator.userAgent.indexOf("Opera/6")!=-1)) ? 1 : 0;
//netscape, safari, mozilla behave the same???
var is_netscape = (navigator.userAgent.indexOf('Netscape') >= 0) ? 1 : 0;
var ajaxdivname;

//
//      Load/Hide/Show an Ajax expander
//      BaseId - Base for IDs to process
//                         IMG_BaseId - image to to toggle
//             TGL_BaseId - element to show/hide if found else use BaseId
//             BaseId - Div to load Ajax into
//      url - Url used to load subcontrol
function ToggleLoadControl(baseId, url)
{
  var img, dmode;
  var imgel = MM_findObj("IMG_" + baseId);
  var shel =  MM_findObj("TGL_" + baseId);
  var divel = MM_findObj(baseId);
  if ( !shel ) {
      shel = divel;
  }
  var showing = imgel.getAttribute("data-show");
  if(showing == 1) {
      img = "images/bt_minus.gif";
      dmode = '';
      showing = 2
  } else if(showing == 2) {
      img = "images/bt_plus.gif";
      dmode = 'none';
      showing = 1;
  } else if (url == null) {
      img = "images/bt_plus.gif";
      dmode = 'none';
      showing = 1;
  } else {
      img = "images/bt_minus.gif";
      dmode = '';
      showing = 2;

      // Set div name for ajax loading
      ajaxdivname = baseId;

      //Create the xmlHttp object to use in the request
      //stateChangeHandler will fire when the state has changed, i.e. data is received back
      // This is non-blocking (asynchronous)
      xmlHttp = GetXmlHttpObject(stateChangeHandler);

      //Send the xmlHttp get to the specified url
      xmlHttp_Get(xmlHttp, url);
  }

  // Update image and attributes
  imgel.src = img;
  shel.style.display = dmode;
  imgel.setAttribute("data-show", showing);
}

//stateChangeHandler will fire when the state has changed, i.e. data is received back
// This is non-blocking (asynchronous)
function stateChangeHandler()
{
    var str;
    //readyState of 4 or 'complete' represents that data has been returned
    if (xmlHttp.readyState == 4 || xmlHttp.readyState == 'complete'){
        if ( xmlHttp.status != 200 ) {
            // Generate an error message
            str = "Ajax Load Error [" + xmlHttp.status + ']: ' + xmlHttp.statusText + '<br>Url:' + xmlHttp.responseURL;
        } else {
            //Gather the results from the callback
            str = xmlHttp.responseText;
        }

        //Populate the innerHTML of the div with the results
                MM_findObj( ajaxdivname ).innerHTML = str;

        // Process elements just loaded
        if(typeof vixPostPageLoad == 'function'){
            vixPostPageLoad(ajaxdivname);
        }
    }
}


//stateComboChangeHandler will fire when the state has changed, i.e. data is received back
// This is non-blocking (asynchronous)
function stateComboChangeHandler()
{
        //Expected response data: text|-|value|-|selected|+|text2|-|value2|-|selected2
        
    //readyState of 4 or 'complete' represents that data has been returned
    if (xmlHttp.readyState == 4 || xmlHttp.readyState == 'complete'){
        //Gather the results from the callback
        var str = xmlHttp.responseText;
                var combo = ajaxdivname ;
                var lastOption = combo.options.length
                
        //Remove current Combo options
                for (i=0; i<lastOption; i++) {
                        combo.options[0] = null;//The combo box re-organizes itself therefore remove the first element
                }
                
                //Populate combowith new items
                var optionArray = str.split('|+|');
                
                for (i in optionArray) {
                        //alert(optionArray[i]);
                        var opt = optionArray[i].split('|-|');
                        combo.options[i] = new Option( opt[0], opt[1], opt[2] );
                }
    }
}

// XMLHttp send GET request
function xmlHttp_Get(xmlhttp, url) {
    xmlhttp.open('GET', url, true);
    xmlhttp.send(null);
}

// XMLHttp send GET request but wait for return;
function xmlHttp_Get_Synch(xmlhttp, url) {
    xmlhttp.open('GET', url, false);
    xmlhttp.send(null);
}

function GetXmlHttpObject(handler) {
    var objXmlHttp = null;    //Holds the local xmlHTTP object instance

    if (typeof(handler) != "function") {
      alert('Internal: GetXmlHttpObject called without a handler');
      return;
    }
        //Depending on the browser, try to create the xmlHttp object
    if (is_ie){
        //The object to create depends on version of IE
        //If it isn't ie5, then default to the Msxml2.XMLHTTP object
        var strObjName = (is_ie5) ? 'Microsoft.XMLHTTP' : 'Msxml2.XMLHTTP';
        
        //Attempt to create the object
        try{
            objXmlHttp = new ActiveXObject(strObjName);
            objXmlHttp.onreadystatechange = handler;
        }
        catch(e){
        //Object creation errored
            alert('IE detected, but object could not be created. Verify that active scripting and activeX controls are enabled');
            return;
        }
    }
    else if (is_opera){
        //Opera has some issues with xmlHttp object functionality
        alert('Opera detected. The page may not behave as expected.');
        return;
    }
    else{
        // Mozilla | Netscape | Safari
        objXmlHttp = new XMLHttpRequest();
        objXmlHttp.onload = handler;
        objXmlHttp.onerror = handler;
    }
    
    //Return the instantiated object
    return objXmlHttp;
}

//-->