fnLocalInit=null;
function fnOpenWindow(url,parameters)
{
	parameters=parameters.replace(/\s+/g,'');

	var aParameters=parameters.split(',');
	var data=new Array();
	for (var i=0;i<aParameters.length;i++) {
		var pr=aParameters[i];
		var key = pr.substr(0,pr.indexOf('='));
		var value=pr.substr(pr.indexOf('=')+1);
		data[key]=value;
	}

	if ( (data['hposition'])&&(data['width'])&&(data['hposition']!='system') )
	{
		var posX=null;
		if (data['hposition']=='left')
		{
			posX=0;
		}
		if ( (window.screen)&&(window.screen.availWidth) )
		{
			if (data['hposition']=='center')
				posX=(window.screen.availWidth-data['width'])/2;
			if (data['hposition']=='right')
				posX=window.screen.availWidth-data['width'];
		}

		if (posX!=null)
			parameters+=",left="+parseInt(posX);
	}

	if ( (data['vposition'])&&(data['height'])&&(data['vposition']!='system') )
	{
		var posY=null;
		if (data['vposition']=='top')
		{
			posY=0;
		}
		if ( (window.screen)&&(window.screen.availHeight) )
		{
			if (data['vposition']=='center')
				posY=(window.screen.availHeight-data['height'])/2;
			if (data['vposition']=='bottom')
				posY=window.screen.availHeight-data['height'];
		}

		if (posY!=null)
			parameters+=",top="+parseInt(posY);
	}


	var oWnd=window.open(url,'',parameters);
	oWnd.focus();
}

glProcessWnd=false;
glProcessSource=null;
function fnProcessSetWnd(mode,source)
{
	glProcessWnd=mode;
	glProcessSource=source;
}
function fnProcess()
{
	if (!glProcessSource)
		return true;

	var oSrc=null;
	if (document.getElementById)
		oSrc=document.getElementById(glProcessSource);
	else
		if (document.all)
			oSrc=document.all[glProcessSource];
	if (!oSrc)
		return true;


	var url = oSrc.options[oSrc.selectedIndex].value;
	if (glProcessWnd) {
		window.open(url,'');
		return false;
	} else {
		var rel=oSrc.options[oSrc.selectedIndex].getAttribute('rel');
		if ( (rel)&&(rel=='bookmark') ) {
			window.open(url,'');
			return false;
		} else {
			var onsubm=oSrc.options[oSrc.selectedIndex].getAttribute('onsubmit');
			if (onsubm) {
				eval(onsubm); return false;
			}
			return true;
		}
	}
}


function setLowIeNav(obj) {
	var navItem = document.getElementById(obj);
	if(!navItem) return;
	var navLiCol = navItem.getElementsByTagName('li');
	for (var i = 0; i < navLiCol.length; i++) {
		if(navLiCol[i].parentNode.parentNode == navItem) {
			navLiCol[i].onmouseover = function () {
				if(/reverse/.test(this.className))
			        addClass(this,'reversehover');
				else
			        addClass(this,'hover');
			}
			navLiCol[i].onmouseout = function () {
				if(/reverse/.test(this.className))
			        removeClass(this,'reversehover');
				else
			        removeClass(this,'hover');
			}
		}
	}
}

function getById(el) {
	return document.getElementById(el);
}

function getByTag(par,el) {
	var par = (par == '') ? document.body : par;
	return par.getElementsByTagName(el);
}

function addClass(obj,newClass) {
	if(!obj.className.match(new RegExp(newClass)))
		obj.className+=(obj.className.length>0? " ": "") + newClass;
}
	
function removeClass(obj,oldClass) {
	obj.className=obj.className.replace(new RegExp("( ?|^)"+oldClass+"\\b"), "");
}

function swapClass(obj,oldClass,newClass) {
	if(obj.className.match(new RegExp(oldClass))) {
		removeClass(obj,oldClass);
		addClass(obj,newClass);
	}
	else {
		removeClass(obj,newClass);
		addClass(obj,oldClass);
	}
}

