/**
 * Starts executing the initializing functions when either the DOM structure of the page has been loaded ('domready'), or the entire page ('load').
 * 
 * @author Bas van der Togt (b.vandertogt@profinit.com)
 * @uses Mootools 1.2.4 JavaScript Library
 */
window.addEvents({
	'domready': function() {
		//initDebugger(); // TEMP		
		findExternalLinks();
		initSubmitButtons();
		initTabSwapper();
		removeSub_navWhenEmpty();
		initFooterDivs();
		initTeaserDivs();
		initSupportCategories();
		initDomains();
		initCenterPagebrowse();
		initOverText();
		initCarousel();
	},
	'load': function() {

	}
});



/**
 * initDebugger
 * In case the Firebug add-on is present in Firefox, it's console is used (only when enabled), else an alert is shown instead.
 * 
 * @author Ralph Meeuws (ralph@meeuws.net)
 * @usage log(my_variable);
 * @return void
 */
function initDebugger() {
	log = (Browser.Engine.gecko && window.console) ? function(msg){console.log(msg)} : function(msg){alert(msg)};
}



/**
 * initExternalLinks
 * Opens external links valid in a new window without the target attribute.
 * 
 * @author CSD (clientsidedevelopers[AT]efocus.nl)
 * @uses <a href="http://www.efocus.nl/" class="external">eFocus</a>
 */
function initExternalLinks() {
	var arrExternalLinks = $$('a.external');
	if (arrExternalLinks.length == 0) return false;
	
	arrExternalLinks.each(function(elExternalLink) {
		elExternalLink.addEvent('click', function(event) {
			event.stop();
			window.open(this.get('href'));
		});
	});
}



/**
 * findExternalLinks
 * add class external to external links
 * 
 * @author Bas van der Togt (b.vandertogt@profinit.com)
  */
function findExternalLinks () {
	
	var allExternalLinks = $$('a[href^="http://"]');
	var thisDomain = window.location.host;
	
	allExternalLinks.each(function(thisLink) {
		
		if (!thisLink.get('href').contains(thisDomain)) {
			thisLink.addClass('external');
		}
				
	});
	
	initExternalLinks();
		
}



/**
 * initSubmitButtons
 * If a submit button is detected, clicking on it will submit the form it is in.
 * 
 * @author Bas van der Togt (b.vandertogt@profinit.com)
 */
function initSubmitButtons() {
	var arrSubmitBtns = $$('.submit');
	if (arrSubmitBtns.length == 0) return false;
	
	arrSubmitBtns.each(function(elSubmitBtn){
		var elForm = elSubmitBtn.getParent('form');
		elSubmitBtn.addEvent('click', function(event){
			event.stop();
			elForm.submit();
		});
/*
		elForm.addEvent('keyup', function(event){
			if (event.key == 'enter') elForm.submit();
		});
*/
	});
}




/**
 * initCenterPagebrowse
 * 
 * @author Bas van der Togt (b.vandertogt@profinit.com)
 * @return void
 */
function initCenterPagebrowse() {
	var containerWidth = 600;
	var totalWidth = 0;
	var padding = 0;
	var paddingLeft = 0;
	
	listItems = $$('ul.tx-pagebrowse');
	if (listItems.length == 0) return;
	
	listItems.each(function(el){
		var li = el.getChildren('li');
		
		li.each(function(el){
			var width = el.getSize().x;
			totalWidth += width;
		});
		
	});
	
	padding = containerWidth-totalWidth;
	paddingLeft = padding/2-12;
		
	$$('ul.tx-pagebrowse')[0].setStyle('padding-left', paddingLeft);
}



/**
 * initTabSwapper
 * 
 * @author Bas van der Togt (b.vandertogt@profinit.com)
 */
function initTabSwapper() {
	
	// products
	new TabSwapper({
		selectedClass: 'active',
		deselectedClass: 'inactive',
		tabs: $$('div.products li'),
		clickers: $$('div.products li a'),
		sections: $$('div.panelSet div.panel'),
		cookieName: 'tabSetProducts',
		smooth: true,
		smoothSize: true
	});
	
	// myprofinit
	new TabSwapper({
		selectedClass: 'active',
		deselectedClass: 'inactive',
		tabs: $$('div.myprofinit li.tab'),
		clickers: $$('div.myprofinit li.tab a'),
		sections: $$('div.panelSet div.panel'),
		cookieName: 'tabSetMyProfinit',
		smooth: true,
		smoothSize: true
	});
		
}



/**
 * removeSub_navWhenEmpty()
 *
 * Check if element has no ul tag, 
 * remove the tag from the DOM.
 * 
 * @author Bas van der Togt (b.vandertogt@profinit.com)
 */
