function SBOsetConfigSettings() {
  // Get the portal query param to determine which SBOWidget JavaScript file to call
  // The portal param indicates whether the user should search against and be redirected
  // to My, O'Reilly, Informit, or PeachPit.
  var sboLoad = document.getElementById("SBOLoad");
  var loadUrl = sboLoad ? sboLoad.src : "";
  if (loadUrl) {
   // alert("loadUrl is " + loadUrl);
    var portalParam = SBOgetQueryParam(loadUrl, "portal");
    if (portalParam && portalParam != "") {
       var SBOUICode = SBOgetQueryParam(loadUrl, "uicode") ? SBOgetQueryParam(loadUrl, "uicode") : "";
       var SBOPromoCode = SBOgetQueryParam(loadUrl, "promocode") ?  SBOgetQueryParam(loadUrl, "promocode") : "";
       var SBOCid = SBOgetQueryParam(loadUrl, "cid") ? SBOgetQueryParam(loadUrl, "cid") : "";
       var SBOTrackingCode = SBOgetQueryParam(loadUrl, "trackingcode") ? SBOgetQueryParam(loadUrl, "trackingcode") : "";
       var SBOColor = SBOgetQueryParam(loadUrl, "color") ? SBOgetQueryParam(loadUrl, "color") : "C7C8CA";
       var SBODisplayMode = SBOgetQueryParam(loadUrl, "displayPF") ? SBOgetQueryParam(loadUrl, "displayPF") :"false";

       switch (portalParam) {
          case 'oreilly':
             if (!SBOCid)
              SBOCid = "2008-oreilly-widget";
           SBO.Config.setConfig("http://safari.oreilly.com", SBOUICode, SBOPromoCode, SBOCid, SBOTrackingCode, SBOColor, SBODisplayMode);
            break;
          case 'informit':
            if (!SBOCid)
              SBOCid = "2008-informit-widget";
            SBO.Config.setConfig("http://safari.informit.com", SBOUICode, SBOPromoCode, SBOCid, SBOTrackingCode, SBOColor, SBODisplayMode);
	          break;
           case 'peachpit':
            if (!SBOCid)
                SBOCid = "2008-peachpit-widget";
            SBO.Config.setConfig("http://safari.peachpit.com", SBOUICode, SBOPromoCode, SBOCid, SBOTrackingCode, SBOColor, SBODisplayMode);
	          break;

         case 'my':
             if (!SBOCid)
                SBOCid = "2008-my-widget";
             SBO.Config.setConfig("http://my.safaribooksonline.com", SBOUICode, SBOPromoCode, SBOCid, SBOTrackingCode, SBOColor, SBODisplayMode);
	          break;
         default :
             if (!SBOCid)
                SBOCid = "2008-my-widget";
             SBO.Config.setConfig("http://my.safaribooksonline.com", SBOUICode, SBOPromoCode, SBOCid, SBOTrackingCode, SBOColor, SBODisplayMode);
	          break;

       }
     }
  }
  var searchImageElem = document.getElementById("SBOsearchImage");
  if (searchImageElem) {
     searchImageElem.style.display = "";
   }

}

SBOLoadSearchWidgetVar = function() {
   // alert("In SBOLoadSearchWidgetVar");
   /* Add this manually to the page instead
    var parentElem = document.getElementsByTagName("body")[0];
    if(!parentElem)
    {
       alert("this document has lost its body!");
    }
    var scriptElem = document.createElement("script"); 
    scriptElem.setAttribute("type","text/javascript");
    scriptElem.text = "var SBOWidget = new SBO.Ajax.Panel.Search();";
    firstChildElem = parentElem.firstChild;
    if (firstChildElem) {
       parentElem.insertBefore( scriptElem, firstChildElem);
    }else { 
       alert ("Coulnd't find first child element");
    }
    */
    SBOsetConfigSettings();
   
};

function SBOincludeJavaScript(jsFile, id, htmlHead)
{
   if (document.getElementById(id) == null) {
  /*    var scriptElem = document.createElement("script"); 
      scriptElem.type = "text/javascript";
      scriptElem.src = jsFile;
      scriptElem.id = id;
      scriptElem.onload = SBOLoaded;
      htmlHead.appendChild(scriptElem);
      //alert ("Added script " + jsFile); 
   */
    eval(document.write('<script type="text/javascript" id="' + id + '"src="' + jsFile + '"></' + 'script>'));
  }else  {
      alert("Already loaded that script");
  }
   
}

SBOLoadWidgetScripts = function() {
  var SBOHost = "http://safaribooksonline.com/tools/SBOWidgets";
  var localHost = "http://localhost/SBOWidgets";
  var htmlHead = document.getElementsByTagName("head")[0];
    if(!htmlHead)
    {
      alert("this document has lost its head!");
      return;
  }
  SBOincludeJavaScript(SBOHost + '/SBO.js', 'SBO', htmlHead);
  SBOincludeJavaScript(SBOHost + '/config/config.js', 'SBOJSconfig', htmlHead);
  SBOincludeJavaScript(SBOHost + '/utils/utils.js', 'SBOJSutils', htmlHead);
  SBOincludeJavaScript(SBOHost + '/ajax/ajax.js', 'SBOJSajax', htmlHead);
  SBOincludeJavaScript(SBOHost + '/ajax/panel/panel.js', 'SBOJSpanel', htmlHead);
  SBOincludeJavaScript(SBOHost + '/format/format.js','SBOJSformat', htmlHead);
  SBOincludeJavaScript(SBOHost + '/ajax/panel/bookOverview.js','SBOJSbookOverview', htmlHead);
  SBOincludeJavaScript(SBOHost + '/ajax/panel/viewer.js', 'SBOJSviewer', htmlHead);
  SBOincludeJavaScript(SBOHost + '/ajax/panel/search.js', 'SBOJSsearch', htmlHead);


};

function SBOgetQueryParam( url, name )
{
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec(url );
  if( results == null )
    return "";
  else
    return results[1];
}

function runOnLoad(f) {
   if (runOnLoad.loaded){
      f();
   }else {
      runOnLoad.funcs.push(f);

   }

}


runOnLoad.funcs = [];
runOnLoad.loaded = false;

runOnLoad.run = function() {
   if (runOnLoad.loaded) {
      return;
   }
   for (var i = 0; i < runOnLoad.funcs.length; i++) {
      try {
         runOnLoad.funcs[i]();
      }catch(e) {
        /* An exception in one function shouldn't stop the rest */
      }   
   }
   runOnLoad.loaded = true;
   delete runOnLoad.funcs;
   delete runOnLoad.run

};

//Register runOnLoad.run() as the onload event handler for the window
if (window.addEventListener) {
   window.addEventListener("load", runOnLoad.run, false);
}else if (window.attachEvent) {
   window.attachEvent("onload", runOnLoad.run);

}else {
  window.onload = runOnLoad.run;
}


SBOLoadWidgetScripts();
//window.onload = SBOsetConfigSettings;
runOnLoad(SBOsetConfigSettings);


