/*@cc_on _d=document;eval('var document=_d')@*/

var oneDaywidth = 18;
var dayInitial = new Date(2003,1,1);
var dayEternal = new Date(2013,11,1);
var viewDays = 31;
var pichMonth = 40;
var pichYear = 90;
var isSlide = false;
var searchFrom;
var searchEnd;
var onChangeYear;
var onChangeMonth;
var selectedGenre = '';
var selectSerial =0;
var isCalendarBuild = false;

var dnXML; //休館、延長情報xml
var dayProperty = new Array();
var dph = new Array();

var genres = new Array();
var scrollBar1;
var scrollBar2;


var weekElmArr;
var dayElmArr;


genres[0] = 'art';
genres[1] = 'cinema';
genres[2] = 'theater';
genres[3] = 'education';
genres[4] = 'live';
genres[5] = 'interlab';


	var today = new Date();
	var y = today.getFullYear();
	var m = today.getMonth();
	searchFrom = new Date(y,m,1);
	searchEnd = new Date(y,m,31);
//	alert(searchFrom);
//	alert(searchEnd);

window.addEvent('domready', function() {

	var tips;
/*@cc_on _d=document;eval('var document=_d')@*/

	//loading();

	scrollBar1 = new scrollBarMoo('sc-timeline','sc-category','sc-timeline-wrapper','scrollBar','scUp','scDown');
	scrollBar2 = new scrollBarMoo('sc-dayevent','','sc-dayevent-body','scrollBar2','scUp2','scDown2');

	var debug = false;
	var xmlDir = new Array();
	xmlDir['japanese'] = 'xml_ja/';
	xmlDir['english'] = 'xml_en/';
	
	//場所
	var venueStr = {
						'studioA':{'japanese':{1:'スタジオA'},'english':{1:'StudioA'}},
						'studioB':{'japanese':{1:'スタジオB'},'english':{1:'StudioB'}},
						'studioC':{'japanese':{1:'スタジオC'},'english':{1:'StudioC'}},
						'liblary':{'japanese':{1:'図書館'},'english':{1:'Liblary'}},
						'foyer':{'japanese':{1:'ホワイエ'},'english':{1:'Foyer'}},
						'court':{'japanese':{1:'中庭'},'english':{1:'Court'}},
						'lectureroom':{'japanese':{1:'レクチャールーム'},'english':{1:'Lectureroom'}},
						'labo':{'japanese':{1:'ラボ'},'english':{1:'Labo'}},
						'bitthing':{'japanese':{1:'ビットシング'},'english':{1:'Bitthing'}},
						'restaurant':{'japanese':{1:'レストラン'},'english':{1:'Restaurant'}},
						'kids':{'japanese':{1:'キッズスペース'},'english':{1:'Kids space'}},
						'otherPlace':{'japanese':{1:'その他'},'english':{1:'Other Place'}}
					};
	//アイコンファイル
	var iconSrc = new Array();
	iconSrc['art'] = 'images/sc/sc-ic-art.gif';
	iconSrc['cinema'] = 'images/sc/sc-ic-cinema.gif';
	iconSrc['education'] = 'images/sc/sc-ic-education.gif';	
	iconSrc['live'] = 'images/sc/sc-ic-live.gif';	
	iconSrc['theater'] = 'images/sc/sc-ic-theater.gif';
	iconSrc['interlab'] = 'images/sc/sc-ic-interlab.gif';
	iconSrc['undefined'] = 'images/sc/sc-ic-art.gif';	
		
					
	//Itemsクラス定義
	function Items(path,arr,onLoadMethod){
		this.xmlPath = path;
		this.outPutArrayElements = arr;
		this.load = loadXml;
		this.onLoad = onLoadMethod;
		this.data;
		this.idList;
		this.isSelect = false;
		this.isOpenDetail = false;
	};
	
	//DayOptionクラス定義
	function dayOption(){
		this.day;
		this.type;
		this.msg_j;
		this.msg_e;
	}
	
	//Ajax XMLリクエスト、JSON変換メソッド
	function loadXml(){
		var onloadF = this.onLoad;
		var httpObj = new JKL.ParseXML(this.xmlPath+'?cache='+(new Date).getTime());
			httpObj.setOutputArrayElements(this.outPutArrayElements);
			httpObj.async(onloadF); 
			httpObj.parse();
	}
	
	//Art onLoad
	function onLoadArt(data){
		art.idList = new Array();
		if(data.root[0]!=undefined &&data.root[0].event){
			art.data = data.root[0].event;
			var resHtml ='';
			for(var i=0; i<art.data.length;i++){
				art.idList[art.data[i].id] = i;
			}
		}
		eventsDataBind();		
	}
	
	//Cinema onLoad
	function onLoadCinema(data){
		cinema.idList = new Array();
		if(data.root[0]!=undefined &&data.root[0].event){
			cinema.data = data.root[0].event;
			var resHtml ='';
			for(var i=0; i<cinema.data.length;i++){
				cinema.idList[cinema.data[i].id] = i;
			}
		}
		eventsDataBind();
	}
	
	//Theater onLoad
	function onLoadTheater(data){
		theater.idList = new Array();
		if(data.root[0]!=undefined &&data.root[0].event){
			theater.data = data.root[0].event;
			var resHtml ='';
			for(var i=0; i<theater.data.length;i++){
				theater.idList[theater.data[i].id] = i;
			}
		}
		eventsDataBind();
	}
	
	//Education onLoad
	function onLoadEducation(data){
		education.idList = new Array();
		if(data.root[0]!=undefined &&data.root[0].event){
			education.data = data.root[0].event;
			var resHtml ='';
			for(var i=0; i<education.data.length;i++){
				education.idList[education.data[i].id] = i;
			}
		}
		eventsDataBind();
	}
	
	//Live onLoad
	function onLoadLive(data){
		live.idList = new Array();
		if(data.root[0]!=undefined &&data.root[0].event){
			live.data = data.root[0].event;
			var resHtml ='';
			for(var i=0; i<live.data.length;i++){
				live.idList[live.data[i].id] = i;
			}
		}
		eventsDataBind();
	}
	
	//interlab onLoad
	function onLoadInterlab(data){
		interlab.idList = new Array();
		if(data.root[0]!=undefined &&data.root[0].event){
			interlab.data = data.root[0].event;
			var resHtml ='';
			for(var i=0; i<interlab.data.length;i++){
				interlab.idList[interlab.data[i].id] = i;
			}
		}
		eventsDataBind();
	}
	
	function eventsDataBind(){

		if(!(!art.idList)&&!(!cinema.idList)&&!(!theater.idList)&&!(!education.idList)&&!(!live.idList)&&!(!interlab.idList)&& dph.length!=0){
			events.data = new Array;
			if(art.data) events.data = events.data.concat(art.data);
			if(cinema.data) events.data = events.data.concat(cinema.data); 
			if(theater.data) events.data = events.data.concat(theater.data); 
			if(education.data) events.data = events.data.concat(education.data);
			if(live.data) events.data = events.data.concat(live.data);
			if(interlab.data) events.data = events.data.concat(interlab.data); 
			//alert(events.data.length);
			onLoadEvents();
		}
	}
	
	function onLoadEvents(data){

		//var res='';
		var cnt = 0;
		for(var i=0; i<events.data.length; i++){
			if(events.data[i].info.daysFrom != undefined)
				events.data[i].info.daysFrom = events.data[i].info.daysFrom.substring(0,10);
			if(events.data[i].info.daysTo != undefined)
			events.data[i].info.daysTo = events.data[i].info.daysTo.substring(0,10);
			temp = events.data[i].info.daysFrom;
			if(temp!=undefined && temp.match(/\d{4}-\d{2}-\d{2}/)!=null){
		//		res += temp + '\n';
				farr = temp.split('-');
				fyy = farr[0];
				fmm = farr[1];
				fdd = farr[2];
				
				//	alert(fyy+'/'+fmm+'/'+fdd);
				//	alert(fmm);
				
				temp2 = events.data[i].info.daysTo;
				//alert(temp2);
				if(temp2!=undefined && temp2.match(/\d{4}-\d{2}-\d{2}/)!=null){
					tarr = temp2.split('-');
					tyy = tarr[0];
					tmm = tarr[1];
					tdd = tarr[2];
					//alert(new Date(parseInt(tyy),parseInt(tmm)-1,parseInt(tdd)));
					sortedEventId[cnt] = new Array(i,new Date(fyy,fmm-1,fdd),new Date(tyy,tmm-1,tdd),false);
					cnt++;	
				}
				else{ 
					sortedEventId[cnt] = new Array(i,new Date(fyy,fmm-1,fdd),new Date(fyy,fmm-1,fdd),false);
					cnt++;
				}
			}		
		}
		
		//ソート
		sortedEventId.sort(function(a, b) {
			if(a[1] == b[1]){
				return (a[0] > b[0]) ? 1 : -1;
			}
			return (a[1] > b[1]) ? 1 : -1;
		});
		
		/*
		var res = '';
		for( var cnt=0 ; cnt<sortedEventId.length ; cnt++ ){
			res += sortedEventId[cnt][0] +':'+ sortedEventId[cnt][1] +'\n';
		}
		//alert('sortres   '+res);	
		//alert(sortedEventId[0][1]);
		//alert(res);
		*/
		
		//init sc-timeline negamargin
		initScNegamargin();
		buildDayProperty(searchFrom);
		viewBars(searchFrom);
		viewCalendar(searchFrom);
		$('loadingbar').remove();

	}
	
	//dayNoticeのロード
	var syncXhr = new XHR({async: true, method: 'get', onSuccess:onLoadNotice});
	syncXhr.send(calendarNoticePath, null);
	
	function onLoadNotice(){
		dnXML= this.response.xml;
		setDayPropertyArr(dnXML,today,true);
	}

	var sortedEventId = new Array();
	
	//eventsコンストラクト
	var events = new Items();
	events.data = new Array();
	
	
	//art のロード、コンストラクト
	var art = new Items(root+xmlDir[lang]+'art.xml',['root','event','terms'],onLoadArt);
	art.load();
	
	//theater のロード、コンストラクト
	var theater = new Items(root+xmlDir[lang]+'theater.xml',['root','event','terms'],onLoadTheater);
	theater.load();
	
	//education のロード、コンストラクト
	var education = new Items(root+xmlDir[lang]+'education.xml',['root','event','terms'],onLoadEducation);
	education.load();
	
	//live のロード、コンストラクト
	var live = new Items(root+xmlDir[lang]+'live.xml',['root','event','terms'],onLoadLive);
	live.load();
	
	
	//cinema のロード、コンストラクト
	var cinema = new Items(root+xmlDir[lang]+'cinema.xml',['root','event','terms'],onLoadCinema);
	cinema.load();
	
	//interlab のロード、コンストラクト
	var interlab = new Items(root+xmlDir[lang]+'interlab.xml',['root','event','terms'],onLoadInterlab);
	interlab.load();
	
	//holiday のロード、コンストラクト
	var holiday = new Items(root+'data/lightholiday.xml',['Row'],onLoadHoliday);
	holiday.load();


	

	
	$('calbt-next').addEvent('click', function(e){
		e = new Event(e).stop();
		if(dayEternal-searchFrom>0 && !isSlide){
		isSlide = true;
		scrollBar1.scrollTop();
		//searchFrom.setHours(viewDays*24);
		//searchFrom = ((viewDays+1)*24*60*60*1000);
		m =  searchFrom.getMonth();
		searchFrom.setMonth(m+1);
		searchFrom.setDate(1);
		//alert(searchFrom);
			buildDayProperty(searchFrom);
			viewBars(searchFrom);
			viewCalendar(searchFrom);
		//alert(searchFrom)
		//preventDefault();
		}
	});
	
	$('calbt-prev').addEvent('click', function(e){
		e = new Event(e).stop();
		if(searchFrom-dayInitial>0 && !isSlide){
		isSlide = true;
		scrollBar1.scrollTop();
		searchFrom.setHours(-1*(viewDays-5)*24);
		searchFrom.setDate(1);
		//alert(searchFrom);		
			buildDayProperty(searchFrom);
			viewBars(searchFrom);
			viewCalendar(searchFrom);
		//alert(searchFrom)
		//preventDefault();
		}
	});
	
	$('calbt-chmd-day').addEvent('click', function(e){
		e = new Event(e).stop();
		changeMode('dayview');
	});
	
	$('calbt-chmd-month').addEvent('click', function(e){
		changeMode('monthview')

	});
	
	var slideTimeEffects = new Fx.Styles('sc-timeline', {duration: 1000, transition: Fx.Transitions.Cubic.easeOut, onComplete: slideComplete});

	function changeMode(str){
		if(str=='dayview'){
			var hideBarFx = $('sc-monthly').effect('margin-top', {duration: 600, transition: Fx.Transitions.Cubic.easeOut, wait: false});
			hideBarFx.start(-290);
			$('calbt-chmd-day').addClass('selected');
			$('calbt-chmd-month').removeClass('selected');		
		}
		else if(str="monthview"){
			var hideBarFx = $('sc-monthly').effect('margin-top', {duration: 600, transition: Fx.Transitions.Cubic.easeOut, wait: false});
			hideBarFx.start(0);
			$('calbt-chmd-day').removeClass('selected');
			$('calbt-chmd-month').addClass('selected');
		
		}
	
	}

	function initScNegamargin(){
		y = today.getFullYear();
		m = today.getMonth();
		days = -1* (new Date(y,m,1) - dayInitial)*oneDaywidth/ (1000*60*60*24);
		$('sc-timeline').setStyles({'margin-left':days+15*oneDaywidth});
	}

	function slideComplete(){
		isSlide = false;
	}
	function viewBars(date){
		//alert(date);
		var viewDayFrom = date;
		var viewDayTo = cloneDate(date);
		viewDayTo.setDate(viewDays)
		var negaMargin = calWidthDay(viewDayFrom,dayInitial);
		
		buildDatePulldown(viewDayFrom);
		buildDateScale(viewDayFrom);
		buildCategorySelector();
		
		//$('sc-timeline').setStyle('margin-left', negaMargin+'px');
		slideTimeEffects.start({'margin-left': negaMargin});
		$('sc-date').setStyles({'background-position': negaMargin})
		
		for(var i=0; i<sortedEventId.length; i++){
		
			
			if((compare3(viewDayFrom,sortedEventId[i][2],viewDayTo,'+')||compare3(viewDayFrom,sortedEventId[i][1],viewDayTo,'+')) ||//終了日の比較(終了日が領域内)||開始日の比較(開始日が領域内)
			(compare2(sortedEventId[i][1],viewDayFrom,'-') && compare2(viewDayTo,sortedEventId[i][2],'-'))){  //(開始日が領域以前 && 終了日が領域後)
				if(!sortedEventId[i][3]){
					attachBar(i,viewDayFrom,negaMargin);
				}
				else{
					posMargin = -1*negaMargin;
					$('bar-p-'+i).setStyles({'margin-left': posMargin+'px'});
				}
			}
			else{
				if(sortedEventId[i][3]){
					removeBar(i);
				}
			}
		}
	
	}
	
	function viewDayEvents(date){
		$('sc-dayevent').empty();
		var viewDay = date;
		var adEvent = 0;
		var d = viewDay.getDate();
		var status = '';
		
		if(dph[d] != undefined){
			if(dayProperty[dph[d]].type =='休館'){
				status = 'close';
				attachDayMessage(date,dayProperty[dph[d]].type);
			}
			if(dayProperty[dph[d]].type =='延長'){
				status = 'expand';
			}
			if(dayProperty[dph[d]].type =='その他'){
				status = 'other';
			}
			
		}
		
		if(status!='close'){
		
			if(status=='expand' || status=='other') attachDayMessage(date,dayProperty[dph[d]].type);
			
			
		for(var i=0; i<sortedEventId.length; i++){
			if(compare2(sortedEventId[i][1],viewDay,'+') && compare2(viewDay,sortedEventId[i][2],'+')){ //(開始日が対象日前 && 終了日が対象日後)
						
			//subbar
			var branchTerms = 0;
			cnt = 0;
			safe = events.data[sortedEventId[i][0]].info.terms.length;
			while(true){
				if(cnt>=safe) break;
				if(events.data[sortedEventId[i][0]].info.terms[cnt].from != undefined){
					var dayFromTmp = events.data[sortedEventId[i][0]].info.terms[cnt].from.substring(0,10);
				
				}
				else break;
			
				if(events.data[sortedEventId[i][0]].info.terms[cnt].to != undefined){
					var dayToTmp = events.data[sortedEventId[i][0]].info.terms[cnt].to;
				}
				else dayToTmp = dayFromTmp;
			
				if(dayFromTmp == undefined || dayFromTmp.match(/\d{4}-\d{2}-\d{2}/)==null){				
					break; 
				}
						
				if(dayToTmp == undefined || dayFromTmp.match(/\d{4}-\d{2}-\d{2}/)==null){
					dayFromTmp = dayToTmp;
				}
	
				farr = dayFromTmp.split('-');
				fyy = farr[0];
				fmm = farr[1];
				fdd = farr[2];
			
				tarr = dayToTmp.split('-');
				tyy = tarr[0];
				tmm = tarr[1];
				tdd = tarr[2];
			
				dayFrom = new Date(fyy,fmm-1,fdd);
				dayTo = new Date(tyy,tmm-1,tdd);
				
				branchTerms++;
				cnt++;
				
				if(compare2(dayFrom,viewDay,'+') && compare2(viewDay,dayTo,'+')){
					attachDayevent(i);
					adEvent++;
					break;
				}
			}
			if(branchTerms==0){
				attachDayevent(i);
				adEvent++;
			}
			
			}
			}
		}
		if(status =='close'){
			if(lang=='english'){
				$('sc-dayevent-head').setHTML('<h3>'+date.getFullYear()+'-'+(date.getMonth()+1)+'-'+date.getDate()+'</h3>');
			}
			else{
				$('sc-dayevent-head').setHTML('<h3>'+date.getFullYear()+'年'+(date.getMonth()+1)+'月'+date.getDate()+'日のイベント(0件)</h3>');
			}
		}
		else{
			if(lang=='english'){
				$('sc-dayevent-head').setHTML('<h3>'+date.getFullYear()+'-'+(date.getMonth()+1)+'-'+date.getDate()+' ('+adEvent+' Events)</h3>');
			}
			else{
				$('sc-dayevent-head').setHTML('<h3>'+date.getFullYear()+'年'+(date.getMonth()+1)+'月'+date.getDate()+'日のイベント'+'('+adEvent+'件)</h3>');
			}
		}
		scrollBar2.scrollTop();

	}

	function setDayPropertyArr(XML, date, first){
		var y = date.getMonth()+1;
		var m = date.getFullYear();
		var sheetName= m+'.'+y;
		var wsObj = getWorkSheet(XML, sheetName);
		dayProperty = new Array();
		dph = new Array();
		if(wsObj!=null){
			var h = getWorkSheetRowCount(wsObj);
			
			for (i=0; i<h; i++){
				dp = new dayOption();
				dp.day = parseInt(getCellData(XML,sheetName,0,i));
				dp.type = getCellData(XML,sheetName,1,i);
				dp.msg_j = getCellData(XML,sheetName,2,i);
				dp.msg_e = getCellData(XML,sheetName,3,i);
				dayProperty.push(dp);
				dph[dp.day] = i;
			}
			//alert(dph.length);
			if(first){
				eventsDataBind();
			}
		}
	}

	function buildDayProperty(date){
		if(!isCalendarBuild){
			isCalendarBuild = true;
		}
		else{
			setDayPropertyArr(dnXML, date, false);
		}
	}

	function viewCalendar(date){
		$('sc-calendar-body').empty();
		dayOfFirst = date.getDay();
		monthOfFirst = date.getMonth();
		yearOfFirst = date.getFullYear();
		serialOfFirst = date.getTime();
		serialOfInit = serialOfFirst-dayOfFirst*86400000;
		var viewDate = date;
		weekElmArr = new Array();
		dayElmArr = new Array();
		
		dateTemp = new Date();
		dateTemp.setTime(serialOfInit);
		
		var dayCnt =0;
		var weekCnt = 0;
		
		//firstWeek
		for(j=0;j<6;j++){
			
			week_ul = new Element('ul',{
				'id': 'sc-week-'+j
			});
			
			for(i=0;i<7;i++){
				dateTemp.setTime(serialOfInit);
				d = dateTemp.getDate();
				dd = dateTemp.getDay(); 
				m = dateTemp.getMonth();
				y = dateTemp.getFullYear();
				hash = y+'/'+(m+1)+'/'+d;
				
				bgMarginTop = 0;
				if(m == monthOfFirst){
					bgMarginTop = -32;
					if(holidays[hash] || dd == 0){
						bgMarginTop = -160;
					}
					
					if(dph[d] != undefined){
						
						if(dayProperty[dph[d]].type =='休館'){
							bgMarginTop = -64;
						}
						else if(dayProperty[dph[d]].type =='延長'){
							bgMarginTop = -96;
						}
					}
				}
			
				day_li = new Element('li');
				
				if(dph[d] != undefined){
					if(dayProperty[dph[d]].type =='休館'||dayProperty[dph[d]].type =='延長'||dayProperty[dph[d]].type =='その他'){
					if(lang=='english'){
						title = ':: '+dayProperty[dph[d]].msg_e;
					}
					else{
						title = ':: '+dayProperty[dph[d]].msg_j;
					}

					day_elemnt = new Element('a',{
						'class': 'sc-day tips',
						'name': d+'_'+bgMarginTop,
						'id': serialOfInit,
						'title': title
					});
				
					}
				}
				else{
					day_elemnt = new Element('a',{
						'class': 'sc-day',
						'name': d+'_'+bgMarginTop,
						'id': serialOfInit
					});
				
				}
				
				
				if(m == monthOfFirst){
				day_elemnt.addEvent('mouseenter',
					function(e){
						e = new Event(e).stop();
						if(selectSerial!=this.id){
							$('day-num-'+this.id).setStyle('margin-top','-128px');
						}
				});
				day_elemnt.addEvent('mouseout',
					function(e){
						e = new Event(e).stop();
						if(selectSerial!=this.id){
							elm = $('day-num-'+this.id)
							elm.setStyle('margin-top',elm.name+'px');
						}
				});
				day_elemnt.addEvent('click',
					function(e){
						e = new Event(e).stop();
						if(selectSerial!=0 && selectSerial!=this.id){
							preSelect = $('day-num-'+selectSerial);
							preSelect.setStyle('margin-top',preSelect.name+'px');
						}
						selectDate = new Date;
						selectSerial = this.id;
						selectDate.setTime(selectSerial);
						viewDayEvents(selectDate);
						$('day-num-'+this.id.split('_')[0]).setStyle('margin-top','-128px');
						//alert(this.id.split('_')[0])
				});
				}
				
				todayMarginTop = bgMarginTop;
				if(matchDate(today,dateTemp)&& m == monthOfFirst){
					selectSerial = serialOfInit;
					todayMarginTop = -128;
					viewDate = today;
				}
				if(m == monthOfFirst && d==1 && (m != today.getMonth() || y!=today.getFullYear())){
					selectSerial = serialOfInit;
					todayMarginTop = -128;
				}

				day_elemnt.setHTML('<img src="'+root+'images/sc/sc-alldate.gif" alt="'+d+'" id="day-num-'+serialOfInit+'" name="'+bgMarginTop+'" style="margin-top:'+todayMarginTop+'px; margin-left:'+((1-d)*32)+'px;"/>');
				day_elemnt.injectInside(day_li);
				day_li.injectInside(week_ul);
				dayCnt++;
				serialOfInit += 86400000;
			}
			weekElmArr.push(week_ul);

		}
		
		for(var i=0; i<weekElmArr.length; i++){
			weekElmArr[i].injectInside('sc-calendar-body');
			if(weekElmArr.length<6){
				weekElmArr[i].setStyles({'height':'58px'});
			}
			else{
				weekElmArr[i].setStyles({'height':'42px'});
			}
		}
		
		viewDayEvents(viewDate);
		tips = new Tips($$('.tips'));
	}
	
	
	onChangeYear = function(yvalue){
		searchFrom.setYear(yvalue);
		buildDayProperty(searchFrom);
		viewBars(searchFrom);
		viewCalendar(searchFrom);
	}
	
	onChangeMonth = function(mvalue){
		searchFrom.setMonth(mvalue);
		buildDayProperty(searchFrom);
		viewBars(searchFrom);
		viewCalendar(searchFrom);
	}
	
	
	function compare2(d1,d2,border){
		if(border=='-'){
			if(d1<d2){
				return true;
			}
			else{
				return false;
			}
		}
		else if(border=='+'){
			if(d1<=d2){
				return true;
			}
			else{
				return false;
			}
		}
		return false;
	}
	
	function compare3(d1,d2,d3,border){
	//	alert(d1+' : '+d1.setDate(31)+' : '+d2+' : '+border);
		if(border=='-'){
			if(d1<d2 && d2<d3){
				return true;
			}
			else{
				return false;
			}
		}
		else if(border=='+'){
			if(d1<=d2 && d2<=d3){
				return true;
			}
			else{
				return false;
			}
		}
		return false;
	}
	
	viewDaydetail = function(str){
		y = str.split('/')[0];
		m = str.split('/')[1]-1;
		d = str.split('/')[2];
		date = new Date(y,m,d);
		
		serial = date.getTime();
		
		if(selectSerial!=0 && selectSerial!=serial){
			preSelect = $('day-num-'+selectSerial);
			preSelect.setStyle('margin-top',preSelect.name+'px');
		}
		selectDate = new Date;
		selectSerial = serial;
		selectDate.setTime(selectSerial);
		viewDayEvents(selectDate);
		$('day-num-'+selectSerial).setStyle('margin-top','-128px');
		
		changeMode('dayview');
		
	}
	
	function buildDateScale(viewDayFrom){
		var date = cloneDate(viewDayFrom);
		var yearNegaMargin = -1*(date.getFullYear() - dayInitial.getFullYear())*pichYear;
		var monthNegaMargin = -1*date.getMonth()*pichMonth;
		yearNegaMargin += 'px';
		monthNegaMargin += 'px'
		//alert(yearMargin +'/'+monthMargin);
		
		$('head-month').setStyles({'margin-left': monthNegaMargin});
		$('head-year').setStyles({'margin-left': yearNegaMargin});
		
		$('sc-date-body').empty();
		for(i=1;i<=viewDays;i++){
			date.setDate(i);
			hy = date.getFullYear();
			hm = date.getMonth()+1;
			hd = date.getDate();
			hash = hy+'/'+hm+'/'+hd;
			
			
			if(dph[hd] != undefined){
			
				if(lang=='english'){
					title = ':: '+dayProperty[dph[hd]].msg_e;
				}
				else{
					title = ':: '+dayProperty[dph[hd]].msg_j;
				}
				
				
				//alert(title);
				day_li_a = new Element('a',{
				'class': 'tips',
				'href': 'javascript:viewDaydetail(\''+hash+'\')',
				'title': title
				});
			}
			else{
				day_li_a = new Element('a',{
				'href': 'javascript:viewDaydetail(\''+hash+'\')'
				});
			}
			
			day_li = new Element('li');
			
			if(matchDate(date,today)){
				day_li_a.addClass('today');
			}
			else if(dph[hd] != undefined){
						
				if(dayProperty[dph[hd]].type =='休館'){
					day_li_a.addClass('closeDay');
				}
					else if(dayProperty[dph[hd]].type =='延長'){
					day_li_a.addClass('expandDay');
				}
			}
			else if(holidays[hash] || date.getDay()==0){
				day_li_a.addClass('holiday');
			}
			
			day_li_a.setHTML(date.getDate());
			day_li_a.injectInside(day_li);
			day_li.injectInside('sc-date-body');
			
		}
		
	}
	
	function buildDatePulldown(viewDayFrom){
		var date = cloneDate(viewDayFrom);
		var y = parseInt(date.getFullYear());
		var m = parseInt(date.getMonth());
		$('sc-form-selectMonth').empty();
		//$('sc-form-select-month').empty();
		
		yOptions = '';
		
		for(var i=parseInt(dayInitial.getFullYear()); i<=parseInt(dayEternal.getFullYear()); i++){
			if(y == i){
				yOptions += "<option value="+i+" selected>"+i+"</option>";
			}
			else{
				yOptions += "<option value="+i+">"+i+"</option>";
			}
		}
		mOptions = '';
		for(var j=0; j<12; j++){
			if(m == j){
				mOptions += "<option value="+j+" selected>"+(j+1)+"</option>";
			}
			else{
				mOptions += "<option value="+j+">"+(j+1)+"</option>";
			}
		
		}
		$('sc-form-selectMonth').innerHTML = '<select id="sc-form-select-year" style="float:left;" onChange="onChangeYear(this.value);">'+yOptions+'</select>'+'<select id="sc-form-select-month" onChange="onChangeMonth(this.value)">'+mOptions+'</select>';
		
		
	}
	
	function buildCategorySelector(){
		var selBtn = $$('#sc-categorySelector img')
		$$('#sc-categorySelector a').each(function(item){
 
			item.addEvent('mouseover', function(e) {
				e = new Event(e).stop();
		//		alert(e.target.id.substring(10))
				if(e.target.id.substring(10) != 'label'){
					if(selectedGenre == '' || selectedGenre == e.target.id.substring(10)){
						str = e.target.src
 						e.target.src = str.replace("-on.gif","-mo.gif");
	 				}
	 				else{
	 					str = e.target.src
 						e.target.src = str.replace("-off.gif","-mo.gif");
	 				}
	 			}
 
			});
			
			item.addEvent('mouseout', function(e) {
				e = new Event(e).stop();
		//		alert(e.target.id.substring(10))
				if(selectedGenre == '' || selectedGenre == e.target.id.substring(10)){
					str = e.target.src;
 					e.target.src = str.replace("-mo.gif","-on.gif");
	 			}
	 			else{
	 				str = e.target.src;
 					e.target.src = str.replace("-mo.gif","-off.gif");
	 			}
 
			});
			
			item.addEvent('mousedown', function(e) {
				e = new Event(e).stop();
				if(selectedGenre != e.target.id.substring(10)){
					
					//label is clicked
					if(e.target.id.substring(10)=='label'){
						if(selectedGenre != ''){
							for(var i=0; i<selBtn.length; i++){
								str = selBtn[i].src;
 								selBtn[i].src = str.replace("-off.gif","-on.gif");
							}
							selectedGenre = '';
						}
						for(var i=0; i<genres.length; i++){
							showBars(genres[i]);
							showDayEvents(genres[i]);
						}
					}
					//other are clicked
					else{
						
						if(selectedGenre==''){
 							strl = selBtn[0].src;
 							selBtn[0].src = strl.replace("-on.gif","-off.gif");
 						}						
						for(var i=1; i<selBtn.length; i++){
							//alert(selBtn[i].id.substring(10)+','+e.target.id.substring(10));
							if(selBtn[i].id.substring(10) != e.target.id.substring(10)){
								str = selBtn[i].src;
 								selBtn[i].src = str.replace("-on.gif","-off.gif");
							}
							else{
 								selectedGenre = selBtn[i].id.substring(10);
							}
						}
						for(var i=0; i<genres.length; i++){
							if(selectedGenre != genres[i]){
								hideBars(genres[i]);
								hideDayEvents(genres[i]);
							}
							else{
								showBars(selectedGenre);
								showDayEvents(selectedGenre);
							} 
						}
						//alert($$('#sc-dayevent .'+selectedGenre).length);
					}
	 			}
 
			});
			
	
		});
	}
	
	function showBars(genre){
		$$('#sc-timeline .'+genre).each(function(item){showBar(item)});
		$$('#sc-category .'+genre).each(function(item){showBar(item)});
	}
	
	function hideBars(genre){
		$$('#sc-timeline .'+genre).each(function(item){hideBar(item)});
		$$('#sc-category .'+genre).each(function(item){hideBar(item)});
		scrollBar1.scrollTop();
	}
	
	function showBar(item){
		item.style.display = 'block';
		var hideBarFx = item.effect('height', {duration: 400, transition: Fx.Transitions.Cubic.easeOut, wait: false});
		hideBarFx.start(36);
	}
	
	function hideBar(item){
		var hideBarFx = item.effect('height', {duration: 400, transition: Fx.Transitions.Cubic.easeOut, wait: false, onComplete: function(item){item.style.display = 'none';}});
		hideBarFx.start(0);
	}
	
	
	
	function showDayEvents(genre){
		$$('#sc-dayevent .'+genre).each(function(item){showDayEvent(item)});
	}
	
	function hideDayEvents(genre){
		$$('#sc-dayevent .'+genre).each(function(item){hideDayEvent(item)});
		scrollBar2.scrollTop();
	}
	
	function showDayEvent(item){
		item.style.display = 'block';
		var hideBarFx = item.effect('height', {duration: 400, transition: Fx.Transitions.Cubic.easeOut, wait: false});
		hideBarFx.start(54);
	}
	
	function hideDayEvent(item){
		var hideBarFx = item.effect('height', {duration: 400, transition: Fx.Transitions.Cubic.easeOut, wait: false, onComplete: function(item){item.style.display = 'none';}});
		hideBarFx.start(0);
	}
	
	
	
	
	function removeBar(num){
		sortedEventId[num][3] = false;
		$('bar-'+num).remove();
		$('cat-'+num).remove();
	}
	
	function attachDayMessage(date,type){
		var d = date.getDate();
		var dayClass;
		if(type=='休館') dayClass = 'closeDay';
		else if(type=='延長') dayClass = 'expandDay';
		else if(type=='その他')　dayClass = 'noticeDay';
		neweve_li = new Element('li',{
			'class': dayClass
		});
		
		neweve_p_title = new Element('p',{
				'class': 'sc-dayevent-title'
		});
		
		if(lang =='english'){
			neweve_p_title.setHTML(dayProperty[dph[d]].msg_e);
		}else{
			neweve_p_title.setHTML(dayProperty[dph[d]].msg_j);
		
		}
		
		
		
		
		
		neweve_p_title.injectTop(neweve_li);
		neweve_li.injectInside('sc-dayevent');
	}
	
	
	function attachDayevent(num){
		//alert(events.data[sortedEventId[num][0]].title);
		
		scType = events.data[sortedEventId[num][0]].type;
		//li
		neweve_li = new Element('li',{
			'class': scType,
			'id': 'sc-dayevent-'+num
		});
		
		if(selectedGenre !=''){
			if(scType != selectedGenre){
				neweve_li.setStyles({
   				display: 'none',
   				height: 0
				});
			}
		}
		
		scPermalink = events.data[sortedEventId[num][0]].permalink;
		//a
		neweve_a = new Element('a',{
			'href': scPermalink
		});
		
		neweve_p_date = new Element('p',{
				'class': 'sc-dayevent-date'
		});
		neweve_p_date.setHTML(events.data[sortedEventId[num][0]].info.daysFrom+' - '+events.data[sortedEventId[num][0]].info.daysTo);
		
		neweve_p_title = new Element('p',{
				'class': 'sc-dayevent-title'
		});
		neweve_p_title.setHTML(events.data[sortedEventId[num][0]].title);
		
		neweve_p_title.injectTop(neweve_a);
		neweve_p_date.injectTop(neweve_a);
		neweve_a.injectInside(neweve_li);
		neweve_li.injectInside('sc-dayevent');
		
	}
	
	function attachBar(num,date,negaMargin){
		sortedEventId[num][3] = true;
		var viewDayFrom =date;
		var posMargin = -1*negaMargin;
		//alert('attach'+num)
		
		scType = events.data[sortedEventId[num][0]].type;
		//li
		newbar_li = new Element('li',{
			'class': scType,
			'id': 'bar-'+num
		});
		
		if(selectedGenre !=''){
			if(scType != selectedGenre){
				newbar_li.setStyles({
   				display: 'none',
   				height: 0
				});
			}
		}
		
		scPermalink = events.data[sortedEventId[num][0]].permalink;
		//a
		newbar_a = new Element('a',{
			'href': scPermalink
		});
		
		//subbar
		var branchTerms = 0;
		cnt = 0;
		safe = events.data[sortedEventId[num][0]].info.terms.length;
		while(true){
			if(cnt>=safe) break;
			if(events.data[sortedEventId[num][0]].info.terms[cnt].from != undefined){
				var dayFromTmp = events.data[sortedEventId[num][0]].info.terms[cnt].from.substring(0,10);
				
			}
			else break;
			
			if(events.data[sortedEventId[num][0]].info.terms[cnt].to != undefined){
				var dayToTmp = events.data[sortedEventId[num][0]].info.terms[cnt].to.substring(0,10);;
			}
			else dayToTmp = dayFromTmp;
			
			if(dayFromTmp == undefined || dayFromTmp.match(/\d{4}-\d{2}-\d{2}/)==null){
				
				break; 
			}
			
			
			if(dayToTmp == undefined || dayFromTmp.match(/\d{4}-\d{2}-\d{2}/)==null){
				alert('za');
				dayFromTmp = dayToTmp;
			}
			
			
			//div(branchTerms)
	
			farr = dayFromTmp.split('-');
			fyy = farr[0];
			fmm = farr[1];
			fdd = farr[2];
			
			tarr = dayToTmp.split('-');
			tyy = tarr[0];
			tmm = tarr[1];
			tdd = tarr[2];
			
			dayFrom = new Date(fyy,fmm-1,fdd);
			dayTo = new Date(tyy,tmm-1,tdd);
			s_scWidth = calWidthTerm(dayFrom,dayTo)+'px';
			s_scLeftMargin = calWidthDay(dayInitial,dayFrom)+'px';
			negaMarginTop = /*(branchTerms+1)**/(-9);
			s_scTopMargin = negaMarginTop+'px';
			
			newbarBranch_div = new Element('div',{
				'styles':{
					'width': s_scWidth,
					'margin-left': s_scLeftMargin,
					'margin-top': s_scTopMargin
				},
				'class': 'sc-timebar'
			});
			
		
			//alert(i+'/'+events.data[sortedEventId[num][0]].info.terms[cnt].from == undefined);
			newbarBranch_div.injectInside(newbar_a);
		
			
			branchTerms++;
			cnt++;
		}
		
		
		
		scWidth = calWidthTerm(sortedEventId[num][1],sortedEventId[num][2])+'px';
		scLeftMargin = calWidthDay(dayInitial,sortedEventId[num][1])+'px';
		//div
		var sc_barclss = '';
		if(branchTerms>0){
			sc_barclss = 'sc-timebar opac';
		}
		else{
			sc_barclss = 'sc-timebar';
		}
		newbar_div = new Element('div',{
			'styles':{
				'width': scWidth,
				'margin-left': scLeftMargin
			},
			'class': sc_barclss
		});
		newbar_div.injectTop(newbar_a);
		
		
		
		if(debug)
		scTitle = events.data[sortedEventId[num][0]].title +'<span style="font-size:x-small;">'+scWidth+'/'+scLeftMargin+'/'+ sortedEventId[num][1]+'/'+ sortedEventId[num][2]+'</span>';
		else
		scTitle = events.data[sortedEventId[num][0]].title;
		scIconURL = root+iconSrc[scType];
		//p
		newbar_p = new Element('p',{
			'styles':{
				'margin-left': posMargin+'px'
			},
			'class': 'sc-title',
			'id': 'bar-p-'+num
		});
		newbar_p.setHTML(scTitle);
		newbar_p.injectTop(newbar_a);
		
		
		//li
		newcat_li = new Element('li',{
			'class': scType,
			'id': 'cat-'+num
		});
		
		if(selectedGenre !=''){
			if(scType != selectedGenre){
				newcat_li.setStyles({
   				display: 'none',
   				height: 0
				});
			}
		}
		
		//img
		newcat_img = new Element('img',{
			'class': 'ic',
			'src' : scIconURL,
			'alt': ' ',
			'width': 12,
			'height': 12
		});
		newcat_img.injectInside(newcat_li);

		newbar_a.injectInside(newbar_li);
		
		newcat_li.injectInside('sc-category');
		newbar_li.injectInside('sc-timeline');
		
	}
	
	var holidays = new Array();
	function onLoadHoliday(data){
		//alert(data.HolidayList.Holiday.Row.length);
		for(var i=0; i<data.HolidayList.Holiday.Row.length; i++){
			holidays[data.HolidayList.Holiday.Row[i].Date] = true;
		}
		
	}
	
	

});


