function refreshMe(url) {
    if(url) {
	    window.location=url;
    }else {
        window.location=window.location;
    }
}
function assignSliders() {
    //alert("worked");
    var sliderBarsCollection = gETAC("div", "showMoreBar", document);
    if(sliderBarsCollection.length <= 0) {return;}
    for(var i=0;i<sliderBarsCollection.length;i++) {
        sliderBarsCollection[i].isClosed = true;
        sliderBarsCollection[i].sliderBox = gETAC("div", "showMoreHider", sliderBarsCollection[i].parentNode)[0];
        sliderBarsCollection[i].totalHeight = gETAC("div", "heightContainer",sliderBarsCollection[i].sliderBox)[0].offsetHeight;
        
        sliderBarsCollection[i].onclick = sliderBarOnClick;
        sliderBarsCollection[i].openTween = heightTween = new Tween(sliderBarsCollection[i].sliderBox.style,'height',Tween.easeOut,0,sliderBarsCollection[i].totalHeight,.75,'px');
        sliderBarsCollection[i].openOpacTween = new OpacityTween(sliderBarsCollection[i].sliderBox,Tween.easeOut, 0, 100, .75);
        
        sliderBarsCollection[i].closeTween = heightTween = new Tween(sliderBarsCollection[i].sliderBox.style,'height',Tween.easeIn,sliderBarsCollection[i].totalHeight,0,.5,'px');
        sliderBarsCollection[i].closeOpacTween = new OpacityTween(sliderBarsCollection[i].sliderBox,Tween.easeIn, 100, 0, .5);
    }
}
function sliderBarOnClick() {
    var text = gET("span", this)[0];
    if(this.isClosed) {
        text.innerHTML = "Hide";
        this.animationEngine = new Parallel();
        this.animationEngine.addChild(this.openTween);
        if(!document.all){ 
			this.animationEngine.addChild(this.openOpacTween);
		}
        this.isClosed = false;
    }else {
        text.innerHTML = "Show";
        this.animationEngine = new Parallel();
        this.animationEngine.addChild(this.closeTween);
        if(!document.all){ 
			this.animationEngine.addChild(this.closeOpacTween);
		}
        this.isClosed = true;
    }
    this.animationEngine.start();
    return false;
}

var globalDispenserCollection = new Array();
var globalDispenserRowCollection = new Array();

function assignDispensers() {
    
    var DispenserCollection = gETAC("div", "Dispenser", document);
    if(DispenserCollection.length <= 0) {return;}
    
    for(var i=0;i<DispenserCollection.length;i++) {
        globalDispenserCollection[i] = DispenserCollection[i];
        var idOfCoorspondingRow = DispenserCollection[i].getAttribute('id').replace("dispenser-", "dispenerRow-");
       
        var row = gE(idOfCoorspondingRow);
         
        if(!row) {return;}
        
        globalDispenserRowCollection[i] = row;
        DispenserCollection[i].row = row;
        DispenserCollection[i].row.parent = DispenserCollection[i];
        
        DispenserCollection[i].onmouseover = DispenserCollectionOnMouseOver;
        DispenserCollection[i].onmouseout =  DispenserCollectionOnMouseOut;
        DispenserCollection[i].onclick = DispenserCollectionOnClick
        
        DispenserCollection[i].row.onmouseover = DispenserRowCollectionOnMouseOver;
        DispenserCollection[i].row.onmouseout  = DispenserRowCollectionOnMouseOut;
        
        
    }
}

function DispenserCollectionOnClick() {
    //addClass(this, "ActiveDispenser");
    //addClass(this.row, "ActiveDispenserRow");
    var hiddenContentId = this.getAttribute('id').replace("dispenser-", "hiddenPopUpContent-");
    //alert( hiddenContentId );
    var popupContent = gE(hiddenContentId);
    
    if(!popupContent) {return;}
    //imageContainer
    var popupContentContainer = gE("DetailsContent");//gETAC("DIV", "popInContent", popupContent)[0];
    //popupContentContainer.innerHTML = "";
    popupContentContainer.innerHTML = popupContent.innerHTML;
    overlay.start();
    return false;
}

