function initComponents(oEvent,oNode) {
  oNode = oNode || document.documentElement;
  if(oNode.nodeType==1) {
    for(var n=0;n<oNode.childNodes.length;n++)
      initComponents(null,oNode.childNodes[n]);
     
    //tabpannels
    if(oNode.className.indexOf("tabpannel") != -1 && oNode.className.indexOf("tabbed") == -1) {
      oNode.className = "tabbed " + oNode.className;
      var aPannelId = oNode.className.split(" ");
      var sPannelId = aPannelId[aPannelId.length-1] || null;
      if(sPannelId) {
        createTabPannel(sPannelId,oNode);
      }
    }

    //roundboxes  
    if(oNode.className.indexOf("toRbx") != -1)
      createRoundBox(oNode)
  }
};

function randomNumber() {
  return Math.floor(Math.random()*Math.floor(Math.random()*10000+1)+1);
}
function showInfo(sText) {
  var oInfo = document.getElementById("info");
  if(oInfo) {
    oInfo.getElementsByTagName("h1")[0].innerHTML=sText;
    oInfo.style.display="block";
    flashInfo();
  }
};
function debug(text) {
  var oDebug = document.getElementById("debug");
  if(oDebug) {
    var td = new Date();
    var ts = td.getMinutes()+":"+td.getSeconds();
    oDebug.innerHTML = "["+ts+"] "+text+"<br/>"+oDebug.innerHTML;
  }
}
function flashInfo(bDefault) {
  var oInfo = document.getElementById("info");
  if(oInfo) {
    if(bDefault) oInfo.className="infobar";
    else {
      oInfo.className="infobar flashing";
      setTimeout("flashInfo(true)",500);
    }
  }
}

function displayComponent(sId) {
  var oComponent = document.getElementById(sId);
  if(oComponent) oComponent.style.visibility="visible";
};

//helpers
function getElementsByClass(sTag,oStartNode,sClass) {
  if(oStartNode.gEbC_cache) return oStartNode.gEbC_cache;
  var aTags=oStartNode.getElementsByTagName(sTag);
  var aReturnTags = Array();
  for (var i=0; i<aTags.length; i++) {
    if (aTags[i].className.indexOf(sClass) != -1)
      aReturnTags.push(aTags[i]);
  }
  oStartNode.gEbC_cache = aReturnTags;
  return aReturnTags;
};

//cookies
function cookie_class() {
  this.set=function(sName,sValue,iDays,sDomain,bSecure) {
    var sExpires = "";
    if(iDays) {
      var date = new Date();
      date.setTime(date.getTime()+(iDays*24*60*60*1000));
      sExpires = "; expires="+date.toGMTString();
    }
    document.cookie = sName+"="+sValue+sExpires+"; path=/"+((sDomain)?"; domain="+sDomain:"")+((bSecure)?"; secure":"");
  };

  this.get=function(sName) {
    var nameEQ = sName + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
      var c = ca[i];
      while (c.charAt(0)==' ') c = c.substring(1,c.length);
      if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
  };
};var sRoundCornersTop = ""
var sRoundCornersBottom = "";
function createRoundBox(oNode) {
  sRoundCornersTop = '<table cellspacing="0" cellpadding="0"><tr><td class="tlc">&nbsp;</td><td class="tb">&nbsp;</td><td class="trc">&nbsp;</td></tr><tr><td class="lb">&nbsp;</td><td><div class="content">';
  sRoundCornersBottom = '</div></td><td class="rb">&nbsp;</td></tr><tr><td class="blc">&nbsp;</td><td class="bb">&nbsp;</td><td class="brc">&nbsp;</td></tr></table>';
  if(oNode) {
    oNode.innerHTML=sRoundCornersTop+oNode.innerHTML+sRoundCornersBottom;
    oNode.className = oNode.className.replace("toRbx","rbx");
  }
}
function createTabPannel(sPannelId,oNode) {
  var oTabs = document.getElementById(sPannelId+"_tabs");
  var bFirstTab=false;
  if(oTabs) oNode.style.display="none";
  else {
    oTabs = document.createElement("div");
    oTabs.id = sPannelId+"_tabs";
    oTabs.className="tabs";
    oNode.parentNode.insertBefore(oTabs,oNode);
    bFirstTab=true;
  }
  if(!oNode.id) oNode.id = sPannelId+"_tab"+randomNumber();;
  var oTab = document.createElement("a");
  oTab.href = "javascript:showTabPannel('"+oNode.id+"')";
  oTab.id = oNode.id+"_tab";
  var oTitle = oNode.getElementsByTagName("h1")[0];
  var sRbxType = "blue-b";

  if(oTitle) {
    oTitle.style.display="none";
    if(oTitle.className != "" && oTitle.className != "pannel")
      sRbxType=oTitle.className.replace("pannel","");
  }
  var sTitle = oTitle ? oTitle.innerHTML : "Untitled tab";
  oTab.className = (document.all?"rbx":"toRbx")+" "+sRbxType+" nobtm "+(bFirstTab ? "active" : "");
  oTab.innerHTML = sRoundCornersTop+sTitle+sRoundCornersBottom;
  oTabs.appendChild(oTab);
};

