//Image Preloader for rating gifs
var sRatingRoot = "images/ratings/";
var preload_image_object = new Array(12);

if (document.images)
{
	var j = 0;
	for (i=0; i<=5; i++){
		preload_image_object[j] = new Image();
	    preload_image_object[j++].src = sRatingRoot+'Rated_'+i;
    }
    for (i=0; i<=5; i++){
		preload_image_object[j] = new Image();
	    preload_image_object[j++].src = sRatingRoot+'YouRated_'+i;
    }

	//add the unrated
	preload_image_object[j] = new Image();
	preload_image_object[j++].src= sRatingRoot+'Unrated.gif';
	
	//add the cancel
	preload_image_object[j] = new Image();
	preload_image_object[j++].src= sRatingRoot+'Cancel.gif';
}

var lastWidget = 0;
var Stars=6; //the number of stars
var RateXmlHttp; //
var YouRated;
var TheRating;
var TheRatingText;
var tempX = 0
var tempY = 0
var iTheCurrentRating = 0
var IsMouseOver=false //is the mouse over the div? this allows the div to turn red when user is playing with it
// Detect if the browser is IE or not.
// If it is not IE, we assume that the browser is NS.
var IE = document.all?true:false

// If NS -- that is, !IE -- then set up for mouse capture
if (!IE) document.captureEvents(Event.MOUSEMOVE)

// Set-up to use getMouseXY function onMouseMove
document.onmousemove = getMouseXY;
var StarRating="";
var TheRating=0;

function ClearIt(){document.getElementById('TheSpan').innerHTML="";}

function GetPosition(TheDiv){
  IsMouseOver=true;
  getMouseXY;
  pickLevel(tempX-findPosX(TheDiv))
}

function pickLevel(xPos){
 
 StarWidth=17
 TheRating=(Math.ceil(xPos/StarWidth-1));
}

// Main function to retrieve mouse x-y pos.s

function getMouseXY(e) {
  if (IE) { // grab the x-y pos.s if browser is IE
	if(lastWidget>0)
	{
	    tempX = event.clientX + document.body.scrollLeft;
		tempY = event.clientY + document.body.scrollTop;
	}
  } else {  // grab the x-y pos.s if browser is NS
    tempX = e.pageX;
    tempY = e.pageY;
  }  
  // catch possible negative values in NS4
  if (tempX < 0){tempX = 0}
  if (tempY < 0){tempY = 0}  

  return true
}

function StartUp(Start){ //this goes through all of the Widget divs and sets them to their initial values.
	x=Start;
	IsReal=true;
	do 
	{
		if(document.getElementById('Widget_'+x) ){ 
		//since all rating divs are numbered sequntially, the function can just go through one by one and stop when it can't find one.
			
			DrawWidget(x);
			x++;
		}
		else
		{
			IsReal=false;
		}
	}
	while (IsReal)
	lastWidget = x;
}

function SwapIt(x){
	var oNodeToRemove = document.getElementById('GraphicWidget_'+x);
    oNodeToRemove.parentNode.removeChild(oNodeToRemove);
	DrawWidget(x);
}

function DrawWidget(x){
	//This sets up the widgets with their initial value	
	var RatingImg,TheRating=document.getElementById('Rating_'+x).value;
	
	if (TheRating=="0")
	{
		RatingImg="Unrated.gif";
		TheRatingText="&nbsp;Unrated";
	}else{
	
		if(document.getElementById('YourRating_'+x).value!="0" ){ 
			YouRated="YouRated";
			TheRating = document.getElementById('YourRating_'+x).value;
		}else{ 
			YouRated="Rated";
		}
	
		RatingImg=YouRated+"_"+TheRating+".gif";
		if (document.getElementById('YourRating_'+x).value!="0"){
			TheRatingText = "&nbsp;You: <strong>"+document.getElementById('YourRating_'+x).value+"</strong> Avg:"+ document.getElementById('Rating_'+x).value;
		}else{
			TheRatingText = "&nbsp;Avg. rating: "+ document.getElementById('Rating_'+x).value;
		}
	}
	
	if(navigator.userAgent.indexOf("Firefox")!=-1)
	{
		ClearDiv="<div style=\"clear:both;\"></div>";
		ClearDiv="";
		TheHeight=13;
	}else{
		ClearDiv="";
		TheHeight=15;
	}

	document.getElementById('Widget_'+x).innerHTML+="<img style=\"cursor:pointer;\" src=\"images/ratings/"+RatingImg+"\" width=\"100\" height=\"15\" align=\"left\" id=\"Widget_"+x+"_Graphic\" onClick=\"RateIt('Widget_"+x+"', iTheCurrentRating )\" onMouseMove=\"GetPosition(this);ShowIt('Widget_"+x+"', TheRating)\" onMouseOut=\"IsMouseOver=false\">";
}

function ShowIt(Widget, rating){
	//if the item has been user rated, then it is orange. else, red
	if (document.getElementById(Widget).getElementsByTagName('input')[1].value==0 && !IsMouseOver) 
		{TheColor='images/ratings/Rated_'}
	else
		{TheColor='images/ratings/YouRated_'}
		
	if (rating>0){	
		document.getElementById(Widget+"_Graphic").src=TheColor+rating+'.gif'
	}else{
		if(IsMouseOver){//if this is just unrated, or is it a cancel
			document.getElementById(Widget+"_Graphic").src='images/ratings/Cancel.gif'
		}else{
			document.getElementById(Widget+"_Graphic").src='images/ratings/Unrated.gif'
		}
	}
	iTheCurrentRating=rating
}

