//*****************************************************************************
// Do not remove this notice.
//
// Copyright 2000 by Mike Hall.
// See http://www.brainjar.com for terms of use.

// Modified by Xavier Lawrence, 2005 Copyright Jahia Solutions
//*****************************************************************************

//----------------------------------------------------------------------------
// Code to determine the browser and version.
//----------------------------------------------------------------------------

function Browser() {

    var ua, s, i;

    this.isIE = false;
    // Internet Explorer
    this.isNS = false;
    // Netscape
    this.version = null;

    ua = navigator.userAgent;

    s = "MSIE";
    if ((i = ua.indexOf(s)) >= 0) {
        this.isIE = true;
        this.version = parseFloat(ua.substr(i + s.length));
        return;
    }

    s = "Netscape6/";
    if ((i = ua.indexOf(s)) >= 0) {
        this.isNS = true;
        this.version = parseFloat(ua.substr(i + s.length));
        return;
    }

    // Treat any other "Gecko" browser as NS 6.1.

    s = "Gecko";
    if ((i = ua.indexOf(s)) >= 0) {
        this.isNS = true;
        this.version = 6.1;
    }
}

var browser = new Browser();

//----------------------------------------------------------------------------
// Code for handling the menu bar and active button.
//----------------------------------------------------------------------------

var activeButton = null;

// AJAX variables
var req;

// Capture mouse clicks on the page so any active button can be
// deactivated.

if (browser.isIE)
    document.onmousedown = pageMousedown;
else
    document.addEventListener("mousedown", pageMousedown, true);

function pageMousedown(event) {

    var el;

    // If there is no active button, exit.

    if (activeButton == null)
        return;

    // Find the element that was clicked on.

    if (browser.isIE)
        el = window.event.srcElement;
    else
        el = (event.target.tagName ? event.target : event.target.parentNode);

    // If the active button was clicked on, exit.

    if (el == activeButton)
        return;

    // If the element is not part of a menu, reset and clear the active
    // button.

    if (getContainerWith(el, "DIV", "menu") == null) {
        resetButton(activeButton);
        activeButton = null;
    }
}

// Opens up the menu of the given id
function buttonClick(menuId) {
    var button = getObjectById("button_" + menuId);

    // Blur focus from the link to remove that annoying outline.
    button.blur();

    // Associate the named menu to this button if not already done.
    // Additionally, initialize menu display.
    if (button.menu == null) {
        button.menu = getObjectById(menuId);
        if (button.menu.isInitialized == null) {
            menuInit(button.menu);
        }
    }

    // Reset the currently active button, if any.

    if (activeButton != null) {
        resetButton(activeButton);
    }

    // Activate this button, unless it was the currently active one.

    if (button != activeButton) {
        depressButton(button);
        activeButton = button;
    } else {
        activeButton = null;
    }
}

// Switches menu if the user's mouse goes on another menu
function buttonMouseover(event, menuId) {
    var button;

    // Find the target button element.
    if (browser.isIE) {
        button = window.event.srcElement;
    } else {
        button = event.currentTarget;
    }

    // If any other button menu is active, make this one active instead.
    if (activeButton != null && activeButton != button) {
        buttonClick(menuId);
    }
}

function depressButton(button) {
    var x, y;

    // Update the button's style class to make it look like it's
    // depressed.

    button.className += " menuButtonActive";

    // Position the associated drop down menu under the button and
    // show it.

    x = getPageOffsetLeft(button);
    y = getPageOffsetTop(button) + button.offsetHeight;

    // For IE, adjust position.

    if (browser.isIE) {
        x += button.offsetParent.clientLeft;
        y += button.offsetParent.clientTop;
    }

    button.menu.style.left = x + "px";
    button.menu.style.top = y + "px";
    button.menu.style.visibility = "visible";
}

function resetButton(button) {

    // Restore the button's style class.

    removeClassName(button, "menuButtonActive");

    // Hide the button's menu, first closing any sub menus.

    if (button.menu != null) {
        closeSubMenu(button.menu);
        button.menu.style.visibility = "hidden";
    }
}

//----------------------------------------------------------------------------
// Code to handle the menus and sub menus.
//----------------------------------------------------------------------------

