//*************************************
//***** CLIENT SPECIFIC VARIABLES *****
//*************************************
var pdQsSiteUrl = "http://site.beautybridge.com/pd_quickShop/";
var pdQsSkin = "beautybridge";
var pdQsShoppingCartUrl = "http://order.store.yahoo.net/cgi-bin/wg-order?yhst-12557124802186";
var pdQsZoneListClassName = "pagingItemImgList";
var pdQsZoneGridClassName = "pagingItemImgGrid";
//**********************************
//****** MAGIC ZOOM FEATURE ********
//**********************************
var pdQsMagicZoomEnabled = true;
//**********************************
//******* TABBED DISPLAY ***********
//**********************************
var pdQsTabDisplayEnabled = true;
var pdQsActiveItemDataTab = "tabDescription";
var pdQsDefaultItemDataTab = "tabDescription";

//*********************************************
//******* BEGIN QUICKSHOP FUNCTIONS ***********
//*********************************************
function pdShowQuickShopButton(productId) {
	var buttonId = "pdQuickShopButton-" + productId;
	document.getElementById(buttonId).className = "pdShowQuickShopButton";
	return false;
}
function pdHideQuickShopButton(productId) {
	var buttonId = "pdQuickShopButton-" + productId;
	try {document.getElementById(buttonId).className = "pdHideQuickShopButton";} catch(e) {}
	return false;
}

function pdQuickShopClick(productId) {
	ieHideSelect(true);
	if(pdQsTabDisplayEnabled){
		pdQsActiveItemDataTab = pdQsDefaultItemDataTab;	//*** RESET DEFAULT TAB
	}
	displayQuickShopLoader();
	var url = pdQsSiteUrl + "services/getProductInfo.php?productId=" + encodeURIComponent(productId);
	var script = document.createElement('script');
	script.type = 'text/javascript';
	script.src = url;
	document.getElementsByTagName("head")[0].appendChild(script);
}

function displayQuickShopLoader() {
	var loader = document.getElementById("pdQuickShopTemplateLoader");
	var displayWindow = document.getElementById("pdQuickShopDisplayWindow");
	if(loader && displayWindow){
		var loaderHTML = loader.innerHTML;
		displayWindow.innerHTML = loaderHTML;
		displayQuickShopBackgroundOverlay();
		centerQuickShop();
		showQuickShop();	
	}
	return false;
}

