	var googleColorString = "666666888888aaaaaabbbbbbdddddda32929cc3333d96666e69999f0c2c2b1365fdd4477e67399eea2bbf5c7d67a367a994499b373b3cca2cce1c7e15229a36633cc8c66d9b399e6d1c2f029527a336699668cb399b3ccc2d1e12952a33366cc668cd999b3e6c2d1f01b887a22aa9959bfb391d5ccbde6e128754e32926265ad8999c9b1c2dfd00d78131096184cb05288cb8cb8e0ba52880066aa008cbf40b3d580d1e6b388880eaaaa11bfbf4dd5d588e6e6b8ab8b00d6ae00e0c240ebd780f3e7b3be6d00ee8800f2a640f7c480fadcb3b1440edd5511e6804deeaa88f5ccb8865a5aa87070be9494d4b8b8e5d4d47057708c6d8ca992a9c6b6c6ddd3dd4e5d6c6274878997a5b1bac3d0d6db5a69867083a894a2beb8c1d4d4dae54a716c5c8d8785aaa5aec6c3cedddb6e6e41898951a7a77dc4c4a8dcdccb8d6f47b08b59c4a883d8c5ace7dcce8531049f3501c7561ee2723ad6a58c6914268a2d38b5515dcd6a75d0a4a95c1158962181c244abda5dc4d69fcc23164e402175603f997d5cb5a89ac2182c5730487e536ca66d86c0a4afc9060d5e1821863640ad525cc8969acb125a121f753c3c995b5ab67998c2a62f62133d82155ca63279c34fa6c7942f63095a9a087ec2259add42b6d48e5f6b0281910ba7b828c3d445c8d0908755099d7000cf9911ebb42ed9c2858c500baa5a00d47f1eee9939ddb78d7549168d4500b56414d38233cda9866b3304743500914d14b37037bb9d845b123b870b50ab2671c9448ec98eae42104a70237f9643a5b15fc0c09cc7113f4725617d4585a361a0be9dbac73333335151517373738f8f8fb2b2b20f4b38227f6341a5875dc0a29bc7ba856508a59114d1bc36e9d34fddd398711616871111ad2d2dc94a4acb9292";

	function getLightGoogleColor(colorNumber)
	{
		return googleColorString.substr((colorNumber*30) + 24, 6);
	}

	function getMidGoogleColor(colorNumber)
	{
		return googleColorString.substr((colorNumber*30) + 12, 6);
	}

	function getDarkGoogleColor(colorNumber)
	{
		return googleColorString.substr((colorNumber*30), 6);
	}

	function getGoogleCalendarBaseSrcString(calendarBaseValueIndex)
	{
		var retString = "";
		for (var j=0; j < (calendarBaseValues[calendarBaseValueIndex][1]).length; j++)
		{
			retString += "&src=" + calendarBaseValues[calendarBaseValueIndex][1][j] + "&color=%23" + getDarkGoogleColor(calendarBaseValues[calendarBaseValueIndex][0]);
		}
		return retString;
	}

	function getGoogleCalendarHeaderSrcString(calendarHeaderValueIndex)
	{
		var retString = "";
		for (var j=0; j < (calendarHeaderValues[calendarHeaderValueIndex][2]).length; j++)
		{
			retString += "&src=" + calendarHeaderValues[calendarHeaderValueIndex][2][j] + "&color=%23" + getDarkGoogleColor(calendarHeaderValues[calendarHeaderValueIndex][1]);
		}
		return retString;
	}

	function calendarMouseOver(calendarValueIndex)
	{
		$('#divCalendarHeadingMain' + calendarValueIndex).css('backgroundColor', '#' + getLightGoogleColor(calendarHeaderValues[calendarValueIndex][1]));
		$('#divCalendarHeadingMain' + calendarValueIndex).css('color', 'black');
	}

	function calendarMouseOut(calendarValueIndex)
	{
		if (calendarHeaderValues[calendarValueIndex][3] == true)
		{
			$('#divCalendarHeadingMain' + calendarValueIndex).css('backgroundColor', '#' + getMidGoogleColor(calendarHeaderValues[calendarValueIndex][1]));
			$('#divCalendarHeadingMain' + calendarValueIndex).css('color', 'white');
		}
		else
		{
			$('#divCalendarHeadingMain' + calendarValueIndex).css('backgroundColor', 'white');
			$('#divCalendarHeadingMain' + calendarValueIndex).css('color', '#' + getMidGoogleColor(calendarHeaderValues[calendarValueIndex][1]));
		}
	}

	function selectChangeCalendar(calendarValueIndex)
	{
		calendarHeaderValues[calendarValueIndex][3] = !calendarHeaderValues[calendarValueIndex][3];
	}

	function buildCalendar()
	{

		$('#divCalendarMain').css('position','relative');

		$('#divCalendarMain').height(Math.round(calendarHeaderValues.length/calendarHeaderColumns + 1) * 20 + calendarHeight);

		for (var i=0; i< calendarHeaderValues.length; i++)
		{
			//append divCalendarHeadingMain? div tag under the divCalendarMain div tag
			$('#divCalendarMain').append('<div id=\"divCalendarHeadingMain' + i + '\" style=\" display:block; position: absolute; text-align: center;\">' + calendarHeaderValues[i][0] + '</div>');
			$('#divCalendarHeadingMain' + i).width((calendarWidth/calendarHeaderColumns - 5) + 'px');
			$('#divCalendarHeadingMain' + i).css('top',Math.floor(i/calendarHeaderColumns) * 20 + 'px');	
			$('#divCalendarHeadingMain' + i).css('left',(calendarWidth/calendarHeaderColumns * Math.round(i%calendarHeaderColumns)) + 'px');

			$('#divCalendarHeadingMain' + i).bind('mouseout', {calendarValueIndex: i}, function(event) {
  				calendarMouseOut(event.data.calendarValueIndex);
			});


			$('#divCalendarHeadingMain' + i).bind('mouseover', {calendarValueIndex: i}, function(event) {
  				calendarMouseOver(event.data.calendarValueIndex);
			});

			$('#divCalendarHeadingMain' + i).bind('click', {calendarValueIndex: i }, function(event) {
				//$('#cbCalendarHeading' + event.data.calendarValueIndex).attr('checked',!$('#cbCalendarHeading' + event.data.calendarValueIndex).attr('checked')); 
				selectChangeCalendar(event.data.calendarValueIndex)
				loadIFrameCalanderSrc();

			});						

			calendarMouseOut(i);

		}
		$('#divCalendarMain').append('<div id=\"divCalendarIFrame\" style=\"display:block; position: absolute;\"> </div>');
		$('#divCalendarIFrame').css('top',(Math.round(calendarHeaderValues.length/calendarHeaderColumns ) + 1) * 20 + 'px');
		$('#divCalendarIFrame').append('<iframe id=\"iframeGCalendar\" frameborder=\"0\" scrolling=\"no\"> </iframe>');
		$('#iframeGCalendar').height(calendarHeight);
		$('#iframeGCalendar').width(calendarWidth);
	
		//$('#content-main').height($('#content-main').height() + 25);
	}

	function loadIFrameCalanderSrc()
	{
		var src = iframeSRC;

		for(var loopBaseSrc = 0; loopBaseSrc < calendarBaseValues.length; loopBaseSrc++)
		{
			src += getGoogleCalendarBaseSrcString(loopBaseSrc);
		}


		for(var loopHeaderSrc = 0; loopHeaderSrc < calendarHeaderValues.length; loopHeaderSrc++)
		{
			if (calendarHeaderValues[loopHeaderSrc][3] == true)
				src += getGoogleCalendarHeaderSrcString(loopHeaderSrc);
		}

		$('#iframeGCalendar').attr("src",src);
	}
	

	$(document).ready(function() {
		if ( $("#divCalendarMain").length > 0 ) {
			buildCalendar();
	   		loadIFrameCalanderSrc();
		}
	 });