function menuMouseover(event) {

    var menu;

    // Find the target menu element.

    if (browser.isIE)
        menu = getContainerWith(window.event.srcElement, "DIV", "menu");
    else
        menu = event.currentTarget;

    // Close any active sub menu.

    if (menu.activeItem != null)
        closeSubMenu(menu);
}

function menuItemMouseover(event, menuId) {

    var item, menu, x, y;

    // Find the target item element and its parent menu element.

    if (browser.isIE)
        item = getContainerWith(window.event.srcElement, "A", "menuItem");
    else
        item = event.currentTarget;
    menu = getContainerWith(item, "DIV", "menu");

    // Close any active sub menu and mark this one as active.

    if (menu.activeItem != null)
        closeSubMenu(menu);
    menu.activeItem = item;

    // Highlight the item element.

    item.className += " menuItemHighlight";

    // Initialize the sub menu, if not already done.

    if (item.subMenu == null) {
        item.subMenu = document.getElementById(menuId);
        if (item.subMenu.isInitialized == null)
            menuInit(item.subMenu);
    }

    // Get position for submenu based on the menu item.

    x = getPageOffsetLeft(item) + item.offsetWidth;
    y = getPageOffsetTop(item);

    // Adjust position to fit in view.

    var maxX, maxY;

    if (browser.isNS) {
        maxX = window.scrollX + window.innerWidth;
        maxY = window.scrollY + window.innerHeight;
    }
    if (browser.isIE) {
        maxX = (document.documentElement.scrollLeft != 0 ? document.documentElement.scrollLeft    : document.body.scrollLeft)
                + (document.documentElement.clientWidth != 0 ? document.documentElement.clientWidth   : document.body.clientWidth);
        maxY = (document.documentElement.scrollTop != 0 ? document.documentElement.scrollTop    : document.body.scrollTop)
                + (document.documentElement.clientHeight != 0 ? document.documentElement.clientHeight : document.body.clientHeight);
    }
    maxX -= item.subMenu.offsetWidth;
    maxY -= item.subMenu.offsetHeight;

    if (x > maxX)
        x = Math.max(0, x - item.offsetWidth - item.subMenu.offsetWidth
                + (menu.offsetWidth - item.offsetWidth));
    y = Math.max(0, Math.min(y, maxY));

    // Position and show it.

    item.subMenu.style.left = x + "px";
    item.subMenu.style.top = y + "px";
    item.subMenu.style.visibility = "visible";

    // Stop the event from bubbling.

    if (browser.isIE)
        window.event.cancelBubble = true;
    else
        event.stopPropagation();
}

function closeSubMenu(menu) {

    if (menu == null || menu.activeItem == null)
        return;

    // Recursively close any sub menus.

    if (menu.activeItem.subMenu != null) {
        closeSubMenu(menu.activeItem.subMenu);
        menu.activeItem.subMenu.style.visibility = "hidden";
        menu.activeItem.subMenu = null;
    }
    removeClassName(menu.activeItem, "menuItemHighlight");
    menu.activeItem = null;
}

//----------------------------------------------------------------------------
// Code to initialize menus.
//----------------------------------------------------------------------------

function menuInit(menu) {

    var itemList, spanList;
    var textEl, arrowEl;
    var itemWidth;
    var w, dw;
    var i, j;

    // For IE, replace arrow characters.

    if (browser.isIE) {
        menu.style.lineHeight = "2.5ex";
        spanList = menu.getElementsByTagName("SPAN");
        for (i = 0; i < spanList.length; i++)
            if (hasClassName(spanList[i], "menuItemArrow")) {
                spanList[i].style.fontFamily = "Webdings";
                spanList[i].firstChild.nodeValue = "4";
            }
    }

    // Find the width of a menu item.

    itemList = menu.getElementsByTagName("A");
    if (itemList.length > 0)
        itemWidth = itemList[0].offsetWidth;
    else
        return;

    // For items with arrows, add padding to item text to make the
    // arrows flush right.

    for (i = 0; i < itemList.length; i++) {
        spanList = itemList[i].getElementsByTagName("SPAN");
        textEl = null;
        arrowEl = null;
        for (j = 0; j < spanList.length; j++) {
            if (hasClassName(spanList[j], "menuItemText"))
                textEl = spanList[j];
            if (hasClassName(spanList[j], "menuItemArrow"))
                arrowEl = spanList[j];
        }
        if (textEl != null && arrowEl != null)
            textEl.style.paddingRight = (itemWidth
                    - (textEl.offsetWidth + arrowEl.offsetWidth)) + "px";
    }

    // Fix IE hover problem by setting an explicit width on first item of
    // the menu.

    if (browser.isIE) {
        w = itemList[0].offsetWidth;
        itemList[0].style.width = w + "px";
        dw = itemList[0].offsetWidth - w;
        w -= dw;
        itemList[0].style.width = w + "px";
    }

    // Mark menu as initialized.

    menu.isInitialized = true;
}