function displayQuickShopBackgroundOverlay() {
	//************************************************************
	//***** DEFINE ELEMENTS FOR FADE AND CONTENT DISPLAY *********
	//************************************************************
	var fadeBg = document.getElementById('pdQuickShopBackgroundOverlay');
	fadeBg.className = "pdQuickShopBackgroundOverlayOn";
	//************************************************************
	//***** FIND AND SET USER WINDOW HEIGHT/WIDTH ****************
	//************************************************************
	var height;
	var winHeight = (typeof window.innerHeight != 'undefined' ? window.innerHeight : document.body.offsetHeight);
	var scrollHeight = window.document.body.scrollHeight;
	var winWidth = window.document.body.scrollWidth;
	if(winHeight > scrollHeight){
		height = winHeight;
	}else{
		height = scrollHeight;
	}
	//************************************************************
	//*********** DISPLAY FADE BG AND CONTENT DIV ****************
	//************************************************************
	fadeBg.style.height = height + 'px';
	fadeBg.style.width = winWidth + 'px';
	return false;
}
function hideQuickShopBackgroundOverlay() {
	document.getElementById("pdQuickShopBackgroundOverlay").className = "pdQuickShopBackgroundOverlayOff";
	return false;
}
function displayQuickShop(productId) {
	var productInfo = getProductInfo();
	var productInfo_regPrice = productInfo.price;
	var productInfo_salePrice = productInfo.salePrice;
	var productInfo_youSave = ((productInfo_regPrice - productInfo_salePrice) / productInfo_regPrice) * 100;
	var priceDisplayHtml = '';
	var quickShopTemplate = document.getElementById("pdQuickShopTemplate");
	if(quickShopTemplate){
		var templateHTML = quickShopTemplate.innerHTML;
		templateHTML = templateHTML.replace(/\$\$pdQsSiteUrl\$\$/g, pdQsSiteUrl);
		templateHTML = templateHTML.replace(/\$\$pdQsSkin\$\$/g, pdQsSkin);
	
		templateHTML = templateHTML.replace(/\$\$productInfo.imageSmallUrl\$\$/g, productInfo.imageSmallUrl);
		templateHTML = templateHTML.replace(/\$\$productInfo.imageMediumUrl\$\$/g, productInfo.imageMediumUrl);
		templateHTML = templateHTML.replace(/\$\$productInfo.imageLargeUrl\$\$/g, productInfo.imageLargeUrl);
		templateHTML = templateHTML.replace(/\$\$productInfo.name\$\$/g, productInfo.name);
		templateHTML = templateHTML.replace(/\$\$productInfo.productId\$\$/g, productInfo.productId);
		templateHTML = templateHTML.replace(/\$\$productInfo.code\$\$/g, productInfo.code);
		templateHTML = templateHTML.replace(/\$\$productInfo.caption\$\$/g, productInfo.caption);
		templateHTML = templateHTML.replace(/\$\$productInfo.caption255\$\$/g, productInfo.caption255);
		templateHTML = templateHTML.replace(/\$\$productInfo.specialoffers\$\$/g, productInfo.specialoffers);
		templateHTML = templateHTML.replace(/\$\$productInfo.additionalinfo\$\$/g, productInfo.additionalinfo);

		templateHTML = templateHTML.replace(/\$\$productInfo.details\$\$/g, productInfo.details);
		templateHTML = templateHTML.replace(/\$\$productInfo.abstract\$\$/g, productInfo.abstract);
	
		//*************************************************************
		//********** PRODUCT REVIEWS/RATINGS SUPPORT ******************
		//*************************************************************
		templateHTML = templateHTML.replace(/\$\$productInfo.details\$\$/g, productInfo.details);
		templateHTML = templateHTML.replace(/\$\$productInfo.abstract\$\$/g, productInfo.abstract);
	
		//*************************************************************
		//********** PRODUCT OPTIONS/ ADD TO CART BUTTON **************
		//*************************************************************
		templateHTML = templateHTML.replace(/\$\$productInfo.reviews\$\$/g, productInfo.reviewsHtml);
	
		//*************************************************************
		//********** PRODUCT OPTIONS/ ADD TO CART BUTTON **************
		//*************************************************************
		var quantityField = '<div class="pdQsQuantity">Quantity <input type="text" name="vwquantity" value="1" size="3"></div>';
		var addToCartButton = '<div class="pdQsAddCart"><input type="image" src="' + pdQsSiteUrl + 'skins/' + pdQsSkin + '/images/btnAddCart.gif" vspace="5" border="0"></div>';
		var outOfStockButton = '<img src="' + pdQsSiteUrl + 'skins/' + pdQsSkin + '/images/btnOutOfStock.gif" vspace="5" border="0">';
		
		var orderButton = '';
		if(productInfo.orderable == 1){
			orderButton += '<table><tr><td>';
			orderButton += quantityField;
			orderButton += '</td><td>';
			orderButton += addToCartButton;
			orderButton += '</td></tr></table>';
		}else{
			orderButton = outOfStockButton;
		}
		var options = '<div class="pdQsOptionsWrapper">' + productInfo.options + '</div>';
		
		templateHTML = templateHTML.replace(/\$\$productInfo.options\$\$/g, options);
		templateHTML = templateHTML.replace(/\$\$productInfo.addToCart\$\$/g, orderButton);
		//********************************************
		//********** PRICE DISPLAY *******************
		//********************************************
		if(productInfo_salePrice < productInfo_regPrice){
			priceDisplayHtml += '<div class="pdQsItemRegPrice">Regular: $<s>' + productInfo_regPrice + '</s></div>';
			priceDisplayHtml += '<div class="pdQsItemSalePrice">Online Sale Price $' + productInfo_salePrice + '</div>';
			//priceDisplayHtml += '<div class="pdQsItemYouSave">You Save: ' + productInfo_youSave.toFixed(0) + '%</div>';
		}else{
			priceDisplayHtml += '<div class="pdQsItemPrice">$' + productInfo_regPrice + '</div>';
			priceDisplayHtml += '<div class="pdMyAccountPriceWrapper" style="display:none"><p style="color:#ff6801;"><span><b>Rewards Price</b> </span>';
			priceDisplayHtml += '<span class="pdMyAccountPrice" title="' + productInfo.productId + '">' + productInfo_regPrice + '</span></p></div>';
		}
		templateHTML = templateHTML.replace(/\$\$productInfo.priceDisplay\$\$/g, priceDisplayHtml);
	
		templateHTML = templateHTML.replace(/\$\$productInfo.productId\$\$/g, productInfo.productId);
	
		//********************************************
		//******** RATING/REVIEWS DISPLAY ************
		//********************************************
		templateHTML = templateHTML.replace(/\$\$productInfo.reviewsHtml\$\$/g, productInfo.reviewsHtml);
		templateHTML = templateHTML.replace(/\$\$productInfo.overallRating\$\$/g, productInfo.overallRating);
	
		//********************************************
		//********** IMAGE DISPLAY *******************
		//********************************************
		var imageDisplayHtml = "";
		if(pdQsMagicZoomEnabled){
			imageDisplayHtml += '<a href="' + productInfo.imageLargeUrl + '" class="MagicZoom" id="pdQsZoom" rel="zoom-width:400px;zoom-height:170px;" title="Roll Off Image to Close Zoom Window"><img src="' + productInfo.imageMediumUrl + '" border="0"></a>';
			imageDisplayHtml += '<br><br><div>Rollover Image to Zoom</div><br><br>';
		}else{
			imageDisplayHtml = '<img src="' + productInfo.imageMediumUrl + '" border="0">';
		}	
		
		templateHTML = templateHTML.replace(/\$\$productInfo.imageDisplay\$\$/g, imageDisplayHtml);
	
		//*************************************
		//******** CUSTOM DISPLAYS ************
		//*************************************
		var alternateOptionsHtml = "";
		alternateOptionsHtml += '<div>';
		alternateOptionsHtml += productInfo.alternateOptionsHtml;
		alternateOptionsHtml += '</div>';
		templateHTML = templateHTML.replace(/\$\$productInfo.alternateOptionsHtml\$\$/g, alternateOptionsHtml);
	
		//**************************************************
		//*** STRIP TEMPLATE PREFIX TO CREATE UNIQUE IDs ***
		//**************************************************
		templateHTML = templateHTML.replace(/\$\$template\$\$/g, "");
		templateHTML = templateHTML.replace(/\$\$template\$\$/g, "");
		
		var displayWindow = document.getElementById("pdQuickShopDisplayWindow");
		displayWindow.innerHTML = templateHTML;
	
		//********************************************
		//***** ITEM TABS ****************************
		//********************************************
		pdQsItemDataTabs();
		
		//***************************
		//*** APPLY PRICING LOGIC ***
		//***************************
		//updatePrices("pdQuickShopDisplayWindow");
			
		//********************************************
		//***** SHOW QUICKSHOP ***********************
		//********************************************
		showQuickShop();
	}
	return false;
} 
function showQuickShop() {
	var displayWindow = document.getElementById("pdQuickShopDisplayWindow");
	if(displayWindow){
		//********************************************
		//***** MAGIC ZOOM DISPLAY *******************
		//********************************************
		if(pdQsMagicZoomEnabled){
			var zoomImg = document.getElementById('pdQsZoom');
			if(zoomImg){MagicZoom.start(zoomImg);}
		}
		displayWindow.className = "pdShowQuickShop";
	}
}
function hideQuickShop() {
	var displayWindow = document.getElementById("pdQuickShopDisplayWindow");
	if(displayWindow){
		//********************************************
		//***** MAGIC ZOOM DISPLAY *******************
		//********************************************
		if(pdQsMagicZoomEnabled){
			var zoomImg = document.getElementById('pdQsZoom');
			if(zoomImg){MagicZoom.stop(zoomImg);}
		}
		displayWindow.className = "pdHideQuickShop";
		hideQuickShopBackgroundOverlay();
		ieHideSelect(false);
	}
}

