//addLoadListener(initDeviceSelector);
//addLoadListener(initScrollListeners);
//addLoadListener(startScroller);
//addLoadListener(startDeviceSelector);

addLoadListener(initControlCenter);

function initControlCenter()
{
	if(location.href.indexOf("egain")!=-1)
	{
		var e = document.createElement("script");
		e.src = "http://shiva.mio-tech.be/egain/script/fakeScript.php";
		e.type="text/javascript";
		document.getElementsByTagName("head")[0].appendChild(e); 
	}
}

//-----------------------------------------------------

var loopflag=false;
var selm;
var stop_scroll = false ;
var scrollToPos = new Array(2);

function startScroller()
{
	if(location.href.indexOf('#')!=-1)
	{
		var ankerpos = location.href.indexOf('#') + 1;
		if(location.href.indexOf('?')>-1)
		{
			
			var anker = location.href.substring(ankerpos,location.href.indexOf('?'));
		}
		else
		{
			var anker = location.href.substring(ankerpos);
		}
		scrollTo(0,0);
		setTimeout("godlyScrollToElement2('"+anker+"')",1000);
	}
}

function startDeviceSelector()
{
	if(location.href.indexOf('?device=')>-1)
	{
		var devicepos = location.href.indexOf('?device=') + 8;
		var device = location.href.substring(devicepos);
		showOrHideFeatsForDevice2(device);
	}	
}

function initDeviceSelector()
{
	var list = $('device_list').getElementsByTagName("a");
	for(var i = 0; i < list.length; i++ ) {	attachEventListener(list[i], "click", showOrHideFeatsForDevice, false); }
}

function initScrollListeners()
{
	var list = $('features_listing_block').getElementsByTagName("a");
	for(var i = 0; i < list.length; i++ ) {	attachEventListener(list[i], "click", godlyScrollToElement, false); }
	
	/*var list = document.getElementsByTagName("a");
	for(var i = 0; i < list.length; i++ )
	{
		if(typeof window.getAttribute != 'undefined')
		{
			if(list[i].className=="top_link") attachEventListener(list[i], "click", godlyScrollToElement, false);
		}
		else
		{
			if(list[i].getAttribute("class")=="top_link") attachEventListener(list[i], "click", godlyScrollToElement, false);
		}
	}*/
}

function showOrHideFeatsForDevice(event)
{
 	var target = getEventTarget(event); 
	var elementFeats = deviceFeat[target.innerHTML];
	var allFeats = deviceFeat["All"];
	for(var i = 0; i < allFeats.length; i++ )
	{
			if(komtElementVoor(allFeats[i],elementFeats))
			{
				updateFeatElement(allFeats[i], true);
			}
			else
			{
				updateFeatElement(allFeats[i], false);
			}
	}
	setTimeout("verwijderHiders()",500);
}

function showOrHideFeatsForDevice2(elm)
{
	var elementFeats = deviceFeat["Mio "+elm ];
	var allFeats = deviceFeat["All"];
	for(var i = 0; i < allFeats.length; i++ )
	{
			if(komtElementVoor(allFeats[i],elementFeats))
			{
				updateFeatElement(allFeats[i], true);
			}
			else
			{
				updateFeatElement(allFeats[i], false);
			}
	}
	setTimeout("verwijderHiders()",500);
}

function updateFeatElement(elm, show)
{
	if(show)
	{
		if( $(elm).getAttribute("class")=="feature_device_specific" )
		{
			updatingDiv(elm);
			$(elm).setAttribute("class","");
			$(elm).className="";
			$(elm+"Mini").setAttribute("class","");
			$(elm+"Mini").className="";
		}		
	}
	else
	{
		if( $(elm).getAttribute("class")!="feature_device_specific" )
		{
			updatingDiv(elm);
			$(elm).className="feature_device_specific";
			$(elm).setAttribute("class","feature_device_specific");
			$(elm+"Mini").className="no_feature_anymore";
			$(elm+"Mini").setAttribute("class","no_feature_anymore");
			zetVanachter(elm);
		}
	}
}

