//clear referrer cookie
Event.observe( window, 'load', function() { 
			var date = new Date();
        		date.setTime(date.getTime() - ( 1 * 60 * 60 * 24 ));
			gsetCookie('vote_referrer', '', 0, "/"); } );

var ajaxHandler = function(t) {

	var reply = (t.responseText).evalJSON();

	if (reply.error) {
		$('mainform').appendChild(buildElement('div',{'id':'feedback'}));
		displayError(reply.error); 
		//return false;
	}
	switch(reply.mode) {
		case 'build':
        //    buildRatePageElements();
			break;

 		case 'complete':

//			$('rate_' + reply.image_id).style.display = "block";
			$('rate_average_' + reply.image_id).innerHTML= reply.rate;
			$('rate_score_' + reply.image_id).innerHTML = reply.score;
			$('rate_votes_' + reply.image_id).innerHTML = "Votes: " + reply.votes;

            $$('div.highlightentry').each(function(ElementName) { 
                    
		ElementName.className = 'rateimage';
                    
		var highlightentryId = (ElementName.id).split("_");
		var foundId = highlightentryId[1];

        	$('rate_text_' + foundId).innerHTML = "";

		var highlightentryVotes = ($('rate_votes_' + foundId).innerHTML).split("Votes: ");
		$('rate_votes_' + foundId).innerHTML = "Votes: " + (highlightentryVotes[1] - 1); 

           });

    		$('image_' + reply.image_id).className = 'highlightentry';

            $$('div.ratespace').each(function(ElementName) { 
                if (ElementName.style.display == "none") {
                    ElementName.style.display = "block";
                }
            });
            $('rate_' + reply.image_id).hide();
        	
//			resetStars(reply.image_id);
			$('rate_text_' + reply.image_id).innerHTML = "<b>Thanks for voting!</b>";

			return false;

			break;
		default:
			break;
	}

}

function buildRatePageElements() {

// including single and series

var cat = {};

    $('searchchoicespace').appendChild(buildElement('ul',{'id':'searchchoiceul'}));

            var countcats = 0;

			for (id in cat) { 
                if (countcats == 6) {
                        $('searchchoicespace').appendChild(buildElement('br'));
                } else {
	                if (countcats) $('searchchoicespace').appendChild(buildElement('img',{'src':'/00/diamond.gif'},''));
                }


	                        $('searchchoicespace').appendChild(buildElement('a',{'href':'/bin/Rate?search='+id},cat[id]));
	                        countcats++;

    		}

if($('chosenone').innerHTML.length > 0) {
    if ($('rate_' + $('chosenone').innerHTML)) {
        $('image_' + $('chosenone').innerHTML).className = 'highlightentry';
	    $('rate_' + $('chosenone').innerHTML).hide();
	    $('rate_text_' + $('chosenone').innerHTML).innerHTML = "<b>Thanks for voting!</b>";
    }
}
    
}

function getServer(mode, serializedform) {
	if (serializedform !== "") serializedform = '&' + serializedform;
	new Ajax.Request('/bin/Rate', {method:'post',parameters:'mode=' + mode + serializedform, onSuccess:ajaxHandler, onFailure:ajaxError});
}

function processEvent(elementid, event, type) {

var splitForRateId = elementid.split("__");
var rateid = splitForRateId[1];
var splitforImageId = splitForRateId[0].split("_");
var image_id = splitforImageId[1];

if (type == 'mouseover') {
	switch(splitforImageId[0]) {
		case 'rate':
		clearStars(image_id);
		highlightStars(elementid, 'starhoveroff', image_id, rateid);
		changeRateText(elementid,image_id,rateid);
		break;
		default:
		break;
	}
} else if (type == 'mouseout') {
	clearStars(image_id);
	resetStars(image_id);
} else if (type == 'click') { // click

	if (elementid == 'loginlink') {

	//var new_window = window.open("/bin/EmailLogin","LoginWindow","height=330,width=395px,toolbar=no,menubar=no,location=no,scrollbars=yes,resizable=yes");

  // window.location.href = "http://"+window.location.hostname+"/bin/EmailCheck?url=http://"+window.location.hostname+"/bin/Rate?image_id="+image_id;

	return false;

	} else { // vote click

	var user = $('username').innerHTML;
	if  (!user) user = ggetCookie('vote_email');

	if (user) {
        var categoryid = "rate_category_" + image_id;
        var category = $(categoryid).innerHTML;
		var serializedform = "image_id=" + image_id +  "&" + "rate=" + rateid + "&category=" + category;

		$('rate_' + image_id).hide();
		$('rate_text_' + image_id).innerHTML = "processing...";

		getServer('process', serializedform);

	} else { 
		buildLoginMessage(image_id);
	}
	return false;

	}

} else if (type == 'focus') {
} else if (type == 'change') {
}

}

function clearStars(image_id) {
return;
	for (var i = 1; i <= 5; i++) {
		var otherid = "rate_" + image_id + "__" + i;
		$(otherid).className = 'starhoveroff';
	}

}

