var navigation =  new Object();
var docname = '';
navigation.image = new Object();
navigation.imageCache = new Object();
navigation.divNesting = new Array();
navigation.enterDiv = function(divName) {
        navigation.divNesting = navigation.divNesting.concat(divName);
        navigation.setCurrentDocument();
}
navigation.leaveDiv = function() {
        navigation.divNesting = navigation.divNesting.slice(0,navigation.divNesting.length - 1);
        navigation.setCurrentDocument();
}
navigation.nsSetCurrentDocument = function() {
        var doc = document;
        for (var index in navigation.divNesting) {
                docname = doc[navigation.divNesting[index]].id;
                doc = doc[navigation.divNesting[index]].document;
        }
        navigation.currentDocument = doc;
}
navigation.ieSetCurrentDocument = function() {
        navigation.currentDocument = document.all;
}
navigation.setCurrentDocument = (browser.ns ? navigation.nsSetCurrentDocument : navigation.ieSetCurrentDocument);
navigation.setCurrentDocument();
function replaceSlash(regexString){
        //This fucntion replace a forward slash with a character class to fix a regexp
        //bug in IE 4.0 - PJ 19/02/2002
        regexString = regexString.replace(/[\/]{1}/g,"[\\/]{1}");
        return regexString;
        }
navigation.site = function(href) {
        var siteroot = replaceSlash(navigation.siteRoot);
        var exp = "^" + siteroot + "[\\/]{1}([^\\/]*)";
        var regex = new RegExp(exp);
        var match = regex.exec(href);
        //var match = /^\/([^\/]*)/.exec(href);
        return match && (navigation.currentSite == match[1]);
}
navigation.primary = function(href) {
        var siteroot = replaceSlash(navigation.siteRoot);
        var exp = "^" + siteroot+"[\\/]{1}([^\\/]*[\\/]{1}[^\\/]*)";
        var regex = new RegExp(exp);
        var match = regex.exec(href);
        
        //var match = /^\/([^\/]*\/[^\/]*)/.exec(href);
        return match && (navigation.currentPrimarySection == match[1]);
}
navigation.secondary = function(href) {
        var siteroot = replaceSlash(navigation.siteRoot);
        var exp = "^" + siteroot + "[\\/]{1}([^\\/]*[\\/]{1}[^\\/]*[\\/]{1}[^\\/]*)";
        var regex = new RegExp(exp);
        var match = regex.exec(href);
        //var match = /^\/([^\/]*\/[^\/]*\/[^\/]*)/.exec(href);
        return match && (navigation.currentSecondarySection == match[1]);
}
navigation.page = function(href) {
        return (navigation.currentPage == href);
}
navigation.never = function(href)
{
        return(false);
}
navigation.cacheImage = function(src) {
        if (!navigation.imageCache[src]) {
                navigation.imageCache[src] = new Image();
                navigation.imageCache[src].src = src;
        }
}
navigation.createImage = function(id) {
        if (!navigation.image[id]) navigation.image[id] = new Object();
        if (!navigation.image[id].on) navigation.image[id].on = '';
        if (!navigation.image[id].off) navigation.image[id].off = '';
        if (!navigation.image[id].state) navigation.image[id].state = 'off';
        if (!navigation.image[id].separators) navigation.image[id].separators = new Object();
        if (!navigation.image[id].htmlElement) navigation.image[id].htmlElement = navigation.getHtmlElement(id);
}
navigation.setupImage = function(id,onSrc,offSrc,params,highlightWhen) {
        navigation.createImage(id);
        navigation.image[id].on = onSrc;
        navigation.cacheImage(onSrc);
        if (navigation[highlightWhen](params)) {
                navigation.image[id].noSwitch = true;
                navigation.image[id].state = 'on';
                navigation.image[id].off = onSrc;
                navigation.setImage(id,onSrc);
                for (var separatorId in navigation.image[id].separators) {
                        navigation.setImage(separatorId,navigation.getSeparatorSrc(separatorId));
                }
        } else {
                navigation.cacheImage(offSrc);
                navigation.image[id].state = 'off';
                navigation.image[id].off = offSrc;
        }
}
navigation.onInit = function() {
        for (var id in navigation.onInitChange) {
                navigation.setImage(id,navigation.onInitChange[id]);
        }
}
navigation.connect = function(leftSeparatorId,imageId,rightSeparatorId) {
        navigation.createImage(imageId);
        if (leftSeparatorId) {
                navigation.image[leftSeparatorId].right = imageId;
                navigation.image[imageId].separators[leftSeparatorId] = '';
        }
        if (rightSeparatorId) {
                navigation.image[rightSeparatorId].left = imageId;
                navigation.image[imageId].separators[rightSeparatorId] = 'scs_5';
        }
}
navigation.getHtmlElement = function(id) {
        return navigation.currentDocument[id];
}
navigation.createSeparator = function(separatorId,pattern) {
        var separator = navigation.image[separatorId];
        if (!separator) {
                separator = new Object();
                navigation.image[separatorId] = separator;
                navigation.image[separatorId].htmlElement = navigation.getHtmlElement(separatorId);
        }
        separator.pattern = pattern;
        var states = {'':'','on':'','off':''};
        for (var leftState in states) {
                for (var rightState in states) {

                        //Ignore ''pattern'' never used
                        if (leftState != '' && rightState != '')
                                navigation.cacheImage(navigation.makeSeparatorSrc(pattern,leftState,rightState));

                }
        }
}
navigation.createSeparators = function(separators,pattern) {
        for (var index in separators) {
                navigation.createSeparator(separators[index],pattern);
        }
}
navigation.getSeparatorSrc = function(id)
{
        var separator = navigation.image[id];
        var leftState = '';
        var rightState = '';
        if (separator.left) {
                leftState = navigation.image[separator.left].state;
        }
        if (separator.right) {
                rightState = navigation.image[separator.right].state;
        }
        return navigation.makeSeparatorSrc(separator.pattern,leftState,rightState);
}
navigation.makeSeparatorSrc = function(pattern,leftState,rightState) {
        var leftPos = pattern.indexOf('!',0);
        var rightPos = pattern.lastIndexOf('!');
        return(
                pattern.substring(0,leftPos) +
                leftState +
                pattern.substring(leftPos+1,rightPos) +
                rightState +
                pattern.substring(rightPos+1));
}
navigation.setImage = function(id,src) {
        navigation.image[id].htmlElement.src = src;
}
navigation.switchImage = function(id,state) {
        if (navigation.image[id] && !navigation.image[id].noSwitch) {
                navigation.image[id].state = state;
                navigation.setImage(id,navigation.image[id][state]);
                for (var separatorId in navigation.image[id].separators) {
                        navigation.setImage(separatorId,navigation.getSeparatorSrc(separatorId));
                }
        }

}
navigation.writeTextLink = function(href,flags,linkText,offClass,onClass,highlightWhen,parameters) {

        var useClass = offClass;

        if (navigation[highlightWhen](href)) {
                useClass = onClass;
        }

        parameterText = "";
        parameterSep = "";

        for (var key in parameters)
        {
                parameterText += parameterSep + key + ':' + parameters[key];
                parameterSep = ",";
        }

        if (flags=='')
        {
                flags='\'\'';
        }

        var linkToCall = "javascript:linkTo('" + href + "'," + flags + ",'" + linkText + "',{" + parameterText + "});"
        document.write('<a class="' + useClass + '" href="' + linkToCall + '">' + linkText + '</a>');

}
navigation.siteRoot='';
navigation.currentSite = '';
navigation.currentPrimarySection = '';
navigation.currentSecondarySection = '';
navigation.currentPage = '';