function getByClass(cla,par,el) {
	var par = (par == '') ? document.body : par;
	var el = (el == '') ? '*' : el;
	if(document.getElementsByClassName) {
		return par.getElementsByClassName(cla);
	}
	else {
		var tagColl = par.getElementsByTagName(el);
		trimedColl = new Array;
		for (var i = 0; tagColl[i]; i++) {
			if(tagColl[i].className.match(new RegExp(cla))) {
				trimedColl[trimedColl.length]=tagColl[i];
			}
		}
		return trimedColl;
	}
}

function setLinks(linkTags){
	var linkCollection = [];
	for (var j = 0; j < linkTags.length; j++) {
		linkCollection[j] = document.getElementsByTagName(linkTags[j]);
		for (var i = 0; i < linkCollection[j].length; i++) {
			if(/bookmark|external|corporate|sponsor/.test(linkCollection[j][i].getAttribute('rel'))) {
				linkCollection[j][i].onclick = function(e) {
					if (!e) var e = window.event;
					if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey)
						return true;
					if(/\.pdf$/.test(this.href))
						return true;
					window.open(this.href);
					return false;
				}
			}
		}
	}
}

function getUrl(obj) {
	return obj.hash.split('#')[0];
}

function toggleMap(obj) {
	var opCollection = obj.getElementsByTagName('option');
	var currentLocation = getUrl(window.location);
	currentLocation = currentLocation.split("#");
	currentLocation = currentLocation[0];
	window.location = currentLocation+"#"+opCollection[obj.selectedIndex].value;
}

function setMap() {
	var sMap = document.getElementById('site-map');
	if(!sMap) return;
	var mapTitles = sMap.getElementsByTagName('h2');
	lTitles = []; var l = 0;
	rTitles = []; var r = 0;
	for (var i = 0; i < mapTitles.length; i++) {
		if(/left-channel/.test(mapTitles[i].parentNode.parentNode.className)) {
			lTitles[l]=mapTitles[i]; l++;
		}
		if(/right-channel/.test(mapTitles[i].parentNode.parentNode.className)) {
			rTitles[r]=mapTitles[i]; r++;
		}
	}
	if(lTitles.length > 0) {
		select = document.createElement('select');
		select.setAttribute('id','lMapSelector');
		for(var i = 0; i < lTitles.length; i++) {
			option = document.createElement('option');
			option.appendChild(document.createTextNode(lTitles[i].getElementsByTagName('a')[0].childNodes[0].nodeValue));
			lTitles[i].parentNode.setAttribute('id','lMapItem'+i);
			option.setAttribute('value','lMapItem'+i);
			select.appendChild(option);
		}
		select.onchange = function () {
			toggleMap(this);
		}
		document.getElementById('map-placeholder-l').appendChild(select);
	}
	if(rTitles.length > 0) {
		select = document.createElement('select');
		select.setAttribute('id','rMapSelector');
		for(var i = 0; i < rTitles.length; i++) {
			option = document.createElement('option');
			option.appendChild(document.createTextNode(rTitles[i].getElementsByTagName('a')[0].childNodes[0].nodeValue));
			rTitles[i].parentNode.setAttribute('id','rMapItem'+i);
			option.setAttribute('value','rMapItem'+i);
			select.appendChild(option);
		}
		select.onchange = function () {
			toggleMap(this);
		}
		document.getElementById('map-placeholder-r').appendChild(select);
	}

}

/* Diagrams
---------------------- */
function initProcesses() {
	
	var processes = getByClass('processes',getById('content'),'div');
	if(processes) {
		for(var j = 0; processes[j]; j++) {
			var items = getByClass('item',processes[j],'div');
			for (var i = 0; items[i]; i++) {
				new Process(items[i]);
			}
		}
	}
	
	var yourbusinesses = getByClass('businessZapper','','div');
	if(yourbusinesses) {
		for(var j = 0; yourbusinesses[j]; j++) {
			new YourBusiness(yourbusinesses[j]);
		}
	}
	
	// var processes = getById("processes");
	// if(!processes) return;
	// var items = getByClass('item',processes,'div');
	// for (var i = 0; items[i]; i++) {
	// 	new Process(items[i]);
	// }
}