function updatingDiv(elm)
{
	var div = $(featDivUpdateConnection[elm]);
	if($(div.id+"Hider"))
	{ 
		$(div.id+"Hider").style.display="block";
		$(div.id+"HiderFront").style.display="block";
	}
	else
	{			
		var hiddenElement = document.createElement("div");
		hiddenElement.setAttribute("id", div.id+"Hider");
		hiddenElement.setAttribute("class", "Hider");
		var stijl = hiddenElement.style;
		stijl.position="absolute";
		var pos = getPosition(div);
		var dim  = getWidth(div);
		stijl.width=dim[0]+"px";
		stijl.height=dim[1]+"px";
		stijl.left=pos[0]+"px";
		stijl.top=pos[1]+"px";
		stijl.backgroundColor="#fff";
		stijl.filter = "alpha(opacity=70)";
		stijl.opacity = (0.7);
        stijl.MozOpacity = (0.7);
	 	stijl.KhtmlOpacity = (0.7);
		
		$('ajaxcontainer').appendChild(hiddenElement );
		
		
		var loader = document.createElement("div");
		loader.setAttribute("id", div.id+"HiderFront");
		loader.setAttribute("class", "Hider");
		loader.innerHTML = "<img src=\"http://www.mio-tech.be/en/support/heccFiles/wait.gif\" /> Sorting List..";
		stijl=loader.style;
		stijl.position="absolute";
		
		var mijndim = getWidth(loader);

		stijl.left=pos[0] + (dim[0]/2) - (mijndim[0]/2) - 50 + "px";
		stijl.top= pos[1] + (dim[1]/2) - (mijndim[1]/2) + "px";
		stijl.backgroundColor="#fff";
		stijl.border="1px solid #ccc";
		stijl.padding="3px";
		$('ajaxcontainer').appendChild(loader);
	}
}

function zetVanachter(elm)
{
		var par = $(elm+"Mini").parentNode.parentNode;
		var div = par.removeChild($(elm+"Mini").parentNode);
		par.appendChild(div);
}

function verwijderHiders()
{
	var list = $('ajaxcontainer').getElementsByTagName("div");
	for(var i = 0; i < list.length; i++ )
	{
		if( list[i].getAttribute("class")=="Hider")
		{
			list[i].style.display="none";
		}
	}	
}

function komtElementVoor(elm, arr)
{
	var vlag = false;
	for(var i = 0; i < arr.length; i++ ) {
		if(arr[i]==elm)
		{
			vlag=true;
			return vlag;
		}
	}
	return vlag;
}

function getClickedScrollTo(event)
{
	var target = getEventTarget(event);
	var elm;
	while((target.tagName!="A")&&(target.tagName!="a"))
	{
		target=target.parentNode;	
	}
	if(target.getAttribute("href").indexOf("/")==-1)
		elm=$((target.getAttribute("href")).substring(1,(target.getAttribute("href")).length));
	else
	{
		var begin=target.getAttribute("href").indexOf("#");
		var elem=target.getAttribute("href").substring(begin+1);
		elm=$(elem);
	}
	return elm;

}

function godlyScrollToElement(event)
{
	var elm = getClickedScrollTo(event);
	
	var scrollPos=getScrollingPosition();
	var elmPos=getPosition(elm);

	var teller;
	var eenheid;

	if(scrollPos[1]<elmPos[1])
	{
			eenheid=0.1;
			teller=1;
	}
	else
	{
			eenheid=-0.1;
			teller=-1;
	}

	var midHoogte=scrollPos[1]+((elmPos[1]-scrollPos[1])/2);
	var safety=scrollPos[1];
	var stopFlag=false;

	while(((scrollPos[1]<elmPos[1]-teller)||(scrollPos[1]>elmPos[1]+teller))&&(stopFlag==false))
	{
		scrollBy(0,teller);
		scrollPos=getScrollingPosition(elm);
		if(safety==scrollPos[1])
		{
			stopFlag=true;
		}
		safety=scrollPos[1];
		if(eenheid>0)
		{
			if(scrollPos[1]<midHoogte)
			{
				teller=teller+eenheid;
			}
			else
			{
				teller=teller-eenheid;	
				if(teller<=0)teller=1;
			}
		}
		else
		{
			if(scrollPos[1]>midHoogte)
			{
				teller=teller+eenheid;
			}
			else
			{
				teller=teller-eenheid;	
				if(teller>=0)teller=-1;
			}
		}
	}
	if(elm.id!="container")	magicHighLight(elm);
	return false;
}

function godlyScrollToElement2(target)
{
	scrollTo(0,0);
	var elm = $(target);
	var teller=1;
	var eenheid;
	var scrollPos=getScrollingPosition(elm);
	var elmPos=getPosition(elm);
	if(scrollPos[1]<elmPos[1])
	{
			eenheid=0.1;
			teller=1;
	}
	else
	{
			eenheid=-0.1;
			teller=-1;
	}
	var midHoogte=scrollPos[1]+((elmPos[1]-scrollPos[1])/2);
	var safety=scrollPos[1];
	var stopFlag=false;
	while((scrollPos[1]<elmPos[1]-teller)&&(stopFlag==false))
	{
		scrollBy(0,teller);
		scrollPos=getScrollingPosition(elm);
		if(safety==scrollPos[1])
		{
			stopFlag=true;
		}
		safety=scrollPos[1];
		if(scrollPos[1]<midHoogte)
		{
			teller=teller+0.1;
		}
		else
		{
			teller=teller-0.1;	
			if(teller<=0)teller=1;
		}
	}
	magicHighLight(elm);
	return false;
}

