﻿
	// CREATIONAL
	
	// COPYRIGHT  : 2006 : CREATIONAL : WWW.CREATIONAL.NL : ALL RIGHTS RESERVED
	
	// JAVASCRIPT: General Scripts
	
	
	// JAVASCRIPT : START
	// Event.observe(window,'load',CL_tooltipStart);
	//Event.observe(window,'load',CL_searchInputSet);
	//Event.observe(window,'load',CL_displayStatus);
	
	// JAVASCRIPT : ADD OR REMOVE EVENTS

	function addEvent(obj,evType,fn,useCapture) {
		if (obj.addEventListener) { obj.addEventListener(evType,fn,useCapture); return true; } 
		else if (obj.attachEvent) { var r = obj.attachEvent("on"+evType,fn); return r; } 
		else { alert("Handler could not be attached"); }
	}
	
	function removeEvent(obj,evType,fn,useCapture) {
		if (obj.removeEventListener){ obj.removeEventListener(evType,fn,useCapture); return true; } 
		else if (obj.detachEvent){ var r = obj.detachEvent("on"+evType,fn); return r; } 
		else { alert("Handler could not be removed"); }
	}	
	
	// JAVASCRIPT : E-MAIL OBFUSCATION
	function CL_emailExpand(t,e) {

		if (t === null || typeof t == 'undefined') { return ''; }

		if (t.indexOf('@') > -1 || t.indexOf('&#64;') > -1) {
			var p, pe, es;
			p = t.indexOf('&#64;');
			if (p == -1) { p = t.indexOf('@'); }
			pe = t.indexOf(' ',p);
			if (pe == -1) { pe = t.indexOf('%20',p); }
			if (pe == -1) { pe = t.length; } 
			es = t.substring(0,p);
			p = es.lastIndexOf(' ');
			if (p == -1) { p = es.lastIndexOf('%20'); if (p > -1) { p = p+2; } } else { p = p+1; }
			if (p == -1) { p = 0; }
			es = t.substring(p,pe);
			t = t.replace(es,e);
		}
	
		return t;
	}
	
	function rot13init() {
		var m = [];
		var s = "abcdefghijklmnopqrstuvwxyz",i;
		for (i = 0 ; i < s.length ; i++) {
			m[s.charAt(i)] = s.charAt((i+13)%26);
		}
		for (i = 0 ; i < s.length ; i++) {
			m[s.charAt(i).toUpperCase()] = s.charAt((i+13)%26).toUpperCase();
		}
		return m;
	}
	
	function str_rot13(a,m) {
		var s = "";
		for (var i = 0 ; i < a.length ; i++) {
			var b = a.charAt(i);
			s += (b>='A' && b<='Z' || b>='a' && b<='z' ? m[b] : b);
		}
		return s;
	}
	
	function CL_emailObfuscation() {
		
		if (!document.getElementsByTagName) { return false; }
		var lnks = document.getElementsByTagName('a');

		var m = rot13init(), i = 0; 
		
		function geo_decode(a) {

			var href = a.getAttribute('href');
			var d = href.replace(/.*geo=([a-z0-9._%\-]+)\+([a-z0-9._%\-]+)\+([a-z.]+)/i, '$1' + '@' + '$2' + '.' + '$3');
			if (href != d) {				
				
				var p, s = '', e = d, l, t;
				
				p = d.indexOf('&');
				if (p > -1) {
					e = d.substr(0,p);
					s = d.substr(p+1);
					s = s.replace('geo_s=','?subject=');
					
				}
				e = str_rot13(e,m);
				s = CL_emailExpand(s,e);
				a.setAttribute('href','mailto:' + e +s);
				
				l = a.innerHTML;				
				a.innerHTML = CL_emailExpand(l,e);
				
				t = a.getAttribute('title');
				if (t) {
					t = CL_emailExpand(t,e);
					a.setAttribute('title',t);
				}
			}
		}
		for (i; i < lnks.length ; i++) {
			var href = lnks[i].getAttribute('href');
			if (href && href.indexOf('geo=') > -1) {
				geo_decode(lnks[i]);
			}
		}
		
	}	


	
	// JAVASCRIPT : STATUS BAR
	
	function CL_displayStatus(text) { 
		if(!window.text) { text = ""; };
		window.status = 'Creational = Websites + Corporate Identity ' + text;
	};


	// JAVASCRIPT : OPEN NEW WINDOW

	function CL_openWindow(url,width,height,settings,name) {
		if (!settings) settings = "scrollbars=yes,menubar=yes,toolbar=yes,status=yes,resizable=yes,directories=no,location=no";
		if (height) settings = "height=" + height + "," + settings;
		if (width) settings = "width=" + width + "," + settings;
		if (!name) name = "externalWindow";
		var newWin = window.open(url,name,settings);
	};
	

	// JAVASCRIPT : SWITCH IMAGE CONTROL

	function CL_swapControl(ctrl,img) {
		ctrl.src = img;
	}

	// JAVASCRIPT : MM BEHAVIORS by Macromedia V.3.0 / V. 4.01 for findObj

	function MM_preloadImages() {
	  	var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
		var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
		if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
	};
	
	function MM_swapImgRestore() {
		var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
	};
	
	function MM_findObj(n, d) {
	 	var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
		d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
	  	if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
	  	for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
	  	if(!x && d.getElementById) x=d.getElementById(n); return x;
	};
	
	function MM_swapImage() {
	  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
	   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
	};


	// JAVASCRIPT : GET WINDOW DIMENSIONS

	function getViewportHeight() {
		if (window.innerHeight!=window.undefined) { return window.innerHeight; }
		if (document.compatMode=='CSS1Compat') { return document.documentElement.clientHeight; }
		if (document.body) { return document.body.clientHeight; }
		return window.undefined; 
	};
	
	function getViewportWidth() {
		if (window.innerWidth!=window.undefined) { return window.innerWidth; }
		if (document.compatMode=='CSS1Compat') { return document.documentElement.clientWidth; }
		if (document.body) { return document.body.clientWidth; }
		return window.undefined; 
	};
	

	// JAVASCRIPT : CLEAR AND SET SEARCH INPUT
	function CL_searchInputFocus() {
		if (document.searchForm.searchInput.value == searchInitialValue) {
		   document.searchForm.searchInput.value = "";
		   document.searchForm.searchInput.className = "search_input_active";
		}
	};
	
	function CL_searchInputFocusModule() {
		if (document.searchFormModule.searchInputModule.value == searchInitialValueModule) {
		   document.searchFormModule.searchInputModule.value = "";
		   document.searchFormModule.searchInputModule.className = "search_input_active";
		}
	};
	
	function CL_searchInputSet() {
		if (document.searchForm || document.searchFormModule) {
			var a = CL_searchInputSet.arguments, m1 = '', m2 = '', sInitialValue = ''; 
			if (a[0] == true) { m1 = 'Module'; m2 = '_module'; sInitialValue = searchInitialValueModule; } else { sInitialValue = searchInitialValue; }
			var sInput = 'searchInput'+m1;
			var sSubmit = 'searchSubmit'+m1;
			var sSearch = 'search'+m2;
			var detect = navigator.userAgent.toLowerCase();
			if (detect.indexOf('safari') > -1) {
				var s = document.getElementById(sInput);
				s.type = 'search';
				s.setAttribute('results','0');
				s.setAttribute('placeholder',sInitialValue);
				s = document.getElementById(sSubmit);
				s.style.display = 'none';
				s = document.getElementById(sSearch);
				s.style.background = 'none';
			} else {
				if (m1 == 'Module') {
					if (document.searchFormModule.searchInputModule.value == "") {
					   document.searchFormModule.searchInputModule.value = sInitialValue;
					   document.searchFormModule.searchInputModule.className = "search_input";
					}			
				} else {
					if (document.searchForm.searchInput.value == "") {
					   document.searchForm.searchInput.value = sInitialValue;
					   document.searchForm.searchInput.className = "search_input";
					}			
				}
			}
		}
	}; 

	function CL_searchInputSetModule() {
		CL_searchInputSet(true);
	};

	// JAVASCRIPT: DROPDOWN
	function CL_startList() {
		if (document.getElementById(menuname)) {
			navRoot = document.getElementById(menuname);
			for (i=0; i<navRoot.childNodes.length; i++) {
				node = navRoot.childNodes[i];
				if (node.nodeName=="LI") {
					node.onmouseover=function() {
						this.className+=" over";
					}
					node.onmouseout=function() {
						this.className=this.className.replace("over", "");
					}
				}
			}
		}
	}

	var menuname = "languages";
	//Event.observe(window,'load',CL_startList);
	
	// JAVASCRIPT : TOOLTIP
	// Based on code by Craig Erskine (grayg.com), Multi-tag support by James Crooke (www.cj-design.com), Inspired by code from Travis Beckham (www.squidfingers.com / www.podlob.com)
	
	var tooltipTags = "a,label,div,img"; //  tooltip tags: lower case
	var tooltipX = 0;
	var tooltipY = 15;
	var tooltipStarted = null;
	var tooltipElement = null;
	
	CL_tooltip = {
	  name : "tooltip",
	  offsetX : tooltipX,
	  offsetY : tooltipY,
	  tip : null
	}
	
	CL_tooltip.init = function () {
		if (!document.getElementById) { return; }
		if (tooltipStarted != null) { return; }
		tooltipStarted = true;
		var tipNameSpaceURI = "http://www.w3.org/1999/xhtml";
		var tipContainer = document.getElementById(this.name);
	
		if(!tipContainer) {
		  	tipContainer = document.createElementNS ? document.createElementNS(tipNameSpaceURI, "div") : document.createElement("div");
			tipContainer.setAttribute("id", this.name);
		  	document.getElementsByTagName("body").item(0).appendChild(tipContainer);
		}
	
		this.tip = document.getElementById(this.name);
		if (this.tip) { document.onmousemove = function (evt) {CL_tooltip.move (evt)}; }
	
		var a, sTitle, elements;
		
		var elementList = tooltipTags.split(",");
		for(var j = 0; j < elementList.length; j++) {
			if (tooltipElement == null) {
				elements = document.getElementsByTagName(elementList[j]); 
			} else {
				elements = document.getElementById(tooltipElement).getElementsByTagName(elementList[j]); 
			}
			if(elements) {
				for (var i = 0; i < elements.length; i ++) {
					a = elements[i];
					sTitle = a.getAttribute("title");
					if(sTitle) {
						a.setAttribute("tiptitle", sTitle);
						a.removeAttribute("title");
						a.removeAttribute("alt");
						a.onmouseover = function() {CL_tooltip.show(this.getAttribute('tiptitle'))};
						a.onmouseout = function() {CL_tooltip.hide()};
					}
				}
			}
		}
	}
	
	CL_tooltip.move = function (evt) {
		var x=0, y=0;
		if (document.all) {
			x = (document.documentElement && document.documentElement.scrollLeft) ? document.documentElement.scrollLeft : document.body.scrollLeft;
			y = (document.documentElement && document.documentElement.scrollTop) ? document.documentElement.scrollTop : document.body.scrollTop;
			x += window.event.clientX;
			y += window.event.clientY;			
		} else {
			x = evt.pageX;
			y = evt.pageY;
		}
		this.tip.style.left = (x + this.offsetX) + "px";
		this.tip.style.top = (y + this.offsetY) + "px";
	}
	
	CL_tooltip.show = function (text) {
		if (!this.tip) return;
		text = text.replace('[','<strong>');
		text = text.replace(']','</strong>');
		text = text.replace(/ - /g,'<br />');
		this.tip.innerHTML = text;
		this.tip.style.display = "block";
	}
	
	CL_tooltip.hide = function () {
		if (!this.tip) return;
		this.tip.innerHTML = "";
		this.tip.style.display = "none";
	}
	
	CL_tooltipStart = function () {
		CL_tooltip.init ();
	}
	
	
	// JAVASCRIPT : EXPAND / COLLAPSE
	
	function CL_expandCollapse() {
	
		var titles = $$('#content .expandcollapse');
		var texts = $$('#content .expand');
		
		texts.each (function(text){
			text.hide();
		});
		
		titles.each (function(title) {
			title.onclick = function(title)	{
				var obj = this;
				if (this.tagName == "SPAN") { obj = this.parentNode;}
				if (obj.next('.expand')) { 
					var nextText = obj.next('.expand');
					if (nextText.getStyle('display') == 'none' || nextText.getStyle('display') == null) {
						nextText.show();
						this.addClassName('expanded');
					} else {
						nextText.hide(); 
						this.removeClassName('expanded');
					}
				}
			}
		});
		
	}