var request=null;
var business=null;
function YourBusiness(zone) {
	this.request=null;
	this.zone=zone;
	this.form=getByTag(this.zone,"form")[0];
	
	var selects=getByTag(this.zone,"select");
	for(var i = 0; selects[i]; i++) {
	
		selects[i].onchange = function (that,idSelected) {
		        return function () {
					request = null;
					
					try {
						request = new XMLHttpRequest();
					} catch (trymicrosoft) {
						try {
							request = new ActiveXObject("Msxml2.XMLHTTP");
						} catch (othermicrosoft) {
						try {
							request = new ActiveXObject("Microsoft.XMLHTTP");
						} catch (failed) {
							request = null;
						}
						}
					}
					
					if(idSelected=="activity" || idSelected=="process") {
						business=that;
						if(idSelected=="activity")
							var url = "/yourbusiness?site="+that.form["site"].value+"&"+that.form["activity"].name+"="+that.form["activity"].value;
						if(idSelected=="process" && that.form["process"].value)
							var url = "/yourbusiness?site="+that.form["site"].value+"&"+that.form["process"].name+"="+that.form["process"].value;
						else
							var url = "/yourbusiness?site="+that.form["site"].value+"&"+that.form["activity"].name+"="+that.form["activity"].value;
						request.open("GET", url, true);
						request.onreadystatechange = update;
						request.send(null);
					}
		        }
		    }(this,selects[i].id);
	}
	
	function update() {
		
		if (request.readyState == 4) {
			if (request.status == 200) {
				var answers = eval("(" + request.responseText + ")")

				//generate activity select
				var selectedActivity = business.form["activity"].value;
				removeChilds("activity");
				showOptions(answers.activities,"activity",selectedActivity);
				
				//generate process select
				var selectedProcess = business.form["process"].value;
				removeChilds("process");
				showOptions(answers.processes,"process",selectedProcess);
				
				//generate solution select
				var selectedSolution = business.form["solution"].value;
				removeChilds("solution");
				showOptions(answers.solutions,"solution",selectedSolution);
			}
		}
	}
	
	function showOptions(list,idSelect,selectedItem) {
		var ix=0;
		var elSel = document.getElementById(idSelect);
		for(var n=0 ; n<list.length ; n++) {
			var elemOption = document.createElement('option');
			elemOption.text = list[n].name;
			elemOption.value = list[n].id;
			
			if(list[n].id==selectedItem) {
				ix=n;
				
			}
			
			try {
				elSel.add(elemOption, null); // not IE
			}
			catch(ex) {
				elSel.add(elemOption); // IE only
			}
		}
		elSel.selectedIndex=ix;
		
	}
	
	function removeChilds(nodeId) {
		if(!nodeId) return;
		var nodeElem = document.getElementById(nodeId);
		
		while(nodeElem.hasChildNodes()==true){
			nodeElem.removeChild(nodeElem.firstChild);
		}
	}
}

function Process(item) {
	this.item = item;
	this.forced = (/forcedExpansion/.test(this.item.className))? true : false;
	this.caller = getByClass('caller',item,'h3')[0];
	this.diagram =  getByClass('diagram',item,'div')[0];
	if(this.forced==false){
		if(!this.caller || !this.diagram) return;
		addClass(this.item,'collapsed');
	}
	else
		if(!this.diagram) return;
	var quickCallers = getByTag(this.diagram,'area');
	var displayer = getByClass('displayer',item,'div')[0];
	if(quickCallers && displayer && (quickCallers.length > 1)) {
		addClass(this.item,'dynamicInfo');
		new QuickCall(quickCallers,displayer);
	}
	if(this.forced==false){
		this.caller.onclick = function (that) {
	        return function () {
			    swapClass(that.item,'collapsed','expanded');
			    return false;
	        }
	    }(this);
	}
}