function removeSub_navWhenEmpty(strClassNameEl){
	var elToCheck = $$("div.sub_nav");
 	if(!$defined(elToCheck[0])) return false;
		
	if(elToCheck[0].getChildren('ul').length < 1) {
		elToCheck[0].dispose();	
	}
}



/**
 * makeEqualHeight()
 *
 * makes multiple different elements all the same height,
 * assuming the height of the highest element
 *
 * @param arElements, Array of DOM elements to compare fix height
 *
 * @author Bas van der Togt (b.vandertogt@profinit.com)
 *
 * @return h, height of highest element in px
 */
function makeEqualHeight(arElements) {
	var h = 0;
	
	for(var i = 0 ; i < arElements.length ; i++) {
		if(arElements[i].getSize().y > h) h = arElements[i].getSize().y;
	}
	
	arElements.each(function(item) {
		var ch = 0;
		var ah = item.getStyle('padding-top').toInt();
		ah += item.getStyle('padding-bottom').toInt();
		ah += item.getStyle('border-top-width').toInt();
		ah += item.getStyle('border-bottom-width').toInt();
		ch = h - ah;
		item.setStyle('height', ch);
	});
	
	return h;
}



/**
 * initFooterDivs()
 *
 * Aligns the footer divs
 *
 * @author Bas van der Togt (b.vandertogt@profinit.com)
 */
function initFooterDivs() {
	var arrFooterDivs = $$('div.footer div');
	if (arrFooterDivs.length == 0) return false;
	
	makeEqualHeight(arrFooterDivs);
}



/**
 * initTeaserDivs()
 *
 * Aligns the teaser divs
 *
 * @author Bas van der Togt (b.vandertogt@profinit.com)
 */
function initTeaserDivs() {
	var arrTeaserDivs = $$('div.teasers div.teaser p.body');
	if (arrTeaserDivs.length == 0) return false;
	
	makeEqualHeight(arrTeaserDivs);
}



/**
 * initSupportCategories
 * puts Support categories in an accordion and enables toggling of subjects
 *
 * @author Bas van der Togt (b.vandertogt@profinit.com)
 */
function initSupportCategories() {
	
	var arrsupportCats = $$('ul.support li');
	if (arrsupportCats.length > 1) {

		var supportAccordion = new Accordion(arrsupportCats.getElements('h3.support_category'), arrsupportCats.getElements('div.support_subjects_panel'), {
			onActive: function(toggler) {
				toggler.getParent().addClass('open');
			},
			onBackground: function(toggler) {
				toggler.getParent().removeClass('open');
			},
			alwaysHide: true,
			show: 0,
			opacity: true
		});
		$$('div.support_subjects_panel')[0].setStyle('height', $$('div.support_subjects_panel')[0].getSize().y);

	}

	if ($$('ul.support dt').length == $$('ul.support dd').length) {
		$$('ul.support dt').each(function(item, index) {
			item.addEvent('click', function() {
				var oldHeight = item.getParent().getSize().y;

				if($$('ul.support dt')[index].hasClass('open')) {
					$$('ul.support dt')[index].removeClass('open');
					$$('ul.support dd')[index].removeClass('open');
				} else {
					$$('ul.support dt').removeClass('open');
					$$('ul.support dd').removeClass('open');

					$$('ul.support dt')[index].addClass('open');
					$$('ul.support dd')[index].addClass('open');
				}

				var newHeight = item.getParent().getSize().y;

				item.getParent('div.support_subjects_panel').setStyle('height', (item.getParent('div.support_subjects_panel').getSize().y + (newHeight - oldHeight)));
			});
		});
	}
}



/**
 * initDomains
 * puts Domains in an accordion
 *
 * @author Bas van der Togt (b.vandertogt@profinit.com)
 */
function initDomains() {
	
	var arrDomains = $$('ul.domains li');
	if (arrDomains.length > 1) {

		var domainsAccordion = new Accordion(arrDomains.getElements('h3.domain'), arrDomains.getElements('div.domain_panel'), {
			onActive: function(toggler) {
				toggler.getParent().addClass('open');
			},
			onBackground: function(toggler) {
				toggler.getParent().removeClass('open');
			},
			alwaysHide: true,
			show: 0,
			opacity: true
		});
		//$$('div.domain_panel')[0].setStyle('height', $$('div.domain_panel')[0].getSize().y);
	}
}



/**
 * initOverText()
 *
 * Makes a label and put it over the input field
 *
 * @author Bas van der Togt (b.vandertogt@profinit.com)
 */
