/**
* Created by davedavehong on 2016-11-19.
*/
(function($){$.fn.datePicker=function(options){return this.each(function(e){var that=$(this),docType=$(this).is("input"),nowdate=new Date(),yearScroll=null,monthScroll=null,dayScroll=null,hourScroll=null,minuteScroll=null,initY=null,initM=null,initD=null,initH=null,initI=null,initS=null,initVal=null;$.fn.datePicker.defaultOptions={beginyear:2010,endyear:2020,monthDay:[31,28,31,30,31,30,31,31,30,31,30,31],days:["周日","周一","周二","周三","周四","周五","周六"],beginhour:0,endhour:23,beginminute:0,endminute:59,curdate:false,liH:40,theme:"date",mode:null,event:"click",show:true,scrollOpt:{snap:"li",checkDOMChanges:true,vScrollbar:false,hScrollbar:false,hScroll:false},callBack:function(){}};var opts=$.extend(true,{},$.fn.datePicker.defaultOptions,options);if(!opts.show){that.off("click")}else{that.on(opts.event,function(){init()})}function init(){initVal=that.val();if(!$("#datePlugin").size()){$("body").append('
')}document.getElementsByTagName("body")[0].addEventListener("touchmove",cancleDefault,false);if(!opts.curdate&&$.trim(initVal)!=""){var inputDate=null,inputTime=null;if(opts.theme=="date"||opts.theme=="datetime"){inputDate=initVal.split(" ")[0];initY=parseInt(inputDate.split("-")[0]-parseInt(opts.beginyear))+1,initM=parseInt(inputDate.split("-")[1]),initD=parseInt(inputDate.split("-")[2])}if(opts.theme=="datetime"){inputTime=initVal.split(" ")[1];initH=parseInt(inputTime.split(":")[0])+1,initI=parseInt(inputTime.split(":")[1])+1}if(opts.theme=="time"){inputTime=initVal;initH=parseInt(inputTime.split(":")[0])+1,initI=parseInt(inputTime.split(":")[1])+1}if(opts.theme=="month"){inputDate=initVal;initY=parseInt(inputDate.split("-")[0]-parseInt(opts.beginyear))+1,initM=parseInt(inputDate.split("-")[1])}}else{initY=parseInt(nowdate.getFullYear())-parseInt(opts.beginyear)+1,initM=parseInt(nowdate.getMonth())+1,initD=parseInt(nowdate.getDate()),initH=parseInt(nowdate.getHours())+1,initI=parseInt(nowdate.getMinutes())+1,initS=parseInt(nowdate.getSeconds())}$("#datePlugin").show();destroyScroll();renderDom();$("#d-okBtn").on("click",function(event){destroyScroll();document.getElementsByTagName("body")[0].removeEventListener("touchmove",cancleDefault,false);var y=$("#yearScroll li").eq(initY).data("num");var M=$("#monthScroll li").eq(initM).data("num");var d=$("#dayScroll li").eq(initD).data("num");var h=$("#hourScroll li").eq(initH).data("num");var m=$("#minuteScroll li").eq(initI).data("num");that.val($(".d-return-info").html());$("#datePlugin").hide().html("");opts.callBack({y:y,M:M,d:d,h:h,m:m})});$("#d-cancleBtn").on("click",function(event){destroyScroll();$("#datePlugin").hide().html("");document.getElementsByTagName("body")[0].removeEventListener("touchmove",cancleDefault,false)})}function cancleDefault(event){event.preventDefault()}function isLeap(y){if((y%4==0&&y%100!=0)||y%400==0){return true}else{return false}}function renderDom(){var mainHtml=' ';var btnHtml='确定 取消
';var dateHtml='';dateHtml+='
';dateHtml+='
';dateHtml+='
';dateHtml+='
';dateHtml+="
";var timeHtml='';timeHtml+='
';timeHtml+='
';timeHtml+='
';timeHtml+="
";var monthHtml='';monthHtml+='
';monthHtml+='
';monthHtml+='
';monthHtml+="
";$("#datePlugin").html(mainHtml);switch(opts.theme){case"date":$(".d-date-box").append(dateHtml);createYear();createMonth();createDay(opts.monthDay[initM-1]);break;case"datetime":$(".d-date-box").append(dateHtml);$(".d-date-box").append(timeHtml);createYear();createMonth();createDay(opts.monthDay[initM-1]);createHour();createMinute();break;case"time":$(".d-date-box").append(timeHtml);createHour();createMinute();break;case"month":$(".d-date-box").append(monthHtml);createYear();createMonth();break;default:$(".d-date-box").append(dateHtml);createYear();createMonth();createDay(opts.monthDay[initM-1]);break}$(".d-date-box").append(btnHtml);showTxt()}function showTxt(){var y=$("#yearScroll li").eq(initY).data("num"),m=$("#monthScroll li").eq(initM).data("num"),d=$("#dayScroll li").eq(initD).data("num"),h=$("#hourScroll li").eq(initH).data("num"),i=$("#minuteScroll li").eq(initI).data("num"),date=new Date(y+"-"+m+"-"+d);
switch(opts.theme){case"date":$(".d-day-info").html(opts.days[date.getDay()]+" ");$(".d-return-info").html(y+"-"+m+"-"+d);break;case"datetime":$(".d-day-info").html(opts.days[date.getDay()]+" ");$(".d-return-info").html(y+"-"+m+"-"+d+" "+h+":"+i);break;case"time":$(".d-return-info").html(h+":"+i);break;case"month":$(".d-return-info").html(y+"-"+m);break;default:$(".d-day-info").html(opts.days[date.getDay()]+" ");$(".d-return-info").html(y+"-"+m+"-"+d);break}}function destroyScroll(){var scrollArr=[yearScroll,monthScroll,dayScroll,hourScroll,minuteScroll];scrollArr.forEach(function(itm){if(itm!=null){itm.destroy();itm=null}})}function createYear(){var yearDom=$("#yearScroll"),yearNum=opts.endyear-opts.beginyear,yearHtml=" ";for(var i=0;i<=yearNum;i++){yearHtml+=""+(opts.beginyear+i)+"年 "}yearDom.find("ul").html(yearHtml).append(" ");yearScroll=new iScroll("yearScroll",$.extend(true,{},opts.scrollOpt,{onScrollEnd:function(){yearScrollEnd(this)}}));yearScroll.scrollTo(0,-(initY-1)*opts.liH);function yearScrollEnd(_this){var yIndex=Math.floor(-_this.y/opts.liH);initY=yIndex+1;if(isLeap(parseInt(yearDom.find("li").eq(initY).data("num")))){opts.monthDay[1]=29}else{opts.monthDay[1]=28}if(initM==2&&opts.theme!="month"){createDay(opts.monthDay[initM-1])}showTxt()}}function createMonth(){var monthDom=$("#monthScroll"),monthHtml=" ";for(var i=1;i<=12;i++){if(i<10){monthHtml+='0'+i+"月 "}else{monthHtml+=''+i+"月 "}}monthDom.find("ul").html(monthHtml).append(" ");monthScroll=new iScroll("monthScroll",$.extend(true,{},opts.scrollOpt,{onScrollEnd:function(){monthScrollEnd(this)}}));monthScroll.scrollTo(0,-(initM-1)*opts.liH);function monthScrollEnd(_this){console.log("month");var mIndex=Math.floor(-_this.y/opts.liH);var dayNum=opts.monthDay[mIndex];initM=mIndex+1;if(opts.theme!="month"){createDay(dayNum)}showTxt()}}function createDay(dayNum){var dayDom=$("#dayScroll"),dayHtml=" ";for(var i=1;i<=dayNum;i++){if(i<10){dayHtml+='0'+i+"日 "}else{dayHtml+=''+i+"日 "}}dayDom.find("ul").html(dayHtml).append(" ");dayScroll=new iScroll("dayScroll",$.extend(true,{},opts.scrollOpt,{onScrollEnd:function(){dayScrollEnd(this)}}));if(initD>opts.monthDay[initM-1]){initD=1}dayScroll.scrollTo(0,-(initD-1)*opts.liH);function dayScrollEnd(_this){initD=Math.floor(-_this.y/opts.liH)+1;showTxt()}}function createHour(){var hourDom=$("#hourScroll"),hourHtml=" ";for(var i=opts.beginhour;i<=opts.endhour;i++){if(i<10){hourHtml+='0'+i+"时 "}else{hourHtml+=''+i+"时 "}}hourDom.find("ul").html(hourHtml).append(" ");hourScroll=new iScroll("hourScroll",$.extend(true,{},opts.scrollOpt,{onScrollEnd:function(){hourScrollEnd(this)}}));hourScroll.scrollTo(0,-(initH-1)*opts.liH);function hourScrollEnd(_this){initH=Math.floor(-_this.y/opts.liH)+1;showTxt()}}function createMinute(){var minuteDom=$("#minuteScroll"),minuteHtml=" ";for(var i=0;i<=59;i++){if(i<10){minuteHtml+='0'+i+"分 "}else{minuteHtml+=''+i+"分 "}}minuteDom.find("ul").html(minuteHtml).append(" ");minuteScroll=new iScroll("minuteScroll",$.extend(true,{},opts.scrollOpt,{onScrollEnd:function(){minuteScrollEnd(this)}}));minuteScroll.scrollTo(0,-(initI-1)*opts.liH);function minuteScrollEnd(_this){initI=Math.floor(-_this.y/opts.liH)+1;showTxt()}}})}})(typeof(Zepto)!="undefined"?Zepto:jQuery);