function QuickCall(callers,displayer) {
	this.cId = -1;
	this.displayer = displayer;
	this.displayer.h = 20;
	
	this.displayerDefault = getByClass('default',displayer,'div')[0];
	if (this.displayerDefault) addClass(this.displayerDefault,'active');
	
	this.callers = [];
	for(var i = 0; callers[i]; i++) {
		if( (tgt = callers[i].className.split('quickInfo-')[1]) && getById(tgt) ){
			var j = this.callers.length;
			this.callers[j] = callers[i];
			this.callers[j].cId = i;
			var tgt = getById(tgt);
			this.callers[j].tgt = tgt;
			var h = tgt.offsetHeight;
			if( h > this.displayer.h)
				this.displayer.h = h;
			this.callers[j].onmouseover = function (that) {
		        return function () {
					if (that.displayerDefault) removeClass(that.displayerDefault,'active');
					if(that.cId == this.cId) return;
					var z = that.callers[that.cId];
					if(z) removeClass(z.tgt,'active');
					addClass(that.callers[this.cId].tgt,'active');
					that.cId = this.cId;
					return false;
		        }
		    }(this);
			this.callers[j].onmouseout = function (that) {
		        return function () {
					if (that.displayerDefault) addClass(that.displayerDefault,'active');
					var z = that.callers[that.cId];
					if(z) removeClass(z.tgt,'active');
					that.cId = -1;
					return false;
		        }
		    }(this);
		}
	}
	getByClass('inner',displayer,'div')[0].style.height = this.displayer.h + 40 + 'px'; 
}

function fixIE() {
	var divColl = getByClass('techLinks',getById('content'),'div');
	for(var i = 0; divColl[i]; ++i) {
		var liColl = getByTag(divColl[i],'li');
		for(var j = 0; liColl[j]; j++) {
			liColl[j].innerHTML = '&gt; ' + liColl[j].innerHTML;
		}
	}
}

/* LangSwitch
----- */
function setRHlang() {
	var c = getByClass('langSwitch',getById('content'),'ul');
	if(c&&c[0]) {
		for(var i = 0; c[i]; ++i) {
			var aC = getByTag(c[i],'a');
			
			var t = c[i].parentNode.nextSibling;
			while(t.nodeType!=1){
				t=t.nextSibling;
			}
			if(/IFRAME/.test(t.nodeName)) {
				new RHlang(t,aC);
			}
		}
	}
}

function RHlang(ifr,aC) {
	this.tgt = ifr;
	this.aColl = aC;
	for(var i = 0; aC[i]; ++i) {

		aC[i].onclick= function(that) {
			return function() {
				that.toggle(this);
				return false;
			}
		}(this);
	}
}

RHlang.prototype={
	toggle: function(a) {
		if(a.href==this.tgt.src)
			return;
		this.tgt.src=a.href;
		for(var i = 0; this.aColl[i]; ++i) {
			removeClass(this.aColl[i],'on');
			addClass(a,'on');
		}
	}
}

function repositionIframes() {
	var rhFrm = getById('fltContainer');
	if(rhFrm) {
		rhFrm.onload = function() {
			window.scroll(0,0);
		}
	}
}

/* Init
-------------------- */
var init = function() {
	if (arguments.callee.done) return;
	arguments.callee.done = true;
	if(!document.getElementsByTagName)
		return;
	addClass(document.getElementById('page'),'scripted');
	setLinks(['a','area']);
	setMap();
	initProcesses();
	if (fnLocalInit) fnLocalInit();
	setRHlang();
	repositionIframes();
	
	/*@cc_on @*/
	/*@if (@_win32)
	newerThanIe6 = eval('document.getElementsByTagName("body")[0].currentStyle.minWidth');
	if (!newerThanIe6) {
		setLowIeNav('navigation');
	}
	fixIE();
	setLowIeNav('subnavigation');
	/*@end @*/
}

if (document.addEventListener) {
    document.addEventListener("DOMContentLoaded", init, null);
}
else if (/WebKit/i.test(navigator.userAgent)) {
	var _timer = setInterval(function() {
		if (/loaded|complete/.test(document.readyState)) {
			clearInterval(_timer);
			init();
		}
	}, 10);
}
else {
	/*@cc_on @*/
	/*@if (@_win32)
	document.write("<script id=__ie_onload defer src=javascript:void(0)><\/script>");
	var script = document.getElementById("__ie_onload");
	script.onreadystatechange = function() {
		if (this.readyState == "complete") {
			init();
		}
	};
	/*@end @*/
}
window.onload = init;