

var CONST_STAR_WIDTH = 15;
var currentVoteId;
var asyncVoteId;
var voteMode;
var CONST_STAR_IMAGE_ON = '/resources/images/common/bt_vote_on.gif';
var CONST_STAR_IMAGE_OFF = '/resources/images/common/bt_vote_off.gif';

function getPositionObject(obj){
    var o = function(){var curtop =0;var curleft = 0};

    o.curleft = 0;
    o.curtop = 0;

    if (obj.offsetParent) {
        o.curleft = obj.offsetLeft
        o.curtop = obj.offsetTop
        while (obj = obj.offsetParent) {
            o.curleft += obj.offsetLeft
            o.curtop += obj.offsetTop
        }
    }
    return o;
}

function trapVoteMove(event)
{
	try{
		var oTop = document.getElementById('divTotal' + currentVoteId);
		var curleft = 0;
		var filtertop = 0;
		var filterbottom = 0;
		var filterstart = 0;
		var filterend = 0;
	    
		event = event?event:window.event;

		var r = getPositionObject(oTop);
		
		filterstart = r.curleft;
		filtertop = r.curtop;
		filterend = filterstart + oTop.clientWidth;
		filterbottom = filtertop + oTop.clientHeight;
	    
		var clientY;
		var clientX;
		if (!document.body.scrollTop)
		{
			clientX = event.clientX + document.documentElement.scrollLeft; 
			clientY = event.clientY + document.documentElement.scrollTop;
		}
		else {
			clientX = event.clientX +document.body.scrollLeft; 
			clientY = event.clientY + document.body.scrollTop; 
		}

		if(clientY > filterbottom || clientY < filtertop || clientX > filterend || clientX < filterstart)
		{
			document.onmousemove ='';
			hideLayer('divVote' + currentVoteId);
			hideLayer('divVoteTooltip' + currentVoteId);
			showLayer('divBg' + currentVoteId); 
			currentVoteId = '';
	        
		}
	}catch(err){}
}

function showVote(id){
	try{
		var alreadyVoted = document.getElementById('hidAlreadyVoted' +  id).value;
		if(alreadyVoted != '1'){
			if(id != currentVoteId)
			{
				setStarOff(id);    
			}
			hideLayer('divBg' + id);
			showLayer('divVote' + id);  
			showLayer('divVoteTooltip' + id);  
			currentVoteId = id;
			document.onmousemove = trapVoteMove;
		}
	}catch(err){}
}

function setStarOff(id){
	try{
		document.getElementById('star_' +  id + '_1').src = CONST_STAR_IMAGE_OFF;
		document.getElementById('star_' +  id + '_2').src = CONST_STAR_IMAGE_OFF;
		document.getElementById('star_' +  id + '_3').src = CONST_STAR_IMAGE_OFF;
		document.getElementById('star_' +  id + '_4').src = CONST_STAR_IMAGE_OFF;
	    document.getElementById('star_' +  id + '_5').src = CONST_STAR_IMAGE_OFF;
	}catch(err){}
}

function showStar(id,vote){
	try{
		setStarOff(id);
		for(i=1;i<=vote;i++){
			document.getElementById('star_' +  id + '_' + i).src = CONST_STAR_IMAGE_ON;
		}
	}catch(err){}
}

function doVote(id,tipsId,vote,ssid){
	try{
		asyncVoteId = id;
		CastVote(tipsId,vote,ssid);
		document.getElementById('hidAlreadyVoted' +  asyncVoteId).value = '1';
		hideLayer('divVote' +  asyncVoteId);
		hideLayer('divVoteTooltip' + asyncVoteId);
		showLayer('divBg' +  asyncVoteId);  
	}catch(err){}
}

function doRecipeVote(id,RecipeId,vote,ssid){
	try{
		asyncVoteId = id;
		CastRecipeVote(RecipeId,vote,ssid);
		document.getElementById('hidAlreadyVoted' +  asyncVoteId).value = '1';
		hideLayer('divVote' +  asyncVoteId);
		hideLayer('divVoteTooltip' + asyncVoteId);
		showLayer('divBg' +  asyncVoteId);  
	}catch(err){}
}

function doShowNewVote(id,newVote)
{
	try{
		document.getElementById('divBg' + id).style.width = (newVote * CONST_STAR_WIDTH) + 'px'; 
	}catch(err){}
}

// This function calls the Web service method and 
// passes the event callback function.  
function CastVote(id,vote,ssid)
{
	try{
		_284722i_PoidsSante_ph4.Web.Ext.WS.rating.CastVote(id,vote,ssid,SucceededCastVoteCallback);
	}catch(err){}
}
function CastRecipeVote(id,vote,ssid)
{
	try{
	
		_284722i_PoidsSante_ph4.Web.Ext.WS.rating.CastRecipeVote(id,vote,ssid,SucceededCastVoteCallback);
	}catch(err){}
}

// This is the callback function invoked if the Web service
// succeeded.
// It accepts the result object as a parameter.
function SucceededCastVoteCallback(result, eventArgs)
{
	try{
		// Page element to display feedback.
		doShowNewVote(asyncVoteId,result);
		asyncVoteId = '';
	}catch(err){}
}


if (typeof(Sys) !== "undefined") Sys.Application.notifyScriptLoaded();
