/*
-----------------------------------------------
Hostwise copyright 2008

Version         1.0
-----------------------------------------------
*/

/**
 * Constructor functies
 */
window.onload = function() {
	try {
		replaceSIFR();
		Handler.construct();
		Page.open('include/inc.poll.php','','poll');
		document.execCommand("BackgroundImageCache", false, true);
	}
	catch(exception) {}
};


function replaceSIFR() {

		if (typeof sIFR == "function") {
			sIFR.replaceElement(named({nWidth:0, nHeight:0, sSelector:"h1", sFlashSrc:"Frutiger55Roman.swf", sColor:"#ec008c", sBgColor:"#006699", nPaddingTop:0, nPaddingBottom:0, sWmode:"transparent", sFlashVars:"textalign=left&offsetLeft=0&offsetTop=0"}));
			sIFR.replaceElement(named({nWidth:0, nHeight:0, sSelector:"h2", sFlashSrc:"Frutiger55Roman.swf", sColor:"#ec008c", sBgColor:"#006699", nPaddingTop:0, nPaddingBottom:0, sWmode:"transparent", sFlashVars:"textalign=left&offsetLeft=0&offsetTop=0"}));
			sIFR.replaceElement(named({nWidth:0, nHeight:0, sSelector:"h3", sFlashSrc:"Frutiger55Roman.swf", sColor:"#ec008c", sBgColor:"#006699", nPaddingTop:0, nPaddingBottom:0, sWmode:"transparent", sFlashVars:"textalign=left&offsetLeft=0&offsetTop=0"}));
			sIFR.replaceElement(named({nWidth:0, nHeight:0, sSelector:"h4", sFlashSrc:"Frutiger55Roman.swf", sColor:"#5db6f3", sBgColor:"#006699", nPaddingTop:28, nPaddingBottom:0, sWmode:"transparent", sFlashVars:"textalign=left&offsetLeft=0&offsetTop=0"}));
			//sIFR.replaceElementBetter(named({nWidth:100,nHeight:0,sSelector:"#navigation .link", sFlashSrc:"Frutiger55Roman.swf", sColor:"#5db6f3", sLinkColor:"#5db6f3", sBgColor:"#FFFFFF", sHoverColor:"#ef018e", nPaddingTop:0, nPaddingBottom:0, sFlashVars:"textalign=left&offsetTop=0", sWmode:"opaque"}));
		
		}
}


/**
 * Error objects
 */
function Error() {
	this.error = null;
	this.container = 'errorContainer';
}
Error.prototype.set = function(error,container) {
	this.error = error;
	this.container = (container !== undefined ? container : this.container);
};

Error.prototype.show = function() {

	var objErrorContainer = $(this.container);
	if (objErrorContainer === null) {
		var objApplication = $('application');
		var objError = document.createElement('div');
		objError.setAttribute('id',this.container);
		objError.className = 'error';
		objError.appendChild(document.createTextNode(this.error));
		objApplication.appendChild(objError);
	}
	else {
		objErrorContainer.firstChild ? objErrorContainer.firstChild.data = this.error : objErrorContainer.appendChild(document.createTextNode(this.error));
		objErrorContainer.className += ' error';
	}

};

Error.prototype.hide = function() {
	var objErrorContainer = $(this.container);
	objErrorContainer.className.replace(' error','');
	objErrorContainer.innerHTML = '';
};




/**
 * Login objects
 */
function Login() {}
Login.prototype.loggedin = function() {

	Ajax.Response('ajax/controller.php','cmd=account.getLoginStatus',{
		onSuccess: function(response) {
			var data = eval('('+response.responseText+')');
			if (data.getLoginStatus[0].response.status == 'true') {
				Page.open('app/home.php');
				Module.init();
			}                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
			else {
				Ajax.Updater('content','app/login.php','',{container: 'content'});
			}
		}
	});

};

Login.prototype.process = function(response) {

	show('loginStatus');
	if ($('loginStatus') !== undefined) {
		var objLoginStatus = $('loginStatus');

		/**
		 * registerContainer zichtbaar, dan andere melding geven
		 */
		var registerContainer = $('registerContainer');
		if (registerContainer !== undefined && registerContainer.style.display === 'block') {
			var message = 'Bezig met registreren';
		}
		else {
			var message = 'Bezig met inloggen...';
			if (document.getElementById('action') !== null) {
				$('action').value = '';
			}
		}
		objLoginStatus.className = 'notice';
		objLoginStatus.firstChild ? objLoginStatus.firstChild.data = message : objLoginStatus.appendChild(document.createTextNode(message));
	}

	Ajax.Response('base/account/login.php','',{
		method: 'post',
		form: 'loginform',
		onSuccess: function(response) {
			var data = eval('('+response.responseText+')');
			if (data.status == 'true') {
				if (data.alert) {
					alert(data.alert);
				}
				location.href = window.location.toString()+'?'+new Date().getTime();
			}
			else {
				//objLoginStatus.firstChild.data = data.setLogin[0].response.message;
				$('loginStatus').className = 'error';
				Error.set(data.message,'loginStatus');
				Error.show();
			}
		}
	});

	return false;

};

Login.prototype.logout = function() {

	Ajax.Response('base/account/login.php','action=logout',{
		onSuccess: function(response) {
			var data = eval('('+response.responseText+')');
			if (data.status == 'true') {
				location.reload();
			}                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
			else {
				alert('Er is een fout opgetreden: uitloggen mislukt. Probeer opnieuw.');
			}
		}
	});

};