function DispenserCollectionOnMouseOver() {
    if(!hasClass(this.parentNode, "SelectedDispenser")) {
        addClass(this, "ActiveDispenser");
    }
    addClass(this.row, "ActiveDispenserRow");
}
function DispenserCollectionOnMouseOut() {
    removeClass(this, "ActiveDispenser");
    removeClass(this.row, "ActiveDispenserRow");
}
function DispenserRowCollectionOnMouseOver() {
    //addClass(this.parent, "ActiveDispenser");
    if(!hasClass(this.parent.parentNode, "SelectedDispenser")) {
        addClass(this.parent, "ActiveDispenser");
    }
    addClass(this, "ActiveDispenserRow");
}
function DispenserRowCollectionOnMouseOut() {
    removeClass(this.parent, "ActiveDispenser");
    removeClass(this, "ActiveDispenserRow");
}
var popInsCollection;
function assignPopIns() {
    popInsCollection = new Array();
    var popIns = gETAC("a", "popIn", document);
    if(popIns.length <= 0) {return;}
    for(var i=0;i<popIns.length;i++) {
        popIns[i].onclick = popInOnClick;        
        //popIns[i].isAlreadyOpened = false;
        
    }
}
function popInOnClick() {
    
    //if(!this.isAlreadyOpened) {
        var objBody = document.getElementsByTagName("body").item(0);

        for(var i=0;i<popInsCollection.length;i++) {
            objBody.removeChild(popInsCollection[i]);
	        //popInsCollection[i].isAlreadyOpened = false;
	        
        }
        popInsCollection = new Array();
        var x = getXPos(this);
        var y = getYPos(this);
        var height = getHeight(this);
        var width = getWidth(this);
        
        
        var popIn = document.createElement("div");
        popIn.className = "popIn clearfix";
    	
        var popInTop = document.createElement("div");
        popInTop.className = "popInTop";
    	
        var popInContent = document.createElement("div");
        popInContent.className = "popInContent";
    	
    	var closeLink = document.createElement("a");
    	closeLink.setAttribute('href','javascript: void(0);');
    	closeLink.className="close";
    	popInContent.appendChild(closeLink);
    	
    	var title = document.createElement("strong");
    	title.innerHTML = this.getAttribute("title");
    	popInContent.appendChild(title);
    	
    	var content = document.createElement("div");
    	content.className = "popInContent";
    	content.innerHTML = this.getAttribute("rel");
    	popInContent.appendChild(content);
    	//var thisRef = this;
    	closeLink.onclick = function() {
    	    objBody.removeChild(this.parentNode.parentNode);
    	    popInsCollection = new Array();
    	    //thisRef.isAlreadyOpened = false;
    	    return false;
    	};
    	
        var popInBottom = document.createElement("div");
        popInBottom.className = "popInBottom";
    	
        popIn.appendChild(popInTop);
        popIn.appendChild(popInContent);    
        popIn.appendChild(popInBottom);
        popIn.style.top = (y + height) + "px";
        popIn.style.left = (x - (280 - width)) + "px";
        popInsCollection.push(popIn);
        objBody.appendChild(popIn);
        
        
       // this.isAlreadyOpened = true;
    //}
    
    return false;
}

function assignImageSwaps(whichContentBlock) {
    var collectionOfImageClicks = gETAC("a", "imageSwap", whichContentBlock);
    var imageToSwap = gETAC("img", "swapableImage", whichContentBlock)[0];
    if(!imageToSwap) {return;}
    
    for(var i=0;i<collectionOfImageClicks.length;i++) {
        
        collectionOfImageClicks[i].imageToSwap = imageToSwap;
        collectionOfImageClicks[i].listRef = collectionOfImageClicks;
        collectionOfImageClicks[i].onclick = ImageSwapOnClick;
    }
}

