//Array of sku and upc pairs
var skuupc= new Array(
	'87', '381519900006',
	'98', '381519900020',
	'99', '381519000133',
	'100', '381519900037',
	'101', '381519034787',
	'102', '381519900044',
	'103', '381519000157',
	'104', '381519900068',
	'106', '381519000171',
	'107', '381519031519',
	'108', '381519900082',
	'110', '381519000195',
	'111', '381519000201',
	'112', '381519000218',
	'114', '381519000249',
	'115', '381519034824',
	'116', '381519000270',
	'117', '381519000300',
	'118', '381519000317',
	'120', '381519000355',
	'122', '381519000393',
	'123', '381519012532',
	'124', '381519000409',
	'127', '381519012327',
	'102G', '381519038440',
	'101B', '381519034794',
	'103A', '381519900051',
	'105G', '381519038457',
	'103B', '381519000164',
	'106A', '381519900075',
	'106D', '381519031502',
	'112A', '381519000225',
	'113A', '381519034817',
	'114A', '381519000256',
	'115A', '381519031526',
	'116A', '381519000287',
	'117D', '381519017629',
	'118A', '381519000324',
	'118E', '381519031533',
	'119A', '381519012389',
	'119B', '381519012396',
	'119C', '381519012402',
	'120A', '381519017636',
	'121A', '381519000386',
	'106B', '381519034800',
	'128', '381519012334',
	'129', '381519012341',
	'130', '381519012358',
	'131', '381519012365',
	'132', '381519012372',
	'133', '381519038471',
	'129G', '381519038464',
	'106G', '381519043970',
	'116B', '381519043949',
	'118B', '381519043956',
	'120B', '381519043963'
);

//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');
			});	
		});

		$$("a.oldbox").each(function(el) {
			el.removeEvents();
			el.addEvent('click', function() {
				btnImage = el.getFirst('img');
				boxImage = el.getParent().getPrevious();
				currentSrc = boxImage.getProperty('src');
				currentBtn = btnImage.getProperty('src');
				
				if (!currentSrc.contains("old") ) {
					boxImage.setProperty('src', currentSrc.replace(".jpg", ("old.jpg")));
					btnImage.setProperty('src', currentBtn.replace("old", ("new")));
				} else {
					boxImage.setProperty('src', currentSrc.replace(("old.jpg"), ".jpg"));
					btnImage.setProperty('src', currentBtn.replace("new", ("old")));
				}
				
				pageTracker._setVar('event/nne_shade_palette/see_old_box_converter');
			});	
		});
		

		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');
			//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");
				window.location.href="#top";
			});	
			el.addEvent('mouseleave', function() {
				if (lastHref) {
					sp.toggleInfo(lastHref);
				}
			});	
		}, this);
	},
	
	toggleTabs: function(href) {
		$(this.options.color).addClass('hidden').removeClass('active');
		this.options.lastColor = this.options.color;
		this.options.color = this.getQueryString(href).color;
		$(this.options.color).removeClass('hidden').addClass('active');
		this.prepareTabs();
		sp.toggleInfo(this.options.href);
	},

	togglePreview: function(href) {
		if (this.options.sku) {
			//info
			$("Info_"+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');
	},
	
	toggleInfo: function(href) {
		if ($("Info_"+this.options.sku)) $("Info_"+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');
			//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();
});
