(function(){
	document.write('<script type="text/javascript" src="/lib/global/scripts/user-reviews/user-reviews.js"></script>');
})();

var product = {
	voteLock: false,
	init: function() {
		try {
			//product.platformMove();
			product.setRatings();
//			product.setESRBToolTip();
			product.miniScreenViewer();
			//product.userReviewToolTip();
			//product.setSideBarStars();
			
			
			product.tabHighlight();
			//product.setTabTracking();
			
		} catch (err) {
			//alert(err);
			trace(err);
		}
	},
	tabHighlight: function() {
		var pos = $$('.breadcrumb')[0].id;
		var objs = $$('.prod-nav')[0].select('li');
		objs.each(function(i,index) {
			i.removeClassName('on');
			if (index == pos) {
				i.addClassName('on');
			}
		});
	},
	platformMove: function() {
		var obj = $$('.bread')[0].select('li');
		var objChild = obj[0].select('a');
		var newObj = new Element('span', { 'class': 'unique-plat'}).insert('&nbsp;['+objChild[0].innerHTML+']');
		var target = $$('.prod-box')[0].select('h1');
		target[0].insert(newObj);
	},
	//tabs
	setTabs: function() {
		$A(('top_content').getElementsByClassName('tab')).each(function(tabAt) {
			Event.observe($(tabAt), 'click', function(){
				product.changeTab(this);
			});
			tabAt.getElementsByTagName('a')[0].onclick = function() {
				return false;
			}
		});
	},
	changeTab: function(obj) {
		$A($('top_content').getElementsByClassName('tab')).each(function(tabAt) {
			tabAt.removeClassName('on');
		});
		$A($('top_content').getElementsByClassName('content')).each(function(tabAt) {
			tabAt.removeClassName('show');
		});
		obj.addClassName('on');
		var contentName = "content_" + obj.id.split("_")[1];
		$(contentName).addClassName('show');
	},
	
	// mini-screen-viewer in tabs
	miniScreenViewer: function() {
		var slots = $$('.mini-thumbs');
		slots.each(function(slotAt,index) {
			Event.observe(slotAt, 'mouseover', function() {
				product.swapMiniScreen(slotAt,index);
			});
		});

	},
	
	swapMiniScreen: function(obj, index) {
		var slots = $$('.mini-thumbs');
		var contentSlots = $$('.slot');;
		
		slots.each(function(slotsAt) {
			slotsAt.removeClassName('on');
		});
		contentSlots.each(function(contentSlotsAt) {
			contentSlotsAt.removeClassName('on');
		});
		contentSlots[index].addClassName('on');
	},
	
	// ratings
	setRatings: function() {
		if($$('.gp-score')[0]) {
			var gpTarget = $$('.gp-score')[0];
			var gpScore = gpTarget.id.split("-")[1];
			new Starbox(gpTarget, gpScore, {
			    overlay: 'big.png',
				locked: true,
				rated: true
			});
		}
		if ($$('.product-user-score')[0]) {
			var globalID = $$('.product-user-score')[0].id.split("-")[2];
			new Ajax.Request('/user-reviews/ajax/check_vote_prodpage/', {
				method: 'post',
				parameters: {
					globalID: globalID
				},
				onSuccess: function(t) {
					var h = $H(t.responseText.evalJSON()).toObject();
					if (!h.success) {
						product.voteLock = true;
					}
					if (h.success_vote) {
						product.voteLock = true;
					} else {
						product.voteLock = false;
					}
					var userIndicator = '#{average} average rating from #{total} votes';
					var userScore = $$('.product-user-score')[0].id.split("-")[0].split("_")[1];
					if ($$('.product-user-score')[0].className.indexOf("locked") != -1) {
						product.voteLock = true;
						userIndicator = 'Not Yet Released';
					}
					new Starbox($$('.product-user-score')[0], userScore, {
					    overlay: 'big.png',
						locked: product.voteLock,
						rated: product.voteLock,
						buttons: 5,
						total: $$('.product-user-score')[0].id.split("-")[1].split("_")[1],
						indicator: userIndicator,
						onRate: catchProductReviewRate
					});
				}
			});				
		}
	},
	setSideBarStars: function() {
		if ($$('.user-tab-stars').length == 0) { return false;}
		$$('.user-tab-stars').each(function(tabAt){
		    var score = tabAt.id.split("_")[1];
		    new Starbox(tabAt,score,{
		        locked: true
		    });
		});
	},
/*
	setESRBToolTip: function() {
		new Tip('esrb_button', $('esrb_content'),{
			style: 'gpblue',
			title: 'ESRB Information',
			hideOn: { element: 'closeButton', event: 'click' },
			hideAfter: 1,
			stem: 'leftMiddle',
		 	hook: { target: 'rightMiddle',tip: 'leftMiddle', mouse: false },
			width: 400
		});
	},
*/
	ratingToolTip: function() {
		var target = $$('.product-user-score')[0];
		new Tip(target,'Click stars to rate product',{
			style: 'gpblue',
			stem: 'topLeft',
			width: 100
		});
	},
	userReviewToolTip: function() {
		var targets = [];
		targets.push($$('.user-score-label')[0].select('a')[0]);
		targets.push($$('a.url-title-link')[0]);
		var productTitle = $$('title')[0].innerHTML.split("-")[0].strip();
		$A(targets).each(function(targetAt) {
			new Tip(targetAt,'Click to read all user reviews for <strong>' + productTitle + '</strong>', {
				style: 'gpblue',
				stem: 'bottomLeft',
				hook: { tip: 'bottomLeft', mouse: true }
			});			
		});
	},
	productReviewRate: function(el,info) {
		new Ajax.Request('/user-reviews/ajax/user_vote_prodpage/', {
			method: 'post',
			parameters: {
				score: info.rated,
				globalID: el.id.split("-")[2]
			},
			onSuccess: function(t) {
				var h = $H(t.responseText.evalJSON()).toObject();
				if (!h.success) {
					login.promptLogin('content');
					return;
				} else {
					new Effect.Pulsate(el, {
						from: .5,
						pulses: 3
					});
					try {
						goog.productRate();
					} catch (error) {
						//fail
					}
				}
				$$('.product-user-score').each(function(itemAt) {
					itemAt.update(el.innerHTML);
				});
			}
		});
	},
	showAllProsCons: function(trigger,mode) {
		switch(mode) {
			case "show":
				$('main_pros_cons').select('tr.hide').each(function(rowAt){
				    rowAt.removeClassName('hide');
					rowAt.addClassName('showz');
				});
				trigger.update('hide pros/cons');
				trigger.removeAttribute('onclick');
				trigger.onclick = function() {
					return product.showAllProsCons(this,'hide');
				}
			break;
			case "hide":
				$('main_pros_cons').select('tr.showz').each(function(rowAt){
				    rowAt.removeClassName('showz');
					rowAt.addClassName('hide');
				});
				trigger.update('show pros/cons');
				trigger.removeAttribute('onclick');
				trigger.onclick = function() {
					return product.showAllProsCons(this,'show');
				}
			break;
		}
		return false;
	},
	setTabTracking: function() {
		$$('.prod-nav')[0].select('li').each(function(tabAt){
		    var target = tabAt.select('a')[0];
			target.rel = target.href;
			var dataStruct = {
				"cat": "product-page",
				"action": "",
				"label": "",
				"url": target.rel
			}
			dataStruct.action = 'main-tab-' + target.innerHTML.strip().toLowerCase();
			dataStruct.label = document.title.split("-")[0].strip();
			target.onclick = function() {
				product.tabTracking(dataStruct);
				return false;
			}
			target.href = '#';
		});
	},
	tabTracking: function(obj) {
		goog.generalTracker(obj);
		var lagTimer = setTimeout(function() {
			window.location.href = obj.url;
		}, 100);
	}
}