function centerQuickShop() {
	var browserHeight = (typeof window.innerHeight != 'undefined' ? window.innerHeight : document.body.offsetHeight);
	var scrollHeight = window.document.body.scrollHeight;
	var scrollWidth = window.document.body.scrollWidth;
	var scrollPositionX = 0;
	var scrollPositionY = 0;
	try {
		scrollPositionX = pageXOffset;
		scrollPositionY = pageYOffset;
	} catch(e) {
		scrollPosistionX = document.body.scrollLeft;
		scrollPositionY = document.body.scrollTop;
	}

	var displayWindow = document.getElementById("pdQuickShopDisplayWindow");
	var displayWindowWidth = 750;
	var displayWindowHeight = displayWindow.scrollHeight;
	
	displayWindow.style.top = scrollPositionY + 90;
	displayWindow.style.left = (scrollWidth - scrollPositionX)/2 - (displayWindowWidth/2) - 10;
	
	return false;
}

var pdAddToCartActivated = false;
var pdAddToCartIsLoaded = false;

function pdQuickShopAddToCartIsLoaded() {
	if(pdAddToCartActivated == true) {
		//alert("add to cart completed");
		pdAddToCartIsLoaded = true;
	}
	return false;
}

function performAddToCartAnimation() {
	pdAddToCartActivated = true;
	//var displayWindow = document.getElementById("pdQuickShopDisplayWindow");
	//displayWindow.innerHTML = renderAddToCartAnimation();
	setTimeout(renderAddToCartAnimation,100);
	setTimeout(displayAddedToCart, 500);
	return false;
}