//----------------------------------------------------------------------------
// General utility functions.
//----------------------------------------------------------------------------

function getContainerWith(node, tagName, className) {

    // Starting with the given node, find the nearest containing element
    // with the specified tag name and style class.

    while (node != null) {
        if (node.tagName != null && node.tagName == tagName &&
            hasClassName(node, className))
            return node;
        node = node.parentNode;
    }

    return node;
}

function hasClassName(el, name) {

    var i, list;

    // Return true if the given element currently has the given class
    // name.

    list = el.className.split(" ");
    for (i = 0; i < list.length; i++)
        if (list[i] == name)
            return true;

    return false;
}

function removeClassName(el, name) {

    var i, curList, newList;

    if (el.className == null)
        return;

    // Remove the given class name from the element's className property.

    newList = new Array();
    curList = el.className.split(" ");
    for (i = 0; i < curList.length; i++)
        if (curList[i] != name) {
            // Workaround to replace the push method.
            var _curList = new Array(curList[i]);
            newList.concat(_curList);
            // Comment this line because not supported by IE5.0
            //newList.push(curList[i]);
        }
    el.className = newList.join(" ");
}

function getPageOffsetLeft(el) {

    var x;

    // Return the x coordinate of an element relative to the page.

    x = el.offsetLeft;
    if (el.offsetParent != null)
        x += getPageOffsetLeft(el.offsetParent);

    return x;
}

function getPageOffsetTop(el) {

    var y;

    // Return the x coordinate of an element relative to the page.

    y = el.offsetTop;
    if (el.offsetParent != null)
        y += getPageOffsetTop(el.offsetParent);

    return y;
}

// Check the browser for DOM manipulation
function checkBrowser() {
    this.ver = navigator.appVersion;
    this.dom = document.getElementById?1:0;
    this.ie6 = (this.ver.indexOf("MSIE 6") > -1 && this.dom)?1:0;
    this.ie55 = ((this.ver.indexOf("MSIE 5.5") > -1 || this.ie6) && this.dom)?1:0;
    this.ie5 = ((this.ver.indexOf("MSIE 5") > -1 || this.ie5 || this.ie6) && this.dom)?1:0;
    this.ie4 = (document.all && !this.dom)?1:0;
    this.ns5 = (this.dom && parseInt(this.ver) >= 5) ?1:0;
    this.ns4 = (document.layers && !this.dom)?1:0;
    this.ie4plus = (this.ie6 || this.ie5 || this.ie4);
    this.ie5plus = (this.ie6 || this.ie5)
    this.bw = (this.ie6 || this.ie5 || this.ie4 || this.ns4 || this.ns5);
    return this;
}

bw = new checkBrowser();

// Get an Object contained in a DOM document by its ID attribute
function getObjectById(ID) {
    var obj;
    if (bw.dom)
        return document.getElementById(ID);
    else if (bw.ie4)
        return document.all(ID);
    else
        alert("Error: Your browser version is not supported. Please upgrade...");
    return null;
}

// Returns an array of values. The delimiter is the ',' character
function getNodeValues(content, nodeName) {
    var tag = "<" + nodeName + ">";
    var start = content.indexOf(tag);
    var end = content.indexOf("</" + nodeName + ">");

    if (start < end) {
        var values = content.substring(start + tag.length, end);
        return values.split(";;");
    } else {
        return new Array (0);
    }
}

