womAdd('setPage();');

var SCREEN_WIDTH = 910;
var navPosition;

function activateMenu(ID) {
	setAHack('systemNav');

	if(document.getElementById(ID)) {
		var navPosition = document.getElementById(ID).offsetLeft;
		var items = document.getElementById(ID).getElementsByTagName('li');
		for (var i=0; i<items.length; i++) {
			if(items[i].id) {
				if (document.getElementById(items[i].id + '-hover')) {
					items[i].menu = document.getElementById(items[i].id + '-hover');
					items[i].menu.style.left = getXPos(items[i]) + "px";
				}
				items[i].onmouseover = function (e) {
					if (top.opendropdown) closeOpen();
					
					this.getElementsByTagName('img')[0].src = this.getElementsByTagName('img')[0].src.replace('-n.', '-o.');
					this.menu.style.visibility = 'visible';
					top.opendropdown = this;
				};
				items[i].onmouseout = function (e) {closeNav(e); };
				items[i].menu.onmouseout = function (e) {closeNav(e); };
			}
		}
	}
}


function getXPos(navItem) {
	var xCorrection = 3;
	var firstPos = navItem.offsetLeft;
	var subWidth = document.getElementById(navItem.id + '-hover').offsetWidth;
	if ((firstPos + navPosition + subWidth) > SCREEN_WIDTH) {
		firstPos += (navItem.offsetWidth - subWidth);
		xCorrection = 0;
	}

	return firstPos + xCorrection;
}

function closeNav(e) {
	var to = (e) ? e.relatedTarget : event.toElement;
	if (top.opendropdown) {
		if (to) {//Do not close in response to events within the menu itself
			var tg = to.tagName.toLowerCase();
			if (tg == "ul") return false;
			if (tg == "li") return false;
			if (tg == "a") return false;
			if (tg == "span") return false;
			if (to == top.opendropdown.menu) return false;
		}
		closeOpen();
		return true;
	}
}

function closeOpen () {
	top.opendropdown.getElementsByTagName('img')[0].src = top.opendropdown.getElementsByTagName('img')[0].src.replace('-o.', '-n.');
	top.opendropdown.menu.style.visibility = 'hidden';
}


function setAHack(ID) {
	if (document.getElementById(ID)) {
		var leftNavItems = document.getElementById(ID).getElementsByTagName('a');
		for	(var i=0; i<leftNavItems.length; i++) {
			leftNavItems[i].onmouseover = function (e) {
				closeNav('e');
			};
		}
	}
}

var _POPUP_SETTINGS = 'location=0,statusbar=0,menubar=0,scrollbars=1';

listen('load', window, function() { 
	mlisten('click', getElementsByClass('doclink','a'), event_popup ); 
}); 


function raw_popup(url, target, features) {
    if (isUndefined(features)) features = _POPUP_SETTINGS;
    if (isUndefined(target)) target = '_blank';

/* VP BEGIN : new code */
	target = target.toLowerCase();
	if (target.indexOf('cp_') != -1) {
		var t = target.length; 
		tr = target.substr(3, t);
		var s = tr.lastIndexOf('x');
		var h = tr.slice(s + 1);
		var w = tr.slice(0, (t-3)-s-1); //(totale length - first three characters) - point of x - x self
		features = features + ',width=' + w + ',height=' + h;
	}
	else {
		features = "" ; //features + ',width=662,height=546';
	}
	/* VP END : new code */

	var theWindow = window.open(url, target, features);
    theWindow.focus();
    return theWindow;
}

function link_popup(src, features) {
    return raw_popup(src.getAttribute('href'), src.getAttribute('target') || '_blank', features, src.getAttribute('name'));
}

function event_popup(e) {
    link_popup(e.currentTarget);
    e.preventDefault();
}

function event_popup_features(features) {
    return function(e) { link_popup(e.currentTarget, features); e.preventDefault() }
}

if (!Array.prototype.push) Array.prototype.push = function() {
    for (var i=0; i<arguments.length; i++) this[this.length] = arguments[i];
    return this.length;
}

Array.prototype.find = function(value, start) {
    start = start || 0;
    for (var i=start; i<this.length; i++) {
        if (this[i] == value) {
            return i;
		}
	return -1;
	}
}

Array.prototype.has = function(value) {
    return this.find(value) !==-1;
}

// FUNCTIONAL

function map(list, func) {
    var result = [];
    func = func || function(v) {return v};
    for (var i=0; i < list.length; i++) result.push(func(list[i], i, list));
    return result;
}

function filter(list, func) {
    var result = [];
    func = func || function(v) {return v};
    map(list, function(v) { if (func(v)) result.push(v) } );
    return result;
}


// DOM

function getElem(elem) {
    if (document.getElementById) {
        if (typeof elem == "string") {
            elem = document.getElementById(elem);
            if (elem===null) throw 'cannot get element: element does not exist';
        } else if (typeof elem != "object") {
            throw 'cannot get element: invalid datatype';
        }
    } else throw 'cannot get element: unsupported DOM';
    return elem;
}

function hasClass(elem, className) {
    return getElem(elem).className.split(' ').has(className);
}

function getElementsByClass(className, tagName, parentNode) {
    parentNode = !isUndefined(parentNode)? getElem(parentNode) : document;
    if (isUndefined(tagName)) tagName = '*';
    return filter(parentNode.getElementsByTagName(tagName),
        function(elem) { return hasClass(elem, className) });
}


// DOM EVENTS

function listen(event, elem, func) {
    elem = getElem(elem);
    if (elem.addEventListener)  // W3C DOM
        elem.addEventListener(event,func,false);
    else if (elem.attachEvent)  // IE DOM
        elem.attachEvent('on'+event, function(){ func(new W3CDOM_Event(elem)) } );
        // for IE we use a wrapper function that passes in a simplified faux Event object.
    else throw 'cannot add event listener';
}

function mlisten(event, elem_list, func) {
    map(elem_list, function(elem) { listen(event, elem, func) } );
}

function W3CDOM_Event(currentTarget) {
    this.currentTarget  = currentTarget;
    this.preventDefault = function() { window.event.returnValue = false }
    return this;
}


// MISC CLEANING-AFTER-MICROSOFT STUFF

function isUndefined(v) {
    var undef;
  	return v === undef;
}

function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

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;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}

function setPage()
{
	window.page = new Page();
}

window.onunload=function(){
	window.page.destroy();
}