/*
 *  Standaardscripts voor ministeriele websites
 */


/*
	TEKSTGROOTTE
	Knoppen en functionaliteit worden automatisch gegenereerd in
	het element met id="tekstgrootte"
*/

var paginaTaal; // welke taal gebruikt de pagina? Gezet in initializeAll

var tekstGrootte = {
	tekst: {
		nl: 'Tekstgrootte ',
		en: 'Text size '
	},
	hulptekstGroter: {
		nl: 'groter',
		en: 'larger'
	},
	hulptekstKleiner: {
		nl: 'kleiner',
		en: 'smaller'
	},
	groterTekst: {
		nl: '+',
		en: '+'
	},
	kleinerTekst: {
		nl: '-',
		en: '-'
	},
	huidig: 2,
	classes: ['kleinst','kleiner','','groter','grootst'],
	groterLink: undefined,
	kleinerLink: undefined,
	oudeLink: undefined,
	styleSheets: [],
	bodyClass: '',
	init: function () {
		var writeroot = document.getElementById('tekstgrootte');
		if (!writeroot) return;
		this.bodyClass = document.body.className;
		writeroot.innerHTML = '';
		var header = document.createElement('h2');
		header.appendChild(document.createTextNode(this.tekst[paginaTaal]));
		writeroot.appendChild(header);
		this.groterLink = document.createElement('a');
		this.groterLink.href = '#';
		this.groterLink.title = this.hulptekstGroter[paginaTaal];
		this.groterLink.appendChild(document.createTextNode(this.groterTekst[paginaTaal]));
		this.groterLink.onclick = this.tekstGroter;
		this.kleinerLink = document.createElement('a');
		this.kleinerLink.href = '#';
		this.kleinerLink.title = this.hulptekstKleiner[paginaTaal];
		this.kleinerLink.appendChild(document.createTextNode(this.kleinerTekst[paginaTaal]));
		this.kleinerLink.onclick = this.tekstKleiner;
		writeroot.appendChild(listify([this.kleinerLink,this.groterLink]));
		var oudeWaarde = Cookies.tekstgrootte;
		if (!oudeWaarde) return;
		this.huidig = oudeWaarde;
		this.zetGrootte();
	},
	tekstGroter: function () {
			tekstGrootte.huidig++;
			tekstGrootte.zetGrootte();
			location.reload();
		return false;
	},
	tekstKleiner: function () {
			tekstGrootte.huidig--;
			tekstGrootte.zetGrootte();
			location.reload();
		return false;
	},
	zetGrootte: function () {
		if (this.huidig >= this.classes.length-1)
			this.groterLink.className = 'disabled';
		else
			this.groterLink.className = '';
		if (this.huidig <= 0)
			this.kleinerLink.className = 'disabled';
		else
			this.kleinerLink.className = '';
		if (this.huidig < 0)
			this.huidig = 0;
		if (this.huidig >= this.classes.length)
			this.huidig = this.classes.length-1;
		document.body.className = this.bodyClass + ' ' + this.classes[this.huidig];
		Cookies.create('tekstgrootte',this.huidig,365);
	}
}

var printLink = {
	tekst: {
		nl: "Print deze pagina",
		en: "Print this page"
	},
	init: function () {
		var writeroot = document.getElementById('printlink');
		if (!writeroot) return;
		var link = document.createElement('a');
		link.href = '#';
		link.appendChild(document.createTextNode(this.tekst[paginaTaal]));
		link.onclick = function () {
			window.print();
			return false;
		}
		writeroot.appendChild(link);
	}
}

var gaTerugLink = {
	tekst: {
		nl: "Ga terug",
		en: "Go back"
	},
	init: function () {
		var writeroot = document.getElementById('gateruglink');
		if (!writeroot) return;
		var link = document.createElement('a');
		link.href = '#';
		link.appendChild(document.createTextNode(writeroot.title ? writeroot.title : this.tekst[paginaTaal]));
		link.onclick = function () {
			window.history.go(-1);
			return false;
		}
		writeroot.appendChild(link);
	}
}

