//Array of sku and upc pairs
var skuupc= new Array(
	'8.5A', '381519043932',
	'5A', '381519043895',
	'6.5A', '381519043918',
	'6WN', '381519043901',
	'3', '381519012501',
	'4', '381519012495',
	'5', '381519012471',
	'6', '381519012464',
	'7', '381519012440',
	'8', '381519012426',
	'9', '381519012419',
	'9.5', '381519016998',
	'4G', '381519036859',
	'4R', '381519012525',
	'5G', '381519012488',
	'5RRB', '3871519036873',
	'6A', '381519016967',
	'6G', '381519012457',
	'6R', '381519012518',
	'8G', '381519012433'
);


//Creat objects to convert sku to upc and upc 2 sku 
var sku2upc= new Object();
var upc2sku= new Object();
for (i=0; i<=skuupc.length; i=i+2) {
	sku2upc[skuupc[i]]=skuupc[i+1];
	upc2sku[skuupc[i+1]]=skuupc[i];
};
var lastHref;
var lastThumb;
var returnQuery;
var returnURL;

var ShadePalette = new Class({
	/**
	 * implements
	 */
	Implements: [Options],
	
	defaultOptions: {
		color: 'blonde'
	},
		
	initialize: function(options) {
		this.setOptions(this.defaultOptions, options, this.getQueryString(location.href));
		
		//this.options.href = $(this.options.color).getFirst("div").getFirst("div").getFirst("a").href;

		$$("a.tipicon").each(function(el) {
			el.removeEvents();
			el.addEvent('click', function() {
				$$("a.tipclose").each(function(el2) {
					el2.getParent('div').addClass('hidden');
				});
				el.getParent('div').getFirst("div").removeClass('hidden');
			});	
		});
		
		$$("a.tipclose").each(function(el) {
			el.removeEvents();
			el.addEvent('click', function() {
				el.getParent('div').addClass('hidden');
			});	
		});		

		if (this.getQueryString(location.href).upc) {
			this.options.sku = upc2sku[this.getQueryString(location.href).upc];
		} else if (this.getQueryString(location.href).bvproductid) {
			this.options.sku = upc2sku[this.getQueryString(location.href).bvproductid];
		} else if (this.getQueryString(location.href).sku) {
			this.options.sku = this.getQueryString(location.href).sku;
		}
		
		if ($("BVCustomerRatings")) {
			$("BVCustomerRatings").addEvent('mouseenter', function() {
				prepareReviews();
			});
		}
		
		this.prepareTabs();				
		this.prepareThumbs();
		
		//show default color
		$(this.options.color).removeClass('hidden');

		if (this.options.sku || this.options.upc) {
			//large preview swatch
			$("Info_"+this.options.sku).getFirst("img").addClass('hidden');
			//box
			$("Info_"+this.options.sku).getFirst("img").getNext("img").removeClass('hidden');
			//swatch and buy now
			$("Info_"+this.options.sku).getFirst("div").removeClass('hidden');
			//info
			$("Info_"+this.options.sku).removeClass('hidden');
			//additional product text
			$("ProductText_"+this.options.sku).removeClass('hidden');
			//ratings
			if ($("BVCustomerRatings")) {
				$('BVSVPLinkContainer').getFirst("a").href=bvRootURL+sku2upc[this.options.sku]+"/reviews.htm";
				$('BVFrame').src = bvRootURL+sku2upc[this.options.sku]+'/reviews.htm?format=embedded';
				$("BVCustomerRatings").removeClass('hidden');
			}
			//Highlight thumb
			$$(".thumb").each(function(el) {
				if (this.getQueryString(el.href).sku == this.options.sku) {
					el.getFirst("img").addClass('on');
					lastHref = el.href;
					lastThumb = el.getFirst("img");
				}
			}, this);
		}
	},
	
	getQueryString: function(uri) {
		var o = {};
		
		$A(uri.replace(/(^.*\?)|(#.*$)/g,'').split('&')).each(function(p){
			p = p.split("=");
			o[decodeURIComponent(p[0])] = decodeURIComponent(p[1]);
		});
		
		return o;	
	},
	
	prepareTabs: function() {
		$$("ul#tabs li.tab a").each(function(el) {
			el.removeEvents();
			if (this.getQueryString(el.href).color == this.options.color) {
				el.getParent('li').addClass('on');
				this.prepareThumbs();
			} else {
				el.getParent('li').removeClass('on');
				el.addEvent('click', function() {
					if (lastThumb) {
						lastThumb.removeClass('on');
					}
					lastHref = "";
					sp.toggleTabs(this.href);
				});
			}
		}, this);
	},
	
	 prepareThumbs: function() {
		$$(".thumb").each(function(el) {
			el.removeEvents();
			el.addEvent('mouseenter', function() {
				sp.togglePreview(this.href);
			});
			el.addEvent('click', function() {
				if (lastThumb) {
					lastThumb.removeClass('on');
				}
				this.getFirst("img").addClass('on');
				$$('div#cii-store').addClass('hide');
				sp.toggleInfo(this.href);
				lastHref = this.href;
				lastThumb = this.getFirst("img");
			});	
			el.addEvent('mouseleave', function() {
				if (lastHref) {
					sp.toggleInfo(lastHref);
				}
			});	
		}, this);
	},
	
	toggleTabs: function(href) {
		$(this.options.color).addClass('hidden');
		this.options.lastColor = this.options.color;
		this.options.color = this.getQueryString(href).color;
		$(this.options.color).removeClass('hidden');
		//this.options.href = $(this.options.color).getFirst("div").getFirst("div").getFirst("a").href;

		this.prepareTabs();
		sp.toggleInfo(this.options.href);
	},

	togglePreview: function(href) {
		if (this.options.sku) {
			//info
			$("Info_"+this.options.sku).addClass('hidden');
			//additional product text
			$("ProductText_"+this.options.sku).addClass('hidden');
		}
		if ($("BVCustomerRatings")) $("BVCustomerRatings").addClass('hidden');
		this.options.sku = this.getQueryString(href).sku;
		//large preview swatch
		$("Info_"+this.options.sku).getFirst("img").removeClass('hidden');
		//box
		$("Info_"+this.options.sku).getFirst("img").getNext("img").addClass('hidden');
		//swatch and buy now
		$("Info_"+this.options.sku).getFirst("div").addClass('hidden');
		//info
		$("Info_"+this.options.sku).removeClass('hidden');
		//additional product text
		$("ProductText_"+this.options.sku).removeClass('hidden');
	},
	
	toggleInfo: function(href) {
		if ($("Info_"+this.options.sku)) $("Info_"+this.options.sku).addClass('hidden');
		if ($("ProductText_"+this.options.sku)) $("ProductText_"+this.options.sku).addClass('hidden');
		if ($("BVCustomerRatings")) $("BVCustomerRatings").addClass('hidden');
		
		if (href) {
			this.options.sku = this.getQueryString(href).sku;
			$('BVSVPLinkContainer').getFirst("a").href=bvRootURL+sku2upc[this.options.sku]+"/reviews.htm";
			$('BVFrame').src = bvRootURL+sku2upc[this.options.sku]+'/reviews.htm?format=embedded';

			if (!lastHref || lastHref!=href) {
				$('cii-iframe').set('src', '/buy_it_now/product_links_bv.jsp?upc='+sku2upc[this.options.sku]);
				$('upc').value = sku2upc[this.options.sku];

				//Rewrite submission url to include this color and upc
				var loc=window.location;
				returnQuery='color='+this.options.color+'&upc='+sku2upc[this.options.sku];
				returnURL=loc.protocol+'//'+loc.host+loc.pathname+"?"+returnQuery;
			}
			prepareReviews();

			//large preview swatch
			$("Info_"+this.options.sku).getFirst("img").addClass('hidden');
			//box
			$("Info_"+this.options.sku).getFirst("img").getNext("img").removeClass('hidden');
			//swatch and buy now
			$("Info_"+this.options.sku).getFirst("div").removeClass('hidden');
			//info
			$("Info_"+this.options.sku).removeClass('hidden');
			//additional product text
			$("ProductText_"+this.options.sku).removeClass('hidden');
			//ratings
			$("BVCustomerRatings").removeClass('hidden');
		}
	}
});

function prepareReviews() {
	if ($("BVSummaryReadReviewsLink")) {
		$("BVSummaryReadReviewsLink").removeEvents();
		$("BVSummaryReadReviewsLink").addEvent('click', function(el) {
			new Event(el).stop();
			$("CReviewsContainer").setStyle('display', 'block');
		});
	}
	if ($("BVSubmissionURL")) {
		$("BVSubmissionURL").href = $("BVSubmissionURL").href.replace(/([\?&]return=)[^&]*/, "$1"+escape(returnURL))+"&"+returnQuery;
	}
}

function showBuyNow(el) {
	$$('div#cii-store').removeClass('hide');
	var zip = document.getElementById('zip');
	if(zip.value == "" || zip.value == undefined || zip.value == " ") {
		zip.value = "Enter Zip Code";
	}
	//urchinTracker(this.href);
	return true;
}

function checkZipField() {
	var el = document.getElementById('zip');
	el.onfocus = function() { if(this.value == "Enter Zip Code"){this.value = "";}}
}

function validateZipField() {
	var el = document.getElementById('zipcodeform');
	el.onsubmit = function() 
	{ 
		var el = document.getElementById('zip');
		var num = Number(el.value);
		if(el.value == "Enter Zip Code" || isNaN(num))
		{
			el.value = "Enter Zip Code";
			return false;
		} else {
			return true;
		}
	}
}

/*
Clear default value of text input
*/
function clearField(thefield) {
	if (thefield.defaultValue==thefield.value)
	thefield.value = ""
}

function includeCSS(path) {
	var cssAttr  = document.createElement('link');
	cssAttr.rel = 'stylesheet'
	cssAttr.type = 'text/css';
	cssAttr.href = path;
	document.getElementsByTagName('head')[0].appendChild(cssAttr);
}
if (window.parent != window.self) {
	includeCSS('/cem/css/bazaarvoice.css');
}

var sp;
window.addEvent('domready', function() {
	sp = new ShadePalette();
});