function buildLoginMessage(image_id) { 


  var loginhref = "http://"+window.location.hostname+"/bin/EmailCheck?url=http://"+window.location.hostname+"/bin/Rate?image_id="+image_id;

	var link = buildElement('a',{'id':'loginlink','href':loginhref, 'innerHTML':'Login to vote &raquo;'});
//	var link = buildElement('a',{'id':'loginlink','href':self.location.href, 'innerHTML':'Login to vote &raquo;'});
//	link.setAttribute('onclick', 'gsetCookie("vote_referrer", self.location.href, 0, "/"); self.location="/user/login.shtml"; return false;');


	var message = buildElement('div',{'id':'errormessage'});
	message.appendChild(link);
	
	
	// clear the current HTML
	$('rate_' + image_id).innerHTML = "";
	$('rate_text_' + image_id).innerHTML = "";
		
	// add the message
	$('rate_' + image_id).appendChild(message);

	var watcher = new eventWatcher('loginlink'); //onclick

	$('loginlink').setAttribute('onmouseover', "this.style.cursor='pointer';");


}

function resetStars(image_id) {

	var rate = $("rate_average_" + image_id).innerHTML;
	for (var i = 1; i <= rate; i++) {
		var otherid = "rate_" + image_id + "__" + i;
//		$(otherid).className = 'starhoveroff';
	}
	buildRateText(image_id, rate);

}

function highlightStars(elementid, starclass, image_id, rateid) {
	
	for (var i = 1; i <= rateid; i++) {
		var otherid = "rate_" + image_id + "__" + i;
		$(otherid).className = starclass;
	}
}

function changeRateText(elementid, image_id, rateid) {

var otherid = "rate_text_" + image_id;
var message = "";
	switch (rateid) {
	case '1':
	message = "Click to vote";
	break;
	case '2':
	message = "getting better";
	break;
	case '3':
	message  = "average";
	break;
	case '4':
	message  = "looking good";
	break;
	case '5':
	message = "best in show";
	break;
	default:
	message = ""; 
	}

$(otherid).innerHTML = message;

}

function setRating(rate, image_id) {

	var divId = "rate_" + image_id;
	var ul = buildElement('ul');

	ul = buildLink(image_id, '1', ul, rate);
//	ul = buildLink(image_id, '2', ul, rate);
//	ul = buildLink(image_id, '3', ul, rate);
//	ul = buildLink(image_id, '4', ul, rate);
//	ul = buildLink(image_id, '5', ul, rate);
	$(divId).appendChild(ul);

	buildLinkEvents(image_id, '1', ul);
//	buildLinkEvents(image_id, '2', ul);
//	buildLinkEvents(image_id, '3', ul);
//	buildLinkEvents(image_id, '4', ul);
//	buildLinkEvents(image_id, '5', ul);

	buildRateText(image_id, rate);
}

function buildRateText(image_id, rate) {

/*	var votes = $("rate_votes_" + image_id).innerHTML;
	if (votes == 1) {
		$("rate_text_" + image_id).innerHTML = votes + " Vote ";
	} else {
		$("rate_text_" + image_id).innerHTML = votes + " Votes ";
	}
*/
$("rate_text_" + image_id).innerHTML = "&nbsp;";

}

function buildLink(image_id, rate_id, ul, rate) {

	var padding = "&nbsp;";
	var elementid = "rate_" + image_id + "__" + rate_id; 
	var li = buildElement('li');
	var starclass = 'starhoveroff';
	if (rate_id <= rate) {
		starclass = 'starhoveroff';
	}

	
	
	li.appendChild(buildElement('a',{'id':elementid,'innerHTML':padding,'hrefx':'','className':starclass}));
	ul.appendChild(li);

	return ul;

}

function randomSort() {
var rand = Math.floor(Math.random()*2);
	if (!ggetCookie('search_sort')) {
		if (rand == 0) gsetCookie('search_sort', 'mostvotes', 0, "/");
	}

}

function buildLinkEvents(image_id, rate_id) {
	var elementid = "rate_" + image_id + "__" + rate_id; 
	var watcher = new eventWatcherOnMouse(elementid,'onmouseover');
	watcher = new eventWatcherOnMouse(elementid,'onmouseout');
	watcher = new eventWatcher(elementid); //onclick

}

var eventWatcherOnMouse = Class.create();

eventWatcherOnMouse.prototype = {

   initialize: function(event,type) {
		this.event = $(event);
		this.elementid = $(event).id;

		switch(type) {
		case 'onmouseover':
			this.event.onmouseover = this.formAction.bindAsEventListener(this);
			break;
 		case 'onmouseout':
			this.event.onmouseout = this.formAction.bindAsEventListener(this);
			break;
 		case 'onfocus':
			this.event.onfocus = this.formAction.bindAsEventListener(this);
			break;
 		case 'onblur':
			this.event.onblur = this.formAction.bindAsEventListener(this);
			break;
 		case 'onchange':
			this.event.onchange = this.formAction.bindAsEventListener(this);
			break;
		default:
			break;
		}
	},

    formAction: function(event) {
			processEvent(this.elementid, event, event.type);	
   }
};