var stuurdoor = {
	writeroot: undefined,
	init: function () {
		var link = document.getElementById('stuurdoor');
		this.writeroot = document.getElementById('stuurdoorFormulier');
		if (!link || !this.writeroot) return;
		link.onclick = function() {stuurdoor.haalFormulier(link.getAttribute('href')); return false};
	},
	haalFormulier: function (sUrl) {
		sendRequest(sUrl,this.toonFormulier);
	},
	toonFormulier: function (req) {
		stuurdoor.writeroot.innerHTML = req.responseText;
		popups.initPopups(stuurdoor.writeroot);
	}
}

var waardeer = {
	writeroot: undefined,
	init: function () {
		var link = document.getElementById('waardeer');
		this.writeroot = document.getElementById('waardeerFormulier');
		if (!link || !this.writeroot) return;
		link.onclick = function() {waardeer.haalFormulier(link.getAttribute('href')); return false};
	},
	haalFormulier: function (sUrl) {
		sendRequest(sUrl,this.toonFormulier);
	},
	toonFormulier: function (req) {
		waardeer.writeroot.innerHTML = req.responseText;
		popups.initPopups(waardeer.writeroot);
	}
}

var taggen = {
	writeroot: undefined,
	init: function () {
		var link = document.getElementById('taggen');
		this.writeroot = document.getElementById('taggenFormulier');
		if (!link || !this.writeroot) return;
		link.onclick = function() {taggen.haalFormulier(link.getAttribute('href')); return false};
	},
	haalFormulier: function (sUrl) {
		sendRequest(sUrl,this.toonFormulier);
	},
	toonFormulier: function (req) {
		taggen.writeroot.innerHTML = req.responseText;
		popups.initPopups(taggen.writeroot);
	}
}

var popups = {
	standaardBreedte: 800,
	standaardHoogte: 600,
	waarschuwingTekst: {
		nl: '(opent in popup)',
		en: '(opens in popup)'
	},
	init: function () {
		this.initPopups(document);
	},
	initPopups: function (obj) {
		var x = obj.getElementsByTagName('a');
		for (var i=0;i<x.length;i++) {
			if (x[i].getAttribute('rel') && x[i].getAttribute('rel').indexOf('popup') != -1) {
				x[i].firstChild.nodeValue += ' ' + this.waarschuwingTekst[paginaTaal];
				x[i].onclick = function(){popups.openPopup(this); return false};
			}
		}
	},
	openPopup: function (link) {
		var breedte = this.standaardBreedte;
		var hoogte = this.standaardHoogte;
		var data = link.getAttribute('rel').split(';');
		if (data.length == 3) {
			breedte = data[1];
			hoogte = data[2];
		}
		window.open(link.href,'popup','width='+breedte+',height='+hoogte+',resizable=yes,scrollbars=yes');
	}
}

var bloklinks = {
	speciaal: ['extern','anker','download'],
	init: function () {
		var lists = document.getElementsByTagName('li');
		for (var i=0;i<lists.length;i++) {
			if (lists[i].className.indexOf('bloklink') == -1) continue;
			var ul = lists[i].parentNode;
			if (!ul.gedaan) {
				ul.className += ' js-aan';
				ul.gedaan = true;
			}
			var classes = lists[i].className;
			var classesHover = classes + ' over';
			for (var j=0;j<this.speciaal.length;j++) {
				if (classes.indexOf(this.speciaal[j]) != -1) {
					classesHover = classes.replace(this.speciaal[j],this.speciaal[j]+'Over');
					break;
				}
			}
			lists[i].origClass = classes;
			lists[i].hoverClass = classesHover;
			lists[i].onmouseover = function () {
				this.className = this.hoverClass;
			}
			lists[i].onmouseout = function () {
				this.className = this.origClass;
			}
			lists[i].onclick = function () {
				//Use onclick code if available, otherwise, use the href
				if(this.getElementsByTagName('a')[0].onclick){
					this.getElementsByTagName('a')[0].onclick();
				}else{
					var href = this.getElementsByTagName('a')[0].href;
					location.href = href;
				}
				return false;
			}
		}
	}
}

