// JavaScript Document
/*****************************************************************/
/**** trace window *****/
/*****************************************************************/
var tracecount = 0;
var _opener = new Object();
function trace(msg, options){

    if (!options) 
        options = new Object();
    tracecount++;
    
    if (options) {
        width = options.width ? options.width : 300;
        height = options.height ? options.height : 300;
        sbars = options.scrollbars ? options.scrollbars : 1;
        resizable = options.resizable ? options.resizable : 1;
        windowname = options.windowname ? options.windowname : 'tracewindow';
    }
    if (!_opener.document) {
        _opener = window.open('', windowname, 'toolbar=0,scrollbars=' + sbars + ',location=0,statusbar=0,menubar=0,resizable=' + resizable + ',width=' + width + ',height=' + height);
        _opener.document.write('<body style="background:#ffffcc"><div id="trace" style="font:10px arial;">output</div></body>');
        _opener.document.close();
        _opener.onunload = function(){
            _opener = new Object();
        }
        
    }
    _opener.focus();
    _opener.document.getElementById('trace').innerHTML = _opener.document.getElementById('trace').innerHTML + "\n<br/>" + tracecount + ":" + msg;
    
}

/*
 * open a popup window
 * usage: onclick="popupwindow('mypage.html', {windowname: 'mypage', width:600, height:300});
 * options object is optional
 */
function popupwindow(url, options){

    if (!options) 
        options = new Object;
    
    _width = options.width ? options.width : 300;
    _height = options.height ? options.height : 400;
    _scrollbars = options.scrollbars ? options.scrollbars : 0;
    _resizable = options.resizable ? options.resizable : 0;
    _toolbar = options.toolbar ? options.toolbar : 0;
    _statusbar = options.statusbar ? options.statusbar : 0;
    _menubar = options.menubar ? options.menubar : 0;
    _location = options.location ? options.location : 0;
    _windowname = options.windowname ? options.windowname.replace(/\W+/g, '_') : 'popupwindow'; // replace all non word chars in windowname
    _left = options.left ? options.left : (screen.width - _width) / 2; // else the center of the screen
    _top = options.top ? options.top : (((screen.height - _height) / 2) - 30); // else the center of the screen
    _mypopup = window.open(url, _windowname, 'toolbar=' + _toolbar + ',scrollbars=' + _scrollbars + ',location=' + _location + ',statusbar=' + _statusbar + ',menubar=' + _menubar + ',resizable=' + _resizable + ',width=' + _width + ',height=' + _height + ',top=' + _top + ',left=' + _left);
    if (!_mypopup) 
        alert("There was an error opening the " + _windowname + " window. If you have a popup-blocker please disable it for this site");
    else 
        _mypopup.focus();
    
    return _mypopup;
    
    
}
function popuplink(obj, options){
	try{
		popupwindow(obj.href, options)
	}catch(e){
		//
	}
	
}