function showTabPannel(sPannelId) {
  var oPannel = document.getElementById(sPannelId);
  if(oPannel) {
    var prevSibs,nextSibs;
    oPannel.style.display="block";
    var oTab = document.getElementById(sPannelId+"_tab");
    if(oTab) {
      oTab.className += " active";
      prevSibs = oTab.previousSibling;
      while(prevSibs) {
        if(prevSibs.nodeType==1) prevSibs.className=prevSibs.className.replace("active","");
        prevSibs = prevSibs.previousSibling
      }

      nextSibs = oTab.nextSibling;
      while(nextSibs) {
        if(nextSibs.nodeType==1) nextSibs.className=nextSibs.className.replace("active","");
        nextSibs = nextSibs.nextSibling
      }
    };
    prevSibs = oPannel.previousSibling;
    while(prevSibs) {
      if(prevSibs.nodeType==1 && prevSibs.className.indexOf("tabpannel") != -1 )
        prevSibs.style.display="none";
      prevSibs = prevSibs.previousSibling
    }

    nextSibs = oPannel.nextSibling;
    while(nextSibs) {
      if(nextSibs.nodeType==1 && nextSibs.className.indexOf("tabpannel") != -1 )
        nextSibs.style.display="none";
      nextSibs = nextSibs.nextSibling
    }

  }
}//menu bar functions {
  var visibleMenu = null;
  function showSubMenu(oItem,sMenuBar) {
    if(visibleMenu != oItem) {
      var oSubMenu = getElementsByClass("div",oItem,"submenu")[0];
      if(oSubMenu) {
        if(window[sMenuBar+"_onShow"]) window[sMenuBar+"_onShow"]();
        oSubMenu.style.height=oSubMenu._myHeight+"px";
        oSubMenu.style.paddingTop="2px";
        oItem.getElementsByTagName("a")[0].className+=" active";
        visibleMenu = oItem;
      }
    }
  };
  function hideSubMenu(oItem,sMenuBar) {
    var oSubMenu = getElementsByClass("div",oItem,"submenu")[0];
    if(oSubMenu) {
      if(window[sMenuBar+"_onHide"]) window[sMenuBar+"_onHide"]();
      oSubMenu.style.height="0px";
      oSubMenu.style.paddingTop="0px";
      oItem.getElementsByTagName("a")[0].className=oItem.getElementsByTagName("a")[0].className.replace("active","");
      visibleMenu = null;
    }
  };
  
  function initMenuBar(sMenuBar) {
    var menuBar = document.getElementById(sMenuBar);
    if(menuBar) {
      var menuItems = getElementsByClass("div",menuBar,"submenu");
      for(var n=0; n < menuItems.length; n++) {
        menuItems[n].parentNode.onmouseover = function() {
          showSubMenu(this,sMenuBar);
        };
        menuItems[n].parentNode.onmouseout = function() {
          hideSubMenu(this,sMenuBar);
        };

        if(!window.XMLHttpRequest) 
          menuItems[n]._myHeight=menuItems[n].offsetHeight;
        else
          menuItems[n]._myHeight=menuItems[n].offsetHeight-2;
        menuItems[n].parentNode.getElementsByTagName("a")[0].innerHTML+="<span class=\"arrow_down\">&nbsp;</span>";

        hideSubMenu(menuItems[n].parentNode);
      };
      menuBar.style.visibility="visible";
    }
  };
function loaderInit(firstLoad) {
  var oApplications = document.getElementById("applications");
  oApplications = oApplications?oApplications.childNodes:Array();
  var sApp = location.href.split("#")[1];
  sApp = sApp?sApp.toLowerCase():null;
  if(sApp || location.href.indexOf("#") == -1 || firstLoad == true) {
    for(var n=0; n<oApplications.length; n++) {
      if(oApplications[n].nodeName.toLowerCase()=="div" && oApplications[n].id != sApp+"_app")
        oApplications[n].style.display="none";
    };
    loadApp();
  }
};