// Returns the value of an XML tag
function getNodeValue(content, nodeName) {
    var tag = "<" + nodeName + ">";
    var start = content.indexOf(tag);
    var end = content.indexOf("</" + nodeName + ">");

    if (start < end) {
        return content.substring(start + tag.length, end);
    } else {
        return null;
    }
}

// AJAX based function to get all Actions to fill up the Action menu
function getActionMenu(context, objectType, objectKey, definitionID, parentID, pageID, domID) {
    document.body.style.cursor = "wait";
    try {
        // correct values are "POST" or "GET" (HTTP methods).
        var method = "POST" ;
        var data = "key=" + objectKey + "&type=" + objectType +
                   "&def=" + definitionID + "&parent=" + parentID + "&domid=" + domID +
                   "&params=/op/edit/pid/" + pageID;

        var url = context + "/ajaxaction/GetMenuItems";

        if (method == "GET") {
            url += "?" + data;
            data = null;
        }

        // Create new XMLHttpRequest request
        if (window.XMLHttpRequest) {
            req = new XMLHttpRequest ();

        } else if (window.ActiveXObject) {
            req = new ActiveXObject ("Microsoft.XMLHTTP");

        } else {
            alert("Error: Your Browser does not support XMLHTTPRequests, please upgrade...");
            return;
        }

        req.open(method, url, true);

        req.onreadystatechange = function () {
            buildActionMenu();
        }

        if (method == "POST") {
            req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        }
        req.send(data);

    } catch (e) {
        alert("Exception sending the Request: " + e);
    }
}

// Build the Action Menu
function buildActionMenu() {
    var readyState = req.readyState;
    if (req.readyState == 4) {
        // alert ("resp: " + req.responseText);
        if (req.status == 200) {
            try {
                var response = req.responseText;
                var uniqueID = getNodeValue(response, "domid");

                var methods = getNodeValues(response, "method");
                var launchers = getNodeValues(response, "launcher");
                var images = getNodeValues(response, "image");

                var fieldset = getNodeValue(response, "fieldset");
                updateFieldSet(uniqueID, fieldset);

                addActions(uniqueID, methods, launchers, images);

                // changeURL(uniqueID);

                buttonClick(uniqueID);

            } catch (e) {
                alert("Exception building Action Menu: " + e);
            }

        } else {
            alert("There was a problem processing the request. Status: " +
                  req.status + ", msg: " + req.statusText);
        }
        document.body.style.cursor = "default";
    }
}

// Changes the default grey border. Use in case the object is locked for example
function updateFieldSet(id, param) {
    // alert ("Updating fieldSet for " + id + ", param = " + param);
    if (param == null) {
        return;
    }

    var setID = "fieldset_" + id;
    var setElem = getObjectById(setID);

    var content;
    if (param == "complete") {
        content = "completeLocked";

    } else if (param == "partial") {
        content = "partialLocked";

    } else {
        return;
    }

    setElem.className = content;
}

// Changes the href value of the given element
function changeURL(id) {
    var button = getObjectById("button_" + id);
    button.href = "javascript:buttonClick('" + id + "');";
}

// Adds the Actions to the action menu
function addActions(id, methods, launchers, images) {
    var menuDiv = getObjectById(id);
    var content = "\n";

    var i;
    for (i = 0; i < methods.length-1; i++) {
       //alert("i="+i+methods[i])

       if(methods[i]=="copies"){

            //specific code to display the list of pickers
                var parts=launchers[i].split(",")
        p=false
        if(parts.length>1) p=parts[1]

                content +="<a class=\"menuItem\" href=\""+parts[3]+"\" title=\"id:"+parts[0]+"\" target=\"_blank\"><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"+parts[2]+"</i></a>"
            } else {
                content += printLauncher(launchers[i]) + printImage(images[i]) + printMethod(methods[i]);
             }

    }
    menuDiv.innerHTML = content;
}

// Returns a String for the Action Launcher URI
function printLauncher(launcher) {
    return "   <a class=\"menuItem\" href=\"javascript:" + launcher + "\">\n";
}

// Returns a String for the Action Image
function printImage(imageName) {
    return "      <img src=\"" + imageName + "\" alt=\"\" border=\"0\" />&nbsp;";
}