/*<CCUSTOM>
 * New poll results based on classname rather than an id
 */
var pollresultaten = {
	factor: undefined,
	init: function () {
		var uls = document.getElementsByTagName('ul');
		for(var j=0; j<uls.length; j++) {
			var classNames = uls[j].className.split(' ');
			for(var k=0; k<classNames.length; k++) {
				if(classNames[k] == 'poll-res') {
					var writeroot = uls[j];
					if (!writeroot) return;
					var items = writeroot.getElementsByTagName('li');
					for (var i=0;i<items.length;i++) {
						var spans = items[i].getElementsByTagName('span');
						if (!spans.length) continue;
						var staaf = spans[0];
						if (!this.factor)
							this.factor = staaf.offsetWidth/100;
						var percentage = parseInt(spans[1].firstChild.nodeValue);
						var innerSpan = document.createElement('span');
						innerSpan.style.width = percentage * this.factor + 'px';
						staaf.appendChild(innerSpan);
					}
					break;
				}
			}
		}
	}
}
/*</CCUSTOM>*/

var zoomPhotos = {
	vergrootTekst: {
		nl: '<span>Vergroten</span>',
		en: '<span>Enlarge</span>'
	},
	verkleinTekst: {
		nl: '<span>Verkleinen</span>',
		en: '<span>Reduce</span>'
	},
	minimumMarge: 180,
	init: function () {
		var x = document.getElementsByTagName('div');
		for (var i=0;i<x.length;i++) {
			if (x[i].className.indexOf('zoom') != -1) {
				var link = x[i].getElementsByTagName('a')[0];
				link.normalPhoto = link.getElementsByTagName('img')[0];
				link.onclick = zoomPhotos.zoom;
				var tekst = link.getElementsByTagName('span')[0];
				tekst.innerHTML = this.vergrootTekst[paginaTaal];
			}
		}
	},
	zoom: function () {
		if (!this.zoomedPhoto) {
			this.zoomedPhoto = zoomPhotos.createImg(this.href, this.normalPhoto.alt, this.normalPhoto.title);
			this.zoomedPhoto.className = 'zoomPhoto';
			this.insertBefore(this.zoomedPhoto,this.normalPhoto);
		}
		this.normalPhoto.style.display = 'none';
		this.zoomedPhoto.style.display = 'block';
		var span = this.getElementsByTagName('span')[0];
		span.originalText = span.innerHTML;
		span.className = 'zoomout';
		span.innerHTML = zoomPhotos.verkleinTekst[paginaTaal];
		var zoomPhoto = this.zoomedPhoto;
		if (!zoomPhoto.width) {
			var breedteMeting = setInterval(function () {
				if (zoomPhoto.width > 0) {
					zoomPhotos.sizeContent(zoomPhoto);
					clearInterval(breedteMeting);
				}
			},250);
		}
		else
			zoomPhotos.sizeContent(zoomPhoto);
		this.onclick = zoomPhotos.unzoom;
		return false;
	},
	unzoom: function () {
		this.normalPhoto.style.display = 'block';
		this.zoomedPhoto.style.display = 'none';
		this.onclick = zoomPhotos.zoom;
		var span = this.getElementsByTagName('span')[0];
		span.className = 'zoomin';
		span.innerHTML = span.originalText;
		var zoomContainer = this.normalPhoto.parentNode.parentNode;
		zoomContainer.style.marginRight = '';
		return false;
	},
	createImg: function (source, alt, title) {
		var newImage = document.createElement('img');
		newImage.src = source;
		newImage.alt = alt;
		newImage.title = title;
		return newImage;
	},
	sizeContent: function (obj) { // obj is img.zoomPhoto, wiens parentNode de link is
		var fotoBreedte = obj.width;
		var zoomContainer = obj.parentNode.parentNode; // div.zoom
		var contentVlak = zoomContainer.parentNode; // container van div.zoom
		var totaleBreedte = contentVlak.offsetWidth;
		var verschil = totaleBreedte - fotoBreedte;
		if (verschil < this.minimumMarge) {
			if (verschil > 0)
				zoomContainer.style.marginRight = verschil + 'px';
		}
	}
}

