/************************************************************************
 * Copyright 2000-2004 by Mike Hall                                     *
 * Please see http://www.brainjar.com for terms of use.                 *
 ************************************************************************/

// var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
// document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
// 
// try {
// var pageTracker = _gat._getTracker("UA-12059397-1");
// pageTracker._trackPageview();
// } catch(err) {}


function Browser() {

  var ua, s, i;

  this.isIE    = false;  // Internet Explorer
  this.isOP    = false;  // Opera
  this.isNS    = false;  // Netscape
  this.version = null;

  ua = navigator.userAgent;

  s = "Opera";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isOP = true;
    this.version = parseFloat(ua.substr(i + s.length));
    return;
  }

  s = "Netscape6/";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isNS = true;
    this.version = parseFloat(ua.substr(i + s.length));
    return;
  }

  // Treat any other "Gecko" browser as Netscape 6.1.

  s = "Gecko";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isNS = true;
    this.version = 6.1;
    return;
  }

  s = "MSIE";
  if ((i = ua.indexOf(s))) {
    this.isIE = true;
    this.version = parseFloat(ua.substr(i + s.length));
    return;
  }
}

var browser = new Browser();


//----------------------------------------------------------------------------
// Code for progressbar
//----------------------------------------------------------------------------

function showProgress(textName)
{
    if(browser.isIE)
    {
        progDiv = document.all[textName];
        windowH = document.body.offsetHeight;
        scrollY = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop
        divTop = (windowH / 2) - (140 / 2) + scrollY;
        myToIframe = document.createElement("IFRAME");
        myToIframe.src = "/iframebypass.html";
        myToIframe.style.display = "none";
        myToIframe.style.position = "absolute";
        progDiv.iframeEL = progDiv.parentNode.insertBefore(myToIframe, progDiv);
        progDiv.iframeEL.style.left = getPageOffsetLeft(progDiv);
        progDiv.iframeEL.style.top  = divTop + "px";
        progDiv.iframeEL.style.width  = progDiv.offsetWidth + "px";
        progDiv.iframeEL.style.height = progDiv.offsetHeight + "px";
        progDiv.iframeEL.style.display = "";
    }
    else
    {
        progDiv = document.getElementById(textName);
        windowH = window.innerHeight;
        progDiv.style.position = 'fixed';
        divTop = (windowH / 2) - (140 / 2);
    }
    
    progDiv.style.top  = divTop + "px";
    progDiv.style.visibility = "visible";
}

function hideProgress(textName)
{
    if(browser.isIE)
    {
        progDiv = document.all[textName];
        progDiv.iframeEL.style.display = "none";
    }
    else
    {
        progDiv = document.getElementById(textName);
    }
    progDiv.style.visibility = "hidden";
    currentLoc = location.href;
    location.href = currentLoc;
}


/// ---
///  Test code for expand collapse
/// ---

function expandDiv(hiddenDiv, actButton) {
    var e=document.getElementById(hiddenDiv);
    var actButtonID = document.getElementById(actButton);
    if(!e)return false;
    if(e.style.display=="none"){
//         e.style.display="block"
        actButtonID.src = '/images/minus.gif';
    } else {
//         e.style.display="none"
        actButtonID.src = '/images/plus.gif';
    }
    
    return true;
}


var selectedDivList = 'none';
var selectedDivButton = 'none';

function selectDiv(hiddenDiv, actButton) {
    if($("#" + hiddenDiv).css('display') == "none"){
        if (selectedDivList != 'none') {
            $("#" + selectedDivList).fadeOut('fast', function () {
                $("#" + selectedDivButton).attr('src', '/images/whitedot.gif');
                $("#" + hiddenDiv).fadeIn('normal');
                $("#" + actButton).attr('src', '/images/droppoint.gif');
                selectedDivList = hiddenDiv;
                selectedDivButton = actButton;
            });
        } else {
            $("#" + hiddenDiv).fadeIn('normal');
            $("#" + actButton).attr('src', '/images/droppoint.gif');
            selectedDivList = hiddenDiv;
            selectedDivButton = actButton;
        }
    } else {
        $("#" + hiddenDiv).fadeOut('normal');
        $("#" + actButton).attr('src', '/images/whitedot.gif');
    }
    
    return true;
}