function ImageSwapOnClick() {
    
    var lastPartOfSrc = this.imageToSwap.src.substring(this.imageToSwap.src.lastIndexOf("_"), this.imageToSwap.src.lastIndexOf("."));
    if(!hasIndexOf(lastPartOfSrc, "x")) {
        //this means theres already a _... modifier on the img src, so replace it with the new one we clicked on
        
        this.imageToSwap.src = this.imageToSwap.src.replace(lastPartOfSrc, this.getAttribute("rel"));
        
    }else {
        var firstPart = this.imageToSwap.src.substring(0, this.imageToSwap.src.lastIndexOf("."));
        var endPart = this.imageToSwap.src.substring(this.imageToSwap.src.lastIndexOf("."));
        //theres no _... modifier
        if(this.getAttribute("rel") != "") {
        
            this.imageToSwap.src = fisrtPart + this.getAttribute("rel") + endPart;
            
        }
    }
    for(var i=0;i<this.listRef.length;i++) {
        removeClass(this.listRef[i], "active");
    }
    addClass(this, "active");
    
    return false;
}

function addClassToBody(classname) {
    addClass(document.body, classname);
}

var dynPage = {
	enable:function() { 
		overlay.init();
	}
}
var originalSuggestImagesArray = new Array();
var overlay = {
	// initialize()
	
	init: function() {	
	
		if (!document.getElementsByTagName){ return; }
		var arrAnchors = document.getElementsByTagName('a');
		
		// loop through all anchor tags
		for (var i=0; i<arrAnchors.length; i++){
			var anchor = arrAnchors[i];
			
			var relAttribute = String(anchor.getAttribute('rel'));

			// use the string.match() method to catch 'lightbox' references in the rel attribute
			if (relAttribute.toLowerCase().match('lightbox')){
			   
				anchor.onclick = function () {
					var relAttrib = this.getAttribute('rel');
					var popinContentId = this.className;
					var popupContentContainer = gE("DetailsContent");
					var popupContent = gE(popinContentId);
					if(!popupContent) {return;}
					popupContentContainer.innerHTML = popupContent.innerHTML;
					activeSuggestionImage = this;
					overlay.start(this); 
					return false;
				}
			}
		}

		var objBody = document.getElementsByTagName("body").item(0);

		var objOverlay = document.createElement("div");
		objOverlay.setAttribute('id','overlay');
		objOverlay.style.display = 'none';
		objOverlay.onclick = function() { overlay.end(); return false; }
		objBody.appendChild(objOverlay);

		var objWrapper = document.createElement("div");
		objWrapper.setAttribute('id','detailsWrapper');
		objWrapper.style.display = 'none';
		objWrapper.onclick = function() { overlay.end(); return false; }
		objBody.appendChild(objWrapper);

		var objdetailsBox = document.createElement("div");
		objdetailsBox.setAttribute('id','detailsBox');
		objWrapper.appendChild(objdetailsBox);

		var objInnerContainer = document.createElement("div");
		objInnerContainer.setAttribute('id','inner');
		objdetailsBox.appendChild(objInnerContainer);

        var objTopbarContainer = document.createElement("div");
		objTopbarContainer.setAttribute('id','topbar');
		objTopbarContainer.className = "clearfix";
		
		objInnerContainer.appendChild(objTopbarContainer);
        
        var objContentContainer = document.createElement("div");
        objContentContainer.setAttribute('id','DetailsContent');
        objContentContainer.onclick = function(e) {
			if (!e) var e = window.event;
			e.cancelBubble = true;
			if (e.stopPropagation) e.stopPropagation(); 
		}
        objContentContainer.className = "clearfix";
        objInnerContainer.appendChild(objContentContainer);

		var objCloseLink = document.createElement("a");
		objCloseLink.setAttribute('id','close');
		objCloseLink.setAttribute('href','javascript: void(0);');
		
		objCloseLink.onclick = function() { overlay.end(); return false; }
		objTopbarContainer.appendChild(objCloseLink);

		
       
	},

	//	start()
	start: function() {	
		var popupContentContainer = gE("DetailsContent");
		assignImageSwaps(popupContentContainer);
		hideSelectBoxes();

		// stretch overlay to fill page
		var arrayPageSize = getPageSize();
		var objOverlay = document.getElementById('overlay');
		objOverlay.style.height = arrayPageSize[1] + "px";
		objOverlay.style.display = 'block';

		// calculate top offset for the lightbox and display 
		var arrayPageSize = getPageSize();
		var arrayPageScroll = getPageScroll();
		var boxTop = arrayPageScroll[1] + (arrayPageSize[3] / 15);

		var objWrapper = document.getElementById('detailsWrapper');
		objWrapper.style.top = boxTop + 'px';
		objWrapper.style.display = 'block';
	},

	//	end()
	end: function() {
		var objOverlay = document.getElementById('overlay');
		objOverlay.style.display = 'none';
		var objWrapper = document.getElementById('detailsWrapper');
		objWrapper.style.display = 'none';
		
		showSelectBoxes();
	}
}

