﻿/*====================================================================|
| advisor_script.js                                                   |
| Ajax / javascript library for advisor KANA templateset              |
| Developers      :   Keith Lugthart, Jeff Hervouet                   |
| Date created   :   28-11-2006                                       |
| Last updated   :   05-02-2007                                       |
|                                                                     |
| FUNCTIONS USED                                                      |
|    httpRequest                                                      |
|    initReq                                                          |
|    sendData                                                         |
|    doSearch                                                         |
|    handleResponse                                                   |
|    sytlizeDiv                                                       |
|    setQuerystring                                                   |
|====================================================================*/


/* 'Global' varaible declaraition */
var request = null;
var queryString;
var divname;

/*====================================================================|
httpRequest:Wrapper function for constructing the request object
Parameters:
  reqType     : The HTTP request type, such as GET or POST
  url         : The URL of the server program
  asynch      : Whether to send the request asynchronously or not.
  respHandle  : The name of the function that will handle the response. 
                Any fith parameters, is the data 
                a POST request is designed to send
|====================================================================*/
function httpRequest(reqType,url,asynch,respHandle) {
  // Set the request object depending on browser
  if (!request && typeof XMLHttpRequest!="undefined") {//Mozilla based browsers
    request = new XMLHttpRequest();
  } else if (window.ActiveXObject) { // ActiveX type (Microsoft) based browsers
    request = new ActiveXObject("Msxml2.XMLHTTP");
    if (! request) {
      request = new ActiveXObject("Microsoft.XMLHTTP");
    }
  }
  /* Very unlikely, but we test for a null request
     If neither ActiveXObject was initailized */
  if(request) {
    // If the reqType parameter is POST, then the 5th argument to the function is the POSTed data
    if(reqType.toLowerCase() != "post") {
      initReq(reqType,url,asynch,respHandle);
    } else {
      // the POSTed data
      //var args = arguments[4];
      if(queryString != null && queryString.length > 0) {
        initReq(reqType,url,asynch,respHandle,queryString);
      }
    }
  } else {
    //request object could not be set
    alert("Your browser does not permit the use of all "+
          "of this application's features!");
  }
}

/*====================================================================|
initReq:Initialize a request object that is already constructed
Parameters:
  reqType     : The HTTP request type, such as GET or POST
  url         : The URL of the server program
  bool        : Whether to send the request asynchronously or not.
  respHandle  : The name of the function that will handle the response. 
                Any fith parameters, is the data 
                a POST request is designed to send
|====================================================================*/
function initReq(reqType,url,bool,respHandle) {
  try {
    /* Specify the function that will handle the HTTP response */
    request.onreadystatechange=handleResponse;
    request.open(reqType,url,bool);
    // if the reqType parameter is POST, then the 
    // 5th arguement to the function is the POSTed data
    if(reqType.toLowerCase() == "post") {
      request.setRequestHandler("Content-Type", request.getContentType());
      request.send(queryString);
    } else {
      request.send(null);
    }
  } catch (errv) {
    alert(
      "The application cannot contact "+
      "the server at the momnet. "+
      "Please try again in a few seconds. \n"+
      "Error detail: "+errv.message);
  }
}


function sendData(reqType,url,div,parameters) {
  divname = div;
  httpRequest(reqType,url+","+parameters,true,handleResponse);
}

function doSearch(div){
  setQuerystring();
  divname = div;
  alert(divname);
  httpRequest('POST','###API_COMMAND###',true,handleResponse);
}

// Event handler for XMLHttpRequest
function handleResponse() {
  try {
    if (request.readyState==4 || request.readyState=="complete") {
      var doc = request.responseText;
	  if(divname)
      sytlizeDiv(doc,divname);
    }
  } catch(err) {
    alert("It does not appear that the server "+
          "is available to run this application. Please "+
          "try again shortly. \nError: "+err.message);
  }
}

function handleResponse1() {
  if((request.readyState == 4) && (request.status == 200)) {
    var doc = request.responseText;
    sytlizeDiv(doc,divname);
  }
}

function sytlizeDiv(bdyTxt,div) {
  // reset div content
  div.innerHTML="";
  div.innerHTML=bdyTxt;
  //div.style.border="solid 1px #666666;";
}

function setQuerystring() {
  queryString = "";
  var frm = document.forms[0];
  var numberElements = frm.elements.length;
  for(var i = 0; i < numberElements; i++) {
    
    if(i < numberElements-1) {
      queryString += frm.elements[i].name+"="+
                     encodeURIComponent(frm.elements[i].value)+"&";
    } else {
      queryString += frm.elements[i].name+"="+
                     encodeURIComponent(frm.elements[i].value);
    }
  }
}

// Returns a model number form a serial number sting.
function getModelNumber(strSerialNumber) {     
  var MoldelNo;
  if (strSerialNumber != "")
    MoldelNo = strSerialNumber.substr(2,6);
  alert(ModelNo);
  return MoldelNo;
}
/*
function IncrementCounter(objectid,div) {
  var setURL = '/Servicesoft/Data/WW_TS/TemplateSets/ww_english_add/asp/objectcounter.asp?objectid='+objectid;
  divname = div;
  httpRequest('GET',setURL,true,handleResponse);
}*/


function IncrementCounter(objectid,objecttitle,value,urlis) {
  //alert(value);
  var setURL = '/Servicesoft/Data/WW_TS/TemplateSets/ww_english_add/asp/objectcounter.asp'+
               '?objectid='+objectid+'&title='+objecttitle+'&value='+value;
  if(urlis != "")
  {
    setURL += '&url='+urlis;
  }
  //alert(setURL);
  //divname = 'errordiv';
  httpRequest('GET',setURL,true,handleResponse);
}

function IncrementCounterdb(objectid,objecttitle,sessid,origin,ip,action,ws,kb) {
  //alert('in js');
  var setURL = '/Servicesoft/Data/WW_TS/TemplateSets/ww_english_add/asp/escalation_db.asp'+
               '?action='+action+'&objectid='+objectid+'&objecttitle='+objecttitle+'&sessid='+sessid+'&origin='+origin+'&ip='+ip+'&ws='+ws+'&kb='+kb;
//alert(setURL);
  httpRequest('GET',setURL,true,handleResponse);
}


function showProduct(str,div) { 
  alert(str+" go "+div);
  document.getElementById('hdnModelNo').value = str;
  var setURL = '/SRVS/DATA/WW_TS/TemplateSets/advisor_ts/asp/'
  setURL += 'advisor_code.asp?modelno='+str;
  httpRequest('GET',setURL,true,handleResponse);
  
  /*
  //alert(str);
  // set the height of the container (DIV)
  //document.getElementById("searchpage").style.height = 325;
  document.getElementById("SearchPane2").style.display = 'block';
  // Set the xmlHTTP object 
  xmlHttp = fnGetXmlHttpObject();
  if (xmlHttp==null) {
    alert ("Browser does not support HTTP Request");
    return;
  } 
  // Build the URL for that ASP page
  var url="/wwenglish/drivertestcase/dl_driver_firmware.asp";
  url=url+"?action="+action;
  url=url+"&q="+str;
  //alert(url);
  xmlHttp.onreadystatechange=fnProductStateChanged;
  xmlHttp.open("GET",url,true);
  xmlHttp.send(null);
  */
}


//// GENERAL KBASE FUNCTIONS

/*function show_hide(element){
 if (eval(element+'.style.display=="none"')){
  eval(element+'.style.display=""')
 }
 else
 {
  eval(element+'.style.display="none"')
 }
}*/