//----------------------------------------------------------------------------
// Code for prev/next scrolling through a list of div's
//  arrays and values declared in page_top to allow for template info
//----------------------------------------------------------------------------

// var scrollingLists = null;

var autoScrollTimeout = 4000;  // 4 seconds
var autoScrollCalled = false;
var scrollingLists = new Array();
scrollingLists['sellpoint'] = new Array('sellpoint1', 'sellpoint2', 'sellpoint3', 'sellpoint4', 'sellpoint5', 'sellpoint6');
scrollingLists['sellpoint']['current'] = 0;
scrollingLists['sellpoint']['displtype'] = 'block';
scrollingLists['sellpoint']['interrupt'] = false;
scrollingLists['sellpoint']['hold_animate'] = false;

function nextItem(listName, interrupt) {
    if (!scrollingLists[listName]['hold_animate']) {
        var currentDivIdx=scrollingLists[listName]['current'];
        var currentDiv=scrollingLists[listName][currentDivIdx];
        var nextDiv = null;
        var nextDivIdx = currentDivIdx;
        
        if (++nextDivIdx > (scrollingLists[listName].length - 1)) {
            nextDivIdx = 0;
        }
        scrollingLists[listName]['current'] = nextDivIdx;
        
        nextDiv = scrollingLists[listName][nextDivIdx];
        
        if (!currentDiv || !nextDiv) return false;
        
        scrollingLists[listName]['hold_animate'] = true;
        $("#" + currentDiv).fadeOut('fast', function () {
                $("#" + nextDiv).fadeIn('fast');
                $("#" + nextDiv).css('display', scrollingLists[listName]['displtype']);
                updateListCounter(listName);
                scrollingLists[listName]['hold_animate'] = false;
                scrollingLists[listName]['interrupt'] = interrupt;
        });
    }
    return true;
}

function prevItem(listName, interrupt) {
    if (!scrollingLists[listName]['hold_animate']) {
        var currentDivIdx=scrollingLists[listName]['current'];
        var currentDiv=scrollingLists[listName][currentDivIdx];
        var prevDiv = null;
        var prevDivIdx = currentDivIdx;
    
        if (--prevDivIdx < 0) {
            prevDivIdx = (scrollingLists[listName].length - 1);
        }
        scrollingLists[listName]['current'] = prevDivIdx;
        
        prevDiv = scrollingLists[listName][prevDivIdx];
    
        if (!currentDiv || !prevDiv) return false;
    
        scrollingLists[listName]['hold_animate'] = true;
        $("#" + currentDiv).fadeOut('fast', function () {
                $("#" + prevDiv).fadeIn('fast');
                $("#" + prevDiv).css('display', scrollingLists[listName]['displtype']);
                updateListCounter(listName);
                scrollingLists[listName]['hold_animate'] = false;
                scrollingLists[listName]['interrupt'] = interrupt;
        });
    }
    return true;
}

function selectItem(listName, idx, interrupt) {
    if (!scrollingLists[listName]['hold_animate']) {
        var currentDivIdx=scrollingLists[listName]['current'];
        var currentDiv=scrollingLists[listName][currentDivIdx];
        var newDiv = null;
        var newDivIdx = idx;
    
        if (idx < 0 || idx > (scrollingLists[listName].length - 1) ) {
            return false;
        }
        scrollingLists[listName]['current'] = newDivIdx;
        
        newDiv = scrollingLists[listName][newDivIdx];
        
        if (!currentDiv || !newDiv) return false;
        
        scrollingLists[listName]['hold_animate'] = true;
        $("#" + currentDiv).fadeOut('fast', function () {
                $("#" + newDiv).fadeIn('medium', function (){
                    $("#" + newDiv).css('display', scrollingLists[listName]['displtype']);
                    updateListCounter(listName);
                    scrollingLists[listName]['hold_animate'] = false;
                    scrollingLists[listName]['interrupt'] = interrupt;
                });
        });
    }
    return true;
}

