/**
 * DEFINE DEFAULT VARIABLES
 *
 */

var voteUrlMediaAvailable = '/lbin/ajax/media_alreadyVoted.php';
var voteUrlMediaVote = '/bin/ajax/media_vote.php';
var voteRange = 5;
var votePrefix = 'voting';
var voteStatePrefix = 'voting_value';
var voteContainerPrefix = 'voting_div';
var voteThanksPrefix = 'voting_thanks';

var voteCanVoteID = new Array();
var voteMediaID = new Array();
var voteCurrentVoting = 0;

function voteInitialize() {
	voteMediaIDS = new String();
	for (i = 0; i < voteMediaID.length; i++) {
		if (voteMediaIDS != "") {
			voteMediaIDS = voteMediaIDS + 'x';
		}
		voteMediaIDS = voteMediaIDS + new String(voteMediaID[i]);
	}
	new Ajax(voteUrlMediaAvailable + '?media=' + escape(voteMediaIDS), {
		method: 'get',
		encoding: 'UTF-8',
		onComplete: function(response) {
			responseA = response.split('x');
			for (i = 0; i < responseA.length; i++) {
				voteCanVoteID[voteCanVoteID.length] = new Number(responseA[i]);
			}
		}
	}).request();
}


function voteCanVote(voteID) {
	if (voteID == voteCurrentVoting) {
		return false;
	}
	for (i = 0; i < voteCanVoteID.length; i++) {
  		if (voteID == voteCanVoteID[i]) {
  			return true;
  		}
  	}
  	return false;
}

function voteSetVoting(voteID, voteNum) {
	// set voting for media voteID to value voteNum
	if ((voteNum < 0) || (voteNum > voteRange)) {
		return false;
	}
	for (i = 1; i <= voteRange; i++) {
    	divTmp = $(votePrefix + '_' + voteID + '_' + i);
    	if (typeof(divTmp) == "undefined") {
    		continue;
    	}
		diff = voteNum - i;
		if (diff < -0.5) { // - 0.75
			divTmp.style.backgroundImage = "url(" + voteImagePassive + ")";
		} else if (diff < -0.0) { // - 0.25
			divTmp.style.backgroundImage = "url(" + voteImageHalf + ")";
		} else {
			divTmp.style.backgroundImage = "url(" + voteImageActive + ")";
		}
  	}
  	return true;
}
	

function voteMouseIn(div) {
  if (typeof(div.id) != "string") {
    return;
  }

  voteA = new String(div.id).split("_");
  if (voteA.length != 3) {
    return;
  }
  
  if (voteA[0] != votePrefix) {
    return;
  }
  voteID = new Number(voteA[1]).valueOf();
  voteNum = new Number(voteA[2]).valueOf();
  if (!voteCanVote(voteID)) {
  	return;
  }
  voteSetVoting(voteID, voteNum);
}

function voteMouseOut(div) {
  if (typeof(div.id) != "string") {
    return;
  }
  voteA = new String(div.id).split("_");
  if (voteA.length != 3) {
    return;
  }
  if (voteA[0] != votePrefix) {
    return;
  }
  voteID = new Number(voteA[1]).valueOf();
  voteNum = new Number(voteA[2]).valueOf();
  if (!voteCanVote(voteID)) {
  	return;
  }
  voteState = new Number($(voteStatePrefix + "_" + voteID).value);
  voteSetVoting(voteID, voteState);
}


function voteMouseDown(div) {
  	if (typeof(div.id) != "string") {
    	return;
  	}
  	voteA = new String(div.id).split("_");
	  if (voteA.length != 3) {
    	return;
	  }
  	if (voteA[0] != votePrefix) {
    	return;
  	}
  	voteID = new Number(voteA[1]).valueOf();
  	voteNum = new Number(voteA[2]).valueOf();
  	if (!voteCanVote(voteID)) {
	  	return;
  	}
  	voteCanVoteIDTmp = new Array();
  	for (i = 0; i < voteCanVoteID.length; i++) {
  		if (voteCanVoteID[i] != voteID) {
  			voteCanVoteIDTmp[voteCanVoteIDTmp.length] = voteCanVoteID[i];
  		}
  	}
  	voteCurrentVoting = voteID;
  	voteCanVoteID = voteCanVoteIDTmp;

	new Ajax(voteUrlMediaVote + '?media_id=' + escape(voteID) + '&rate=' + escape(voteNum), {
		method: 'get',
		encoding: 'UTF-8',
		onComplete: function(response) {
			if (response.search(/^OK~/) != 0) {
  				voteState = new Number($(voteStatePrefix + "_" + voteCurrentVoting).value);
  				voteSetVoting(voteCurrentVoting, voteState);
			} else {
				rel1 = /(\d\.\d)\.gif$/gi;
   				res = rel1.exec(response);
   				if (res == null) {
   					rel2 = /(\d)\.gif$/gi;
   					res = rel2.exec(response);
   					res = res[1];
   				} else {
   					res = res[1];
   				}
   				if (res == null) {
   					voteCurrentVoting = 0;
   					return;
   				}
   				voteState = new Number(res).valueOf();
   				voteSetVoting(voteCurrentVoting, voteState);
   				thanksDiv = $(voteThanksPrefix + '_' + voteCurrentVoting);
   				if (typeof(thanksDiv) != "undefined") {
   					thanksDiv.style.display = 'block';
   				}
			}
			voteCurrentVoting = 0;
		}
	}).request();
  
}