var zero = 0.00001;
var one = 0.999999;
Element.extend({
    within: function(_x, _y){
        var obj = $(this).getCoordinates();
        if (_x >= obj.left && _x <= (obj.left + obj.width) &&
        _y >= obj.top &&
        _y <= (obj.top + obj.height)) {
            return true;
        }
        else {
            return false;
        }
    }
});
function getcurrentfolder(url){
       var folders = url.split(site_root);
	       //folders.each(function(e){trace(e)});
	   folders = folders[1];
	  var split_url=folders.split('/');    
	  return split_url[1];
}
var RollOvers = {
    _hovername: "headernavrollover",
    _hovering: false,
    
    attachrollovers: function(){
        $$("#sidenav a").each(function(e){
            var sideEffects = new Fx.Styles(e.getParent(), {
                duration: 500,
                transition: Fx.Transitions.quadOut, 
                onStart: function(){
                   e.getParent().toggleClass("over");
                }
            });
            var rolloverAction = function (color1, color2){
                if (!e.getParent().hasClass("on") && e.getParent().getParent().id == "sidenav" ){                     
                    sideEffects.stop();
                    sideEffects.start({                            
                            'background-color': [color1, color2]
                    });
                }
            }            
            e.addEvent("mouseenter", function(){rolloverAction('#ffffff', '#e3e3e1')});
            e.addEvent("mouseleave", function(){rolloverAction('#e3e3e1', '#ffffff')});
        });
        
        if (!$("headernavrollover")) {
            var _hover = new Element('div', {
                id: 'headernavrollover'
            });
            _hover.setHTML("&nbsp;");
            _hover.injectInside(document.body);
            _hover.setStyle("left", $("headernav").getLeft() + "px");
        }
        else {
            var _hover = $("headernavrollover");
        }
        _hover.setStyle("display", "none");
        //_hover.setOpacity(zero);
        var myEffects = new Fx.Styles($(_hover), {
            duration: 350,
            transition: Fx.Transitions.quadOut
        });
       // var isIE = navigator.appName == "Microsoft Internet Explorer" ? true : false

	    $$("#headernav a").each(function(e){
            // the first folder in the url matches the first folder in a header nav link, set the parent item to on state
            if(getcurrentfolder(e.href) == getcurrentfolder(document.URL))
            e.getParent().addClass("on");
	        
            e.onmouseover = function(){
                if (!e.getParent().hasClass("on")) {
                    RollOvers._hovering = true;
                    _hover.setStyle("top", (e.getTop() + e.offsetHeight) + "px");
                    _hover.setStyle("width", (e.offsetWidth) + "px");
                    _newleft = navigator.appName == "Microsoft Internet Explorer" ? e.getLeft()+1 : e.getLeft();
                    if (e.getParent().hasClass("last")) {
                        _hover.setStyle("width", (e.offsetWidth - 1) + "px");
                    }
                    if (_hover.getStyle("display") == "none") {
                        _hover.setOpacity(zero);
                        _hover.setStyle("display", "block");
                        myEffects.start({
                            'left': [_hover.getLeft(), _newleft ],
                            'opacity': [zero, one]
                        });
                    }
                    else {
                        _hover.setOpacity(one);
                        myEffects.stop();
                        myEffects.start({
                            'left': [_hover.getLeft(), _newleft ]
                        });
                    }
                }
            }
            e.onmouseout = function(){
                RollOvers._hovering = false;
                (function(){
                    if (!RollOvers._hovering) {
                        myEffects.stop();
                        myEffects.start({
                            'opacity': [one, zero]
                        });
                    }
                }).delay(100);
                
            }
            
        });
        $$("fieldset.collapse h3").each(function(e){
            var slide = function (h3){           
                var _div = h3.getNext();
                h3.toggleClass("open");                
                if(_div.offsetHeight < 10){                   
                    new Fx.Style(_div, 'height', {duration:300, transition: Fx.Transitions.quadOut }).start(_div.offsetHeight, _div.scrollHeight);
                }else{
                    new Fx.Style(_div, 'height', {duration:300, transition: Fx.Transitions.quadIn}).start(_div.offsetHeight, 0);
                }  
            }        
           
            e.addEvent("click", function(){slide(e)});
           
        });
    }
};

/* ie craps itself with an operation aborted for the domready event */
if(navigator.userAgent.indexOf('MSIE') != -1){
    window.addEvent('load', function(){
        RollOvers.attachrollovers();
        PngFix.filterClasses(["img.product_image", 
        					"img.pngreplace",
        					"img.product_image_sml",
                            "img.case_study_image", 
                            "img.health_image", 
                            "img.product_image_lge", 
                            "div.shade p img", 
                            "div.friendbox img"]); 
	   
    });
}else{
    window.addEvent('domready', function(){
        RollOvers.attachrollovers();
    });
}


// trims leading and trailing spaces
function trim(str) {
  str = this != window? this : str;
  return str.replace(/^\s+/g, '').replace(/\s+$/g, '');
}
// gets object by id
function objById(id)
{
    if (document.getElementById)
        var returnVar = document.getElementById(id);
    else if (document.all)
        var returnVar = document.all[id];
    else if (document.layers)
        var returnVar = document.layers[id];
    return returnVar;
}

function submitsearch(val){
//googlesearch
    $('googlesearch').getFirst().elements["q"].value = $(val).value;
    $('googlesearch').getFirst().submit();
}








/*****************************************************************/








//Quick Poll form effects

//Global Variables
var NF = new Array();
var isIE = false;
var resizeTest = 1;