var screenshots = {
	forwardClick: null,
	backClick: null,
	newLeft: null,
	target: null,
	targetLength: null,
	moveBlock: 184,
	clickCounter: 0,
	clickMax: null,
	init: function() {
		screenshots.target = $('screen_list');
		screenshots.clickMax = Math.round(screenshots.target.getElementsByTagName('li').length / 2 ) - 1;
	},
	move: function(type) {
		screenshots.setValues(type);
	},
	setValues: function(type) {
		var listWidth = screenshots.target.getElementsByTagName("li")[0].getWidth() + 10;
		var currentLeft = screenshots.target.style.left;
		if (currentLeft == '') { currentLeft = '0px' };
		var newLeft = 0;
		switch (type) {
			case "forward":
				if (screenshots.clickCounter === screenshots.clickMax)  { return };
				screenshots.clickCounter++;
				screenshots.newLeft = (parseInt(currentLeft.split('px')[0]) - screenshots.moveBlock) + 'px';
			break;
			case "back":
				if (screenshots.clickCounter === 0)  { return };
				screenshots.clickCounter--;
				screenshots.newLeft = (parseInt(currentLeft.split('px')[0]) + screenshots.moveBlock) + 'px';
			break;
		}
		screenshots.motion();
	},
	getArrows: function() {
		var linkList = {
			"forward": document.getElementsByClassName('scroll-cont')[0].getElementsByClassName('forward')[0].getElementsByTagName('a')[0],
			"back": document.getElementsByClassName('scroll-cont')[0].getElementsByClassName('back')[0].getElementsByTagName('a')[0]
		}
		return linkList;
	},
	clicks: function(type) {
		var linkList = screenshots.getArrows();
		switch(type) {
			case "store":
				screenshots.forwardClick = linkList.forward.getAttribute("onclick");
				screenshots.backClick = linkList.back.getAttribute("onclick");
			break;
			case "remove":
				linkList.forward.setAttribute("onclick","return false;");
				linkList.back.setAttribute("onclick","return false;");
			break;
			case "reset":
				linkList.forward.setAttribute("onclick", screenshots.forwardClick);
				linkList.back.setAttribute("onclick", screenshots.backClick);
			break;
		}
	},
	motion: function() {
		screenshots.clicks('store');
		screenshots.clicks('remove');
		screenshots.target.morph('left: ' + screenshots.newLeft, {duration: 1});
		var clickTimer = window.setTimeout(function(){
			screenshots.clicks('reset');
		},200);
	}
}

function catchProductReviewRate(el,info) {
	product.productReviewRate(el,info);
}

document.observe("dom:loaded", product.init);