var offsetx = 12;
var offsety =  8;

var gForm;
var gSelectedSessions;
var gValidDAY0;
var gValidDAY1;
var gValidDAY2;
var gFunctionSubmit;

if (navigator.userAgent.indexOf("Safari") > -1) {
	window.onload = init;
}

var ie5 = (document.getElementById && document.all); 
var ns6 = (document.getElementById && !document.all); 
var ua = navigator.userAgent.toLowerCase();
var isapple = (ua.indexOf('applewebkit') != -1 ? 1 : 0);

var NS6 = (navigator.appName=="Netscape" && (document.getElementById!=undefined));
var NS4 = (document.layers);
var IE  = (navigator.appName=="Microsoft Internet Explorer");

function initPlanning()
{
	var  lValue;
	gForm		  = document.getElementById('agenda');

	gSelectedSessions = getSessions(gForm);
	
	// Scrolls
	
	if (isNaN(lValue = parseInt(gForm["cartScrollPos"].value)) == false)
		document.getElementById('rightColumnContent').scrollTop = lValue;	
		
	if (isNaN(lValue = parseInt(gForm["agendaScrollPos"].value)) == false)		
		document.getElementById('centerColumnContent').scrollTop = lValue;	
	
	//Change Tab corresponding to selection in the agenda
	showTab(gForm["selectedDay"].value);
}

function switchClass(id)
{
	if(document.getElementById(id).className == "Dsession")
		document.getElementById(id).className = "Dselected_session";
	else
		document.getElementById(id).className = "Dsession";
}

function newelement(newid)
{ 
    if(document.createElement)
    { 
        var el = document.createElement('div'); 
        el.id = newid;     
        with(el.style)
        { 
            display = 'none';
            position = 'absolute';
        } 
        el.innerHTML = '&nbsp;'; 
        document.body.appendChild(el); 
    } 
} 

function getNodePosition(oNode){
		var x = 0;
		var y = 0;

		do {
			if(oNode.offsetLeft){ x += oNode.offsetLeft }
			if(oNode.offsetTop){ y += oNode.offsetTop }
		}	while((oNode = oNode.offsetParent) && !document.all) 

		return {x : x, y : y}
}

function getAgendaPosition(oNode){
	var x = 0;
	var y = 0;

	do {
			if(oNode.offsetLeft){ x += oNode.offsetLeft }
			if(oNode.offsetTop){ y += oNode.offsetTop }
		}	while((oNode = oNode.offsetParent)) 

		return {x : x, y : y}
}


function scrollToFirstSession(element)
{
	var rootTab = document.getElementById(element);
	var checkTags = Array();
	checkTags = rootTab.getElementsByTagName("INPUT");
	
	var sessions = Array();
	var firstSession;
	
	for (var i=0;i<checkTags.length;i++) {
		
		if(checkTags[i].type == "checkbox")
		{
			firstSession = checkTags[i];
			break;
		}
	}
		
	if(firstSession != null)
	{
		var oNode = firstSession.parentNode.parentNode.parentNode.parentNode.parentNode;
		oCoords = getAgendaPosition(oNode);	
		if(document.all)
			document.getElementById('centerColumnContent').scrollTop = parseInt(oCoords.y)-318-22;
		else
			document.getElementById('centerColumnContent').scrollTop = parseInt(oCoords.y)-318;
	}
}

function getmouseposition(e)
{
    if(document.getElementById)
    {
        var iebody=(document.compatMode && 
        	document.compatMode != 'BackCompat') ? 
        		document.documentElement : document.body;
        pagex = (isapple == 1 ? 0:(ie5)?iebody.scrollLeft:window.pageXOffset);
        pagey = (isapple == 1 ? 0:(ie5)?iebody.scrollTop:window.pageYOffset);
        mousex = (ie5)?event.x:(ns6)?clientX = e.clientX:false;
        mousey = (ie5)?event.y:(ns6)?clientY = e.clientY:false;

        var lixlpixel_tooltip = document.getElementById('tooltip');
        lixlpixel_tooltip.style.left = (mousex+pagex+offsetx) + 'px';
        lixlpixel_tooltip.style.top = (mousey+pagey+offsety) + 'px';
    }
}
	var targBox = "rightColumnContent";
	function init() {
	if (document.getElementById) {
		var atags = document.getElementsByTagName("A");
		for (var i=0;i<atags.length;i++) {
			var ca = atags[i];
			if (ca.href.indexOf("#") > -1) {
				ca.onclick = function() {
					//scrollDivToAnchor(this.href.split("#")[1]);
				}
			}
		}
	}
	}