function updateListCounter(listName) {
    currentIdxElem=document.getElementById(listName + '_idx');
    totalElem=document.getElementById(listName + '_total');
    idElem=document.getElementById(listName + '_id' + scrollingLists[listName]['current']);
    
    if (currentIdxElem && totalElem) {
        currentIdxElem.innerHTML = (scrollingLists[listName]['current'] + 1);
        totalElem.innerHTML = scrollingLists[listName].length;
        if (idElem) {
            updateListIdHighlight(listName);
        }
    } else {
        if (idElem) {
            updateListIdHighlight(listName);
        } else {
            return false;
        }
    }
}

function updateListIdHighlight(listName) {
    for (i=0; i < scrollingLists[listName].length; i++) {
        oldIdElem = document.getElementById(listName + '_id' + i);
        if (oldIdElem) {
            oldIdElem.style.color = '#006';
            oldIdElem.style.backgroundColor = '#FFF';
        }
    }
    idElem.style.color = '#FFF';
    idElem.style.backgroundColor = '#006';
}

function autoScroll() {
    if (autoScrollCalled == true) {
        // .length property returns 0...
        listCount = 0;
        for (var i in scrollingLists) {
            listCount++;
        }
        if (listCount > 0) {
            staggerScroll = autoScrollTimeout / listCount;
        } else {
            staggerScroll = autoScrollTimeout;
        }
//         alert(scrollingLists.length);
        staggerTimeout = 0;
        for (var i in scrollingLists) {
            if (!scrollingLists[i]['interrupt']) {
                staggerTimeout += staggerScroll;
                setTimeout("autoScrollItem('" + i + "')", staggerTimeout);
            }
        }
    } else {
        autoScrollCalled = true;
    }
    setTimeout("autoScroll()", autoScrollTimeout);
}

function autoScrollItem(i) {
//     alert (i);
    nextItem(i, false);
}

//----------------------------------------------------------------------------
// Code for handling the menu bar and active button.
//----------------------------------------------------------------------------

var activeButton = null;
var stopcollapse = null;
var collapseButton = null;
var oldStyle  = null;

function changeButtonStyle(tableButton, direction)
{
	if (direction == 'in')
	{
		oldStyle = tableButton.className;
		if (tableButton.className == 'menuBarMyBII') {
		      tableButton.className = 'menuBarMyBIIActive';
                } else {
		      tableButton.className = 'menuBarActive';
                }
	}
	else if (direction == 'out')
	{
		tableButton.className = oldStyle;
	}
	else
	{ }
}

function buttonOver(event, menuId, buttonID, orientation) {

  var button;

  button = document.getElementById(buttonID);
//   if (browser.isIE)
//     button = window.event.srcElement;
//   else
//     button = event.currentTarget;

  button.blur();

  if (button.menu == null) {
    button.menu = document.getElementById(menuId);
    if (button.menu.isInitialized == null)
      menuInit(button.menu);
  }

  if (activeButton != null)
    stopcollapse = false;
    resetButton(activeButton);

  if (button != activeButton) {
     if (orientation == 'horizontal') {
        depressButtonHorizontal(button);
    } else {
        depressButton(button);
    }
    activeButton = button;
  }
  else if (button == activeButton)
  {
    if (orientation == 'horizontal') {
        depressButtonHorizontal(button);
    } else {
        depressButton(button);
    }
  }
  else
    activeButton = null;

}

function buttonOut(event, menuId, activeObj, buttonID) {
  var button;
  var parentButton;
  var parentButtonText;
  
  button = document.getElementById(buttonID);

//   if (browser.isIE)
//     button = window.event.srcElement;
//   else
//     button = event.currentTarget;
    
  if (activeObj != null)
  {
	  	parentButtonText = activeObj.id + "Button";
	  	
		if(browser.isIE) {
			parentButton = document.all[parentButtonText];
   		}
		else
		{
	      		parentButton = document.getElementById(parentButtonText);
	   	}
		button = parentButton;
  }

  if (button != null)
  {
  	resetDelay(button);
  }

}