function loadApp() {
  var sApp = location.href.split("#")[1];
  sApp = sApp?sApp.toLowerCase():null;
  var oApp = document.getElementById(sApp+"_app");
  if(sApp && oApp) {
    oApp.style.display="block";
    if(window[sApp+"AppInit"]) setTimeout(sApp+"AppInit()",100);
  }
};var history_manager = new cookie_class();
function updateHistory(sWitch) {
  var historyItem = document.domain+"||||";
  var sCookieData = quick_favorites_manager.get("history_"+sWitch);
  var sSites = "";
  if(sCookieData) {
    var aCookieHistory = sCookieData.split("||||");
    sCookieData = "";
    for(var m=0; m<aCookieHistory.length; m++) {
      if(aCookieHistory[m]) {
        sSites += "<a class=\"roundbox\" href=\"http://"+aCookieHistory[m]+"\">"+sRoundCornersTop+(m+1)+". "+aCookieHistory[m]+sRoundCornersBottom+"</a>";
        sCookieData += aCookieHistory[m]+"||||";
      }
      else
        sSites += "<a class=\"roundbox\" href=\"#\">"+sRoundCornersTop+(m+1)+". "+sRoundCornersBottom+"</a>";
      if(m==4) break;
    };
    if(sCookieData.indexOf(historyItem) == -1) 
      sCookieData = historyItem+sCookieData;
  }
  else sCookieData = historyItem;

  if(sSites != "") {
    var oHistoryList = document.getElementById("history_"+sWitch);
    if(oHistoryList) oHistoryList.innerHTML=sSites;
  }
  history_manager.set("history_"+sWitch,sCookieData,365,"rustyrecon.com",false);
};var quick_favorites_manager = new cookie_class();
function favoritesAppInit() {
  getFavorites();
}
function newFavorite() {
  var sTitle = document.title;
  var sLink = location.href.split("#")[0];
  var sCookieData = sTitle+"||"+sLink+"||||";
  for(var n=1;n<=10;n++) {
    var sCookie = quick_favorites_manager.get("qfav"+n);
    if(sCookie) {
      if(sCookie.indexOf(sCookieData)==-1) {
        if((sCookie+sCookieData).length < 4000) {
          sCookieData+=sCookie;
          quick_favorites_manager.set("qfav"+n,sCookieData,364,"rustyrecon.com",false);
          showInfo("This site is now in your <a href=\"#favorites\">Quick Favorites</a> list. Don't forget to <a href=\"#login\">login</a> to make the changes permanent!");
          return true
        }
      }
      else {
        showInfo("This site is already in your <a href=\"#favorites\">Quick Favorites</a> list. Don't forget to <a href=\"#login\">login</a> to make the changes permanent!");
        return false;
      }
    }
    else {
      quick_favorites_manager.set("qfav"+n,sCookieData,364,"rustyrecon.com",false);
      showInfo("This site is now in your <a href=\"#favorites\">Quick Favorites</a> list. Don't forget to <a href=\"#login\">login</a> to make the changes permanent!");
      return true;
    }
  }
  return null;
};
function getFavorites() {
  var sTitle = document.title;
  var sLink = location.href.split("#")[0];
  var oFavorites = document.getElementById("favorites_app");
  if(oFavorites) {
    var sSites = "";
    for(var n=1;n<=10;n++) {
      var sCookie = quick_favorites_manager.get("qfav"+n);
      if(sCookie) {
        var aCookieFavs = sCookie.split("||||");
        for(var m=0; m<aCookieFavs.length; m++) {
          if(aCookieFavs[m]) {
            var sPart = aCookieFavs[m].split("||");
            if(sLink == sPart[1] && sTitle == sPart[0])
              sSites += "<a class=\"roundbox\" style=\"font-weight:bold\" href=\""+sPart[1]+"\">"+sRoundCornersTop+sPart[0]+sRoundCornersBottom+"</a>";
            else
              sSites += "<a class=\"roundbox\" href=\""+sPart[1]+"\">"+sRoundCornersTop+sPart[0]+sRoundCornersBottom+"</a>";
          }
        }
      }
    }
    var oList = getElementsByClass("div",oFavorites,"scroll")[0];
    if(sSites != "")
      oList.innerHTML=sSites;
    else 
      oList.innerHTML="<div class=\"info\"><h1>You have no favorites added!</h1>Quick Favorites lets you add a product for later viewing.<br/>Click on the \"Add this page\" button of any page to add it to your Quick Favorites.</div>";
  }
}
function removeAllFavorites() {
  if(!confirm("Are you sure you want to remove all of your favorites?")) return;
  for(var n=1;n<=10;n++) {
    var sCookie = quick_favorites_manager.get("qfav"+n);
    if(sCookie) {
      quick_favorites_manager.set("qfav"+n,"",-1,"rustyrecon.com",false);
    }
  }
  getFavorites();
}
//onload init functions 
window.onload = function() {
  var defer = 1;
  setTimeout('initComponents()',defer);
  setTimeout('initMenuBar("menubar")',defer);
  setTimeout('loaderInit(true)',defer);
//  setTimeout('updateHistory("domains")',defer);
//  setTimeout('updateHistory("users")',defer);
//  setTimeout('updateHistory("listings")',defer);
  setTimeout('displayComponent("header")',defer);
  setTimeout('displayComponent("applications")',defer);
};

document.onclick = function(oEvent) {
  oEvent = oEvent||window.event;
  var oTarget = oEvent.srcElement||oEvent.target;
  var n=0;
  while(oTarget && oTarget.nodeName.toLowerCase() != "a" && n < 5) {
    oTarget = oTarget.parentNode;
    n++;
  };
  if(oTarget && oTarget.nodeName.toLowerCase() == "a") {
    var sValue = oTarget.getAttribute("href");
    location.href=sValue;
    var sApp = sValue.split("#")[1];
    sApp = sApp?sApp.toLowerCase():null;
    if(sApp) loaderInit();
  }
};