function scrollDivToAnchor(a) {

	/*var b = document.getElementById(targBox);
	b.scrollTop = document.getElementById('cart_'+ a).offsetTop - b.offsetTop;*/
}

function showTab(tabid)
{
	switch(tabid)
	{
		default :
		case 'DAY0':
		if (gValidDAY0) document.getElementById('DAY0').innerHTML = '<img src="images/day0tabselected.jpg" width="157" height="30" border="0"/>';
		else			document.getElementById('DAY0').innerHTML = '<img src="images/day0tabselectedempty.jpg" width="157" height="30" border="0"/>';

		if (gValidDAY1) document.getElementById('DAY1').innerHTML = '<img src="images/day1tabunselected.jpg" width="157" height="30" border="0"/>';
		else			document.getElementById('DAY1').innerHTML = '<img src="images/day1tabunselectedempty.jpg" width="157" height="30" border="0"/>';
		
		if (gValidDAY2) document.getElementById('DAY2').innerHTML = '<img src="images/day2tabunselected.jpg" width="157" height="30" border="0"/>';
		else			document.getElementById('DAY2').innerHTML = '<img src="images/day2tabunselectedempty.jpg" width="157" height="30" border="0"/>';
		
		document.getElementById('DAY0').className = 'selectedTab';
		document.getElementById('DAY2').className = '';
		document.getElementById('DAY1').className = '';
		document.getElementById('DAY1AGENDA').style.display='none';
    	document.getElementById('DAY2AGENDA').style.display='none';
		document.getElementById('DAY0AGENDA').style.display='block';
		//scrollDivToAnchor('DAY0');
		scrollToFirstSession('DAY0AGENDA');
		gForm["selectedDay"].value = 'DAY0';
		break;
		
		case 'DAY1':
		if (gValidDAY0)  document.getElementById('DAY0').innerHTML = '<img src="images/day0tabunselected.jpg" width="157" height="30" border="0"/>';
		else			 document.getElementById('DAY0').innerHTML = '<img src="images/day0tabunselectedempty.jpg" width="157" height="30" border="0"/>';
		
		if (gValidDAY1)  document.getElementById('DAY1').innerHTML = '<img src="images/day1tabselected.jpg" width="157" height="30" border="0"/>';
		else			 document.getElementById('DAY1').innerHTML = '<img src="images/day1tabselectedempty.jpg" width="157" height="30" border="0"/>';
		
		if (gValidDAY2)  document.getElementById('DAY2').innerHTML = '<img src="images/day2tabunselected.jpg" width="157" height="30" border="0"/>';
		else			 document.getElementById('DAY2').innerHTML = '<img src="images/day2tabunselectedempty.jpg" width="157" height="30" border="0"/>';
		
		document.getElementById('DAY1').className = 'selectedMiddleTab';
		document.getElementById('DAY0').className = '';
		document.getElementById('DAY2').className = '';
		document.getElementById('DAY0AGENDA').style.display='none';
    	document.getElementById('DAY2AGENDA').style.display='none';
		document.getElementById('DAY1AGENDA').style.display='block';
		//scrollDivToAnchor('DAY1');
		scrollToFirstSession('DAY1AGENDA');
		gForm["selectedDay"].value = 'DAY1';
		break;
		
		case 'DAY2':
		if (gValidDAY0)  document.getElementById('DAY0').innerHTML = '<img src="images/day0tabunselected.jpg" width="157" height="30" border="0"/>';
		else			 document.getElementById('DAY0').innerHTML = '<img src="images/day0tabunselectedempty.jpg" width="157" height="30" border="0"/>';
		if (gValidDAY1)  document.getElementById('DAY1').innerHTML = '<img src="images/day1tabunselected.jpg" width="157" height="30" border="0"/>';
		else			 document.getElementById('DAY1').innerHTML = '<img src="images/day1tabunselectedempty.jpg" width="157" height="30" border="0"/>';
		if (gValidDAY2)  document.getElementById('DAY2').innerHTML = '<img src="images/day2tabselected.jpg" width="157" height="30" border="0"/>';
		else			 document.getElementById('DAY2').innerHTML = '<img src="images/day2tabselectedempty.jpg" width="157" height="30" border="0"/>';

		document.getElementById('DAY2').className = 'selectedTab';
		document.getElementById('DAY0').className = '';
		document.getElementById('DAY1').className = '';
		document.getElementById('DAY0AGENDA').style.display='none';
    	document.getElementById('DAY1AGENDA').style.display='none';
		document.getElementById('DAY2AGENDA').style.display='block';
		//scrollDivToAnchor('DAY2');
		scrollToFirstSession('DAY2AGENDA');
		gForm["selectedDay"].value = 'DAY2';
		break;
	}	
}