// Returns a String for the Action method name
function printMethod(methodName) {
    return methodName + "\n   </a>\n";
}

function clipboard(context, objectKey, op, pageID) {
    document.body.style.cursor = "wait";
    try {
        // correct values are "POST" or "GET" (HTTP methods).
        var method = "POST" ;
        var data = "key=" + objectKey + "&cop=" + op;
        var url = context + "/Jahia/op/edit/engineName/clipboard/pid/" + pageID ;

        if (method == "GET") {
            url += "?" + data;
            data = null;
        }

        // Create new XMLHttpRequest request
        if (window.XMLHttpRequest) {
            req = new XMLHttpRequest ();

        } else if (window.ActiveXObject) {
            req = new ActiveXObject ("Microsoft.XMLHTTP");

        } else {
            alert("Error: Your Browser does not support XMLHTTPRequests, please upgrade...");
            return;
        }

        req.open(method, url, true);

        if (op == "paste") {
            req.onreadystatechange = function () {
                if (req.readyState == 4) {
                    document.body.style.cursor = "default";
                    window.location.reload();
                }
            }
        } else {
            req.onreadystatechange = function () {
                if (req.readyState == 4) {
                    //copy
                    myurl = "http://" + document.location.host + "/jahia/jsp/jahia/engines/images/clipboard_next.png";
                    myclip = document.getElementById('clipboard');
                    myclip.src = myurl;
                    myclip.alt = "clipboard:" + objectKey;
                    //window.location.reload();
                    document.body.style.cursor = "default";
                }
            }
        }

        if (method == "POST") {
            req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        }
        req.send(data);
    } catch (e) {
        alert("Exception sending the Request: " + e);
    }
}

function getWorkflowState(context, key, pid) {
    try {
        // correct values are "POST" or "GET" (HTTP methods).
        var method = "POST" ;
        var data = "key=" + key + "&params=/op/edit/pid/" + pid;

        var url = context + "/ajaxaction/GetWorkflowState";

        if (method == "GET") {
            url += "?" + data;
            data = null;
        }

        // Create new XMLHttpRequest request
        if (window.XMLHttpRequest) {
            req = new XMLHttpRequest ();

        } else if (window.ActiveXObject) {
            req = new ActiveXObject ("Microsoft.XMLHTTP");

        } else {
            alert("Error: Your Browser does not support XMLHTTPRequests, please upgrade...");
            return;
        }

        req.open(method, url, true);

        req.onreadystatechange = function () {
            changeIcone();
        }

        if (method == "POST") {
            req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        }
        req.send(data);

    } catch (e) {
        alert("Exception sending the Request: " + e);
    }
}

function changeIcone() {
    var readyState = req.readyState;
    if (req.readyState == 4) {
        // alert ("resp: " + req.responseText);
        if (req.status == 200) {
            try {
                var response = req.responseText;
                var objectKey = getNodeValue(response, "key");
                var icone = getNodeValue(response, "stateIcone");

                var elem = getObjectById("img_" + objectKey);
                elem.src = icone;

            } catch (e) {
                alert("Exception changing Icone: " + e);
            }

        } else {
            alert("There was a problem processing the request. Status: " +
                  req.status + ", msg: " + req.statusText);
        }
    }
}

function readCookie(name){
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for (var i = 0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ')
            c = c.substring(1, c.length);
        if (c.indexOf(nameEQ) == 0)
            return c.substring(nameEQ.length, c.length);
    }
    return null;
}

var randomTimeoutSwitch = null;

var currentSplash = null;
function hideCurrentSplash(){
	try{
		if(currentSplash != null){
			var currentItem = splashImageList[currentSplash];
			document.getElementById("splashContent" + currentItem.id).style.display = "none";
		}
	} catch (e) {
	}

}

function switchSplashPrevious(){

	hideCurrentSplash();
	try{
		if(currentSplash == null){
			currentSplash = 0;
		}
		currentSplash--;
		if(currentSplash < 0){
			currentSplash = splashImageList.length -1;
		}
		var item = splashImageList[currentSplash];
		document.getElementById("splashContent" + item.id).style.display = "block";
		document.getElementById("mainSplashImage").src = item.image;
	} catch (e) {
	}
	try{
    window.clearTimeout(randomTimeoutSwitch);
	} catch (e){
	}
}

