// Requires Event.Delegation.js
window.messageHandler = $H({
	messages: $H(),
	get: function(namespace){
		return this.messages[namespace]||false;
	},
	set: function(){
		if($type(arguments[0]) == "object"){
			$H(arguments[0]).each(function(value,key){
				this.set(key,value);
			}.bind(this));
		}else{
			this.messages[arguments[0]] = arguments[1];
		}
	}
});

window.XHR = $H({
	set: function(key,value){
		if(this[key]) return false;
		this[key] = value;
		return true;
	},
	get: function(key){
		if(key == "set" || key == "get") return false;
		return this[key];
	}
});

window.passchanger = function(){
	
	if ( $('password') && $('passchangebtn') ) {
		$('passchangebtn').disabled = true;
		
		var passCoords = $('password').getCoordinates($('password').getOffsetParent());
		var passQReporter = new Element('div', {
			'class':'passwordfeedback',
			styles:{
				'top':passCoords.top,
				'left':'5px'
			}
		});
		
		$("password").addEvent('keyup', function() {
			var myR = "[{0-9}]+";
			
			if ($$('[class=passwordfeedback]').length == 0) {
				passQReporter.inject( $$('[class^=changepass]')[0], 'after' );
			}
			
			if ( $('password').get('value').length >= 7 && $('password').get('value').test(myR) ) {
				$('passchangebtn').disabled = false;
				passQReporter.set('styles', {'background-image': 'url(\'/../img/login/rett.png\')'});
				passQReporter.set('html', 'Passord OK.');
			} else {
				$('passchangebtn').disabled = true;
				passQReporter.set('styles', {'background-image': 'url(\'/../img/login/feil.png\')'});
				passQReporter.set('html', 'Minst 6 bokstaver og ett tall.');
			}
		});
	}
}

var loginResponse = function(status) {
	if(status.message) {
		status.message = window.messageHandler.get(status.message)||status.message;
	}
	if(status.status == "success"){ 
		window.fireEvent('loginsuccess', status);
	}else if(status.status == "error"){
		window.fireEvent('loginerror', status);
	}
}


window.addEvents({
	'loginformloaded':function(formid){
		if($defined(formid) && formid != "") var formid = "loginform";
		$(formid).addEvent("submit", function(e){
			var iframe = ($('ssoiframe')) ? $('ssoiframe') : new Element('iframe',{
				'src':'about:blank',
				'name':'ssoiframe',
				'id':'ssoiframe',
				'styles':{'display':'none'}
			}).inject(this,'bottom');
			
			this.setProperty('target',"ssoiframe");
			var referer = this.getElement('input[name=referer]');
			referer.setProperty('value',location.protocol+"//"+location.hostname+":"+location.port+"/jsp/login.jsp");
		});
	},
	'loginsuccess':function(status){
		// do check for comment form
		//console.log('in loginsuccess');
		if ($('loginbox')) {
			if (status.onetime) {
				new Element("div", {
					'class': 'changepass',
					'html': '	<form id="changepass" method="post" action="https://auth.tek.no?action=setPassword&referer=' + location.href + '"><b>' + status.message + '</b><br />Vil du ha et passord som er lett å huske? (Valgfritt) <br><b>Permanent passord:</b> <input type="password" name="password" id="password"><input id="passchangebtn" type="submit" value="Lagre"></form>'
				}).inject($('loginbox'), "before");
				passchanger();
			}else {
				new Element('p', {
					'class': 'okmessage',
					'text': status.message
				}).inject($('loginbox'), 'before');
			}
		}
		if(!$('commentform') && window.commentsList){
			// load comment form with loading indicator
			var req = new Request({
				method:"get", 
				url:(window.commentsList.contains("?"))?window.commentsList+"&referer="+encodeURIComponent(location.href):window.commentsList+"?referer="+encodeURIComponent(location.href),
				onRequest: function(){
					//console.log('request started');
					var loader = new Element('p',{
						'id':'commentformloader',
						'class': 'loader',
						'styles':{
							'background-color':'#f7f7f7',
							'background-image':'/img/ajax-loader.gif',
							'background-repeat':'none',
							'background-position':'center center',
							'height':'60px',
							'padding-top':'30px'
						},
						'text':'laster kommentarskjema'
					}).replaces($('loginbox'));
					// do remove login form
				},
				onSuccess:function(r){
					new Element('div',{'html':"<div>"+r+"</div>"}).getFirst().replaces($('commentformloader'));
				},
				onFailure: function(r){
					new Element('p',{'html':"En feil har oppstått"}).replaces($('commentformloader'));
				}
			}).send("getEl=form");
		} else {
			if ($('loginbox')) {
				new Element('p').adopt(new Element('a', {
					'href': 'https://auth.tek.no/?action=logout&referer=' + location.href,
					'text': 'Logg ut'
				})).inject($('loginbox'), 'before');
				// do remove login form but display logout link
				if ($('formcaptcha')) $('formcaptcha').destroy();
				if ($('loginbox')) $('loginbox').destroy();
			}
		}
	},
	'loginerror': function(status){
		if ($('loginbox')) {
			var errorReporter = document.getElement('#loginbox .errorreporter');
			if (errorReporter) {
				errorReporter.empty();
			}else {
				errorReporter = new Element('div', {
					'class': 'errorreporter clearfix'
				}).inject(document.getElement('#loginform button.bttn'), "before");
			}
			errorReporter.grab(new Element('div', {
				'class': 'errormessage',
				'text': status.message
			}));
		}
	},
	// bodyloaded events, add here
	'bodyloaded': function(){
		document.getElement('body').addEvent("click:relay(.calendar .change)", function(e){
			if (!window.agendaCalendarURL) 
				return;
			e.stop();
			var req = new Request({
				url: window.agendaCalendarURL,
				onComplete: function(response){
					document.id('calendarajax').innerHTML = response;
				}
			}).get({
				'col': 'second',
				'startdate': this.get('rel'),
				'ajax': 'true'
			});
		});
	}
});