function magicHighLight(elm)
{
	//keerKleurTerug(elm,"200");
	loopFlag=true;
	naarGrijs(elm,"255");
}

function keerKleurTerug(elm,waarde)
{
	res = parseInt(waarde);
	res=res+5;
	waarde=""+res;
	var letter="0";
	if(res<100) letter=waarde;
	else
	{
		switch(res)
		{
			case 10: letter="A";;break;
			case 11: letter="B";break;
			case 12: letter="C";break;
			case 13: letter="D";break;
			case 14: letter="E";break;
			case 15: letter="F";break;
		}
		letter=d2h(res);
	}
	var kleur="#"+letter+letter+letter;
	//alert(res+" / "+letter+" / "+kleur);
	elm.style.backgroundColor=kleur;
	if(waarde<250)
	{
		//setTimeout("keerKleurTerug(elm,waarde)",1000);
		selm=elm;
		setTimeout("keerKleurTerug(selm,'"+res+"')",1);
	}
	else
	{
		if(loopFlag==false)
		{
			elm.style.backgroundColor="#fff";
			elm.style.backgroundColor="transparant";
		}
		else
		{
			loopFlag=false;
			selm=elm;
			setTimeout("naarGrijs(selm,\"255\")",100);
		}
	}
}


function naarGrijs(elm,waarde)
{
	res = parseInt(waarde);
	res=res-5;
	waarde=""+res;
	var letter="0";
	if(res<100) letter=waarde;
	else
	{
		switch(res)
		{
			case 10: letter="A";;break;
			case 11: letter="B";break;
			case 12: letter="C";break;
			case 13: letter="D";break;
			case 14: letter="E";break;
			case 15: letter="F";break;
		}
		letter=d2h(res);
	}
	var kleur="#"+letter+letter+letter;
	//alert(res+" / "+letter+" / "+kleur);
	elm.style.backgroundColor=kleur;
	if(waarde>200)
	{
				//alert(elm.id);
				selm=elm;
		//setTimeout("keerKleurTerug(elm,waarde)",1000);	
		setTimeout("naarGrijs(selm,'"+res+"')",20);
	}
	else
	{
		keerKleurTerug(elm,"200");
	}
}

































































function addLoadListener(fn)
{
 if (typeof window.addEventListener != 'undefined')
 {
   window.addEventListener('load', fn, false);
 }
 else if (typeof document.addEventListener != 'undefined')
 {
   document.addEventListener('load', fn, false);
 }
 else if (typeof window.attachEvent != 'undefined')
 {
   window.attachEvent('onload', fn);
 }
 else
 {
   var oldfn = window.onload;
   if (typeof window.onload != 'function')
   {
     window.onload = fn;
   }
   else
   {
     window.onload = function()
     {
       oldfn();
       fn();
     };
   }
 }
}

function attachEventListener(target, eventType, functionRef, capture)
{
	if (typeof target.addEventListener != "undefined")
	{
		target.addEventListener(eventType, functionRef, capture);
	}
	
	else if (typeof target.attachEvent != "undefined")
	{
		target.attachEvent("on" + eventType, functionRef);
	}
	
	else
	{
		eventType = "on" + eventType;

		if (typeof target[eventType] == "function")
		{
			var oldListener = target[eventType];

			target[eventType] = function()
     			{
       				oldListener();

       				return functionRef();
     			};
   		}
   		else
   		{
     			target[eventType] = functionRef;
   		}
 	}
}

function detachEventListener(target, eventType, functionRef, capture)
{

 if (typeof target.removeEventListener != "undefined")
 {
   target.removeEventListener(eventType, functionRef, capture);
 }
 else if (typeof target.detachEvent != "undefined")
 {
   target.detachEvent("on" + eventType, functionRef);
 }
 else
 {
   target["on" + eventType] = null;
 }
}

function getEventTarget(ev)
{
	if (typeof ev == "undefined") {
   		ev = window.event;
 	}
var e = window.event ? window.event : ev;
 var t = e.target ? e.target : e.srcElement;

return t;
}

function getPosition(theElement)
{
 var positionX = 0;
 var positionY = 0;

 while (theElement != null)
 {
   positionX += theElement.offsetLeft;
   positionY += theElement.offsetTop;
   theElement = theElement.offsetParent;
 }

 return [positionX, positionY];
}