//
// getPageScroll()
// Returns array with x,y page scroll values.
// Core code from - quirksmode.org
//
function getPageScroll(){

	var yScroll;

	if (self.pageYOffset) {
		yScroll = self.pageYOffset;
	} else if (document.documentElement && document.documentElement.scrollTop){	 // Explorer 6 Strict
		yScroll = document.documentElement.scrollTop;
	} else if (document.body) {// all other Explorers
		yScroll = document.body.scrollTop;
	}

	var arrayPageScroll = new Array('',yScroll) 
	return arrayPageScroll;
}

// -----------------------------------------------------------------------------------

//
// getPageSize()
// Returns array with page width, height and window width, height
// Core code from - quirksmode.org
// Edit for Firefox by pHaez
//
function getPageSize(){
	
	var xScroll, yScroll, pageHeight, pageWidth, arrayPageSize;
	
	if (window.innerHeight && window.scrollMaxY) {	
		xScroll = document.body.scrollWidth;
		yScroll = window.innerHeight + window.scrollMaxY;
	} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
		xScroll = document.body.scrollWidth;
		yScroll = document.body.scrollHeight;
	} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
		xScroll = document.body.offsetWidth;
		yScroll = document.body.offsetHeight;
	}
	
	var windowWidth, windowHeight;
	if (self.innerHeight) {	// all except Explorer
		windowWidth = self.innerWidth;
		windowHeight = self.innerHeight;
	} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
		windowWidth = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
	} else if (document.body) { // other Explorers
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
	}	
	
	// for small pages with total height less then height of the viewport
	if(yScroll < windowHeight){
		pageHeight = windowHeight;
	} else { 
		pageHeight = yScroll;
	}

	// for small pages with total width less then width of the viewport
	if(xScroll < windowWidth){	
		pageWidth = windowWidth;
	} else {
		pageWidth = xScroll;
	}


	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight) 
	return arrayPageSize;
}

function showSelectBoxes(){
	var selects = document.getElementsByTagName("select");
	for (i = 0; i != selects.length; i++) {
		selects[i].style.visibility = "visible";
	}
}

function hideSelectBoxes(){
	var selects = document.getElementsByTagName("select");
	for (i = 0; i != selects.length; i++) {
		selects[i].style.visibility = "hidden";
	}
}

function Void(){return null;}
VOID_LINK = "javascript:Void();";

