var hadjoin = 10;
(function(g) {
	if (g.zp) {
		return
	}
	var zp = g.zp = {
		_zhuanpanInfo: null,
		//_zhuanpanId: null,
		_Gd: null,
		_prizeInfo: [],
		_lightTime0: null,
		_lightTime1: null,
		_lightTime2: null,
		_modeid:null,
		_oldClass: null,
		_rotateId: null,
		_zpStatus: "waiting",
		_zpType: 1,
		_currUser: {},
		_stage: null,
		_scene: null,
		//_leftTotalPrize: 0,
		_startStatus:0,
		_stopStatus:0,
		_bgMap: ["ff994e", "25c2ff", "ff724e", "ff73fd", "ff724e", "a9c82a", "ff724e", "25c2ff"],
	};
	zp.init = function() {
		zp.initCanvas();
		zp.initDots();
		zp.initPage(prizeInfo[0]);
		zp.bindEvent();
		zp.ajaxonerecord();
		$(".item1 #lottery,.item1 #cav-btn").addClass('all-roting');	
	};
	
	zp.initCanvas = function() {
		if (zp._Gd != null) {
			return zp._Gd
		}
		var LCanvas = document.getElementById("lottery");
		zp._Gd = LCanvas.getContext("2d")
	};
	zp.initDots = function() {
		var oDots = document.getElementById("dots");
		//var oDots2 = document.getElementById("dots2");
		for (var i = 0; i < oDots.children.length; i++) {
			oDots.children[i].style.WebkitTransform = "perspective(800px) rotate(" + i * 15 + "deg)";
			//oDots2.children[i].style.WebkitTransform = "perspective(800px) rotate(" + i * 15 + "deg)"
		}
	};
	zp.initPage = function(prizeInfo) {
		zp.light(0);
		zp._modeid = prizeInfo.id;
		zp._zhuanpanInfo = prizeInfo;
		if(prizeInfo.bgimg){
			$("body").css({"background-image":"url("+prizeInfo.bgimg+")"});
		}
		zp.initPrize();
	};
	zp.bindEvent = function() {
	};
	zp.initPrize = function() {
		zp._prizeInfo = [];
		var i = 0,
			prizeInfo = zp._zhuanpanInfo.all_prize;
		var prizeObj = zp._zhuanpanInfo.all_prize;
		var keys = Object.keys(prizeInfo);
		var keyL = keys.length;
		for (i=0; i < keyL; i++) {
			var $key = keys[i];			
			var curObj = {
				"tex": prizeInfo[$key]["awardname"],
				"img": prizeInfo[$key]["awardimg"],
				"bg": "#" + zp._bgMap[i]
			}
			zp._prizeInfo.push(curObj)
		}
		zp._getAward(keyL);
	};
	zp.drawArc = function(cx, cy, r, sd, ed, color) {
		var gd = zp._Gd;
		gd.beginPath();
		gd.moveTo(cx, cy);
		gd.arc(cx, cy, r, zp.degreeToangle(sd), zp.degreeToangle(ed), false);
		gd.closePath();
		gd.fillStyle = color;
		gd.fill()
	};
	zp.degreeToangle = function(degree) {
		return Math.PI / 180 * degree
	};
	zp.drawWheelCanvas = function(json) {
		zp._Gd.clearRect(0, 0, 475, 475);
		var count = 0,
			sum = 0,
			gd = zp._Gd,
			n = zp._prizeInfo.length;
		for (var i = 0; i < zp._prizeInfo.length; i++) {
			if (zp._prizeInfo[i].img) {
				sum++
			}
		}
		for (var j = 0; j < zp._prizeInfo.length; j++) {
			var oImg = new Image();
			oImg.src = zp._prizeInfo[j].img;
			oImg.onload = function() {
				count++;
				if (count == sum) {
					for (var i = 0; i < n; i++) {
						gd.save();
						gd.translate(237.5, 237.5);
						gd.rotate(zp.degreeToangle(360 / n - 90 + i * (360 / n)));
						zp.drawArc(json.cx, json.cy, 230, 0, 360 / n, zp._prizeInfo[i].bg);
						if (zp._prizeInfo[i].img) {
							zp.drawArc(json.rx, json.ry, 40, 0, 360, "rgba(255,255,255,.3)")
						}
						if (zp._prizeInfo[i].img) {
							zp.drawArc(json.rx, json.ry, 30, 0, 360);
							zp.drawArc(json.rx, json.ry, 30, 0, 360);
							gd.save();
							gd.translate(json.rx - 30, json.ry - 30);
							gd.rotate(zp.degreeToangle(360));
							var oImg2 = new Image();
							oImg2.src = zp._prizeInfo[i].img;
							var pattern = gd.createPattern(oImg2, "no-repeat");
							gd.arc(json.rx, json.ry, 30, 0, 2 * Math.PI);
							gd.fillStyle = pattern;
							gd.fill();
							gd.restore()
						}(function(i) {
							gd.save();
							gd.translate(json.fx, json.fy);
							gd.rotate(zp.degreeToangle(90 + 180 / n));
							gd.font = "20px Microsoft YaHei";
							gd.fillStyle = "#fff";
							gd.textAlign = "center";
							gd.fillText(zp._prizeInfo[i].tex, 0, 20);
							gd.restore()
						})(i);
						gd.restore()
					}
				}
			}
		}
	};
	zp.light = function(rotate) {
		clearInterval(zp._lightTime2);
		clearInterval(zp._lightTime1);
		clearInterval(zp._lightTime0);
		switch (rotate) {
		case 0:
			zp._lightTime0 = setInterval(function() {
				$(".item1 .dots span:odd").addClass("up");
				$(".item1 .dots span:even").removeClass("up");
				setTimeout(function() {
					$(".item1 .dots span:even").addClass("up");
					$(".item1 .dots span:odd").removeClass("up")
				}, 450)
			}, 900);
			break;
		case 1:
			$(".item1 #dots span").removeClass("up");
			var i = 0;
			zp._lightTime1 = setInterval(function() {
				if (i == 24) {
					i = 0
				} else {
					for (var j = 0; j < 6; j++) {
						$(".item1 #dots span:eq(" + (i + j) % 24 + ")").addClass("up")
					}
					$(".item1 #dots span:eq(" + i + ")").removeClass("up");
					i++
				}
			}, 100);
			break;
		case 2:
			zp._lightTime2 = setInterval(function() {
				$(".item1 #dots span").addClass("up");
				setTimeout(function() {
					$(".item1 #dots span").removeClass("up")
				}, 300)
			}, 600);
			break
		}
	};
	zp._getStoplocation = function(prizeid){
		var allKeys = Object.keys(zp._zhuanpanInfo.all_prize);
		var Keylength = allKeys.length;
		var returnkey  = -1;
		for(var i=0;i<Keylength;i++){
			if(allKeys[i]==prizeid){
				returnkey = i;
				break;
			}
		}
		return returnkey;
	};
	zp._getAward = function(keyL){
			$.ajax({
                type: 'POST',
				dataType: 'json',
                url: ajaxAwardUrl,
                data:{modeid:zp._modeid},
                success: function(result) {
                    if (result.errno==0) {
					  zp._rotateId = result.message;
					  switch (keyL) {
						case 2:
							zp.drawWheelCanvas({
								cx: "0",
								cy: "2",
								rx: "0",
								ry: "125",
								fx: "0",
								fy: "200"
							});
							break;
						case 3:
							zp.drawWheelCanvas({
								angle: "-90",
								cx: "2.5",
								cy: "2",
								rx: "64",
								ry: "108",
								fx: "100",
								fy: "172"
							});
							break;
						case 4:
							zp.drawWheelCanvas({
								cx: "2",
								cy: "2",
								rx: "89",
								ry: "89",
								fx: "145",
								fy: "145"
							});
							break;
						case 5:
							zp.drawWheelCanvas({
								cx: "2",
								cy: "2",
								rx: "100",
								ry: "75",
								fx: "165",
								fy: "122"
							});
							break;
						case 6:
							zp.drawWheelCanvas({
								cx: "2",
								cy: "2",
								rx: "110",
								ry: "60",
								fx: "180",
								fy: "104"
							});
							break;
						case 7:
							zp.drawWheelCanvas({
								cx: "2",
								cy: "2",
								rx: "110",
								ry: "55",
								fx: "180",
								fy: "90"
							});
							break;
						case 8:
							zp.drawWheelCanvas({
								cx: "2",
								cy: "2",
								rx: "120",
								ry: "50",
								fx: "190",
								fy: "85"
							});
							break;
						default:
							alert("只能设置2-8个奖项");
							break
					  }
                    }else if(result.errno==-1){
					  alert(result.message);
					 
					}else{
                       alert('当前模式所有的奖品都已经抽完了!');
					  
                    }
                },
                error : function() {
					alert('网络不好，出错了');
					
                }
            });
	};
	zp.getPrizeSum = function (obj){    
        var sum = 0;       
		var allPrize = zp._zhuanpanInfo.all_prize;
        for(var key in zp._zhuanpanInfo.all_prize){       
            sum += parseInt(allPrize[key]['gailv']);
        }  
		
        return sum;
    };
	zp.getPrizeByLocation = function(prizeid) {
		var allPrizes = zp._zhuanpanInfo.all_prize;
		console.log(prizeid);
		return allPrizes[prizeid];
	};
	
	zp.getRandom = function(max, min) {
		return parseInt(Math.random() * (max - min) + min)
	};
	zp.startLottory =  function() {
		if ("waiting" != zp._zpStatus) {
			return false
		}
		
		var n = zp._prizeInfo.length;
		zp.light(1);
		zp.startrotate(n)
	};
	zp.stopLottory = function() {
		zp._zpStatus = "prizing";
		var n = zp._prizeInfo.length;
		zp.light(1);
		zp.stoprotate(n)
	};
	zp.stopingLottory = function(){
		zp._zpStatus = "prizing";
		var n = zp._prizeInfo.length;
		zp.light(1);
		zp.stopingrotate(n)
	};
	zp.startrotate  = function() {
		$(".item1 #lottery").removeClass('all-roting');
		$(".item1 #cav-btn").removeClass('all-roting')
		$(".item1 .pointer .start_btn").hide();
		$(".item1 .pointer .stop_btn").show();
		var currClass = 'rotate-roting';
		$(".item1 #cav-btn").addClass(currClass);
		$(".item1 #lottery").addClass(currClass);
		zp._oldClass = currClass;
	};
	zp.stoprotate = function(n) {
		$("#cav-btn").css("transform", "rotate(0deg)");
		var className = "";
		if (zp._oldClass) {
			$(".item1 #lottery").removeClass(zp._oldClass);
			$(".item1 #cav-btn").removeClass(zp._oldClass)
		}
		switch (n) {
		case 2:
			ClassName = "twoRoll-";
			break;
		case 3:
			ClassName = "threeRoll-";
			break;
		case 4:
			ClassName = "fourRoll-";
			break;
		case 5:
			ClassName = "fivRoll-";
			break;
		case 6:
			ClassName = "sixRoll-";
			break;
		case 7:
			ClassName = "sevenRoll-";
			break;
		case 8:
			ClassName = "eightRoll-";
			break;
		default:
			alert("只能设置2-8个奖项");
			break
		}
		var currClassId = zp._getStoplocation(zp._rotateId);
		if(currClassId==-1){
			alert("奖品不存在或是已经被删除!");
			return;
		}
		var currClassId = parseInt(currClassId)+1;
		var currClass = ClassName + currClassId;
		$(".item1 #cav-btn").addClass(currClass);
		$(".item1 #lottery").addClass(currClass).one(ani, function() {
			zp.light(2);
			var currPrize = zp.getPrizeByLocation(zp._rotateId);
			ajax_saverecord( {awardid:zp._rotateId},function(json){
				zp.showPrizeIn(currPrize.awardimg,currPrize.awardname);
			},function(err){
				alert(err.message);
			})
		});
		zp._oldClass = currClass
	};
	zp.stopingrotate = function(n) {
		//$("#cav-btn").css("transform", "rotate(0deg)");
		var className = "";
		if (zp._oldClass) {
			$(".item1 #lottery").removeClass(zp._oldClass);
			$(".item1 #cav-btn").removeClass(zp._oldClass)
		}
		switch (n) {
		case 2:
			ClassName = "twoRoll-";
			break;
		case 3:
			ClassName = "threeRoll-";
			break;
		case 4:
			ClassName = "fourRoll-";
			break;
		case 5:
			ClassName = "fivRoll-";
			break;
		case 6:
			ClassName = "sixRoll-";
			break;
		case 7:
			ClassName = "sevenRoll-";
			break;
		case 8:
			ClassName = "eightRoll-";
			break;
		default:
			alert("只能设置2-8个奖项");
			break
		}
		var currClassId = zp._getStoplocation(zp._rotateId);
		if(currClassId==-1){
			alert("奖品不存在或是已经被删除!");
			return;
		}
		var currClassId = parseInt(currClassId)+1;
		var currClass = ClassName + currClassId;
		$(".item1 #cav-btn").addClass(currClass);
		$(".item1 #lottery").addClass(currClass).one(ani, function() {
			zp.light(2);
			var currPrize = zp.getPrizeByLocation(zp._rotateId);
			ajax_saverecord( {awardid:zp._rotateId},function(json){
				zp.showPrizeIn(currPrize.bigawardimg,currPrize.awardname);
			},function(err){
				alert(err.message);
			})
		});
		zp._oldClass = currClass
	};
	zp.showPrizeIn = function(prizeimg,prizename){
        s = $(".drawbox"),
        l = ($(window).width() - 298)/2;
        c = ($(window).height() - 298)/2 + $(document).scrollTop();
        html = '';
        html = '<div class="prizeIn-mask" ></div><div class="prizeIn" ><img class="tou" src="'+prizeimg+'"><p>获得奖品:'+prizename+'</p>';
        html += '<img class="honor" src="'+ ribbonPng +'"><div class="rays"></div></div>';
        $("body").append(html);
        $(".prizeIn").animate({left: l+"px", top: c+"px", width: "298px", height: "298px"},{ easing: "easeInExpo", duration: 500, complete: function() {
               $(".prizeIn .rays,.prizeIn .honor,.prizeIn .crown,.prizeIn p").css("display", "block");
				zp.light(0);
				zp._zpStatus = "waiting"
				zp._startStatus = 0;
				zp._stopStatus = 0;
				zp.initPrize();
				//$(".item1 .pointer .start_btn").show();
				//$(".item1 .pointer .stop_btn").hide();
        }})
    };
	zp.ajaxonerecord = function(){
            $.ajax({
                type: 'POST',
				dataType: 'json',
                url: ajaxRecordUrl,
                data:{modeid:zp._modeid,maxid:ajaxrecordMaxid},
                success: function(result) {
                    if (result.errno==0) {
						ajaxrecordMaxid = result.message.maxid;
                        zp.showrecord(result);
						
                    }else{
                       setTimeout(function(){
							zp.ajaxonerecord();
					   },5e3);
                    }
                },
                error : function() {
					 setTimeout(function(){
							zp.ajaxonerecord();
					 },5e3);
                }
            });
	};
	zp.showrecord = function(json){
		var lastest = $("#luckusers ul li.new");
		if(lastest.length>0){
			lastest.after('<li class="new">'+json.message.username+'获得'+json.message.awardname+'一份</li>');
			lastest.removeClass('new');
		}else{
			$("#luckusers ul").append('<li class="new">'+json.message.username+'获得'+json.message.awardname+'一份</li>');
		}
		setTimeout(function(){
			zp.ajaxonerecord();
		},5e3);
	};
})(window);
