/*
	$on_img 		= '<img src="' .GFX_HOST . '/skwid_black.gif" class="ratingimg" alt="Rating Sqwid" />';
	$off_img		= '<img src="' .GFX_HOST . '/skwid_gray.gif" class="ratingimg" alt="Rating Sqwid" />';
	$half_img		= '<img src="' .GFX_HOST . '/skwid_half.gif" class="ratingimg" alt="Rating Sqwid" />';
	$on_img_over	= '<img src="' .GFX_HOST . '/skwid_black_over.gif" class="ratingimg" alt="Rating Sqwid" />';
	$off_img_over	= '<img src="' .GFX_HOST . '/skwid_gray_over.gif" class="ratingimg" alt="Rating Sqwid" />';
	
*/

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 = 'Your New Rating:<br /><b><span style="color:#009933;">';
var RATING_TXT_PRE_CURRENT = '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 	  = HTTP_HOST + '/img/gfx/skwid_black.gif';
ratingImgOn_over.src  = HTTP_HOST + '/img/gfx/skwid_black_over.gif';
ratingImgOff.src 	  = HTTP_HOST + '/img/gfx/skwid_gray.gif';
ratingImgOff_over.src = HTTP_HOST + '/img/gfx/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;
/**
 * 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);
	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 + '_';
	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 = ratingGetItemRating(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();
			console.debug (e);
			return false;
		}
	} catch(e) {
		console.debug (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;
}



/*
function behave(behaviours) {
//	console.debug(behaviours);
try{
	behaviours = $H(behaviours);
	behaviours.each(function(b, i) {
		console.debug(i);
		var rule = b[0];
		var events = b[1];
		events = $H(events);
		var elements;
		console.debug('rule' + i + ':', rule);
		console.debug('events' + i + ':', events);
		console.debug('typeof events' + i + ':', typeof(events));
		
			events.each(function(ev,i) {
				console.debug('i',i);
				console.debug('ev',ev);
			});
		switch(true) {
			case rule.charAt(0) == '.' :
				elements = document.getElementsByClassName(rule.substr(1));
				break;
			case rule.charAt(0) == '#' :
				elements = [document.getElementById(rule.substr(1))];
				break;
			default:
				if (console != null && console.debug != null) {
					console.debug('Invalid Rule for Behaviours: ', rule);
				}
				return;
		}
//		elements.each(function(el,i) {
//		});
		
	});
	
	
} catch(e) {
	console.debug(e);
}
}


var behaviours = {
	'.ratingHREF': function(el) {
		el.onmouseover = function() {
			console.debug(ratingParseIDS(el.id));
		};
		el.onmouseout = function() {
			console.debug(ratingParseIDS(el.id));
		};
	}
};

behave(behaviours);
*/