var faqLijst = {
	init: function () {
		var x = document.getElementById('faqlijst');
		if (!x) return;
		var items = x.getElementsByTagName('li');
		for (var i=0;i<items.length;i++) {
			items[i].onclick = this.toggle;
			items[i].onmouseover = function () {
				this.moStatus = 'Over';
				faqLijst.changeClass(this);
			}
			items[i].onmouseout = function () {
				this.moStatus = '';
				faqLijst.changeClass(this);
			}
			items[i].originalClass = items[i].className;
			items[i].className += ' dicht';
			items[i].status = 'dicht';
		}
	},
	toggle: function () {
		this.status = (this.status == 'dicht') ? 'open' : 'dicht';
		faqLijst.changeClass(this);
	},
	changeClass: function (obj) {
		obj.className = obj.originalClass + ' ' + obj.status + obj.moStatus;
	}
}

/* Lightbox popupvensters | Lodewijk Schutte ~ Low */
var lowLightbox = {
// --- Start aanpasbare instellingen
	closeText: {
		nl: 'Sluit venster',
		en: 'Close window'
	},
	loadingText: {
		nl: 'Laden...',
		en: 'Loading...'
	},
	nextText: {
		nl: 'Volgende',
		en: 'Next'
	},
	prevText: {
		nl: 'Vorige',
		en: 'Previous'
	},
	suffix:		'_snippet',
	opacity:	2,
	offset:		75,
	prevImg:	'/img/icon_lt.gif',
	nextImg:	'/img/icon_gt.gif',
	useNames:	true,
	loop:		false,
	debug:		false,
	sitestatenabled: false,
	sitestat:	{
		nl: 'http://nl.sitestat.com/mvf/minfin/s?nl.',
		en: 'http://nl.sitestat.com/mvf/minfin/s?en.'
	},
// --- einde aanpasbare instellingen
	items:		undefined,
	box:		undefined,
	overlay:	undefined,
	closeLink:	undefined,
	status:		false,
	openBox: function (i) {
		var a = this.items[i].getElementsByTagName('a');
		if (!a.length) return;

		// current, next and previous items
		this.current	= i;
		this.prev		= i - 1;
		this.next		= i + 1;

		if (this.prev < 0)
			this.prev = this.loop ? (this.items.length - 1) : false;

		if (this.next == this.items.length)
			this.next = this.loop ? 0 : false;

		// turn on overlay and box
		this.overlay.style.display = this.box.style.display = 'block';
		this.box.style.top = (this.getScrollPosition().y + this.offset) + 'px';
		this.box.innerHTML = '';
		this.box.className = 'loading';
		this.status = true;

		// some extra stuff for ie6
		if (window.ie6) {
			this.reposition();
			this.toggleSelects(false);
		}

		// Obtain URL to get with Ajax
		var url = this.debug ? 'portret_actueel_snippet.html' : a[0].href;
		sendRequest(url,this.toonBox.bind(this));

		// Trigger sitestat
		if (this.sitestatenabled && typeof sitestat == 'function') {
			var qs = url;
			if (qs.indexOf('http://') == 0) {
				qs = qs.match(/http:\/\/[\-\._0-9a-z]+\/(.*)/)[1];
			}
			qs = qs.replace('/','.');
			sitestat(this.sitestat[paginaTaal] + qs);
		}

		// prevent event bubbling
		return false;
	},
	toonBox: function (req) {
		var txt = (typeof req == 'object') ? req.responseText : 'Error 404 - Page not found';
		this.box.className = '';
		this.box.innerHTML = txt;
		this.prepBox();
	},
	prepBox: function () {
		if (this.prev !== false) {
			// container div
			var prev = document.createElement('div');
			prev.id = 'prevbox';
			// image
			//var i = document.createElement('img');
			//i.src = this.prevImg;
			// arrow
			var tmp = "\u003C\u00A0";
			// text
			tmp += this.useNames ? this.getText(this.items[this.prev].getElementsByTagName('a')[0]) : this.prevText[paginaTaal];
			var t = document.createTextNode(tmp);
			// link
			var a = document.createElement('a');
			a.href = '#';
			a.onclick = this.openBox.bind(this, this.prev);
			a.appendChild(t);

			// construct and append
			//prev.appendChild(i);
			prev.appendChild(a);
			this.box.appendChild(prev);
		}

		if (this.next !== false) {
			// container div
			var next = document.createElement('div');
			next.id = 'nextbox';
			// image
			//var i = document.createElement('img');
			//i.src = this.nextImg;
			// text
			var tmp = this.useNames ? this.getText(this.items[this.next].getElementsByTagName('a')[0]) : this.nextText[paginaTaal];
			// arrow
			tmp += "\u00A0\u003E";
			var t = document.createTextNode(tmp);
			// link
			var a = document.createElement('a');
			a.href = '#';
			a.onclick = this.openBox.bind(this, this.next);
			a.appendChild(t);

			// construct and append
			next.appendChild(a);
			//next.appendChild(i);
			this.box.appendChild(next);
		}

		this.box.insertBefore(this.closeLink, this.box.firstChild);
		if (window.ie) {
			this.closeLink.innerHTML = '';
			this.closeLink.appendChild(document.createTextNode(this.closeText[paginaTaal]));
		}
		this.closeLink.focus();
	},
	closeBox: function () {
		this.overlay.style.display = 'none';
		this.box.style.display = 'none';
		this.box.innerHTML = '';
		this.status = false;
		if (window.ie6)	this.toggleSelects(true);
		this.items[this.current].getElementsByTagName('a')[0].focus();
		return false;
	},
	getText: function (node) {
		var text = node.innerHTML;
		text = text.replace(/<.*?>/, '');
		text = text.replace(/^\s*(.*)\s*$/, '$1');
		return text;
	},
	getScrollPosition: function () {
		var x = 0, y = 0;
		if( typeof( window.pageYOffset ) == 'number' ) {
	    	y = window.pageYOffset;
	     	x = window.pageXOffset;
		} else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
			y = document.body.scrollTop;
	 		x = document.body.scrollLeft;
		} else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
	 		y = document.documentElement.scrollTop;
	 		x = document.documentElement.scrollLeft;
		}
		return {"x":x, "y":y};
	},
	ie6Fixes: function () {
		// function to hide those pesky <select> elements
		var selects = document.getElementsByTagName('select');
		this.toggleSelects = function(state) {
			for (var i=0, j=selects.length; i < j; i++) {
				selects[i].style.visibility = state ? 'visible' : 'hidden';
			}
		}

		// no position:fixed for ie6...
		this.overlay.style.position = 'absolute';

		// function to reposition the overlay, since it's not fixed!
		this.reposition = function() {
			this.overlay.style.top		= this.getScrollPosition().y;
			this.overlay.style.height	= document.documentElement.clientHeight; // ie6 doesn't get height:100% either...
		}

		window.onscroll = window.onresize = this.reposition.bind(this);
	},
	init: function () {
		var list = document.getElementById('portrettenlijst');
		if (!list) return;

		this.overlay = document.createElement('div');
		this.overlay.id = 'lowover';
		this.overlay.style.display = 'none';
		this.overlay.style.opacity = this.opacity/10;
		this.overlay.style.filter = 'alpha(opacity=' + this.opacity*10 + ')';
		this.overlay.onclick = this.closeBox.bind(this);
		document.body.appendChild(this.overlay);

		this.box = document.createElement('div');
		this.box.id = 'lowbox';
		this.box.style.display = 'none';
		document.body.appendChild(this.box);

		this.closeLink = document.createElement('a');
		this.closeLink.id = 'closebox';
		this.closeLink.href = '#';
		this.closeLink.onclick = this.closeBox.bind(this);
		this.closeLink.appendChild(document.createTextNode(this.closeText[paginaTaal]));

		this.items = list.getElementsByTagName('li');
		for (var i=0, j=this.items.length; i < j; i++) {
			// overwrites earlier blocklink on purpose!
			this.items[i].onclick = this.openBox.bind(this, i);
		}

		if (window.ie6) this.ie6Fixes();
	}
}

