var splash = {
	timer:true,
	timer_delay:4000,// 1000 = 1 second
	timer_id:'',
	current_id:1,
	item_count:0,
	div_id:'homepage_splash',
	image_div_id:'homepage_splash_image',
	image_prefix:'splash_image_',	
	item_id_prefix:'hs_',
	class_name:'homepage_splash_item',
	control_item_class:'item',
	control_item_selected_class:'item this',
	init:function() 
	{
		if ($(this.div_id)) {
			var obj = document.getElementsByClassName(this.class_name);	
			this.item_count = obj.length;
			
			splash.select(this.current_id);			
		}
	},
	select:function(i)
	{
		this.current_id = i;
		
		css.hideClass(this.class_name);
		$(this.item_id_prefix+i).style.display = 'block';
		
		this.setImage();
		this.highlightItemLink();
		
		if (this.timer == true) {
			this.timer_id = window.setTimeout("splash.next()", this.timer_delay);		
		}
	},
	setImage:function()
	{	
		fx.doFadeIn(this.image_div_id);
		//fx.doFadeIn(this.item_id_prefix+this.current_id);
		$(this.image_div_id).innerHTML = '<img src="/slides/'+this.image_prefix+this.current_id+'.gif" style="border-width:0;" alt="Gujarat Tourism" />';
	},
	next:function()
	{
		this.current_id++;
		splash.chkBounds();			
		splash.select(this.current_id);		
	},
	prev:function()
	{
		this.current_id--;
		splash.chkBounds();			
		splash.select(this.current_id);		
	},
	get:function(i)
	{
		this.stopTimer();		
		this.select(i);
	},
	getNext:function()
	{
		this.stopTimer();
		this.next();
	},
	getPrev:function()
	{
		this.stopTimer();
		this.prev();
	},	
	stopTimer:function()
	{
		this.timer = false;
		if (this.timer_id) { window.clearTimeout(this.timer_id); }
	},
	chkBounds:function()
	{
		if (this.current_id <= 0) {
			this.current_id = this.item_count;
		} else if (this.current_id > this.item_count) {	
			this.current_id = 1;
		}
	},
	highlightItemLink:function()
	{
		var obj = document.getElementsByClassName(this.control_item_class);
		for(i = 0; i < obj.length; i++) {
			if (i == (this.current_id - 1)) {
				obj[i].className = this.control_item_selected_class;
			} else {
				obj[i].className = this.control_item_class;
			}
		}	
	}
}

var css = {
	hideClass:function (class_name) {
		var obj = document.getElementsByClassName(class_name);
		for(i = 0; i < obj.length; i++) {
			obj[i].style.display = 'none';
		}
	},
	showClass:function (class_name) {
		var obj = document.getElementsByClassName(class_name);
		for(i = 0; i < obj.length; i++) {
			obj[i].style.display = 'block';
		}
	}
}

var fx = {
	timer_id:'',
	timer_delay:100,
	doFadeIn:function (id) 
	{
		if (this.timer_id) { window.clearTimeout(this.timer_id); }
	
		this.setOpacity($(id), 0);
		$(id).style.visibility = "visible";
		this.fadeIn(id,0);
	},
	fadeIn:function (id, opacity) 
	{
		if (document.getElementById) {
			obj = document.getElementById(id);
			if (opacity <= 100) {
				this.setOpacity(obj, opacity);
				opacity += 10;
				this.timer_id = window.setTimeout("fx.fadeIn('"+id+"',"+opacity+")", this.timer_delay);
			}
		}
	},
	doFadeOut:function (id) 
	{
		if (this.timer_id) { window.clearTimeout(this.timer_id); }	
	
		this.setOpacity($(id), 100);
		$(id).style.visibility = "visible";
		this.fadeOut(id,100);
	},	
	fadeOut:function (id, opacity) 
	{
		if (document.getElementById) {
			obj = document.getElementById(id);
			if (opacity >= 0) {
				this.setOpacity(obj, opacity);
				opacity -= 10;
				this.timer_id = window.setTimeout("fx.fadeOut('"+id+"',"+opacity+")", this.timer_delay);
			}
		}
	},	
	setOpacity:function (obj, opacity) 
	{
		opacity = (opacity == 100)?99.999:opacity;
		obj.style.filter = "alpha(opacity:"+opacity+")";	// IE/Win
		obj.style.KHTMLOpacity = opacity/100;				// Safari<1.2, Konqueror
		obj.style.MozOpacity = opacity/100;					// Older Mozilla and Firefox
		obj.style.opacity = opacity/100;					// Safari 1.2, newer Firefox and Mozilla, CSS3
	}
}