function initOverText() {
	new OverText($$('#username'));
	new OverText($$('#password'));
	new OverText($$('#search'));
}



/**
 * initCarousel()
 *
 * Make carousel
 *
 * @author Bas van der Togt (b.vandertogt@profinit.com)
 */
function initCarousel() {
	
	if(!$('carousel')) return;
	
	new SimpleCarousel($('carousel'), $$('#carousel div.slide'), $$('#carousel a.navbutton'), {
		rotateAction: 'click', /*lets make the user click to jump*/
		slideInterval: 5000
	});

}



/**
 * releaseEmail()
 *
 * @author Bas van der Togt (b.vandertogt@profinit.com)
 */
function releaseEmail(nr, key, to) {
	
	var answer = confirm("Weet u zeker dat u deze e-mail alsnog wilt laten afleveren?");
	var success = "De e-mail wordt afgeleverd.";
	var failure = "Sorry, er is iets mis gegaan. Probeer het opnieuw.";
	
	if(answer) {
	
		var myRequest = new Request({
			method: 'get', 
			url: document.URL,
			onSuccess: function(responseText, responseXML) {
				//alert(success);
				//$(nr).setStyle('display','none');
				var myFx = new Fx.Tween(nr, {
					property: 'opacity',
					duration: 500, 
				});
				myFx.start(1,0);
				myFx.addEvent('onComplete',function () {
					$(nr).setStyle('display','none');
					cleanTable(nr);
				});
			},
			onFailure: function(xhr) {
				alert(failure);
			}
		});
		
		myRequest.send('action=release&id='+nr+'&key='+key+'&to='+to);
	}
}



/**
 * deleteEmail()
 *
 * @author Bas van der Togt (b.vandertogt@profinit.com)
 */
function deleteEmail(nr, key) {
		
	var answer = confirm("Weet u zeker dat u deze e-mail wilt verwijderen?");
	var success = "De e-mail is verwijderd.";	
	var failure = "Sorry, er is iets mis gegaan. Probeer het opnieuw.";
		
	if(answer) {
	
		var myRequest = new Request({
			method: 'get', 
			url: document.URL,
			onSuccess: function(responseText, responseXML) {
				//alert(success);
				//$(nr).setStyle('display','none');			
				var myFx = new Fx.Tween(nr, {
					property: 'opacity',
					duration: 500, 
				});
				myFx.start(1,0);
				myFx.addEvent('onComplete',function () {
					$(nr).setStyle('display','none');
					cleanTable(nr);
				});
			},
			onFailure: function(xhr) {
				alert(failure);
			}
		});
		
		myRequest.send('action=delete&id='+nr+'&key='+key);
	}
}



/**
 * addWB()
 *
 * @author Bas van der Togt (b.vandertogt@profinit.com)
 */
function addWB(nr, key, from, to, list) {
	
	if(list=='w'){
		var answer = confirm("Weet u zeker dat u dit e-mailadres wilt toevoegen aan de witte lijst?");
		var success = "Het e-mailadres is toegevoegd aan de witte lijst.";
	} else {
		var answer = confirm("Weet u zeker dat u dit e-mailadres wilt toevoegen aan de zwarte lijst?");
		var success = "Het e-mailadres is toegevoegd aan de zwarte lijst.";
	}
	
	var failure = "Sorry, er is iets mis gegaan. Probeer het opnieuw.";
	
	if(answer) {
	
		var myRequest = new Request({
			method: 'get', 
			url: document.URL,
			onSuccess: function(responseText, responseXML) {
				alert(success);
			},
			onFailure: function(xhr) {
				alert(failure);
			}
		});
		
		myRequest.send('action=addWB&id='+nr+'&key='+key+'&from='+from+'&to='+to+'&list='+list);
	}
}



/**
 * cleanTable()
 *
 * @author Bas van der Togt (b.vandertogt@profinit.com)
 */
function cleanTable(nr) {

	var tbody = $(nr).getParent('tbody');
	var tr = $(tbody).getChildren('tr');
	var trCount = tr.length;
	var dnCount = 0;
	
	tr.each(function(el){
		var display = el.getStyle('display');
		if(display=='none') {
			dnCount += 1;
		}
	});
	
	var total = trCount-dnCount;
	
	/*
	console.log(trCount);
	console.log(dnCount);
	console.log(total);
	*/
	
	if(total==1) {
		var table = $(tbody).getParent('table');
		var div = $(table).getParent('div.emailaddress');
		var msg = $(div).getElement('p.msg');
		
		msg.setStyle('display','block');
		table.destroy();
	}

}