function depressButton(button) {

  var x, y;

  button.className += " menuButtonActive";

  x = getPageOffsetLeft(button);
  y = getPageOffsetTop(button) + button.offsetHeight;
  
  if (browser.isIE) {
    x += button.parentNode.offsetParent.clientLeft;
    y += button.parentNode.offsetParent.clientTop;
  }

  button.menu.style.left = x + "px";
  button.menu.style.top  = y + "px";
  button.menu.style.visibility = "visible";

  if (button.menu.iframeEl != null)
  {
    button.menu.iframeEl.style.left = button.menu.style.left;
    button.menu.iframeEl.style.top  = button.menu.style.top;
    button.menu.iframeEl.style.width  = button.menu.offsetWidth + "px";
    button.menu.iframeEl.style.height = button.menu.offsetHeight + "px";
    button.menu.iframeEl.style.display = "";
  }
}


function depressButtonHorizontal(button) {

  var x, y;

  button.className += " menuButtonActive";

  x = getPageOffsetLeft(button) + button.offsetWidth;
  y = getPageOffsetTop(button);
  
  if (browser.isIE) {
    x += button.parentNode.offsetParent.clientLeft;
    y += button.parentNode.offsetParent.clientTop;
  }

  button.menu.style.left = x + "px";
  button.menu.style.top  = y + "px";
  button.menu.style.visibility = "visible";

  if (button.menu.iframeEl != null)
  {
    button.menu.iframeEl.style.left = button.menu.style.left;
    button.menu.iframeEl.style.top  = button.menu.style.top;
    button.menu.iframeEl.style.width  = button.menu.offsetWidth + "px";
    button.menu.iframeEl.style.height = button.menu.offsetHeight + "px";
    button.menu.iframeEl.style.display = "";
  }
}


function resetDelay(button)
{
	stopcollapse = false;
	collapseButton = button;
	setTimeout("resetButton()", 300);
}

function resetButton(button)
{
  if (collapseButton != null)
  {
  	button = collapseButton;
	collapseButton = null;
  }
  
  if (stopcollapse != true)
  {
    try
    {
    	removeClassName(button, "menuButtonActive");
    }
    catch (e)
    {
    	// do nothing
    }
    try
    {
    
    if (button.menu != null) {
      closeSubMenu(button.menu);
      button.menu.style.visibility = "hidden";
      if (button.menu.iframeEl != null)
        button.menu.iframeEl.style.display = "none";
    }
    
    }
    catch (e)
    {
    	return false;
    }
    
  
  }
}

//----------------------------------------------------------------------------
// Code to handle the menus and sub menus.
//----------------------------------------------------------------------------

function menuMouseover(event) {

  var menu;

  if (browser.isIE)
    menu = getContainerWith(window.event.srcElement, "DIV", "menu");
  else
    menu = event.currentTarget;
  
  if (menu.activeItem != null)
    closeSubMenu(menu);
}

function menuItemMouseover(event, menuId) {

  var item, menu, x, y;

  if (browser.isIE)
    item = getContainerWith(window.event.srcElement, "A", "menuItem");
  else
    item = event.currentTarget;
  menu = getContainerWith(item, "DIV", "menu");
  alert (menu);

  if (menu.activeItem != null)
    closeSubMenu(menu);
  menu.activeItem = item;

  item.className += " menuItemHighlight";

  if (item.subMenu == null) {
    item.subMenu = document.getElementById(menuId);
    if (item.subMenu.isInitialized == null)
      menuInit(item.subMenu);
  }

  x = getPageOffsetLeft(item) + item.offsetWidth;
  y = getPageOffsetTop(item);
  
  var maxX, maxY;

  if (browser.isIE) {
    maxX = Math.max(document.documentElement.scrollLeft, document.body.scrollLeft) +
      (document.documentElement.clientWidth != 0 ? document.documentElement.clientWidth : document.body.clientWidth);
    maxY = Math.max(document.documentElement.scrollTop, document.body.scrollTop) +
      (document.documentElement.clientHeight != 0 ? document.documentElement.clientHeight : document.body.clientHeight);
  }
  if (browser.isOP) {
    maxX = document.documentElement.scrollLeft + window.innerWidth;
    maxY = document.documentElement.scrollTop  + window.innerHeight;
  }
  if (browser.isNS) {
    maxX = window.scrollX + window.innerWidth;
    maxY = window.scrollY + window.innerHeight;
  }
  maxX -= item.subMenu.offsetWidth;
  maxY -= item.subMenu.offsetHeight;

  if (x > maxX)
    x = Math.max(0, x - item.offsetWidth - item.subMenu.offsetWidth
      + (menu.offsetWidth - item.offsetWidth));
  y = Math.max(0, Math.min(y, maxY));

  item.subMenu.style.left       = x + "px";
  item.subMenu.style.top        = y + "px";
  item.subMenu.style.visibility = "visible";

  if (item.subMenu.iframeEl != null)
  {
    item.subMenu.iframeEl.style.left    = item.subMenu.style.left;
    item.subMenu.iframeEl.style.top     = item.subMenu.style.top;
    item.subMenu.iframeEl.style.width   = item.subMenu.offsetWidth + "px";
    item.subMenu.iframeEl.style.height  = item.subMenu.offsetHeight + "px";
    item.subMenu.iframeEl.style.display = "";
  }

  if (browser.isIE)
    window.event.cancelBubble = true;
  else
    event.stopPropagation();
}

