window.isIE = /msie/.test(navigator.userAgent.toLowerCase()) && !/opera/.test(navigator.userAgent.toLowerCase());
var VOTE = {};
VOTE.closeImg = new Image();
VOTE.closeImg.src="/img/vote/close.gif";

function Vote(a){
	var o = this;
	o.w = 30;
	o.xml = false;
	o.message = "";
	o.getloadURL = function(){return "/product_vote.php?type=load&product_id=" + window.ProductID;};
	o.getvoteURL = function(){return "/product_vote.php?type=vote&product_id="+window.ProductID+"&score=" + o.score;};
	o.score = 0;
	o.avgscore = 0;
	o.count = 0;
	o.starsHTML = "";
	o.popElement = false;
	o.popBG = false;
	o.isSelected = false;
	o.isVoted = false;
	o.get10stars = function(){
		return '<div class="pop-stars" id="pop_stars"><div class="pop-stars-i" id="pop_stars_i"></div></div>';
	}
	o.Template2 = '\
		<div class="ppp" style="position:relative;height:100%;width:100%;top:-2px;left:-3px;border:1px solid #b9b9b9;border-top:0;background:#fff;"><table style="width:100%;height:95px;margin:0;" border="0" cellspacing="0">\
		    <tr style="height:25px;background:url(/img/vote/popbg.gif) #ddd repeat-x;padding:0;">\
		        <th style="text-align:left;padding-left:10px;">投票</th>\
		        <th style="text-align:right;padding-right:10px;"><img id="closepopimg" src="'+VOTE.closeImg.src+'" /></th>\
		    </tr>\
		    <tr style="height:70px;background:#fff;"><td id="tdstars" style="padding-left:15px;">'+o.get10stars()+'</td><td width="85px" class="score"><span id="votescore">0</span><sub>分</sub></td></tr>\
		</table>\
		</div>\
	';
	o.createpop = function(){
	    var cover = document.createElement("div");
	    cover.id="coverBG";
	    with(cover.style){
			display="none";
	    }
	    document.body.appendChild(cover);
	    var p = document.createElement("div");
	    p.id="vote_pop";
	    with(p.style){
	        width="420px";
	        height=window.isIE?"104px":"100px";
	        overFlow="hidden";
	        fontSize="14px";
			background="#d0d0d0";
	        display="none";
	        position="absolute";
	        top=(Math.max(document.documentElement.scrollTop,document.body.scrollTop)+150)+"px";
	        zIndex=999;
	    }
	    p.innerHTML = o.Template2;
	    document.body.appendChild(p);
	    o.popElement = p;
	    o.setPopLeft();
		o.popBG = cover;
		o.on_el = G("pop_stars_i");
		o.off_el = G("pop_stars");
		o.info_el = G("votescore");
		o.off_el.onmousemove = function(e){
			var e = e||window.event;
			var w = (e.layerX||e.offsetX)+1;
			o.hover_score = Math.ceil(w/o.w);
			o.hover_score = o.hover_score>10?10:o.hover_score;
			o.on_el.style.width = o.w*o.hover_score + 'px';
			o.info_el.innerHTML = o.hover_score;
		}
		o.off_el.onmouseout = function(e){
			var e = e||window.event;
			if((e.toElement||e.relatedTarget)==o.on_el) return "";
			o.on_el.style.width = '0px';
			o.info_el.innerHTML = "0";
		};
		o.off_el.onclick = function(){
			o.score = o.hover_score;
			o.submit();
		};
	    G("closepopimg").onclick=o.close;
		addEvent(window,"resize",o.setPopLeft);
	}
	
	o.setPopLeft=function(){
		o.popElement.style.left=(document.body.scrollWidth-420)/2+"px";
		o.popElement.style.top=(Math.max(document.documentElement.scrollTop,document.body.scrollTop)+150)+"px";
	}
		
	o.getStars = function(score){
		score = parseFloat(score);
		var fscore = Math.floor(score);
	    var hasHalf = (score-fscore)>=0.5?true:false;
		return fscore*o.w+(hasHalf?o.w/2:0);
	}

	o.showTip = function(tip){
		tip = tip || o.message;
		if(tip != ""){
			G("web_tip").style.display="";
			G("web_tip").innerHTML = tip;
			window.setTimeout(function(){
				G("web_tip").style.display = "none";
			},3000);
		}
	}

	o.pop = function(){
		if(!o.isVoted){
			if(!o.popElement) 
				o.createpop();
			o.hover_score = 0;
			o.setPopLeft();
			o.popBG.style.display = "";
			o.popElement.style.display = "";
		}else{
			o.showTip("您已经投过票了！");
		}
	}
	
	o.close = function(){
		if(o.popElement) 
			o.popElement.style.display = "none";
	    G("coverBG").style.display="none";
	}

	o.refesh = function(){
		if(!o.xml){
			o.showTip("网络连接出错。");
			return;
		}
		o.message = getItem(o.xml,"message")||"";
		o.avgscore = getItem(o.xml,"average_score");
		o.count = parseInt(getItem(o.xml,"vote_counts"));
		G("web_score").innerHTML = o.avgscore;
		G("web_count").innerHTML = o.count;
		G("web_stars_i").style.width = o.getStars(o.avgscore)+"px";
	}
	
	o.submit = function(){
		try{
			o.ajax(o.getvoteURL(),function(){
				o.refesh();
				CK.set("Y"+window.ProductID,"Y",10);
				o.isVoted = true;
				o.showTip(o.message);
			});
		}catch(e){};
		o.close();
	}
	
	o.init = function(){
		G("web_stars_i").style.width = "0px";
		o.ajax(o.getloadURL(),function(){
			o.refesh();
		});
		if(CK.get("Y"+window.ProductID) != "Y"){
			addEvent(G("web_btn"),"click",o.pop);
		}else{
			addEvent(G("web_btn"),"click",function(){
				o.showTip("您已经投过票了！");
			});
		}
	}

	o.ajax = function(url,callback){
		var xh;
		try {
			xh = new XMLHttpRequest();
		}catch (e) {
				try {
					xh = new ActiveXObject("Msxml2.XMLHTTP");
				}catch (e) {
					try {
						xh = new ActiveXObject("Microsoft.XMLHTTP");
					}catch (e) {
						alert("投票功能初始化失败");
					}
				}
		}
		xh.onreadystatechange = function(){
			if(xh.readyState == 4 && xh.status==200){
				o.xml = xh.responseXML;
				callback();
			}
		}
		xh.open("GET", url+"&timeidd="+new Date().getTime(), true);
		xh.send(null);
	}

	function getItem(xml,tagName){return (xml.getElementsByTagName(tagName).length)?(xml.getElementsByTagName(tagName)[0].text?xml.getElementsByTagName(tagName)[0].text:xml.getElementsByTagName(tagName)[0].textContent):undefined;}
	function G(id){return document.getElementById(id);}
	function C(id,classname){G(id).className=classname;}
}

function addEvent(el,eventName,fn){
	if(el.addEventListener)
		el.addEventListener(eventName,fn,false);
	else
		el.attachEvent("on"+eventName,fn);
}

var CK={
	set:function(name,value,minutes)
	{
		var expire = "";
		if(minutes != null)
		{
		expire = new Date((new Date()).getTime() + minutes * 60000);
		expire = "; expires=" + expire.toGMTString();
		}
		document.cookie = name + "=" + escape(value) + expire;
	},
	get:function(name)
	{
		var cookieValue = "";
		var search = name + "=";
		if(document.cookie.length > 0)
		{
			offset = document.cookie.indexOf(search);
			if (offset != -1)
			{
				offset += search.length;
				end = document.cookie.indexOf(";", offset);
				if (end == -1) end = document.cookie.length;
				cookieValue = unescape(document.cookie.substring(offset, end));
			}
		}
  		return cookieValue;
	}
}
new Vote().init();