function initHelpNav() {
    var helpNavEle = gE("helpNav");
    var columnContainerEle = gE("columnContainer");
    if( helpNavEle && columnContainerEle ) {
        var navEles = gET( "a", helpNavEle );
        var contentEles = gETAC( "div", "helpContent", columnContainerEle );
        
        // set the events on the nav ele and hide all the content except the first one
        helpNavEle._active = 0;
        addClass( navEles[0], "selected" );
        for( var i = 0; i < contentEles.length; i++ ) {
            // don't hide the first one
            if( i != 0 ) {
                addClass( contentEles[i], "hidden" );
            }
            navEles[i].index = i;
            navEles[i].onclick = function() { 
                addClass( contentEles[helpNavEle._active], "hidden" );
                removeClass( navEles[helpNavEle._active], "selected" );                
                removeClass( contentEles[this.index], "hidden" );
                addClass( this, "selected" );
                helpNavEle._active = this.index;
                this.blur();
                return false;
            };
            navEles[i].href = VOID_LINK;
            
        }
        
        // add events to each nav ele
        
    }
}

function pressDefaultButton(defaultButtonId,e)
{
     var keyCodeEntered = (e.which) ? e.which : e.keyCode;
    
     if ( keyCodeEntered == 13 ) 
     {
          document.getElementById(defaultButtonId).click();
          return false;
     }

     return true;
}


function initEnter() { 
	var enterEles = gETAC("div", "enterTriggerContainer", document.body );
	var actionEle = gETAC("a", "enterAction", document.body );
	
	for( var i = 0; i < enterEles.length; i++ ) {
		var triggerEles = gETAC("input", "enterTrigger", enterEles[i] );
		for( var k = 0; k < triggerEles.length; k++ )  {
			triggerEles[k].actionUrl = actionEle[i].href;
			triggerEles[k].onkeypress = function(e) {
				if( !e ) {
					e = window.event;
				}
				if( e ) {
					if( e.keyCode == 13) {
						location.href = this.actionUrl;
					}
				}
			} 
		}
	}
}

function changeZipAlertCheckoutStep1() { 
	var checkoutStep1 = gE('checkoutStep1');
	if( checkoutStep1 ) {
		var linkEle = gETAC( 'a', 'changeZipLink', checkoutStep1 )[0];
		linkEle.destUrl = linkEle.href;
		linkEle.href = "javascript:void(0);";
		linkEle.onclick = function() { 
			var answer = confirm( "Your delivery selection was based on products available within the ZIP code you provided. If this is not the ZIP code where you want to receive your delivery you will have to start the process again using the current ZIP code.\n\nWe're sorry for the inconvenience. Would you like to continue and change your ZIP code?" );
			if( answer ) {
				location.href = this.destUrl;
				return true;
			} else {
				return false;
			}
		}
	}
}

function showHideBillingAddressInfo( showHide ) {
	var billingEle = gE("showBillingAddress");
	if( billingEle ) {
		var listEle = gETAC("ul", "triggerRadioList", billingEle)[0];
		var liEles = listEle.getElementsByTagName("input");
		var containerEle = gETAC("table", "billingAddressContainer", billingEle)[0];
		
		liEles[0].onclick = function() { 
			triggerBillingInfoFields( true );
			addClass( containerEle, "hidden" );
		};
		
		liEles[1].onclick = function() { 
			triggerBillingInfoFields( false );
			removeClass( containerEle, "hidden" );
		}
	}
}

var phone_field_length = 0;
function TabNext(obj, event, len, next_field) {
    if (event == 'down') {
        phone_field_length = obj.value.length;
    } else if (event == 'up') {
        if (obj.value.length != phone_field_length) {
            phone_field_length = obj.value.length;
            if (phone_field_length == len) {
                next_field.focus();
            }
        }
    }
}

DomLoaded.load(
	assignSliders, assignDispensers,dynPage.enable, initHelpNav, assignPopIns, 
	initEnter, changeZipAlertCheckoutStep1, showHideBillingAddressInfo
);