function loading(){
	new_div = new Element('div',{
		'id': 'loadingbar'
	});
	
	new_div.injectTop('sc-timeline-wrapper');
}


function cloneDate(date){
	y = date.getFullYear();
	m =  date.getMonth();
	d = date.getDate();
	return new Date(y,m,d);
}

function matchDate(dateA,dateB){
	yA = dateA.getFullYear();
	mA =  dateA.getMonth();
	dA = dateA.getDate();
	
	yB = dateB.getFullYear();
	mB =  dateB.getMonth();
	dB = dateB.getDate();
	
	if(yA==yB && mA==mB && dA==dB){
		return true;
	}
	return false;
}

function calWidthTerm(dateA, dateB){
	var days = (dateB - dateA)/ (1000*60*60*24);
		return (days+1)*oneDaywidth;
}

function calWidthDay(dateA, dateB){
	var days = (dateB - dateA)/ (1000*60*60*24);
		return days*oneDaywidth;
}

function dayMouseEnter(item){
//	alert($$('#'+item.id+' img'));
alert(item);
}

var viewDaydetail;



// --------------------------------------------------------------------------------------
// Microsoft Word 2003 (Windows) XML Library
// --------------------------------------------------------------------------------------

// get Worksheet Tag
function getWorkSheet(xml,sheetName)
{
	var tagObj = xml.getElementsByTagName("Worksheet");
	for (var i=0; i<tagObj.length; i++)
	{
		var n = tagObj[i].attributes[0].value;
		if (n == sheetName) return tagObj[i];
	}
	return null;
}

// get Worksheet Row Size(height)
function getWorkSheetRowCount(tagObj)
{
	var tableObj = tagObj.getElementsByTagName("Table")[0];
	return tableObj.getElementsByTagName("Row").length;
}

// get Worksheet Col Size(width)
function getWorkSheetColCount(tagObj)
{
	var tableObj = tagObj.getElementsByTagName("Table")[0];
	var rowObj = tagObj.getElementsByTagName("Row")[0];
	return rowObj.getElementsByTagName("Cell").length;
}

// get Cell Data
function getCellData(xml,sheetName,xPos,yPos)
{
	var wsObj = getWorkSheet(xml,sheetName);
	if (!wsObj) return null;
	var wSize = getWorkSheetColCount(wsObj);
	var hSize = getWorkSheetRowCount(wsObj);
	if ((xPos < 0) || (xPos >wSize) || (yPos < 0) || (yPos > hSize)) return null;
	var tableObj = wsObj.getElementsByTagName("Table")[0];
	var rowObj = tableObj.getElementsByTagName("Row")[yPos];
	var cellObj = rowObj.getElementsByTagName("Cell")[xPos];
	return cellObj.getElementsByTagName("Data")[0].firstChild.nodeValue;
}