var cal = {
	cal_events_id:'calendar_events',
	cal_id:'calendar_mini',
	events:'',
	event_links:'',
	today_ymd:'',
	start_month:'',
	end_month:'',
	event_date_prefix:'event-',
	init:function()
	{
		if ($(this.cal_events_id) && $(this.cal_id)) {
			var today = new Date();	
			var d = today.getDate();
			var m = today.getMonth() + 1;	
			var y = today.getYear();
			
			if (y < 1900) { y += 1900 }
			
			if (d<10) {var today_d = '0'+d;} else {var today_d = d;}
			if (m<10) {var today_m = '0'+m;} else {var today_m = m;}
			
			this.today_ymd = y +'-' + today_m + '-' + today_d;			
		
			this.getEvents(this.cal_events_id);	
			this.build(m,y);
		}
	},
	getEvents:function (id)
	{
		var event_id = '';	
		this.events = $H();
		this.event_links = $H();
		
		$A($(id).childNodes).each( function(item) {
			if (item.tagName == 'LI') {
				
				event_id = '';
				cal.events[item.id.replace(cal.event_date_prefix,'')] = '';
			
				var li = $(item.id);
				var event_date = li.id.replace(cal.event_date_prefix,'');

				if (event_date.substring(0,10) == cal.today_ymd) {
					li.innerHTML += ' - <em>Today!</em>';
				}
				
				var links = li.getElementsByTagName('A');
				var link_text = '';
				
				for (var i = 0; i < links.length; i++) {
					link_text = links[i].innerHTML;
					link_href = links[i].href;
				}

				if (event_date.substring(10,12)) {
					event_id = event_date.substring(0,10);
				} else {
					event_id = event_date;
				}
				
				if (cal.start_month == '' || cal.start_month == undefined) {
					cal.start_month = event_id.substring(5,7);
				}
				
				if (cal.events[event_id] == undefined) { cal.events[event_id] = ''; }
				
				cal.events[event_id] += "• "+link_text + "\n";
				cal.event_links[event_id] = link_href;
			}
		});	
		
		this.end_month = event_id.substring(5,7);

	},
	getNumDaysInMonth:function(m,y)
	{
		return (32 - new Date(y, m-1, 32).getDate());
	},
	getStartOfMonth:function(m,y)
	{
		return (new Date(y,m-1,1)) + '';
	},
	build:function(m,y)
	{
		
		var this_day = new Date(y,m-1,1) + '';		
		var month = this_day.substring(3,8);
		
		var pad = true;
		var pad_html = '';
		var d = '';
		var days = new Array('Sun','Mon','Tue','Wed','Thu','Fri','Sat');
		
		var num_days = this.getNumDaysInMonth(m,y);
		var start_date = this.getStartOfMonth(m,y);
		
		$(this.cal_id).innerHTML = '';

		if (this.start_month == this.end_month) {
			// only one month
			$(this.cal_id).innerHTML = '<h4>'+month+'   '+y+'</h4>';
		} else if (m > this.start_month && m < this.end_month) {
			// middle month		
			$(this.cal_id).innerHTML = '<h4><a href="javascript:cal.next('+m+','+y+');" class="next">»</a> <a href="javascript:cal.prev('+m+','+y+');" class="prev">«</a> '+month+'   '+y+'</h4>';		
		} else if (m < this.end_month) {
			// start month		
			$(this.cal_id).innerHTML = '<h4><span class="prev">«</span> <a href="javascript:cal.next('+m+','+y+');" class="next">»</a> '+month+'   '+y+'</h4>';
		} else if (m > this.start_month) {
			// end month
			$(this.cal_id).innerHTML = '<h4><a href="javascript:cal.prev('+m+','+y+');" class="prev">«</a> <span class="next">»</span> '+month+'   '+y+'</h4>';			
		}

		for (var i = 0; i < days.length; i++) {
			
			$(this.cal_id).innerHTML += '<strong>'+days[i]+'</strong>';
			
			if (days[i] == start_date.substring(0,3)) {
				pad = false;
			}
			if (pad == true) {
				pad_html += this.buildDay(0);
			}
		}
		
		$(this.cal_id).innerHTML += pad_html;

		if (m<10) {m = '0'+m;}		
		
		for (var i = 1; i <= num_days; i++) {
			if (i<10) {d = '0'+i;} else {d = i;}
			$(this.cal_id).innerHTML += this.buildDay(i,y+'-'+m+'-'+d);			
		}

	},
	buildDay:function(i,ymd)
	{
		var day = '';

		if (this.events[ymd] && ymd == this.today_ymd) {
			day = '<a href="'+this.event_links[ymd]+'" onMouseOver="cal.eventHighlight(\''+ymd+'\');" onMouseOut="cal.eventLowlight(\''+ymd+'\');" class="today hasevents" title="'+this.events[ymd]+'">'+i+'</a>';			
		} else if (i > 0 && ymd == this.today_ymd) {
			day = '<span class="today">'+i+'</span>';		
		} else if (this.events[ymd]) {
			day = '<a href="'+this.event_links[ymd]+'" onMouseOver="cal.eventHighlight(\''+ymd+'\');" onMouseOut="cal.eventLowlight(\''+ymd+'\');" class="hasevents" title="'+this.events[ymd]+'">'+i+'</a>';			
		} else if (i > 0) {
			day = '<span>'+i+'</span>';
		} else {
			day = '<span class="empty"></span>';
		}
	
		return day;
	},
	eventHighlight:function(ymd)
	{
		$(this.event_date_prefix + ymd).className = 'highlight';
        var extra_date_cursor = 1;
        while($(this.event_date_prefix + ymd + '-' + extra_date_cursor)){
            $(this.event_date_prefix + ymd + '-' + extra_date_cursor).className = 'highlight';
			extra_date_cursor++;
        }

	},
	eventLowlight:function(ymd)
	{
		$(this.event_date_prefix + ymd).className = '';
        var extra_date_cursor = 1;
        while($(this.event_date_prefix + ymd + '-' + extra_date_cursor)){
            $(this.event_date_prefix + ymd + '-' + extra_date_cursor).className = '';
			extra_date_cursor++;
        }
	},	
	next:function(m,y)
	{
		var date = new Date(y,m,1);
      	var m = date.getMonth() + 1;
      	var y = date.getYear();
      	
      	if (y < 1900) { y += 1900 }      	
      	
		this.build(m,y);
	},
	prev:function(m,y)
	{
		var date = new Date(y,m-2,1);
      	var m = date.getMonth() + 1;
      	var y = date.getYear();	
      	
      	if (y < 1900) { y += 1900 }      	
      	
		this.build(m,y);     	
	}
}

function init () {
	splash.init();
	cal.init();
}// JavaScript Document