//Initialization function
function NFInit() {
	try {
		document.execCommand('BackgroundImageCache', false, true);
	} catch(e) {}
	if(!document.getElementById) {return false;}
	//alert("click me first");
	NFDo('start');
}
function NFDo(what) {
	var niceforms = document.getElementsByTagName('form');
	var identifier = new RegExp('(^| )'+'niceform'+'( |$)');
	if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) {
		var ieversion=new Number(RegExp.$1);
		if(ieversion < 7) {return false;} //exit script if IE6
		isIE = true;
	}
	for(var q = 0; q < niceforms.length; q++) {if(identifier.test(niceforms[q].className)) {
		if(what == "start") { //Load Niceforms
			NF[q] = new niceform(niceforms[q]);
			niceforms[q].start();
		}
		else { //Unload Niceforms
			niceforms[q].unload();
			NF[q] = "";
		}
	}}
}
function NFFix() {
	NFDo('stop');
	NFDo('start');
}
function niceform(nf) {
	nf._inputText = new Array(); nf._inputRadio = new Array(); nf._inputCheck = new Array(); nf._inputSubmit = new Array(); nf._inputFile = new Array(); nf._textarea = new Array(); nf._select = new Array(); nf._multiselect = new Array();
	nf.add_inputText = function(obj) {this._inputText[this._inputText.length] = obj; inputText(obj);}
	nf.add_inputRadio = function(obj) {this._inputRadio[this._inputRadio.length] = obj; inputRadio(obj);}
	nf.add_inputCheck = function(obj) {this._inputCheck[this._inputCheck.length] = obj; inputCheck(obj);}
	nf.add_inputSubmit = function(obj) {this._inputSubmit[this._inputSubmit.length] = obj; inputSubmit(obj);}
	nf.add_inputFile = function(obj) {this._inputFile[this._inputFile.length] = obj; inputFile(obj);}
	nf.add_textarea = function(obj) {this._textarea[this._textarea.length] = obj; textarea(obj);}
	nf.add_select = function(obj) {this._select[this._select.length] = obj; selects(obj);}
	nf.add_multiselect = function(obj) {this._multiselect[this._multiselect.length] = obj; multiSelects(obj);}
	nf.start = function() {
		//Separate and assign elements
		var allInputs = this.getElementsByTagName('input');
		for(var w = 0; w < allInputs.length; w++) {
			switch(allInputs[w].type) {
				case "text": case "password": {this.add_inputText(allInputs[w]); break;}
				case "radio": {this.add_inputRadio(allInputs[w]); break;}
				case "checkbox": {this.add_inputCheck(allInputs[w]); break;}
				case "submit": case "reset": case "button": {this.add_inputSubmit(allInputs[w]); break;}
				case "file": {this.add_inputFile(allInputs[w]); break;}
			}
		}
		var allButtons = this.getElementsByTagName('button');
		for(var w = 0; w < allButtons.length; w++) {
			this.add_inputSubmit(allButtons[w]);
		}
		var allTextareas = this.getElementsByTagName('textarea');
		for(var w = 0; w < allTextareas.length; w++) {
			this.add_textarea(allTextareas[w]);
		}
		var allSelects = this.getElementsByTagName('select');
		for(var w = 0; w < allSelects.length; w++) {
			if(allSelects[w].size == "1") {this.add_select(allSelects[w]);}
			else {this.add_multiselect(allSelects[w]);}
		}
		//Start
		for(w = 0; w < this._inputText.length; w++) {this._inputText[w].init();}
		for(w = 0; w < this._inputRadio.length; w++) {this._inputRadio[w].init();}
		for(w = 0; w < this._inputCheck.length; w++) {this._inputCheck[w].init();}
		for(w = 0; w < this._inputSubmit.length; w++) {this._inputSubmit[w].init();}
		for(w = 0; w < this._inputFile.length; w++) {this._inputFile[w].init();}
		for(w = 0; w < this._textarea.length; w++) {this._textarea[w].init();}
		for(w = 0; w < this._select.length; w++) {this._select[w].init(w);}
		for(w = 0; w < this._multiselect.length; w++) {this._multiselect[w].init(w);}
	}
	nf.unload = function() {
		//Stop
		for(w = 0; w < this._inputText.length; w++) {this._inputText[w].unload();}
		for(w = 0; w < this._inputRadio.length; w++) {this._inputRadio[w].unload();}
		for(w = 0; w < this._inputCheck.length; w++) {this._inputCheck[w].unload();}
		for(w = 0; w < this._inputSubmit.length; w++) {this._inputSubmit[w].unload();}
		for(w = 0; w < this._inputFile.length; w++) {this._inputFile[w].unload();}
		for(w = 0; w < this._textarea.length; w++) {this._textarea[w].unload();}
		for(w = 0; w < this._select.length; w++) {this._select[w].unload();}
		for(w = 0; w < this._multiselect.length; w++) {this._multiselect[w].unload();}
	}
}
function inputRadio(el) { //extent Radio buttons
	el.oldClassName = el.className;
	el.dummy = document.createElement('div');
	if(el.checked) {el.dummy.className = "NFRadio NFh";}
	else {el.dummy.className = "NFRadio";}
	el.dummy.ref = el;
	if(isIE == false) {el.dummy.style.left = findPosX(el) + 'px'; el.dummy.style.top = findPosY(el) + 'px';}
	else {el.dummy.style.left = findPosX(el) + 4 + 'px'; el.dummy.style.top = findPosY(el) + 4 + 'px';}
	el.dummy.onclick = function() {
		if(!this.ref.checked) {
			var siblings = getInputsByName(this.ref.name);
			for(var q = 0; q < siblings.length; q++) {
				siblings[q].checked = false;
				siblings[q].dummy.className = "NFRadio";
			}
			this.ref.checked = true;
			this.className = "NFRadio NFh";
		}
	}
	el.onclick = function() {
		if(this.checked) {
			var siblings = getInputsByName(this.name);
			for(var q = 0; q < siblings.length; q++) {
				siblings[q].dummy.className = "NFRadio";
			}
			this.dummy.className = "NFRadio NFh";
		}
	}
	el.onfocus = function() {this.dummy.className += " NFfocused";}
	el.onblur = function() {this.dummy.className = this.dummy.className.replace(/ NFfocused/g, "");}
	el.init = function() {					
		this.parentNode.insertBefore(this.dummy, this);
		el.className = "NFhidden";
	}
	el.unload = function() {
		this.parentNode.removeChild(this.dummy);
		this.className = this.oldClassName;
	}
}