/*<CCUSTOM>
/* reageer blok weblog */
function openklapperForms(openklaplink,ankerlocatie,openteklappenelement,classnaam) {
	// bestaat de link?
	var pk = document.getElementById(openklaplink);
	var otke = document.getElementById(openteklappenelement);
	if (!pk || !otke) {
		return false;
	}
	else {
		//het reageren blok openen als de reactie wordt aangepast.	(#reageren staat in de url)
		var strHref = window.location.href;
		if ( strHref.indexOf(ankerlocatie) > -1 )
		{
			document.getElementById(openteklappenelement).style.display = 'block';
			pk.getElementsByTagName("a")[0].className = "open";
		}
		else
		{
			document.getElementById(openteklappenelement).style.display = 'none';
		}

		// verberg of toon formulier
		pk.onclick = function () {
			var fieldset = document.getElementById(openteklappenelement)
			if (fieldset.style.display == 'block') {
				fieldset.style.display = 'none';
				pk.getElementsByTagName("a")[0].removeAttribute('class')
				pk.getElementsByTagName("a")[0].href="#top";
			} else {
				fieldset.style.display = 'block';
				pk.getElementsByTagName("a")[0].className = classnaam;
				pk.getElementsByTagName("a")[0].href=ankerlocatie;
			}
		}
	}
}
/* toggle CC-adres voor stuurdoor */
function toggleCC(checkId,fromAddress,ccAddress) {
	if (document.getElementById(checkId).checked) {
		document.getElementById(ccAddress).value = document.getElementById(fromAddress).value;
	} else {
		document.getElementById(ccAddress).value = "";
	}
}