function getWidth(theElement)
{
 var out = [theElement.offsetWidth, theElement.offsetHeight];
 return out;
}

function getElementsByAttribute(attribute, attributeValue)
{
 var elementArray = new Array();
 var matchedArray = new Array();

 if (document.all)
 {
   elementArray = document.all;
 }
 else
 {
   elementArray = document.getElementsByTagName("*");
 }

 for (var i = 0; i < elementArray.length; i++)
 {
   if (attribute == "class")
   {
     var pattern = new RegExp("(^| )" +
         attributeValue + "( |$)");

     if (pattern.test(elementArray[i].className))
     {
       matchedArray[matchedArray.length] = elementArray[i];
     }
   }
   else if (attribute == "for")
   {
     if (elementArray[i].getAttribute("htmlFor") ||
         elementArray[i].getAttribute("for"))
     {
       if (elementArray[i].htmlFor == attributeValue)
       {
         matchedArray[matchedArray.length] = elementArray[i];
       }
     }
   }
   else if (elementArray[i].getAttribute(attribute) ==
       attributeValue)
   {
     matchedArray[matchedArray.length] = elementArray[i];
   }
 }

 return matchedArray;
}

function getElementsByAttribute(attribute, attributeValue, elm)
{
 var elementArray = new Array();
 var matchedArray = new Array();

 if (document.all)
 {
   elementArray = document.all;
 }
 else
 {
   elementArray = elm.getElementsByTagName("*");
 }

 for (var i = 0; i < elementArray.length; i++)
 {
   if (attribute == "class")
   {
     var pattern = new RegExp("(^| )" +
         attributeValue + "( |$)");

     if (pattern.test(elementArray[i].className))
     {
       matchedArray[matchedArray.length] = elementArray[i];
     }
   }
   else if (attribute == "for")
   {
     if (elementArray[i].getAttribute("htmlFor") ||
         elementArray[i].getAttribute("for"))
     {
       if (elementArray[i].htmlFor == attributeValue)
       {
         matchedArray[matchedArray.length] = elementArray[i];
       }
     }
   }
   else if (elementArray[i].getAttribute(attribute) ==
       attributeValue)
   {
     matchedArray[matchedArray.length] = elementArray[i];
   }
 }

 return matchedArray;
}


function getScrollingPosition()
{
	var position = [0, 0];

	if (typeof window.pageYOffset != 'undefined')
	{
		position = [window.pageXOffset, window.pageYOffset];
	}

	else if (typeof document.documentElement.scrollTop != 'undefined' && document.documentElement.scrollTop > 0)
	{
		position = [document.documentElement.scrollLeft, document.documentElement.scrollTop];
	}

	else if (typeof document.body.scrollTop != 'undefined')
	{
		position = [document.body.scrollLeft, document.body.scrollTop];
	}

	return position;
}

function getElementStyle(elemID, IEStyleProp, CSSStyleProp) {
    var elem = document.getElementById(elemID);
    if (elem.currentStyle) {
        return elem.currentStyle[IEStyleProp];
    } else if (window.getComputedStyle) {
        var compStyle = window.getComputedStyle(elem, "");
        return compStyle.getPropertyValue(CSSStyleProp);
    }
    return "";
}

function d2h(d) {return d.toString(16);}
function h2d(h) {return parseInt(h,16);}


function getViewPortSize()
{
 var viewportwidth;
 var viewportheight;
 
 // the more standards compliant browsers (mozilla/netscape/opera/IE7) use window.innerWidth and window.innerHeight
 
 if (typeof window.innerWidth != 'undefined')
 {
      viewportwidth = window.innerWidth,
      viewportheight = window.innerHeight
 }
 
// IE6 in standards compliant mode (i.e. with a valid doctype as the first line in the document)

 else if (typeof document.documentElement != 'undefined'
     && typeof document.documentElement.clientWidth !=
     'undefined' && document.documentElement.clientWidth != 0)
 {
       viewportwidth = document.documentElement.clientWidth,
       viewportheight = document.documentElement.clientHeight
 }
 
 // older versions of IE
 
 else
 {
       viewportwidth = document.getElementsByTagName('body')[0].clientWidth,
       viewportheight = document.getElementsByTagName('body')[0].clientHeight
 }	
 var dim = new Array(2);
 dim[0]=viewportwidth;
 dim[1]=viewportheight;
 return dim;
 
}

function scrolltop(){
    if(stop_scroll ==true){
        scroll(scrollToPos[0],scrollToPos[1]) ;
    }
}