function inputSubmit(el) { //extend Buttons
	el.oldClassName = el.className;
	el.left = document.createElement('img');
	el.left.className = "NFButtonLeft";
	el.left.src = imagesPath + "0.png";
	el.right = document.createElement('img');
	el.right.src = imagesPath + "0.png";
	el.right.className = "NFButtonRight";
	el.onmouseover = function() {
		this.className = "NFButton NFh";
		this.left.className = "NFButtonLeft NFh";
		this.right.className = "NFButtonRight NFh";
	}
	el.onmouseout = function() {
		this.className = "NFButton";
		this.left.className = "NFButtonLeft";
		this.right.className = "NFButtonRight";
	}
	el.init = function() {
		this.parentNode.insertBefore(this.left, this);
		this.parentNode.insertBefore(this.right, this.nextSibling);
		this.className = "NFButton";
	}
	el.unload = function() {
		this.parentNode.removeChild(this.left);
		this.parentNode.removeChild(this.right);
		this.className = this.oldClassName;
	}
}



//Get Position
function findPosY(obj) {
	var posTop = 0;
	do {posTop += obj.offsetTop;} while (obj = obj.offsetParent);
	return posTop;
}
function findPosX(obj) {
	var posLeft = 0;
	do {posLeft += obj.offsetLeft;} while (obj = obj.offsetParent);
	return posLeft;
}
//Get Siblings
function getInputsByName(name) {
	var inputs = document.getElementsByTagName("input");
	var w = 0; var results = new Array();
	for(var q = 0; q < inputs.length; q++) {if(inputs[q].name == name) {results[w] = inputs[q]; ++w;}}
	return results;
}

//Add events
var existingLoadEvent = window.onload || function () {};
var existingResizeEvent = window.onresize || function() {};
window.onload = function () {
    existingLoadEvent();
    NFInit();
}
window.onresize = function() {
	if(resizeTest != document.documentElement.clientHeight) {
		existingResizeEvent();
		NFFix();
	}
	resizeTest = document.documentElement.clientHeight;
}




//Roll overs


function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}