function renderAddToCartAnimation() {
	var displayWindow = document.getElementById("pdQuickShopDisplayWindow");
	var html = "";
	html += '<div style="border:3px solid #ffffff;width:300px;height:300px;background-color:#ffffff;text-align:center;">';
	html += 'Adding to cart...';
	html += '</div>';
	displayWindow.innerHTML = html;
	centerQuickShop();
	return true;
}

function displayAddedToCart() {
	if(pdAddToCartIsLoaded == true) {
		var displayWindow = document.getElementById("pdQuickShopDisplayWindow");
		pdShoppingCart = getShoppingCart();
		displayShoppingCart(pdShoppingCart);
		displayWindow.innerHTML = renderAddedToCart();
		pdAddToCartIsLoaded = false;
		centerQuickShop();
	} else {
		setTimeout(displayAddedToCart, 200);
	}
	return false;
}

function renderAddedToCart() {
	var html = "";
	html += '<div style="border:3px solid #ffffff;width:300px;height:300px;background-color:#ffffff;text-align:center;">';
	html += '<br><br>';
	html += '<h1>Added To Cart Successfully</h1>';
	html += '<a href="' + pdQsShoppingCartUrl + '">Proceed to Checkout</a>';
	html += '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
	html += '<a href="#" onclick="hideQuickShop();return false;">Continue Shopping</a>';
	html += '</div>';
	return html;
}

function trim (str) {
	str = String(str);
	return str.replace(/^\s+|s+$/g, '');
}
//********************************************
//******** EVENT MANAGEMENT FUNCTIONS ********
//********************************************
function pdAddEvent(obj, evType, fn) {
	if (obj.addEventListener) {
   		obj.addEventListener(evType, fn, false);
   		return true;
	} else if (obj.attachEvent) {
   		var r = obj.attachEvent("on"+evType, fn);
   		return r;
 	} else {
   		return false;
 	}
}
function pdRemoveEvent(obj, type, fn ) {
	if (obj.detachEvent) {
		obj.detachEvent('on'+type, fn);
		obj[type+fn] = null;
	} else {
		obj.removeEventListener( type, fn, false);
	}
}
//********************************************
//******* GET ELEMENTS BY CLASS NAME *********
//********************************************
function pdQsGetElementsByClassName(elm,tag,className){
	var testClass = new RegExp("(^|\\s)" + className + "(\\s|$)");
	var tag = tag || "*";
	var elm = elm || document;
	var elements = (tag == "*" && elm.all)? elm.all : elm.getElementsByTagName(tag);
	var returnElements = [];
	var current;
	var length = elements.length;
	for(var i=0; i<length; i++){
		current = elements[i];
		if(testClass.test(current.className)){
			returnElements.push(current);
		}
	}
	return returnElements;
}
//*********************************************************
//******* GENERATE QUICK SHOP BUTTONS ON THUMBNAILS *******
//*********************************************************
var myButtons = new Object();
function pdQsButtons(){
	var pdQsItemsWrapper = document.getElementById("pdQsItems");
	if(pdQsItemsWrapper){
		var imgsList = pdQsGetElementsByClassName(pdQsItemsWrapper, "*", pdQsZoneListClassName);
		var imgsGrid = pdQsGetElementsByClassName(pdQsItemsWrapper, "*", pdQsZoneGridClassName);
		var imgs = imgsGrid.concat(imgsList);
		
		if(imgs){
			for(var x = 0; x < imgs.length; x++){
				//*****************	*************************
				//******* QUICK SHOP BUTTON ARRAY **********
				//******************************************
				myButtons[imgs[x].title] = document.createElement('img');
				myButtons[imgs[x].title].src = pdQsSiteUrl + 'skins/' + pdQsSkin + '/images/btnQs.png';
				myButtons[imgs[x].title].className = "pdQsButton";
				myButtons[imgs[x].title].onclickFunction = new Function("", "return pdQuickShopClick('" + imgs[x].title + "');");	
				pdAddEvent(myButtons[imgs[x].title], "click", myButtons[imgs[x].title].onclickFunction);				
	
				if(!isBlank(imgs[x].title)){
					//********************************************
					//******* INJECT QUICK SHOP BUTTON ***********
					//********************************************
					imgs[x].insertBefore(myButtons[imgs[x].title],imgs[x].getElementsByTagName('a')[0]); 
					//********************************************
					//******* APPLY MOUSEOVER EVENT **************
					//********************************************
					imgs[x].onmouseover=function(){
						pdQsButtonShow(this);
					}			
					//********************************************
					//******* APPLY MOUSEOUT EVENT ***************
					//********************************************
					imgs[x].onmouseout=function(){
						pdQsButtonHide(this);
					}
				}
			}
		}
	}
}
function pdQsButtonShow(elem){
	elem.getElementsByTagName('img')[0].style.display = "block";
}
function pdQsButtonHide(elem){
	elem.getElementsByTagName('img')[0].style.display = "none";
}
//********************************************
//******** ITEM DATA TAB FUNCTIONS ***********
//********************************************
var pdQsActiveTabList = new Array();
function pdQsGetActiveTabList() {
	var defaultTabFound = false;
	var activeTabList = new Array();
	var wrapper = document.getElementById("pdQsItemDataTabs");
	var j=0;
	if(wrapper) {
		var tabs = wrapper.getElementsByTagName("DIV");
		for(var i=0;i<tabs.length;i++) {
			var s = tabs[i].id;
			var subs = s.substring(0,3);
			if(subs == "tab") {
				if(!isBlank(document.getElementById(s + "Content").innerHTML)) {
					activeTabList[j] = new Object();
					activeTabList[j].name = s;
					activeTabList[j].content = s + "Content";
					if(s == pdQsDefaultItemDataTab) {
						activeTabList[j].isDefaultTab = true;
						defaultTabFound = true;
					} else {
						activeTabList[j].isDefaultTab = false;
					}
					j++;
				} else {
					//*** DISABLE TAB
					tabs[i].className = "pdQsItemTabDisable";
					document.getElementById(tabs[i].id + "Content").style.display = "none";
				}
			}
		}
		if(defaultTabFound == false) {
			if(activeTabList[0]) activeTabList[0].isDefaultTab = true;
		}		
	}
	return activeTabList;
}

