	function positionLayers() 
	{
		var iDays = arrDates.length;
		createTime();
		for(var i=0; i<arrDates.length; i++)
		{
			createColumns(i, iDays);
		}

		for(var i=0; i<arrItems.length; i++)
		{
			createLayers(i, iDays);
		}
	}
	
	function createTime()
	{
		var objWrapper = document.getElementById("calendarWrapper");
		var objColumn = document.createElement("div");
		objColumn.id = "ColumnTime";
		var objTop = document.createElement("div");
		objTop.className = "calendarTop";
		objColumn.appendChild(objTop);
		for(i=intGlobalStart; i<=intGlobalEnd; i++)
		{
			var strTime;
			strTime = i<10 ? "0" + i + ".00" : i + ".00";
			var objTime = document.createElement("div");
			objTime.className = "time"
			objTime.innerHTML = strTime;
			objColumn.appendChild(objTime);
		}
		objWrapper.appendChild(objColumn);
	}
	
	
	function createColumns(intId, iDays)
	{
		var strWidth = iDays==2 ? "376px" : "251px";
		var objWrapper = document.getElementById("calendarWrapper");
		var objColumn = document.createElement("div");
		var objTop = document.createElement("div");
		objColumn.id = "Column" + (intId+1);
		objColumn.style.width = strWidth;
		objWrapper.appendChild(objColumn);
		objTop.className = "calendarTop";
		objTop.innerHTML = arrDates[intId]
		objColumn.appendChild(objTop);
	}
	
	function createLayers(intId, iDays)
	{
		var objParent = document.getElementById("Column" + arrItems[intId][0]);
		var objElement = document.createElement("div");
		var objSpan = document.createElement("span");
		var objLink = document.createElement("a");
		var strClassName = "";
		objElement.id = "div" + intId;
		objSpan.className = "duration";
		objSpan.innerHTML = arrItems[intId][6];
		objLink.innerHTML = arrItems[intId][7];
		addEvent(objLink,"mouseover",alterBaloon);
		addEvent(objLink,"mouseout",hideBaloon);
		objLink.id = intId;
		objLink.href = arrItems[intId][9];
		if(iDays==3)
		{
			strClassName = arrItems[intId][1] > 2 ? " third" : " half";
		}
		else
		{
			strClassName = arrItems[intId][1] > 2 ? " third-two-days" : " half-two-days";
		}
		objElement.className = "item " + arrItems[intId][3] + strClassName;
		objElement.style.left = getLeft(arrItems[intId][1], arrItems[intId][2], iDays);
		objElement.style.top = getYpos(arrItems[intId][4]);
		objElement.style.height = getHeight(arrItems[intId][4], arrItems[intId][5]);
		
		objElement.appendChild(objSpan);
		objElement.appendChild(objLink);
		objParent.appendChild(objElement);
	}
	
	function alterBaloon()
	{
		showBaloon( this.id);
	}
	
	function getLeft(intColumns, intColumn, iDays)
	{
		if(intColumns==2)
		{
			if(intColumn==1) return "0px";
			else 
			{
				if(iDays==3)
				{
					return "126px";
				}
				else
				{
					return "188px";
				}
			}
		}	
		else
		{
			if(intColumn==1) return "0px";
			else if (intColumn==2) 
			{
				if(iDays==3)
				{
					return "84px";
				}
				else
				{
					return "125px";
				}
			}
			else if (intColumn==3) 
				if(iDays==3)
				{
					return "168px";
				}
				else
				{
					return "250px";
				}
		}	
	}
	
	function hideBaloon()
	{
		var obj = document.getElementById("balloon");
		obj.style.display = obj.style.display == "block" ? "none" : "block";
	}
	
	function getHeight(strStart, strEnd)
	{
		var arrStart = strStart.split(":");
		var arrEnd = strEnd.split(":");
		var intStart = parseInt(formatHours(arrStart[0]));
		var intEnd = parseInt(formatHours(arrEnd[0]));
		var intLength = intEnd - intStart;
		var intHeigth = 0;
		switch(intLength)
		{
			case 1: intHeigth = 28; break;
			case 2: intHeigth = 61; break;
			case 3: intHeigth = 94; break;
			case 4: intHeigth = 127; break;
			case 5: intHeigth = 160; break;
			case 6: intHeigth = 193; break;
			case 7: intHeigth = 226; break;
			case 8: intHeigth = 259; break;
			case 9: intHeigth = 292; break;
			case 10: intHeigth = 325; break;
			case 11: intHeigth = 358; break;
			case 12: intHeigth = 391; break;
			case 13: intHeigth = 424; break;
			case 14: intHeigth = 457; break;
		}
		
		intStart = parseInt(formatHours(arrStart[1]));
		intEnd = parseInt(formatHours(arrEnd[1]));
		intLength = intEnd - intStart;
		
		switch(intLength)
		{
			case 0: intAddition = 0; break;
			case 15: intAddition = 8; break;
			case 30: intAddition = 16; break;
			case 45: intAddition = 24; break;
			case -15: intAddition = -24; break;
			case -30: intAddition = -16; break;
			case -45: intAddition = -8; break;
			default: intAddition = 0; break;
		}
		
		return (intHeigth + intAddition) + "px";
	}
	
	function formatHours(str)
	{
		if(str.indexOf("0")==0) return str.substring(1);
		else return str;
	}
	
	
	
	function getYpos(strStart)
	{
	 var arr = strStart.split(":")
	 var intTop = 0;
	 var intAddition = 0;
	 var intDiff = (intGlobalStart - 7);
		switch(arr[0])
		{
			case "07": intTop = 25; break;
			case "08": intTop = 58; break;
			case "09": intTop = 91; break;
			case "10": intTop = 124; break;
			case "11": intTop = 157; break;
			case "12": intTop = 190; break;
			case "13": intTop = 223; break;
			case "14": intTop = 256; break;
			case "15": intTop = 289; break;
			case "16": intTop = 322; break;
			case "17": intTop = 355; break;
			case "18": intTop = 388; break;
			case "19": intTop = 421; break;
			case "20": intTop = 454; break;
		}
		
		intTop-=(intDiff*33);
		
		switch(arr[1])
		{
			case "00": intAddition = 0; break;
			case "15": intAddition = 8; break;
			case "30": intAddition = 16; break;
			case "45": intAddition = 24; break;
			default: intAddition = 0; break;
		}
		intTop+=intAddition;
		return intTop + "px"; 
	}
	
	function glob()
	{
		var intDiff = (intGlobalStart - 7);
		return  intDiff;
	}
	
	
	function showBaloon(intId)
	{
		var objDiv = document.getElementById("div" + intId);
		var obj = document.getElementById("balloon");
		var objWrapper = document.getElementById("calendarWrapper");
		var objParent = objDiv.parentNode;
		var parentX = objParent.offsetLeft;
		var parentY = objParent.offsetTop;
		
		var xPos = (parseInt(parentX) + parseInt(objDiv.style.left));
		var yPos = (parseInt(parentY) + parseInt(objDiv.style.top));
		
		
		if((objDiv.offsetLeft + parentX) < (getWindowSize().x/2) - objDiv.clientWidth) 
		{ 
			obj.className = "leftBalloon";
		}
	 	else 
		{ 
			obj.className = "rightBalloon";
			xPos -= 360;
		}
		
		obj.innerHTML = "<h4 class=\"" + arrItems[intId][3]+ "\">" + arrItems[intId][7] +"</h4><p>" + arrItems[intId][8] +"</p>";
		
		obj.style.zindex = 10;
		obj.style.left = xPos + "px";
		obj.style.top = (yPos - 140) + "px";
		obj.style.display = "block";
	}
	
	function putToFront()
	{
		var obj = document.getElementById("balloon");
		obj.style.zindex=1;
	}
	
	
	function getWindowSize()
	{
		var x,y;
		var objRet = new Object();
		if (self.innerHeight) // all except Explorer
		{
			x = self.innerWidth;
			y = self.innerHeight;
		}
		else if (document.documentElement && document.documentElement.clientHeight)
			// Explorer 6 Strict Mode
		{
			x = document.documentElement.clientWidth;
			y = document.documentElement.clientHeight;
		}
		else if (document.body) // other Explorers
		{
			x = document.body.clientWidth;
			y = document.body.clientHeight;
		}
		objRet.x = x;
		objRet.y = y;
		return objRet;
	}
	
	function addEvent(obj, type, fn) 
		{
			if (!document.getElementById)
				return;
			if (obj.addEventListener)
				obj.addEventListener(type, fn, false);
			else if (obj.attachEvent) 
			{
				obj["e"+type+fn] = fn;
				obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
				obj.attachEvent("on"+type, obj[type+fn]);
			}
		}


