var esCalendarWidget_loadObject;
var esCalendarWidget2_loadObject;
var ESCalendarWidget=function(b,a){this.init(b,a)};//htmlの引数はしたのiniit（イニシャライズ）にはめられてここでよまれる
var esCalendarItemWidget;
ESCalendarWidget.prototype={
	tabeName:"",
	jsonUrl:"",
	jsonUrlUpd:"",
	weekday:["日","月","火","水","木","金","土"],
	message:"calendarWidgetMessage",
	monthDate:undefined,
	startDate:undefined,
	firstWeek:0,
	endDate:undefined,
	displayCalendar:undefined,
	displayCalendarInput:undefined,
	loaderIcon:undefined,
	dispMonth:undefined,
	todaySchedule:undefined,
	detailHref:"calendar/calendarDetail.html",
	detailHref2:"kakeibo/kakeiInput.html",
	findHref2:undefined,
	tableHref:"calendar/calendar.html",
	tableHref2:"kakeibo/kakeiInput.html",
	imgsrc:"../images/",pageDataType:"0",
	designCar: "square",
	init:function(c,b){
		this.tabeName=c;this.calendar=$("#"+c)[0];
		this.msie=jQuery.browser.msie;var a=b||{};
		if(a.jsonUrl!==undefined){this.jsonUrl=a.jsonUrl}
		if(a.jsonUrlUpd!==undefined){this.jsonUrlUpd=a.jsonUrlUpd}
		if(a.displayCalendar!==undefined){
		this.displayCalendar=a.displayCalendar}
		if(a.loaderIcon!==undefined){this.loaderIcon=a.loaderIcon}
		if(a.detailHref!==undefined){this.detailHref=a.detailHref}
		if(a.detailHref2!==undefined){this.detailHref2=a.detailHref2}
		if(a.findHref2!==undefined){this.findHref2=a.findHref2}
		if(a.tableHref!==undefined){this.tableHref=a.tableHref;}
		if(a.tableHref2!==undefined){this.tableHref2=a.tableHref2;}
		if(a.imgsrc!==undefined){this.imgsrc=a.imgsrc}
		if(a.dispMonth!==undefined){this.dispMonth=a.dispMonth}
		if(a.todaySchedule!==undefined){this.todaySchedule=a.todaySchedule}
		if(a.pageDataType!==undefined){this.pageDataType=a.pageDataType}
		if(a.firstWeek!==undefined){this.firstWeek=parseInt(a.firstWeek)}
		if(a.designCar!==undefined){this.designCar=a.designCar;}
		this.monthDate=(a.monthDate!==undefined)?new Date(a.monthDate):new Date();
		this.monthDate.setDate(1);
		this.monthDate.setHours(0);
		this.monthDate.setMinutes(0);
		this.monthDate.setSeconds(0);
		this.monthDate.setMilliseconds(0);
		this.startDate=this.toStartDate(this.monthDate);
		this.endDate=this.toEndDate(this.monthDate);
		this.redraw();},
	redraw:function(){
		var g;
		var e;
		var m;
		var j;
		var n;
		n=new Date();
		n.setHours(0);
		n.setMinutes(0);
		n.setSeconds(0);
		n.setMilliseconds(0);
		if(this.dispMonth){
			var d=document.getElementById(this.dispMonth);
			if(d){
				d.innerHTML=this.monthDate.getFullYear()+"年"+(this.monthDate.getMonth()+1)+"月"
			}
		}
		var k=undefined;
		var f=undefined;
//
		if(this.designCar !== "rectangle"){
			for(e=0;e<this.calendar.childNodes.length;e++){
				if(this.calendar.childNodes[e].tagName=="THEAD"){
					k=this.calendar.childNodes[e]
				}
				if(this.calendar.childNodes[e].tagName=="TBODY"){
					f=this.calendar.childNodes[e]
				}
			}
			if(k!=undefined){
				while(k.firstChild){
					k.removeChild(k.firstChild)
				}
			}
			else{
				k=document.createElement("thead");
				this.calendar.appendChild(k)
			}
			if(f!=undefined){
				while(f.firstChild){
					f.removeChild(f.firstChild)
				}
			}
			else{
				f=document.createElement("tbody");
				this.calendar.appendChild(f)
			}
			var l=document.createElement("tr");
			var a;
			var c;
			k.appendChild(l);
			for(e=this.firstWeek;e<7;e++){
				a=document.createElement("th");
				a.innerHTML=this.weekday[e];
				l.appendChild(a)
			}
			for(e=0;e<this.firstWeek;e++){
				a=document.createElement("th");
				a.innerHTML=this.weekday[e];
				l.appendChild(a)
			}
			var b=new Date(this.startDate);
			var h=new Date(this.endDate);
			g="";
			while(b<=h){
				m=b.getDay();
				if(m==this.firstWeek){
				l=document.createElement("tr");
				f.appendChild(l)
				}
				c=document.createElement("td");
				c.id="wcal"+b.getYear()+"_"+(b.getMonth()+1)+"_"+b.getDate();
				if(m==0){
					c.className="sunday"
				}
				else{
					if(m==6){
						c.className="saturday"
					}
					else{
						c.className="weekday"
					}
				}
				if(n.getYear()==b.getYear()&&n.getMonth()==b.getMonth()&&n.getDate()==b.getDate()){
					c.className+=" current"
				}
				j=b.getFullYear()+"/"+(b.getMonth()+1)+"/"+b.getDate();
				if(this.tableHref!=null&&this.tableHref!=""){
					g='<a href="'+this.tableHref+"?date="+j+'">'+b.getDate()+"</a>"
				}
				else{
					g=b.getDate()
				}
				c.innerHTML=g;
				l.appendChild(c);
				b.setDate(b.getDate()+1)
			}

		}
//
		else if(this.designCar == "rectangle"){
			for(e=0;e<this.calendar.childNodes.length;e++){
				if(this.calendar.childNodes[e].tagName=="TBODY"){
					k=this.calendar.childNodes[e];
					f=this.calendar.childNodes[e]}
				}
			if(k!=undefined){
				while(k.firstChild){
					k.removeChild(k.firstChild)
				}
			}
			if(f!=undefined){
				while(f.firstChild){
					f.removeChild(f.firstChild)
				}
			}
			else{
				f=document.createElement("tbody");
				this.calendar.appendChild(f)
			}
			var l=document.createElement("tr");
			k.appendChild(l);
			var b=new Date(this.startDate);
			var h=new Date(this.endDate);
			g="";
			while(b<=h){
				m=b.getDay();
				c=document.createElement("td");
				c.id="wcal"+b.getYear()+"_"+(b.getMonth()+1)+"_"+b.getDate();
				if(m==0){
					c.className="sunday"
				}
				else{
					if(m==6){
						c.className="saturday"
					}
					else{
						c.className="weekday"
					}
				}
				if(n.getYear()==b.getYear()&&n.getMonth()==b.getMonth()&&n.getDate()==b.getDate()){
					c.className+=" current"
				}
				j=b.getFullYear()+"/"+(b.getMonth()+1)+"/"+b.getDate();
				if(this.tableHref!=null&&this.tableHref!=""){
					g='<a href="'+this.tableHref+"?date="+j+'">'+b.getDate()+"</a>"
				}
				else{
					g=b.getDate()
				}
				c.innerHTML=g;
				l.appendChild(c);
				b.setDate(b.getDate()+1)
			}
		}
//
	if(this.data!==undefined){
			this.dataToTable(0,this.data.items.length-1)
		}
	},
	dataToTable:function(d,t){
		var r;
		var p;
		var s;
		var f;
		var c;
		var b;
		var e;
		var q;
		var g;
		var a;
		var n;
		var o;
		var l;
		var h;
		var m;
		o=new Date();
		o.setHours(0);
		o.setMinutes(0);
		o.setSeconds(0);
		o.setMilliseconds(0);
		l="";
		e="";
		b="";
		for(r=d;r<=t;r++){
			s=this.data.items[r];
			date=new Date(s.foDate);
			date.setHours(0);
			date.setMinutes(0);
			date.setSeconds(0);
			date.setMilliseconds(0);
			q=date.getDay();
			c="wcal"+date.getYear()+"_"+(date.getMonth()+1)+"_"+date.getDate();
			f=document.getElementById(c);
			if(f==null||f==undefined){
				continue
			}
			if(e!=c){
				e=c;b=""
			}
			if(s.datatype=="0"){
				f.dataK="1";h="k"
			}
			else{
				if(s.datatype=="1"){
					f.dataS="1";
					h="s"
				}
				else{
					f.dataP="1";h="p"
				}
			}
			g="";
			a="";
			if(f.dataP=="1"){
				a+="b"
			}
			if(f.dataK=="1"){
				a+="o"
			}
			if(f.dataS=="1"){
				a+="g"
			}
//
			if(this.designCar !== "rectangle"){
				if(a!=""){
					g+='<img src="'+this.imgsrc+"ico_calendar_"+a+'.gif" style="margin-right:5px;" />'
				}
				if(s.edit=="1"){
					f.itemId=s.id;
					f.datatype=s.datatype
				}
				m=date.getFullYear()+"/"+(date.getMonth()+1)+"/"+date.getDate();
				if((this.pageDataType=="0"&&f.dataK=="1")||(this.pageDataType=="1"&&f.dataS=="1")||(this.pageDataType=="2"&&f.dataP=="1")){
					if(this.pageDataType=="0"&&f.dataK=="1"&&this.findHref2!=null&&this.findHref2!=""){
						g+='<a href="'+this.findHref2+"?findFromDate="+m+"&findToDate="+m+'">'+date.getDate()+"</a>"
					}
					else{
						if(this.tableHref2!=null&&this.tableHref2!=""){
							g+='<a href="'+this.tableHref2+"?date="+m+'">'+date.getDate()+"</a>"
						}
						else{
							g+=date.getDate()
						}
					}
				}
				else{
					if(this.tableHref!=null&&this.tableHref!=""){
						g+='<a href="'+this.tableHref+"?date="+m+'">'+date.getDate()+"</a>"
					}
					else{
						g+=date.getDate()
					}
				}
			}
			else if(this.designCar == "rectangle"){
				if(s.edit=="1"){
					f.itemId=s.id;
					f.datatype=s.datatype
				}
				m=date.getFullYear()+"/"+(date.getMonth()+1)+"/"+date.getDate();
				if((this.pageDataType=="0"&&f.dataK=="1")||(this.pageDataType=="1"&&f.dataS=="1")||(this.pageDataType=="2"&&f.dataP=="1")){
					if(this.pageDataType=="0"&&f.dataK=="1"&&this.findHref2!=null&&this.findHref2!=""){
						g+='<a href="'+this.findHref2+"?findFromDate="+m+"&findToDate="+m+'">'+date.getDate()+"</a>"
					}
					else{
						if(this.tableHref2!=null&&this.tableHref2!=""){
							g+='<a href="'+this.tableHref2+"?date="+m+'">'+date.getDate()+"</a>"
						}
						else{
							g+=date.getDate()
						}
					}
				}
				else{
					if(this.tableHref!=null&&this.tableHref!=""){
						g+='<a href="'+this.tableHref+"?date="+m+'">'+date.getDate()+"</a>"
					}
					else{
						g+=date.getDate()
					}
				}
				if(a!=""){
					g+='<img src="'+this.imgsrc+"ico_calendar2_"+a+'.gif" style="margin-right:0px;clear:both;" />'
				}
			}
//
			f.innerHTML=g;
			if(o.getYear()==date.getYear()&&o.getMonth()==date.getMonth()&&o.getDate()==date.getDate()){
				if(h=="s"){
					if(h=="p"){
						l+='<img src="'+this.imgsrc+'legend_b.gif" /> '
					}
					if(h=="s"){
						l+='<img src="'+this.imgsrc+'legend_g.gif" /> '
					}
					if(h=="k"){
						l+='<img src="'+this.imgsrc+'legend_o.gif" /> '
					}
					if(s.foDate.getHours()<10){
						l+="0"+s.foDate.getHours()
					}
					else{
						l+=s.foDate.getHours()
					}
					if(s.foDate.getMinutes()<10){
						l+=":0"+s.foDate.getMinutes()
					}
					else{
						l+=":"+s.foDate.getMinutes()
					}
					if(h=="k"){
						l+=' <a href="'+this.detailHref2+"?date="+s.fDate+'">'+this.htmlEscape(s.title)+"</a><br/>"
					}
					else{
						l+=' <a href="'+this.detailHref+"?id="+s.id+'">'+this.htmlEscape(s.title)+"</a><br/>"
					}
				}
			}
			if(h!="k"){
				if(b!=""&&b){
					b+="<hr />"
				}
			b+=this.htmlEscape(s.title)+"&nbsp;&nbsp;<br/>";
			if(h=="s"){
				b+="開始:"+s.fDate+" "+s.fTime+"<br/>終了:"+s.tDate+" "+s.tTime+"&nbsp;&nbsp;<br/>"
			}
			f.setAttribute("title",b);
			$(f).tooltip({
				track:true,
				delay:0,
				showURL:false,
				showBody:" - ",
				extraClass:"pretty",
				fixPNG:true
				,opacity:0.95,left:-16
			})
		}
	}
	if(this.todaySchedule){
		var k=document.getElementById(this.todaySchedule);
			if(k){
				if(l!=""){
					l="▼今日の予定<br/>"+l
				}
				k.innerHTML=l
			}
		}
	},
	htmlEscape:function(a){
		if(a==null||a==undefined){
			return a
		}
		return a.replace(/</g,"&lt;").replace(/>/g,"&gt;")
	},
	remove:function(a){
		for(var b=0;b<a.length;b++){
			a[b].parentNode.removeChild(a[b])
		}
	},
	loadData:function(c,e,b){
		var f;
		var d;
		esCalendarWidget_loadObject=c;
		var a=new Date(e);
		a.setDate(1);
		a.setHours(0);
		a.setMinutes(0);
		a.setSeconds(0);
		c.monthDate=a;
		c.startDate=this.toStartDate(a);
		c.endDate=this.toEndDate(a);
		f=c.startDate.getFullYear()+"/"+(c.startDate.getMonth()+1)+"/"+c.startDate.getDate();
		d=c.endDate.getFullYear()+"/"+(c.endDate.getMonth()+1)+"/"+c.endDate.getDate();
		if(c.loaderIcon){
			document.getElementById(c.loaderIcon).style.display="inline"}$("#"+c.message).ajaxError(esCalendarWidget_Error);
			if(c.jsonUrl!=null&&c.jsonUrl!=""){
				$.getJSON(c.jsonUrl,{
					type:"get",
					fromdate:f,
					todate:d,
					t:(new Date()).getTime()
				},
				esCalendarWidget_setJsonData)
			}
			else{
				c.redraw()
			}
		},
	moveDate:function(c,b){
		var a=new Date(c.monthDate);
		a.setMonth(a.getMonth()+b);
		c.loadData(c,a,true)
	},
	toStartDate:function(b){
		if(this.designCar !== "rectangle"){
			var c=new Date(b);
			var a=c.getDay()-this.firstWeek;
			if(a<0){
				a=7+a
			}
			c.setDate(1);
			c.setDate(c.getDate()-a);
			c.setHours(0);
			c.setMinutes(0);
			c.setSeconds(0);
		}
		else {
			var c=new Date(b);
			c.setHours(0);
			c.setMinutes(0);
			c.setSeconds(0);
		}
		return c
		},
	toEndDate:function(b){
		if(this.designCar !== "rectangle"){
			var c=new Date(b);
			var c=new Date(b);
			var d=this.firstWeek-1;
			var a;
			if(d<0){
				d=6
			}
			c.setDate(1);
			c.setMonth(c.getMonth()+1);
			c.setDate(0);
			a=6+this.firstWeek-c.getDay();
			if(a>=7){
				a=a-7
			}
			if(a>0){
				c.setDate(c.getDate()+a)
			}
			c.setHours(0);
			c.setMinutes(0);
			c.setSeconds(0);
		}
		else {
			var c=new Date(b);
			c.setMonth(c.getMonth()+1);
			c.setDate(0);
			c.setHours(0);
			c.setMinutes(0);
			c.setSeconds(0);
		}
		return c
	},
	setJsonData:function(m){
		var f;
		var d;
		var c;
		var b;
		var l;
		var g;
		var a;
		var h;
		if(m.ret){
			if(m.ret.charAt(0)=="0"){
				var e=document.getElementById(esCalendarWidget_loadObject.message);
				if(e!=undefined){
					e.className+=" error";e.innerHTML="■通信エラー："+m.ret.substring(1)
				}
				if(esCalendarWidget_loadObject.loaderIcon){
					document.getElementById(esCalendarWidget_loadObject.loaderIcon).style.display="none"
				}
				return
			}
		}
		if(m.items==undefined){
			var e=document.getElementById(esCalendarWidget_loadObject.message);
			if(e!=undefined){
				e.className+=" error";
				e.innerHTML="■通信エラー"
			}
			if(esCalendarWidget_loadObject.loaderIcon){
				document.getElementById(esCalendarWidget_loadObject.loaderIcon).style.display="none"
			}
			return
		}
		for(f=0;f<m.items.length;f++){
			l=new Date(m.items[f].fDate+" "+m.items[f].fTime);
			g=new Date(m.items[f].tDate+" "+m.items[f].tTime);
			m.items[f].foDate=l;
			m.items[f].toDate=g
		}
		this.data=m;
		this.redraw()
	},
	getItem:function(b){
		for(var a=0;a<this.data.items.length;a++){
			if(this.data.items[a].id==b){
				return this.data.items[a]
			}
		}
		return undefined
	},
	getItemIndex:function(b){
		for(var a=0;a<this.data.items.length;a++){
			if(this.data.items[a].id==b){
				return a
			}
		}
		return -1
	}
};
function esCalendarWidget_setJsonData(a){
	esCalendarWidget_loadObject.setJsonData(a)
}
function esCalendarWidget_Error(a,b,d){
	var c=document.getElementById(esCalendarWidget_loadObject.message);
	if(b.status>=200&&b.status<=299){
		if(c!=undefined){
			c.className=jQuery.trim(c.className.replace("error",""));
			c.innerHTML=""
		}
	}
	else{
		if(c!=undefined){
			c.className+=" error";
			c.innerHTML="■通信エラー："+b.status
		}
	}
	if(esCalendarWidget_loadObject.loaderIcon){
		document.getElementById(esCalendarWidget_loadObject.loaderIcon).style.display="none"
	}
};