function switchSplashNext(){
	hideCurrentSplash();
	try{
		if(currentSplash == null){
			currentSplash = 0;
		}
		currentSplash++;
		if(currentSplash >= splashImageList.length){
			currentSplash = 0;
		}
		var item = splashImageList[currentSplash];
		document.getElementById("splashContent" + item.id).style.display = "block";
		document.getElementById("mainSplashImage").src = item.image;
	} catch (e) {
	}
	try{
    window.clearTimeout(randomTimeoutSwitch);
  } catch (e){
  }
}

function switchSplashRandom(){
	hideCurrentSplash();
	try{
		var core = 0;
		var ran = Math.random() * splashImageList.length;
		core = Math.floor(ran);
		currentSplash = core;

		var item = splashImageList[core];
		document.getElementById("splashContent" + item.id).style.display = "block";
		document.getElementById("mainSplashImage").src = item.image;
	} catch (e) {
	}
  randomTimeoutSwitch = window.setTimeout("switchSplashRandom()", 4000);
}

function splashImageClick(){
	try{
		if(currentSplash != null){
			var currentItem = splashImageList[currentSplash];
			document.location.target='_blank';
			// blank.location=currentItem.url;
			document.location.href = currentItem.url;
		}
	} catch (e) {
	}
}
var form = document.jahiapageform1;
if(typeof form=="undefined"){
	form = document.jahiapageform;
}
var textSearch = null;
if(typeof form!="undefined"){
	form.onsubmit=formatSearchTitle;
}
function formatSearchTitle(){
	var theform = document.jahiapageform1;
	if(typeof theform=="undefined"){
		theform = document.jahiapageform;
	}
	textSearch = theform.title;
	textSearch.value = textSearch.value.replace(/\b(a|an|and|at|as|for|in|of|on|the|to|with)\b/gi," ").replace(/\s{2,}/g," ").replace(/(^\s)/,"").replace(/\s$/,"");
}
function addClassName(element,className){
    element=(typeof element).toLowerCase()=="string"?document.getElemenById(element):element;
    className=className.replace(/^\s+|\s+$/g,"");
    element.className+=" "+className;
};
function removeClassNames(element,classNames){
    element=(typeof element).toLowerCase()=="string"?document.getElemenById(element):element;
    var stringPatern = " ?(" + classNames.join("|") + ")";
    var reg = new RegExp(stringPatern,"gi");
    element.className=element.className.replace(reg,"");
}
/**
 * need jquery library
 */
$(document).ready(function() {
	var i = 0;
	if($("a.fgroup"+i)!=null&&$("a.fgroup"+i).length){
		while($("a.fgroup"+i)!=null){
			$("a.fgroup"+i).fancybox({
				 'zoomOpacity' : true,
				 'overlayShow' : true,
				 'zoomSpeedIn' : 700,
				 'zoomSpeedOut' : 700
			 });
			 if(i>5){
				break;
			 }
			 i++;
		}
	}
	if($('a.mdg-map-gal')!=null&&$('a.mdg-map-gal').length){
		$('a.mdg-map-gal').fancybox({
			'zoomOpacity' : true,
			'overlayShow' : true,
			'zoomSpeedIn' : 700,
			'zoomSpeedOut' : 700
		});
	}
});
/*
 * sert à faire fonctionner le timeline qui n'apparaît que sur une seule page dans le site
 */