function getOffsetTop(element)
	{
		var offset = 0;
		if(document.all)
			offset = document.getElementById(element).offsetTop;
		else
			offset = document.getElementById(element).offsetTop - 49;
			
		return offset;
	}
	
	
function getSessions(element)
{
	var result = Array();
	
	for(i=0; i<element.length; i++)
	{
		if(element[i].type == "checkbox")
		{
			if(element[i].checked)
			{
				result.push(gForm[i].name);
			}
		}
	}
	return result;
}

function isModifiedSelection()
{
	var selectedSessions;
	var i1;
	
	if (gForm["saveupdates"].value == 'true')
	{ return true; }
	else
	{ 
		selectedSessions = getSessions(gForm);
		if (gSelectedSessions.length != selectedSessions.length) 
		{ return true; }
		else
		{
			for (i1 = 0 ; i1 < gSelectedSessions.length ;  i1++)
			{
				if (gSelectedSessions[i1] != selectedSessions[i1]) 
				{ return true; }
			}
		}
	}
	return false;
}

function saveModifiedStatusSelection()
{
	saveContextPlanning();
	
	if(isModifiedSelection())
		gForm["saveupdates"].value = 'true'; 
	else
		gForm["saveupdates"].value   = 'false';
}
	
function checkSelection(pInstruction)
{
	gFunctionSubmit = new Function(pInstruction);
	
	if(isModifiedSelection())
	{
		document.getElementById('confirmDialog').style.display = 'block';
		document.getElementById('confirmContent').style.display = 'block';
		fadeIn('confirmDialog',0,40);
		fadeIn('confirmContent',40,100);
	}
	else
	{
		gForm["saveupdates"].value = 'false';
		gFunctionSubmit();
	}
}

function saveContextPlanning()
{
	gForm["cartScrollPos"].value = document.getElementById('rightColumnContent').scrollTop;
	gForm["agendaScrollPos"].value = document.getElementById('centerColumnContent').scrollTop;
}
	
function submit_update()
{
	saveContextPlanning();
	gForm["saveupdates"].value = 'true';
	if (gFunctionSubmit != null)
		gFunctionSubmit();
}
	
function submit_noupdate()
{
	saveContextPlanning();
	gForm["saveupdates"].value = 'false';
	if (gFunctionSubmit != null)
		gFunctionSubmit();
}

function fadeIn(id,percent,max)
{
  var elem = GetLayer(id);

  if ( percent == null )
    percent = 0;

  setOpacity(elem,percent);
  if ( percent < max )
    setTimeout('fadeIn("'+id+'",'+(percent+10)+','+max+');',1);
  if ( percent == max)
  	changeDivStyle('help','display','inline');
}

function changeDivStyle(divName, what, to) {
  eval('GetLayerStyle("'+divName+'").'+what+'= "'+to+'"');
}

function setOpacity(elem,percent)
{
  elem.style.opacity = percent/100;
  elem.style.filter = "alpha(opacity="+percent+")";
}

function GetLayerStyle(layername)
{
  if (IE) {
    var layer = document.all[layername];
    return layer ? layer.style : null;
  }
  else {
    var layer = document.getElementById(layername);
    return layer ? layer.style : null;
  }
}

