
var ratingTxt = ['',
//	'<span style="color:#CE0008;">Poor</span>',
//	'<span style="color:#CE9600;">Fair</span>',
//	'<span style="color:#00A6CE;">Good</span>',
//	'<span style="color:#0BCE00;">Great</span>',
//	'<span style="color:#DDDF00;">Excellent</span>'
	'Poor',
	'Fair',
	'Good',
	'Great',
	'Excellent!'
];

var RATING_TXT_PRE_NEW = '<span class="new_rating_label">Your New Rating:</span><br /><b><span style="color:#009933;">';
var RATING_TXT_PRE_CURRENT = '<span class="cur_rating_label">Your Current Rating:<br /><b><span style="color:#009933;">';
var RATING_TXT_POST_NEW = '</span></b>';
var RATING_TXT_POST_CURRENT = '</span></b>';

// preload rating images
ratingImgOn = new Image();
ratingImgOff = new Image();
ratingImgOn_over = new Image();
ratingImgOff_over = new Image();

ratingImgOn.src 	  = GFX_HOST + '/skwid_black.gif';
ratingImgOn_over.src  = GFX_HOST + '/skwid_black_over.gif';
ratingImgOff.src 	  = GFX_HOST + '/skwid_gray.gif';
ratingImgOff_over.src = GFX_HOST + '/skwid_gray_over.gif';





var ratingWindow = false;
var ratingWinParams = 'width=300,height=250,location=0,menubar=0,resizable=0,scrollbars=0,status=1,toolbar=0';
var clickedImg = false;
var userRatingDiv = false;
var itemRatingDiv = false;
var oUserRatingHTML = false;
var oItemRatingHTML = false;
var isOverRating = false;
var otherOffElementDisplay = 'block'; // for additional items to turn off
/**
 * Mouse over a rating div...
 * 
 * @param o Rating Div Object
 */
function ratingOver(o) {
	var ids = ratingParseIDS(o.id)
	var base_id = ids[0]
	var type_id = ids[1]
	var item_id = ids[2]
	var img_num = parseInt(ids[3])
	var currentRating = ratingGetUserRating(type_id,item_id);
//	if (ratingGetUserRating(type_id,item_id) == img_num) return;
	isOverRating=true;
	var href_id_base = base_id + '_href_user_' + type_id + '_' + item_id + '_';
	itemRatingDiv = $(base_id + '_div_item_' + type_id + '_' + item_id);
	oItemRatingHTML = itemRatingDiv.innerHTML;
	itemRatingDiv.innerHTML = (currentRating != img_num ? RATING_TXT_PRE_NEW : RATING_TXT_PRE_CURRENT) + ratingTxt[img_num] + (currentRating != img_num ? RATING_TXT_POST_NEW : RATING_TXT_POST_CURRENT);
	// turn off additional elements if they're there
	try {
		var otherOffElement = $(base_id+'_div_user_'+type_id+'_'+item_id+'_moreOff');
		otherOffElementDisplay = otherOffElement.style.display;
		otherOffElement.style.display = 'none';
	} catch(e) {
		otherOffElementDisplay = false;
	}
	var i;
	var img;
	for (i=1; i<=img_num; i++) {
		img = $(href_id_base + i).childNodes[0];
		img.src = ratingImgOn_over.src;
	}
	for (i=img_num+1; i<6; i++) {
		img = $(href_id_base + i).childNodes[0];
		img.src = ratingImgOff.src;
	}
}

/**
 * Mouse off the rating image...
 */
function ratingOff(o) {
	if (!isOverRating) return;
	isOverRating=false;
	var ids = ratingParseIDS(o.id)
	var base_id = ids[0]
	var type_id = ids[1]
	var item_id = ids[2]
	itemRatingDiv.innerHTML = oItemRatingHTML;
	itemRatingDiv = false;
	var user_rating = ratingGetUserRating(type_id, item_id)
	var href_id_base = base_id + '_href_user_' + type_id + '_' + item_id + '_';
	// turn on additional elements if they're there
	try {
		$(base_id+'_div_user_'+type_id+'_'+item_id+'_moreOff').style.display = otherOffElementDisplay;
	} catch(e) {
	}
	for (i=1; i<6; i++) {
		img = $(href_id_base + i).childNodes[0];
		img.src = i <= user_rating ? ratingImgOn.src : ratingImgOff.src;
	}
}

/**
 * Function to parse rating ID from Rating Div
 * IDs should look like:
 *   rate[random chars]_[div|p|whatever el type, #'s too]_{TYPE_ID}_{ITEM_ID}
 * 
 * @param id ID or Rating DIV
 */
function ratingParseIDS(id) {
	var id2 = id.replace(/(rate[a-z0-9]+)_[a-z0-9]+_user_/i, '');
	var i = id2.split("_");
	var r = [id.replace(/_[a-z0-9]+_(user|item)_[0-9]+_[0-9]+_[0-9]+$/, '')];
	i.each(function(ii) {r[r.length] = ii});
	return r;
}

/**
 * Function to retrieve a user's rating
 * 
 * @param type_id Item Type ID
 * @param item_id Item ID to get user's rating for
 */
function ratingGetUserRating(type_id, item_id) {
	var x = USER_RATINGS[type_id][item_id];
	if (x==null){
		x = USER_RATINGS[type_id][item_id] = 0;
	}
	return x;
}

function ratingGetItemRating(type_id, item_id) {
	return ITEM_RATINGS[type_id][item_id];
}

var activeTypeID = false;
var activeItemID = false;

function ratingSend(o, new_user_rating) {
	clickedImg = o;
	try {
		var ids = ratingParseIDS(o.id)
		var base_id = ids[0]
		var type_id = ids[1]
		var item_id = ids[2]
		var user_rating = ratingGetUserRating(type_id, item_id)
		if (user_rating == new_user_rating) return false;
		activeTypeId = type_id;
		activeItemId = item_id;
		userRatingDiv = $(base_id + '_div_user_' + type_id + '_' + item_id);
		oUserRatingHTML = userRatingDiv.innerHTML;
		
		userRatingDiv.innerHTML = 'Sending...';
		var pb = 'base_id=' + escape(base_id) +'&type_id=' + type_id + '&item_id=' + item_id + '&rating=' + new_user_rating;
		var postURL = HTTP_HOST+'/post/rating.php';
		
		if ($('ajaxDiv') == null) {
			new Insertion.Bottom(document.body, '<div id="ajaxDiv" style="display:none;"></div>')
		}
		
		try {
			
			new Ajax.Updater('ajaxDiv', postURL, {
				postBody: 'ajaxRequest=1&' + pb,
				evalScripts:true
			});
			
		} catch(e) {
			// ajax didn't work, try small pop-up
			ratingWindow = window.open(postURL, 'ratingWindow', ratingWinParams);
			ratingWindow.focus();
			return false;
		}
	} catch(e) {
		return false;
	}
	return false;
}

function ratingRestore() {
	if (!clickedImg) return;
	if (arguments.length) {
		//ITEM_RATINGS[activeTypeId][activeItemId] = arguments[0];
		if (arguments.length > 1) {
			USER_RATINGS[activeTypeId][activeItemId] = arguments[1];
		}
	}
	userRatingDiv.innerHTML = oUserRatingHTML;
	ratingOff(clickedImg);
	clickedImg = false;
}