/* toggle all checkboxes voor SMS en e-mail attenderingen */
function toggleCheckBoxAll(checkBoxObj, toggleAllId) {
	var toggleCheckBox = document.getElementById(toggleAllId);
	if (!checkBoxObj.checked && toggleCheckBox.checked) {
		toggleCheckBox.checked = false;
	}
}

function toggleCheckBoxes(toggleAllObj, containerId, matchField) {
	var container = document.getElementById(containerId);
	var inputs = container.getElementsByTagName('input');
	for (i = 0; i < inputs.length; i++) {
  		if (inputs[i].type == 'checkbox' && inputs[i].id != toggleAllObj.id && inputs[i].name == matchField) {
      		inputs[i].checked = toggleAllObj.checked;
      	}
	}
}

function toggleItem(toggleId, triggerId, triggerValue) {
	var triggerObj = document.getElementById(triggerId);
	var toggleObj = document.getElementById(toggleId);

	if	(triggerObj.value == triggerValue) {
		toggleObj.style.display = "block";
	} else {
		toggleObj.style.display = "none";
	}
}

/**</CCUSTOM>*/

/* INITIALISATIE
	aangeroepen door DOMContentReady
*/

var inits = [
	'tekstGrootte',
	'printLink',
	'popups',
	'bloklinks',
	'pollresultaten',
	'zoomPhotos',
	'faqLijst',
	'stuurdoor',
	'waardeer',
	'taggen',
	'gaTerugLink',
	'lowLightbox'
];

function initializeAll() {
	paginaTaal = document.documentElement.lang || 'nl';
	for (var i=0;i<inits.length;i++) {
		if (window[inits[i]])
			window[inits[i]].init();
	}
	openklapperForms("reageerKnopRegister","#reageren","reageerweblogformulier","open");
	openklapperForms("voorkeuropenlink","#persoonlijkevoorkeuren","persoonlijkevoorkeuren","open");
}

/* UTILITIES */