function closeSubMenu(menu) {

  if (menu == null || menu.activeItem == null)
    return;

  if (menu.activeItem.subMenu != null) {
    closeSubMenu(menu.activeItem.subMenu);
    
    menu.activeItem.subMenu.style.visibility = "hidden";

    if (menu.activeItem.subMenu.iframeEl != null)
      menu.activeItem.subMenu.iframeEl.style.display = "none";

    menu.activeItem.subMenu = null;
  }

  removeClassName(menu.activeItem, "menuItemHighlight");
  menu.activeItem = null;
}

//----------------------------------------------------------------------------
// Code to initialize menus.
//----------------------------------------------------------------------------

function menuInit(menu) {

  var itemList, spanList;
  var textEl, arrowEl;
  var itemWidth;
  var w, dw;
  var i, j;

  // Find the width of a menu item.

  itemList = menu.getElementsByTagName("A");
  if (itemList.length > 0)
    itemWidth = itemList[0].offsetWidth;
  else
    return;

  if (browser.isIE) {
    w = itemList[0].offsetWidth;
    itemList[0].style.width = w + "px";
    dw = itemList[0].offsetWidth - w;
    w -= dw;
    itemList[0].style.width = w + "px";
  }

  //SSL PROBLEM!
//   if (browser.isIE) {
//     menu.insertAdjacentHTML("afterBegin", '<iframe src="about:blank" id=test></iframe>');

    myIframe = document.createElement("IFRAME");
    myIframe.src = "/iframebypass.html";
    myIframe.style.display = "none";
    myIframe.style.position = "absolute";
    myIframe.style.border = "none";
    
    menu.iframeEl = menu.parentNode.insertBefore(myIframe, menu);
//     menu.iframeEl.src = "https://boshart-devel.biinet.boshart.com/iframebypass.html";
//     menu.iframeEl.style.display = "none";
//     menu.iframeEl.style.position = "absolute";
//   }

  menu.isInitialized = true;
}

//----------------------------------------------------------------------------
// General utility functions.
//----------------------------------------------------------------------------

function getContainerWith(node, tagName, className) {

  while (node != null) {
    if (node.tagName != null && node.tagName == tagName &&
        hasClassName(node, className))
      return node;
    node = node.parentNode;
  }

  return node;
}

function hasClassName(el, name) {

  var i, list;

  if (el.className == null)
    return false;
  
  list = el.className.split(" ");
  for (i = 0; i < list.length; i++)
    if (list[i] == name)
      return true;

  return false;
}

function removeClassName(el, name) {

  var i, curList, newList;

  if (el.className == null)
    return false;

  newList = new Array();
  curList = el.className.split(" ");
  for (i = 0; i < curList.length; i++)
    if (curList[i] != name)
      
      newList.push(curList[i]);
  el.className = newList.join(" ");
}

function getPageOffsetLeft(el) {

  var x;

  x = el.offsetLeft;
  if (el.offsetParent != null)
    x += getPageOffsetLeft(el.offsetParent);

  return x;
}

function getPageOffsetTop(el) {

  var y;

  y = el.offsetTop;
  if (el.offsetParent != null)
    y += getPageOffsetTop(el.offsetParent);

  return y;
}