function GetLayer(layername)
{
  if(IE)     return document.all[layername];
  else return document.getElementById(layername);
}


function Tooltip(sTemplate, nDelay){
	var oTimer;var isActive = false;var sNameSpaceURI = "http://www.w3.org/1999/xhtml";
	if(!sTemplate){ sTemplate = "attr(tooltip)";}
	nDelay = false;
	nStringMaxLength = 5000;
	nMarginX = 10;
	nMarginY = 20;
	sContainerID = "tooltipcontainer";
	sClassName = "tooltip";

	var oContainer = document.getElementById(sContainerID);
	if(!oContainer){
		oContainer = document.createElementNS ? document.createElementNS(sNameSpaceURI, "div") : document.createElement("div");
		oContainer.setAttribute("id", sContainerID);
		oContainer.className = sClassName;
		oContainer.style.display = "none";
		document.getElementsByTagName("body").item(0).appendChild(oContainer);
	}

	this.addElements = function addElements(collNodes, sAttribute){
		
		var currentNode, sTitle;
		
		for(var i = 0; i < collNodes.length; i++){
			currentNode = collNodes[i];
			sTitle = currentNode.getAttribute(sAttribute);
			if(sTitle){
				currentNode.setAttribute("tooltip", sTitle);
				currentNode.removeAttribute(sAttribute);
				addEvent(currentNode, 'mouseover', show);
				addEvent(currentNode, 'mouseout', hide);
				addEvent(currentNode, 'focus', show);
				addEvent(currentNode, 'blur', hide);
			}
		}

	}
	function show(e){
		if(isActive){ hide(); }	var oNode = window.event ? window.event.srcElement : e.currentTarget;
		if(!oNode.getAttribute("tooltip")){ 
			while(oNode.parentNode){
				oNode = oNode.parentNode; // immediately goes to the parent, thus we can only have element nodes
				if(oNode.getAttribute("tooltip")){ break;	}
			}
		}

		var sOutput = parseTemplate(oNode);setContainerContent(sOutput);var oPosition = getPosition(e, oNode);oContainer.style.left = oPosition.x;oContainer.style.top = oPosition.y;if(nDelay){oTimer = setTimeout(function(){oContainer.style.display = "block";}, nDelay);} else {oContainer.style.display = "block";}
		isActive = true;window.event ? window.event.cancelBubble = true : e.stopPropagation();
	}
	
	function hide(){clearTimeout(oTimer);oContainer.style.display = "none";	removeContainerContent();isActive = false;}

	function setContainerContent(sOutput){
		sOutput = sOutput.replace(/&/g, "&amp;");
		if(document.createElementNS && window.DOMParser){
			var oXMLDoc = (new DOMParser()).parseFromString("<root xmlns=\""+sNameSpaceURI+"\">"+sOutput+"</root>", "text/xml");
			var oOutputNode = document.importNode(oXMLDoc.documentElement, true);
			var oChild = oOutputNode.firstChild;
			var nextChild;
			while(oChild){
				nextChild = oChild.nextSibling; // One's the child is appended, the nextSibling reference is gone
				oContainer.appendChild(oChild);
				oChild = nextChild;
			}
		} else {
			oContainer.innerHTML = sOutput;
		}
	}
	
	function removeContainerContent(){var oChild = oContainer.firstChild;var nextChild;	if(!oChild){ return; }while(oChild){nextChild = oChild.nextSibling;		oContainer.removeChild(oChild);oChild =  nextChild;}}
	
	function getPosition(e, oNode){
		var oViewport = getViewport();
		var oCoords;
		var commonEventInterface = window.event ? window.event : e;

		if(commonEventInterface.type == "focus"){
			oCoords = getNodePosition(oNode);	
			oCoords.x += nMarginX;
			oCoords.y += nMarginY;			
		} else {
			oCoords = { x : commonEventInterface.clientX + oViewport.x + nMarginX, y : commonEventInterface.clientY + oViewport.y + nMarginY};
		}

		oContainer.style.visiblity = "hidden"; 
		oContainer.style.display =  "block";
		var containerWidth = oContainer.offsetWidth;
		var containerHeight = oContainer.offsetHeight;
		oContainer.style.display = "none";
		oContainer.style.visiblity = "visible";

		if(oCoords.x + containerWidth + 10 >= oViewport.width + oViewport.x){
			oCoords.x = oViewport.width + oViewport.x - containerWidth - 10;
		}
		if(oCoords.y + containerHeight + 10 >= oViewport.height + oViewport.y){
			oCoords.y = oViewport.height + oViewport.y - containerHeight - oNode.offsetHeight - 10;
		}
		oCoords.x += "px";
		oCoords.y += "px";
		return oCoords;
	}

	function parseTemplate(oNode){
		var sAttribute, collOptionalAttributes;
		var oFound = {};
		var sResult = sTemplate;
		
		if(sResult.match(/content\(\)/)){
			sResult = sResult.replace(/content\(\)/g, getContentOfNode(oNode));
		}
		
		var collSearch = sResult.split(/attr\(/);
		for(var i = 1; i < collSearch.length; i++){
			sAttribute = collSearch[i].split(")")[0];
			oFound[sAttribute] = oNode.getAttribute(sAttribute);
			if(oFound[sAttribute] && oFound[sAttribute].length > nStringMaxLength){
				oFound[sAttribute] = oFound[sAttribute].substring(0, nStringMaxLength) + "...";
			}
		}
		
		var collOptional = sResult.split("?")
		for(var i = 1; i < collOptional.length; i += 2){
			collOptionalAttributes = collOptional[i].split("attr(");
			for(var j = 1; j < collOptionalAttributes.length; j++){
				sAttribute = collOptionalAttributes[j].split(")")[0];

				if(!oFound[sAttribute]){ sResult = sResult.replace(new RegExp("\\?[^\\?]*attr\\("+sAttribute+"\\)[^\\?]*\\?", "g"), "");	}
			}
		}
		sResult = sResult.replace(/\?/g, "");
		
		for(sAttribute in oFound){
			sResult = sResult.replace("attr\("+sAttribute+"\)", oFound[sAttribute]);
		}
		
		return sResult;
	}	
		
	function getContentOfNode(oNode){
		var sContent = "";
		var oSearch = oNode.firstChild;

		while(oSearch){
			if(oSearch.nodeType == 3){
				sContent += oSearch.nodeValue;
			} else if(oSearch.nodeType == 1 && oSearch.hasChildNodes){
				sContent += getContentOfNode(oSearch);
			}
			oSearch = oSearch.nextSibling
		}

		return sContent;
	}
	
	function getViewport(){
		var width = 0;
		var height = 0;
		var x = 0;
		var y = 0;
		
		if(document.documentElement && document.documentElement.clientWidth){
			width = document.documentElement.clientWidth;
			height = document.documentElement.clientHeight;
			x = document.documentElement.scrollLeft;
			y = document.documentElement.scrollTop;
		} else if(document.body && document.body.clientWidth){
			width = document.body.clientWidth;
			height = document.body.clientHeight;
			x = document.body.scrollLeft;
			y = document.body.scrollTop;
		}
		if(window.innerWidth){ 
			width = window.innerWidth - 18;
			height = window.innerHeight - 18;
		}
		
		if(window.pageXOffset){
			x = window.pageXOffset;
			y = window.pageYOffset;
		} else if(window.scrollX){
			x = window.scrollX;
			y = window.scrollY;
		}
		
		return {width : width, height : height, x : x, y : y };		
	}
}

function addEvent(obj, evType, fn){
	if(obj.addEventListener){
		obj.addEventListener(evType, fn, false); 
		return true;
	} else if (obj.attachEvent){
		var r = obj.attachEvent('on'+evType, fn);
		return r;
	} else {
		return false;
	}
}

Tooltip.autoCreation = function(){
	if(!document.getElementsByTagName){ return; }Tooltip.autoCreated = new Object();Tooltip.autoCreated.anchors = new Tooltip("<p class=\"titletext\">attr(tooltip)?</p>");Tooltip.autoCreated.anchors.addElements(document.getElementsByTagName("a"), "title");Tooltip.autoCreated.anchors.addElements(document.getElementsByTagName("img"), "title");}

addEvent(window, "load", Tooltip.autoCreation);