function listify(dataArray) {
	var x = document.createElement('ul');
	for (var i=0;i<dataArray.length;i++) {
		var y = document.createElement('li');
		y.appendChild(dataArray[i]);
		x.appendChild(y);
	}
	return x;
}

function sendRequest(url,callback,postData) {
	var req = createXMLHTTPObject();
	if (!req) return;
	var method = (postData) ? "POST" : "GET";
	req.open(method,url,true);
	req.setRequestHeader('User-Agent','XMLHTTP/1.0');
	if (postData)
		req.setRequestHeader('Content-type','application/x-www-form-urlencoded');
		req.onreadystatechange = function () {
		if (req.readyState != 4) return;
		if (req.status != 200 && req.status != 304) {
			// alert('HTTP error ' + req.status);
			callback(req.status);
			return;
		}
		callback(req);
	}
	if (req.readyState == 4) return;
	req.send(postData);
}

var XMLHttpFactories = [
	function () {return new XMLHttpRequest()},
	function () {return new ActiveXObject("Msxml2.XMLHTTP")},
	function () {return new ActiveXObject("Msxml3.XMLHTTP")},
	function () {return new ActiveXObject("Microsoft.XMLHTTP")},
];

function createXMLHTTPObject() {
	var xmlhttp = false;
	for (var i=0;i<XMLHttpFactories.length;i++)
	{
		try {
			xmlhttp = XMLHttpFactories[i]();
		}
		catch (e) {
			continue;
		}
		break;
	}
	return xmlhttp;
}

// push and shift for IE5

function Array_push() {
	var A_p = 0
	for (A_p = 0; A_p < arguments.length; A_p++) {
		this[this.length] = arguments[A_p]
	}
	return this.length
}

if (typeof Array.prototype.push == "undefined") {
	Array.prototype.push = Array_push
}

function Array_shift() {
	var A_s = 0
	var response = this[0]
	for (A_s = 0; A_s < this.length-1; A_s++) {
		this[A_s] = this[A_s + 1]
	}
	this.length--
	return response
}

if (typeof Array.prototype.shift == "undefined") {
	Array.prototype.shift = Array_shift
}

// The .bind method from Prototype.js
if (typeof Function.prototype.bind == "undefined") {
	Function.prototype.bind = function(){
		var fn = this, args = Array.prototype.slice.call(arguments), object = args.shift();
		return function(){
			return fn.apply(object, args.concat(Array.prototype.slice.call(arguments)));
		};
	};
}

// IE check
if (window.ActiveXObject) window.ie = window[window.XMLHttpRequest ? 'ie7' : 'ie6'] = true;


/* COOKIES */

var Cookies = {
	init: function () {
		var allCookies = document.cookie.split('; ');
		for (var i=0;i<allCookies.length;i++) {
			var cookiePair = allCookies[i].split('=');
			this[cookiePair[0]] = cookiePair[1];
		}
	},
	create: function (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=/";
		this[name] = value;
	},
	erase: function (name) {
		this.create(name,'',-1);
		this[name] = undefined;
	},
	eraseAll: function () {
		for (var i in this) {
			if (typeof this[i] == 'function') continue;
			this.erase(i);
		}
	}
};
Cookies.init();

/* DOMCONTENTREADY */

function ContentReady() {
	// quit if this function has already been called
	if (arguments.callee.done) return;

	// flag this function so we don't do the same thing twice
	arguments.callee.done = true;

	// kill the timer
	if (_timer) clearInterval(_timer);

	// do stuff
	initializeAll();
};

/* for Mozilla/Opera9 */
if (document.addEventListener) {
	document.addEventListener("DOMContentLoaded", ContentReady, false);
}

/* for Internet Explorer */
/*@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") {
			ContentReady(); // call the onload handler
		}
	};
/*@end @*/

/* for Safari */
if (/WebKit/i.test(navigator.userAgent)) { // sniff
	var _timer = setInterval(function() {
		if (/loaded|complete/.test(document.readyState)) {
			ContentReady(); // call the onload handler
		}
	}, 10);
}

/* for other browsers */
window.onload = ContentReady;