Login.prototype.register = function() {

	Ajax.Response('base/account/register.php','',{
		method: 'post',
		form: 'registerform',
		onSuccess: function(response) {
			var data = eval('('+response.responseText+')');
			if (data.status == 'true') {
				alert('Er is een activatie e-mail verstuurd naar het opgegeven e-mailadres. Na activatie kunt u uw account gebruiken.');
				location.href = window.location.toString()+'?'+new Date().getTime();
			}
			else {
				//objLoginStatus.firstChild.data = data.setLogin[0].response.message;
				$('loginStatus').className = 'error';
				Error.set(data.message,'loginStatus');
				Error.show();
			}
		}
	});

};

function Page() {
	this.container = 'content';
	this.request = '';
}

Page.prototype.open = function(page,request,container) {

	this.container = (container !== undefined ? container : this.container);
	this.request = (request !== undefined ? request : this.request);

	var objContainer = $(this.container);
	//objContainer.className += ' loadingDivPosition';
	show(this.container);

	Ajax.Updater(this.container,page,request,{
		container: this.container,
		onFailure: function() {
			alert('Kan de pagina \''+page+'\' niet vinden');
		}
	});

	//objContainer.className = objContainer.className.replace(/loadingDivPosition/gi,'');
	Page.clear();

};

Page.prototype.overlay = function(page,request) {
	this.container = 'overlayContent';
	Page.open(page,request);
	show('overlay');
	show('overlayContainer');
	Page.clear();
};

Page.prototype.clear = function() {
	this.container = 'content';
	this.request = '';
};


function Handler() {}

Handler.prototype.construct = function() {
	Handler.articles();
	Handler.navigation();
	Handler.selectCategories();
};

Handler.prototype.articles = function() {

	var articles = document.getElementsByClassName('article');
	var article;
	for(var i=0;article=articles[i];i++) {
		article.onmouseover = function() {
			this.className = this.className += ' articleOver';
		};
		article.onmouseout = function() {
			this.className = this.className.replace('articleOver','');
		};
	}

};

Handler.prototype.navigation = function() {

	var navigation = $('navigation').getElementsByTagName('li');
	var node;
	for(var i=0;node=navigation[i];i++) {
		if (node.childNodes[2] !== undefined) {
			Event.add(node,'mouseover',function() {
				show(this.childNodes[2]);
			},false);
			Event.add(node,'mouseout',function() {
				hide(this.childNodes[2]);
			},false);
		}
	}

};

Handler.prototype.selectCategories = function() {

	var select = $('selectcategory');
	select.onchange = function() {

		var i = document.forms['categoriesform'].selectcategory.selectedIndex;
		var category = document.forms['categoriesform'].selectcategory[i].firstChild.nodeValue;
		category = category.toString().toLowerCase();
		location.href = '?/category/'+category+'/';

	};

};


var overlayCloseHandler = function() {
	if ($('overlayClose') !== undefined) {
		$('overlayClose').onclick = function() {
			overlayClose();
			var objContent = $('overlayContent');
			if (objContent.hasChildNodes()) {
				while(objContent.hasChildNodes()) {objContent.removeChild(objContent.firstChild);}
			}
		};
	}
};

var overlayClose = function() {
	hide('overlay');
	hide('overlayContainer');
};



var votePoll = function() {

	Ajax.Updater('poll','include/inc.poll.php','',{
		form: 'pollform',
		method: 'post',
		onFailure: function() {
			alert('Tijdens het stemmen is een onbekende fout opgetreden');
		}
	});

};

var addComment = function() {

	Ajax.Updater('poll','base/article/comment.php','',{
		form: 'commentform',
		method: 'post',
		onSuccess: function(response) {
			var data = eval('('+response.responseText+')');
			if (data.error !== undefined) {
				Error.set(data.error,'comment_response');
				Error.show();
			}
			else if (data.response === 'success') {
				location.href = window.location.toString().replace('#comments','')+new Date().getTime()+'#comments';
			}
		},
		onFailure: function() {}
	});

	return false;

};

var search = function() {

	var q = $('searchQuery').value;
	if (q === '') {
		q = ' ';
	}
	var category = '';
	if (document.forms['searchform'].searchCategory !== undefined) {
		var i = document.forms['searchform'].searchCategory.selectedIndex;
		category = document.forms['searchform'].searchCategory[i].firstChild.nodeValue;
		category = category.toString().toLowerCase();
	}

	location.href = '?/search/'+encodeURIComponent(q)+'/'+encodeURIComponent(category);

	return false;

};

var advancedSearch = function() {

	var advancedSearch = $('advancedSearch');
	if (advancedSearch.style.display == 'block') {
		hide('advancedSearch');
		advancedSearch.parentNode.getElementsByTagName('a')[0].firstChild.nodeValue = 'Uitgebreid zoeken';
	}
	else {
		show('advancedSearch');
		advancedSearch.parentNode.getElementsByTagName('a')[0].firstChild.nodeValue = 'Uitgebreid zoeken verbergen';
	}

	/**
	 * Div leeg? dan formulier inladen
	 */
	if (advancedSearch.innerHTML == '') {
		Ajax.Updater('advancedSearch','base/search/advanced.php','',{});
	}

};


function findPosX(obj) {
	var pos = 0;
	if (obj.offsetParent) {
		while (1) {
			pos+=obj.offsetLeft;
			if (!obj.offsetParent) break;
			obj=obj.offsetParent;
		}
	}
	else if (obj.x) {pos+=obj.x;}
	return pos;
}

function findPosY(obj) {
	var pos = 0;
	if (obj.offsetParent) {
		while (1) {
			pos+=obj.offsetTop;
			if (!obj.offsetParent) break;
			obj=obj.offsetParent;
		}
	}
	else if (obj.y) {pos+=obj.y;}
    return pos;
}


onerror = errorHandler;
Error = new Error();
Login = new Login();
Page = new Page();
Handler = new Handler();