var timeLine = null;
$(document).ready(function() {
	var listaUl = document.getElementById("timeYear");
	if(listaUl==null){
		return;
	}
	timeLine = new TimeLine(listaUl,"timeWindow");
});
function TimeLine(timeLineContainer,contentContainer){
	this.timeLineContainer=typeof timeLineContainer=="string"?document.getElementById(timeLineContainer):timeLineContainer;
	this.contentContainer=typeof contentContainer=="string"?document.getElementById(contentContainer):contentContainer;
	this.timeLineCollection = timeLineContainer.getElementsByTagName("a");
	this.timeLineContentCollection = [];
	var divContentCol = this.contentContainer.getElementsByTagName("div");
	var currentIndex;
	for(var i=0;i<divContentCol.length;i++){
		if(divContentCol[i].className!="timeContent"){
			continue;
		}
		this.timeLineContentCollection.push(divContentCol[i]);
		currentIndex=this.timeLineContentCollection.length-1;
		this.timeLineCollection[currentIndex].relatedContainer=this.timeLineContentCollection[currentIndex];
		this.timeLineCollection[currentIndex].me=this;
		this.timeLineCollection[currentIndex].onclick=this.onTimeLineClick;
	}
	addClassName(this.timeLineContentCollection[0],"show");
	addClassName(this.timeLineCollection[0],"selected");
};
TimeLine.prototype.onTimeLineClick=function(){
	this.me.resetTimeLineState();
	addClassName(this.relatedContainer,"show");
	addClassName(this,"selected");
};
TimeLine.prototype.resetTimeLineState=function(){
	for(var i=0;i<this.timeLineCollection.length;i++){
		removeClassNames(this.timeLineContentCollection[i],["show"]);
		removeClassNames(this.timeLineCollection[i],["selected"]);
	}
};
/*
 *
 * ----------------------------------------     supplies template script(start)       -------------------------------------------------------
 */

/*
 * #############   function to setup stackPanel in supplies temlates   ###############
 */
(function($){
	$.fn.accordeon = function(options) {
		var _context = this;
		this.lastOpenedCollapsibleSection = null;
		this.defaults = {
			onclick : function(event,sectionIndex,title,openState){},
			sectionClassNameOpen : null,
			multiSectionsOpen : false
		};
		this.opts = $.extend(this.defaults, options);
		this.animateComponent=function(component){
			component.animate({
				"height":'toggle',
				"opacity":'toggle'
			}).queue(function(){
				$(component[0].openCloseButton).toggleClass('close');
				$(this).dequeue();
			});
		};
		this.collapsibleCollection=[];
		return this.each(function() {
			$(this).find('.accordeon-section').each(function(index){
				var openCloseButton = $(this).find('.open-close');
				var section = $(this);
				section[0].relatedButton=openCloseButton;
				var title=$(this).attr('title');
				var collapseSec = section.find('.collapsible-content');
				_context.collapsibleCollection[index]=collapseSec;
				collapseSec[0].section=this;
				openCloseButton[0].relatedCollapsibleSection=collapseSec[0];
				collapseSec[0].openCloseButton=openCloseButton[0];
				collapseSec[0].openState=false;
				openCloseButton.click(function(event){
					if(_context.opts.onclick(event,index,title,openCloseButton[0].relatedCollapsibleSection.openState)!==false){
						if(_context.lastOpenedCollapsibleSection!=null&&!openCloseButton[0].relatedCollapsibleSection.openState&&_context.lastOpenedCollapsibleSection.openState&&!_context.opts.multiSectionsOpen){
							_context.animateComponent($(_context.lastOpenedCollapsibleSection));
							//$(_context.lastOpenedCollapsibleSection.openCloseButton).toggleClass('close');
							_context.lastOpenedCollapsibleSection.openState=false;
							if(_context.opts.sectionClassNameOpen!=null){
								$(_context.lastOpenedCollapsibleSection.section).removeClass(_context.opts.sectionClassNameOpen);
							}
						}
						_context.animateComponent($(this.relatedCollapsibleSection));
						
						if(_context.opts.sectionClassNameOpen!=null){
							if(this.relatedCollapsibleSection.openState){
								section.removeClass(_context.opts.sectionClassNameOpen);
							}else{
								section.addClass(_context.opts.sectionClassNameOpen);
							}
						}
						openCloseButton[0].relatedCollapsibleSection.openState=!openCloseButton[0].relatedCollapsibleSection.openState;
						_context.lastOpenedCollapsibleSection=openCloseButton[0].relatedCollapsibleSection;
					}
				});
				if(collapseSec.hasClass('opened')){
					openCloseButton.trigger('click');
				}
			});
		});
	};
})(jQuery);
/*
 *
 * ----------------------------------------     supplies template script(end)       -------------------------------------------------------
 */
