//

//for review pages changing star images on click
var revStar = {
	reviewID: 'reviewStars',
	
	starREGEX: /rating_star/,
	filledREGEX: /_on/,
	emptyREGEX: /_off/,
	
	filledPattern: '_on',
	emptyPattern: '_off',
	
	ratingID: 'CommentRating',
	currentRating: '0',
	
	init: function() {
		if(!document.getElementById || !document.getElementsByTagName || !document.getElementById(revStar.reviewID)) {return; }
		
		//get a tags in review div id
		allLinks = $(revStar.reviewID).getElementsByTagName('a');
		
		//get links w/star img as child
		for(i = 0; i < allLinks.length; i++) {
			if(allLinks[i].hasChildNodes() && allLinks[i].firstChild.nodeName == 'IMG' && allLinks[i].firstChild.src.match(revStar.starREGEX)) {
				
				Event.observe(allLinks[i], 'click', revStar.changeStar, false);
				Event.observe(allLinks[i], 'click', cancelClick, false);
				allLinks[i].onclick = cancelClickSafari;				
			}
		}		
	},
	
	changeStar: function(e) {
		var local_target = findTarget(e);
		
		//traverse to get to link node (Safari issue)		
		local_target = linkTraverse(local_target);		
		
		if(local_target.nodeName.toLowerCase() == 'body') {
			return;	
		}		
		
		//alert(local_target.nodeName);
		//traverse left and highlight
		revStar.traverseStars(local_target,'left');
		
		//traverse right and de-highlight
		revStar.traverseStars(local_target,'right');
		
		revStar.setRating(local_target);
		
	},
	
	setRating: function(startTarget) {
		revStar.currentRating = Element.previousSiblings(startTarget).length + 1;		
		$(revStar.ratingID).value = revStar.currentRating;		
	},
	
	traverseStars: function(startTarget,direction) {
		var breakOut = false;
		//bump to next sibling to avoid current being swapped to empty
		if(direction == "right" && startTarget.nextSibling) {			
			startTarget = startTarget.nextSibling;			
		} else if(direction == "right" && !startTarget.nextSibling) {
			breakOut = true;
		}
		
		//traverse and swap		
		while(!breakOut && startTarget.hasChildNodes() && startTarget.firstChild.nodeName == 'IMG') {			
			if(direction == "left") {
				startTarget.firstChild.src = startTarget.firstChild.src.replace(revStar.emptyREGEX,revStar.filledPattern);
				if(!startTarget.previousSibling) {break;}
				startTarget = startTarget.previousSibling;
			} else {
				startTarget.firstChild.src = startTarget.firstChild.src.replace(revStar.filledREGEX,revStar.emptyPattern);
				if(!startTarget.nextSibling) {break;}
				startTarget = startTarget.nextSibling;
			}	
			
			if(!startTarget) {break;}			
		}		
	}
}

var revNav = {
	divPrefixREGEX: /home_reviews_/,
	divPrefixPattern: "home_reviews_",
	
	readMoreLinkID: 'revReadMoreLink',
	linkNameARR: 	{	2: 'music',
						3: 'film',
						4: 'DVD',
						5: 'media',
						6: 'games',
						7: 'gear'
					},
	
	init: function() {
		if(!document.getElementById || !document.getElementsByTagName || !document.getElementById(revNav.readMoreLinkID)) {return;}		
	},
	
	changeDiv: function(divID) {		
		
		if(!divID) {return;}
		
		revNav.hideDivs();
		
		revNav.showDiv(divID);		
	},
	
	showDiv: function(divID) {		
		
		if(!divID) {return;}
		
		//show div
		Element.show(revNav.divPrefixPattern + divID);
		
		//replace img w/correct category img in footer
		//$(revNav.readMoreLinkID).firstChild.src = $(revNav.readMoreLinkID).firstChild.src.replace(/_[a-z]+.png/,'_' + revNav.linkNameARR[divID] + '.png');
		
		//replace rcat categoryid in link in footer
		$(revNav.readMoreLinkID).href = $(revNav.readMoreLinkID).href.replace(/\/rcat\/[0-9]+/,'/rcat/' + divID);
		
		// replace inner html
		document.getElementById('revLink').innerHTML = 'more ' + revNav.linkNameARR[divID] + ' reviews'
		
		
		
	},
	
	hideDivs: function() {
		var allDivs;
		
		allDivs = document.getElementsByTagName('div');
		
		for(i=0;i<allDivs.length;i++) {
			if(allDivs[i].id.match(revNav.divPrefixREGEX)) {
				Element.hide(allDivs[i]);
			}
		}
	}
}

var evCal = {
	paginationID: 'calendarPagination',	
	currentDate: '',
	
	resultsID: 'calendar_wrap',
	resultsOBJ: '',	
	
	init: function() {	
		if(!document.getElementById || !document.getElementsByTagName || !document.getElementById(evCal.resultsID)) {return;}				
		/* PAGINATION ONCLICK LINKS */
		evCal.addLinkEvents();		
	},
	
	addLinkEvents: function (t) {					
		count = 0;
		paginationARR = $(evCal.paginationID).getElementsByTagName('a');
		for(i=0; i < paginationARR.length; i++) {									
			addEvent(paginationARR[i], 'click', evCal.changeCal, false);
			addEvent(paginationARR[i], 'click', cancelClick, false);
			paginationARR[i].onclick = cancelClickSafari;
			paginationARR[i].href = "#";
		}				
	},
	
	changeCal: function(e) {
		var local_target = findTarget(e);
		
		//traverse to get to link node (Safari issue)
		local_target = linkTraverse(local_target);		
		
		var qs = '';			
			
		//build POST string
		
		//qs = 'date=' + local_target.name + '&lastDate=' + evCal.getStickDate() + '&action=' + local_target.id + '&rnd=' + Math.random();
		qs = 'date=' + local_target.name + '&lastDate=' + evCal.getStickDate() + '&action=' + local_target.id;
		
		if(window.location.href.match(/\?test=Y/)) {
			//alert(qs);	
		}
		
		//new Ajax.Updater(evCal.resultsID,'/inc/inc_calendar_dyn.cfm',{method:'post', postBody:qs,asynchronous:true, onSuccess: setTimeout(evCal.reInit,600)});		
		new Ajax.Updater(evCal.resultsID,'/inc/inc_calendar_dyn.cfm',{method:'post', postBody:qs,asynchronous:true, evalScripts: true});	
		//alert(qs);	
	},
	
	dumpResult: function(t) {
		if(window.location.href.match(/\?test=Y/)) {
			alert(t.responseText);	
		}
		//alert(t.responseText);
	},
	
	getStickDate: function() {
		var stickDate = '';
		var all_divs = document.getElementsByTagName('div');
		
		for(i = 0; i < all_divs.length; i++) {
			if(all_divs[i].id.match(/currentDate/)) {
				stickDate = all_divs[i].id.substr(all_divs[i].id.lastIndexOf("_") + 1);				
			}
		}
		
		return stickDate;
		
	},
	
	reInit: function(t) {			
		evCal.addLinkEvents();				
		Tooltip.ttready = true;
		Tooltip.init();		
	}	
}

addEvent(window, 'load', evCal.init, false);
addEvent(window, 'load', revStar.init, false);