function SavedRating(Widget){
	if (document.getElementById(Widget).getElementsByTagName('input')[1].value!=0)
		{
			rating=document.getElementById(Widget).getElementsByTagName('input')[1].value
		}
		else
		{
			rating=document.getElementById(Widget).getElementsByTagName('input')[0].value
		}
	
	ShowIt(Widget, rating)
	if(document.getElementById(Widget).getElementsByTagName('input')[1].value!=0){//if the item is user rated, use the direct value of the rating form.
	//document.getElementById('Exp_'+Widget).innerHTML="You: <b>"+document.getElementById(Widget).getElementsByTagName('input')[1].value+"</b> Avg: "+document.getElementById(Widget).getElementsByTagName('input')[0].value;
	}
	else if(document.getElementById(Widget).getElementsByTagName('input')[0].value!=0)
	{
//	document.getElementById('Exp_'+Widget).innerHTML="Avg. rating: "+document.getElementById(Widget).getElementsByTagName('input')[0].value;
	}
	else
	{
//	document.getElementById('Exp_'+Widget).innerHTML="Unrated";
	}
}

function RateIt(Widget, Rating){
	WidgetData=document.getElementById(Widget).getElementsByTagName('input');
	WidgetData[1].value=Rating; //set the user rating to the newly chosen rating.
	ShowIt(Widget, Rating); //displays the new rating
	
	if(WidgetData[2] != "-1")
		SubmitRating(Rating,WidgetData[2].value,WidgetData[3].value);//THIS IS THE AJAX PART!
}



function HelpfulRateIt(ID,score)
{
	setTimeout("RestoreHelpful('"+ID+"');",6000);
	
	var objDiv = document.getElementById("ReviewWidget"+ID);
	objDiv.getElementsByTagName("div")[0].style.display="none";
	objDiv.getElementsByTagName("div")[1].style.display="block";
	SubmitRating(score,5,ID);
	

}
function RestoreHelpful(ID)
{
	var objDiv = document.getElementById("ReviewWidget"+ID);
	objDiv.getElementsByTagName("div")[1].style.display="none";
	objDiv.getElementsByTagName("div")[0].style.display="block";
}

function ImageRateIt(ID,score)
{
	setTimeout("RateItRestore('"+ID+"');",6000);
	
	var objDiv = document.getElementById("ImageVote"+ID);
	objDiv.getElementsByTagName("div")[0].style.display="none";
	objDiv.getElementsByTagName("div")[1].style.display="block";
	SubmitRating(score,4,ID);
	

}
function RateItRestore(ID)
{
	var objDiv = document.getElementById("ImageVote"+ID);
	objDiv.getElementsByTagName("div")[1].style.display="none";
	objDiv.getElementsByTagName("div")[0].style.display="block";
}


//THIS IS THE FUN AJAXY PAGE! It submits the rating to another page.
function SubmitRating(Rating,RateType, RateID) {
			
	//get XmlHttp object and set handler
	if (navigator.userAgent.indexOf("Opera")>=0)
	{
		alert("Sorry, we don't currently support Opera"); 
		return;
	}
	
	if (navigator.userAgent.indexOf("MSIE")>=0)
	{ 
		var strName="Msxml2.XMLHTTP";
		if (navigator.appVersion.indexOf("MSIE 5.5")>=0)
		{
			strName="Microsoft.XMLHTTP";
		} 
		try
		{ 
			RateXmlHttp=new ActiveXObject(strName);
			RateXmlHttp.onreadystatechange=RateResult;
		} 
		catch(e)
		{ 
			alert("Error. Scripting for ActiveX might be disabled"+e); 
			return;
		} 
	} 
	else
		if (navigator.userAgent.indexOf("Mozilla")>=0)
		{
			RateXmlHttp=new XMLHttpRequest();
			RateXmlHttp.onload=RateResult;
			RateXmlHttp.onerror=RateResult;
		}

	
	//show_div(document.getElementById(RatedId));//This turns on the floating div, positioned according to the input form
	SelectedItem=-1;//Sets the selected item to off the page
	
	
	var url="AJAX/RateIt.asp";
	url=url+"?RateType="+RateType;
	url=url+"&RateID="+RateID;
	url=url+"&Rating="+Rating;
	url=url+"&retryScript=SubmitRating("+Rating+","+RateType+","+RateID+");" 
	url=url+"&sid="+Math.random();
	
	//document.location=url;
	//return;
	
	RateXmlHttp.open("GET",url,true);

	RateXmlHttp.send(null);
} 

function RateResult()
{
	if (RateXmlHttp.readyState==4 || RateXmlHttp.readyState=="complete")
	{
		if(RateXmlHttp.responseText !="Success")
			if(RateXmlHttp.responseText.substring(0,6) == "Error1")
			{
				var iChar = RateXmlHttp.responseText.indexOf("retry=");
				if(iChar > 0)
					CallSignInDiv('Please sign in to rate this item',RateXmlHttp.responseText.substring(iChar+6,RateXmlHttp.responseText.length));
				else
					CallSignInDiv('Please sign in to rate this item',null);
			}
			else
				alert(RateXmlHttp.responseText);
			
		//xmlHttp = null;
	}
} 