// All part of the Dynamic Star Rating by Jordan Boesch!
// http://creativecommons.org/licenses/by-nc-nd/2.5/ca/
// PRE-LOAD IMAGES -----------------------------

if (document.images){
  pic1 = new Image(220,19); 
  pic1.src = "/gfx/images/rating_loading.gif"; 

  pic2 = new Image(16,48); 
  pic2.src = "/gfx/images/rating_star.gif"; 

  pic3 = new Image(16,48); 
  pic3.src = "/gfx/images/rating_star_2.gif"; 
  
  pic4 = new Image(16,13); 
  pic4.src = "/gfx/images/rating_tick.gif";
  
  pic5 = new Image(14,14); 
  pic5.src = "/gfx/images/rating_warning.gif";
}

// AJAX ----------------------------------------

var xmlHttp

function GetXmlHttpObject(){

var xmlHttp = null;

	try {
	  // Firefox, Opera 8.0+, Safari
	  xmlHttp = new XMLHttpRequest();
	  }
	catch (e) {
	  // Internet Explorer
	  try {
			xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
		}
	  catch (e){
			xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
		}
	  }
	  
	return xmlHttp;

}

// Calculate the rating
function rate(lang,rating,id,uid,show5,showPerc,showVotes){

	xmlHttp = GetXmlHttpObject()
	
	if(xmlHttp == null){
		alert ("Your browser does not support AJAX!");
		return;
	  }

	xmlHttp.onreadystatechange = function(){
		
        var trid = id.replace(/\//g,"_");
	var loader = document.getElementById('loading_'+trid);
	var uldiv = document.getElementById('ul_'+trid);
	

                if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
			
			//loader.style.display = 'none';
			//var res = xmlHttp.responseText;
                        var xml = xmlHttp.responseXML;
			
			//alert(res);
			//alert(xml);
			
                        if (xml != null && xml.getElementsByTagName("ratings").item(0) != null) {

                            var a = xml.getElementsByTagName("ratings").item(0);
                            var status = xml.getElementsByTagName("status");
                            if (status.item(0)) status_val = status.item(0).firstChild.nodeValue;

			if(status_val == 'already_voted'){
				
				loader.style.display = 'block';
                                if (lang == 'en') {
				   loader.innerHTML = '<div class="voted_twice">You already voted!</div>';
			        } else {
				   loader.innerHTML = '<div class="voted_twice">Έχετε ψηφίσει ήδη!</div>';
			        }
				
			} else if(status_val == 'error') {
                            var errormsg = xml.getElementsByTagName("errormsg");
                            if (errormsg.item(0)) errormsg_val = errormsg.item(0).firstChild.nodeValue;
			   loader.innerHTML = '<div class="voted_twice">'+errormsg_val+'</div>';
			} else if(status_val == 'ok') {
				
                            var rating = xml.getElementsByTagName("rating");
                            if (rating != null && rating.item(0)) rating_val = rating.item(0).firstChild.nodeValue;
				loader.style.display = 'block';
                                if (lang == 'en') {
				   loader.innerHTML = '<div class="voted">Thanks for voting!</div>';
			        } else {
				   loader.innerHTML = '<div class="voted">Ευχαριστούμε!</div>';
			        }

				if(show5 == true){
					var out = document.getElementById('outOfFive_'+trid);
					var calculate = rating_val/20;
					out.innerHTML = Math.round(calculate*100)/100; // 3.47;
					//out.innerHTML = Math.round((calculate*2),0)/2; // 3.5;
				} 
				
				if(showPerc == true){
					var perc = document.getElementById('percentage_'+trid);
					//var newPerc = Math.round(Math.ceil(rating_val/5))*5;
					var newPerc = rating_val;
					perc.innerHTML = newPerc+'%';
				}
				
				else if(showPerc == false){
					var newPerc = rating_val;
				}
				
				if(showVotes == true){
					var votediv = document.getElementById('showvotes_'+trid).firstChild.nodeValue;
					//var splitted = votediv.split(' ');
					//var newval = parseInt(splitted[0]) + 1;
                                        var votes = a.getElementsByTagName("votes");
                                        if (votes.item(0)) newval = votes.item(0).firstChild.nodeValue;
					if(newval == 1){
                                                if (lang == 'en') {
						   document.getElementById('showvotes_'+trid).innerHTML = newval+' Vote';
					        } else {
						   document.getElementById('showvotes_'+trid).innerHTML = newval+' Ψήφος';
					        }
					} else {
                                                if (lang == 'en') {
						   document.getElementById('showvotes_'+trid).innerHTML = newval+' Votes';
					        } else {
						   document.getElementById('showvotes_'+trid).innerHTML = newval+' Ψήφοι';
					        }
					}
				}
				
				var ulRater = document.getElementById('rater_'+trid);
				ulRater.className = 'star-rating2';
				
				var all_li = ulRater.getElementsByTagName('li');
				
				// start at 1 because the first li isn't a star
				for(var i=1;i<all_li.length;i++){
					
					all_li[i].getElementsByTagName('a')[0].onclick = 'return false;';
					all_li[i].getElementsByTagName('a')[0].setAttribute('href','#');
					
				}
				
				if(navigator.appName == 'Microsoft Internet Explorer'){
					uldiv.style.setAttribute('width',newPerc+'%'); // IE
				 } else {
					uldiv.setAttribute('style','width:'+newPerc+'%'); // Everyone else
				 }
				
			}
			}
		} else {
			loader.innerHTML = '<img src="/gfx/images/rating_loading.gif" alt="loading" />';	
		}
	
	}
	var url = "/php/rating/rating_process.php";
	var params = "id="+id+"&uid="+uid+"&rating="+rating;
	xmlHttp.open("POST",url,true);
	xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xmlHttp.setRequestHeader("Accept","text/xml");
	xmlHttp.setRequestHeader("Content-length", params.length);
	xmlHttp.setRequestHeader("Connection", "close");
	xmlHttp.send(params);

} 

/*
       if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            var comment = "";
            var xml = xmlhttp.responseXML;

            if (xml != null && xml.getElementsByTagName("ratings").item(0) != null) {

                var a = xml.getElementsByTagName("ratings").item(0);


                // display version, if new version cause page to
                // reload which, as a side effect, will reload the
                // latest Js and Css files on to the client -- see
                // Constants.php for version number

                if (typeof(version) == "undefined") {
                    version = a.getAttribute("version");
                    document.getElementById('version').innerHTML = a.getAttribute("version");
                // do not reload if version is same or if user has typed content in to textarea
                } else if (version != a.getAttribute("version") && !textareaComment.value) {
                    location.reload(true);
                }

                // update timestamp
                ts = a.getAttribute("ts");

                // set number of active users viewing this page -- for visual effect add delay
                if (nUsers != a.getAttribute("numUsers")) {
                    nUsers = a.getAttribute("numUsers");
                    _updateActiveUsers(nUsers);
                }

                var comments = xml.getElementsByTagName("comment");
                var html = _updateCommentList(comments);
                if (html) {
                    div.innerHTML = html + div.innerHTML;
                }

                // Alert user to max posts 
                if (a.getAttribute("error")) {
                    alert("You can only post 10 comments in a row.\n\nYou will be able to post again, once another\nuser posts a comment.");
                }
            }
            }

*/