function pdQsItemDataTabs() {
	pdQsActiveTabList = pdQsGetActiveTabList();
	for(var i=0;i<pdQsActiveTabList.length;i++) {

		var tab = document.getElementById(pdQsActiveTabList[i].name);
		var tabContent = document.getElementById(pdQsActiveTabList[i].content);
		
		//******* MOUSEOVER EVENT ********//
		tab.onmouseover=function(){
			this.className = "pdQsItemTabLinkOn";
		}
		//******* MOUSEOUT EVENT ********//
		tab.onmouseout=function(){
			if(pdQsActiveItemDataTab != this.id){
				this.className = "pdQsItemTabLinkOff";
			}
		}
		//******* ONCLICK EVENT ********//
		tab.onclick=function(){
			pdQsActiveItemDataTab = this.id; //** REMEMBER ACTIVE TAB
			pdQsToggleTab(this.id); //** TURN ON TAB CONTENT
		}
		
		if(pdQsActiveTabList[i].isDefaultTab == true) {
			pdQsToggleTab(pdQsActiveTabList[i].name);
		}		
	}
}

function pdQsToggleTab(tabName) {
	for(var i=0;i<pdQsActiveTabList.length;i++) {
		if(pdQsActiveTabList[i].name == tabName) {
			document.getElementById(pdQsActiveTabList[i].name).className = "pdQsItemTabLinkOn";
			document.getElementById(pdQsActiveTabList[i].name + "Content").style.display = "block";
		} else {
			document.getElementById(pdQsActiveTabList[i].name).className = "pdQsItemTabLinkOff";
			document.getElementById(pdQsActiveTabList[i].name + "Content").style.display = "none";
		}
	}
}

//********************************************
//******** PD UTILITIES FUNCTIONS ************
//********************************************
var pd_ieHideSelectTempState = "";
function ieHideSelect(state){
	var selectTags = document.getElementsByTagName("SELECT");
	for(i=0; i<selectTags.length; i++){
		if(state){
			if(selectTags[i].className != "prSelect"){
				pd_ieHideSelectTempState = selectTags[i].style.display;
				selectTags[i].style.display = "none";
			}
		}else{
			selectTags[i].style.display = pd_ieHideSelectTempState;
		}
	}
}
function isBlank(item) {
	item = String(item).toLowerCase();
	if(item == "undefined" || item == "" || item == "null") return true;
	else return false;
}
