
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 art, theater, education, live, cinema, interlab, holiday;

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('load', function() {

	if ( Browser.Engine.gecko ) {
		if ( !Browser.Platform.win ) {
			document.documentElement.className = 'gecko';
		}
		else {
			document.documentElement.className = 'gecko-win';
		}
	}

	var tips;

	//loading();

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

	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 || !data.root ) {
            // return false;
        }
		else if ( data.root[0] && 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 || !data.root ) {
            // return false;
        }
		else if ( data.root[0] && 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 || !data.root ) {
            // return false;
        }
		else if ( data.root[0] && 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 || !data.root ) {
            // return false;
        }
		else if ( data.root[0] && 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 || !data.root ) {
            // return false;
        }
		else if ( data.root[0] && 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 || !data.root ) {
            // return false;
        }
		else if ( data.root[0] && 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 || !art.idList ) || ( !cinema || !cinema.idList ) || ( !theater || !theater.idList ) || ( !education || !education.idList ) || ( !live || !live.idList ) || !dph.length ) {
        }
        else {
			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++){
			// Check the start day
			if ( events.data[i].info.daysFrom != undefined ) {
				events.data[i].info.daysFrom = events.data[i].info.daysFrom.substring(0,10);
			}
			// Check the end day
			if (events.data[i].info.daysTo != undefined ) {
				events.data[i].info.daysTo = events.data[i].info.daysTo.substring(0,10);
			}
			else if ( events.data[i].info.daysFrom != undefined ) {
				events.data[i].info.daysTo = events.data[i].info.daysFrom;
			}
			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').dispose();

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

	var sortedEventId = new Array();
	
	//eventsコンストラクト
	var events = new Items();
	events.data = new Array();
	
	
	//art のロード、コンストラクト
	setTimeout(function() {
		art = new Items(root+xmlDir[lang]+'art.xml',['root','event','terms'],onLoadArt);
		art.load();
	}, 100 );

	//theater のロード、コンストラクト
	setTimeout(function() {
		theater = new Items(root+xmlDir[lang]+'theater.xml',['root','event','terms'],onLoadTheater);
		theater.load();
	}, 200 );

	//education のロード、コンストラクト
	setTimeout(function() {
		education = new Items(root+xmlDir[lang]+'education.xml',['root','event','terms'],onLoadEducation);
		education.load();
	}, 300 );

	//live のロード、コンストラクト
	setTimeout(function() {
		live = new Items(root+xmlDir[lang]+'live.xml',['root','event','terms'],onLoadLive);
		live.load();
	}, 400 );

	//cinema のロード、コンストラクト
	setTimeout(function() {
		cinema = new Items(root+xmlDir[lang]+'cinema.xml',['root','event','terms'],onLoadCinema);
		cinema.load();
	}, 500 );

/*
	//interlab のロード、コンストラクト
	setTimeout(function() {
		interlab = new Items(root+xmlDir[lang]+'interlab.xml',['root','event','terms'],onLoadInterlab);
		interlab.load();
	}, 600 );
*/
	//holiday のロード、コンストラクト
	setTimeout(function() {
		holiday = new Items(root+'data/lightholiday.xml',['Row'],onLoadHoliday);
		holiday.load();
	}, 700 );

	$('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();
		}
	});
	
	var modeView = "monthview";
	$$('#sc-head-changebtn a').addEvent('click', function(e){
		e = new Event(e).stop();
		modeView = ( ( modeView == "monthview" ) ? "dayview" : "monthview" );
		this.className = modeView;
		changeMode( modeView );
	});

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

	function changeMode(str){
		if(str=='dayview'){
			$( 'sc_body_wrapper' ).addClass( 'sc-disabled' );
			$( 'sc-head-wrapper' ).addClass( 'sc-enabled' );
			var hideBarFx = new Fx.Tween(
				'sc-monthly', {
					property: 'margin-top',
					duration: 600,
					transition: Fx.Transitions.Cubic.easeOut,
					wait: false
				}
			).start( -293 );
			modeView = "dayview";
			$$('#sc-head-changebtn a').addClass('dayview');		
		}
		else if(str="monthview"){
			var hideBarFx = new Fx.Tween(
				'sc-monthly', {
					property: 'margin-top', 
					duration: 600,
					transition: Fx.Transitions.Cubic.easeOut,
					wait: false,
					onComplete: function() {
						$( 'sc_body_wrapper' ).removeClass( 'sc-disabled' );
						$( 'sc-head-wrapper' ).removeClass( 'sc-enabled' );
					}
				}
			).start(0);
			modeView = "monthview";
			$$('#sc-head-changebtn a').addClass('monthview');				
		}
	
	}

	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();
		new QuickForm('sc-puldown');
		
		//$('sc-timeline').setStyle('margin-left', negaMargin+'px');
		slideTimeEffects.start( negaMargin );
		$('sc-date-body').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;
					if ( !checkOverlay( i, viewDayFrom ) ) {
					   $$( '#bar-p-' + i + ' span.today-over' ).setStyles({
					       display: 'none'
					   });
					}
					else {
                        $$( '#bar-p-' + i + ' span.today-over' ).setStyles({
                            display: 'block'
                        });
					}
					$('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.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){
					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').set( 'html', '<h3>'+date.getFullYear()+'-'+(date.getMonth()+1)+'-'+date.getDate()+'</h3>');
			}
			else{
				$('sc-dayevent-head').set( 'html', '<h3>'+date.getFullYear()+'年'+(date.getMonth()+1)+'月'+date.getDate()+'日のイベント(0件)</h3>');
			}
		}
		else{
			if(lang=='english'){
				$('sc-dayevent-head').set( 'html', '<h3>'+date.getFullYear()+'-'+(date.getMonth()+1)+'-'+date.getDate()+' ('+adEvent+' Events)</h3>');
			}
			else{
				$('sc-dayevent-head').set( 'html', '<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.set( 'html', '<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();
		$('sc-date-body-under').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');
			day_oli = new Element('li');
			
			if(matchDate(date,today)){
				day_li_a.addClass('today');
				new Element( 'span' ).addClass('todayLabel').injectInside( day_oli );
				new Element( 'span' ).addClass('todayBar').injectInside( day_oli );
			}
			else if(dph[hd] != undefined){
						
				if(dayProperty[dph[hd]].type =='休館'){
					day_li_a.addClass('closeDay');
					new Element( 'span' ).addClass('closeDayBar').injectInside( day_oli );
				}
					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.set( 'html', date.getDate());
			day_li_a.injectInside(day_li);
			day_li.injectInside('sc-date-body');
			day_oli.injectInside('sc-date-body-under');			
		}
		
	}
	
	function buildDatePulldown(viewDayFrom){
		var date = cloneDate(viewDayFrom);
		var y = parseInt(date.getFullYear());
		var m = parseInt(date.getMonth());
		;
		//$('sc-form-select-month').empty();
		
		yOptions = '';
		yOptionsSelected = 0;
		for(var i=parseInt(dayInitial.getFullYear()),k=0; i<=parseInt(dayEternal.getFullYear()); i++ && k++){
			if(y == i){
				yOptions += "<option value="+i+" selected>"+i+"</option>";
				yOptionsSelected = i;
			}
			else{
				yOptions += "<option value="+i+">"+i+"</option>";
			}
		}
		mOptions = '';
		mOptionsSelected = 0;
		for(var j=0; j<12; j++){
			if(m == j){
				mOptions += "<option value="+j+" selected>"+(j+1)+"</option>";
				mOptionsSelected = j + 1;
			}
			else{
				mOptions += "<option value="+j+">"+(j+1)+"</option>";
			}
		
		}
		var $selects = $$( '#sc-form-selectMonth select' );
		if ( $selects.length > 0 ) {
			$$( '#sc-form-selectMonth span' )[0].innerHTML = yOptionsSelected;
			$$( '#sc-form-selectMonth span' )[1].innerHTML = mOptionsSelected;
		}
		else {
			$('sc-form-selectMonth').empty().innerHTML = '<select id="sc-form-select-year" style="float:left;">'+yOptions+'</select>'+'<select id="sc-form-select-month">'+mOptions+'</select>';		
		}
		document.getElementById( 'sc-form-select-year' ).callback = function( idx, val ) {
			onChangeYear( val );
		};
		document.getElementById( 'sc-form-select-month' ).callback = function( idx, val ) {
			onChangeMonth( parseInt( val, 10 ) - 1 );
		};

	}
	
	function buildCategorySelector(){
		var selBtn = $$('#sc-categorySelector img')
		$$('#sc-categorySelector a').each(function(item){
 
			item.addEvent('mouseover', function(e) {
				e = new Event(e).stop();
 				str = e.target.src;
 				e.target.src = str.replace("-on.gif","-mo.gif").replace("-off.gif","-mo.gif");
			});
			
			item.addEvent('mouseout', function(e) {
				e = new Event(e).stop();
				if ( selectedGenre != e.target.id.substring(10) ) {
	 				str = e.target.src;
 					e.target.src = str.replace("-mo.gif","-on.gif").replace("-active.gif","-on.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') {
						e.target.src = str.replace("-on.gif","-active.gif").replace("-off.gif","-active.gif").replace("-mo.gif","-active.gif");
						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{
						e.target.src = str.replace("-on.gif","-mo.gif");
						if(selectedGenre==''){
 							strl = selBtn[0].src;
 							selBtn[0].src = strl.replace("-on.gif","-off.gif");
 						}
						for(var i=0; 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").replace("-mo.gif","-off.gif");
							}
							else {
								selectedGenre = selBtn[i].id.substring(10);
								selBtn[i].src = selBtn[i].src.replace("-on.gif","-mo.gif").replace("-off.gif","-mo.gif");
							}
						}
						for(var i=0; i<genres.length; i++){
							if(selectedGenre != genres[i]){
								hideBars(genres[i]);
								hideDayEvents(genres[i]);
							}
							else{
								showBars(selectedGenre);
								showDayEvents(selectedGenre);
							}
						}
					}
	 			}
 
			});
			
	
		});
	}
	
	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 = new Fx.Tween(
			item, {
				property: 'height',
				duration: 400,
				transition: Fx.Transitions.Cubic.easeOut,
				wait: false
			}
		).start(36);
	}
	
	function hideBar(item){
		var hideBarFx = new Fx.Tween(
			item, {
				property: 'height',
				duration: 400,
				transition: Fx.Transitions.Cubic.easeOut,
				wait: false,
				onComplete: function(item){
					item.style.display = 'none';
				}
			}
		).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 = new Fx.Tween(
			item, {
				duration: 400,
				property: 'height',
				transition: Fx.Transitions.Cubic.easeOut,
				wait: false
			}
		);
		hideBarFx.start(54);
	}
	
	function hideDayEvent(item){
		var hideBarFx = new Fx.Tween(
			item, {
				duration: 400,
				property: 'height',
				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).dispose();
		$('cat-'+num).dispose();
	}
	
	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.set( 'html', dayProperty[dph[d]].msg_e);
		}else{
			neweve_p_title.set( 'html', 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'
				});
			}
		}
		
		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'
		});
		var endDate = events.data[sortedEventId[num][0]].info.daysTo;
		neweve_p_date.set( 'html', events.data[sortedEventId[num][0]].info.daysFrom + ( endDate ? ' - ' + endDate : '' ) );
		
		neweve_p_title = new Element('p',{
				'class': 'sc-dayevent-title'
		});
		neweve_p_title.set( 'html', events.data[sortedEventId[num][0]].title.replace( '<br/>','' ) );
		
		neweve_p_title.injectTop(neweve_a);
		neweve_p_date.injectTop(neweve_a);
		neweve_a.injectInside(neweve_li);
		neweve_li.injectInside('sc-dayevent');
		
	}

    function checkOverlay( num, viewDayFrom ) {

		var today_timestamp = new Date(),
			addOverlay = false,
			cnt = 0;

		var dfrom = events.data[sortedEventId[num][0]].info.terms[cnt].from || false;
		if ( dfrom ) {
			dfrom = dfrom.substring( 0, 10 );
			dfrom_timestamp = new Date();
			dfrom_timestamp.setFullYear( dfrom.split('-')[0] );
			dfrom_timestamp.setMonth( parseInt( dfrom.split('-')[1], 10 ) - 1 );
			dfrom_timestamp.setDate( dfrom.split('-')[2] );
			dfrom_timestamp.setHours( 1 );
			dfrom_timestamp.setMinutes( 1 );
			dfrom_timestamp.setSeconds( 1 );
			dfrom_timestamp.setMilliseconds( 1 );
		}
		else {
			dfrom_timestamp = false;
		}

		var dto = events.data[sortedEventId[num][0]].info.terms[cnt].to || false;
		if ( !dto ) {
			dto = events.data[sortedEventId[num][0]].info.terms[
				events.data[sortedEventId[num][0]].info.terms.length - 1
			].from || false;
		}
		if ( dto ) {
			dto = dto.substring( 0, 10 );
			dto_timestamp = new Date();
			dto_timestamp.setFullYear( dto.split('-')[0] );
			dto_timestamp.setMonth( parseInt( dto.split('-')[1], 10 ) - 1 );
			dto_timestamp.setDate( dto.split('-')[2] - 1 );
			dto_timestamp.setHours( 1 );
			dto_timestamp.setMinutes( 1 );
			dto_timestamp.setSeconds( 1 );
			dto_timestamp.setMilliseconds( 1 );
		}
		else {
			dto_timestamp = false;
		}



		today_timestamp.setHours( 1 );
		today_timestamp.setMinutes( 1 );
		today_timestamp.setSeconds( 1 );
		today_timestamp.setMilliseconds( 1 );

		if ( dfrom_timestamp && dto_timestamp ) {
			if ( ( today_timestamp > dfrom_timestamp ) && ( dto_timestamp > today_timestamp ) ) {
				addOverlay = true;
			}
		}
		if ( dfrom_timestamp && !dto_timestamp ) {
			if ( today_timestamp == dfrom_timestamp ) {
				addOverlay = true;
			}
		}
		if ( !dfrom_timestamp && dto_timestamp ) {
			if ( today_timestamp == dto_timestamp ) {
				addOverlay = true;
			}
		}
		
        if ( today_timestamp.getMonth() != viewDayFrom.getMonth() ) {
            addOverlay = false;
        }
        return addOverlay;
    }

	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'
				});
			}
		}

		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);
			var cwt = calWidthTerm( dayFrom, dayTo );
			var cwd = calWidthDay( dayInitial, dayFrom );
			if ( !isNaN( cwt ) && !isNaN( cwd ) ) {
				s_scWidth = cwt + 'px';
				s_scLeftMargin = cwd + '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.set( 'html', '<span class="sc-event-title">' + scTitle.replace( '<br/>','' ) + '</span>' );


		if ( checkOverlay( num, viewDayFrom ) ) {
			var d1 = today.getDate();
			var dMode = document.documentMode || false;
			if ( dMode && ( dMode == 8 ) ) {
				extraCSS = 'margin-bottom:0;margin-top:-5px;'
			}
			else {
				extraCSS = '';
			}
			newday_today = new Element( 'span', {
				'class': 'today-over today-' + d1,
				'style': 'margin-left:' + ( ( d1 - 1 ) * 18 ) + 'px;' + extraCSS
			});
			newday_today.injectInside(newbar_p);
		}

		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'
				});
			}
		}
		
		//img
		newcat_img = new Element('img',{
			'class': 'ic',
			'src' : scIconURL,
			'alt': ' ',
			'width': 20,
			'height': 20
		});
		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;
}






