
/* Fragebogen overlay */
fragebogen = {
	popup: false,
	pageStats: [],
	init: function(){
		fragebogen.activePage = fragebogen.popup.find('.pages > .active');
		fragebogen.nextButton = fragebogen.popup.find('.next');
		fragebogen.prevButton = fragebogen.popup.find('.prev');
		fragebogen.pagenumber = fragebogen.popup.find('#pagenumber');
		fragebogen.results = fragebogen.popup.find('.results');
		fragebogen.totalPages = $('#pagesTotal',fragebogen.popup).text();
		fragebogen.progressBar = fragebogen.popup.find('.progressbar span');
		fragebogen.progressFactor = Math.ceil(170 / (fragebogen.totalPages));
		fragebogen.progressWidth = 0;
		fragebogen.percent = $('#percent',fragebogen.popup);
		fragebogen.percentFactor = Math.ceil(100 / (fragebogen.totalPages));
		fragebogen.percentValue = 0;
		!fragebogen.activePage.next().length && fragebogen.nextButton.css('visibility','hidden');
		!fragebogen.activePage.prev().length && fragebogen.prevButton.css('visibility','hidden');
		
		imagesPath = "/static/css/www.schilddruesen-institut.de/images/niceforms/_pink/";
		imagesExtension = "png";
		
		
		api.call(
			'/api/fragebogen/getFields',
			null,
			function(res){
				var data = [];
				for(i in res.data){
					data.push(res.data[i]);
				}
				for(i in data){
					var $elm = $(':input[name="'+ data[i].field +'"]',fragebogen.popup);
					if($elm.length == 1)
					if($elm.attr('type') == 'checkbox') {
						if($elm.val() == data[i].value) {
							$elm.attr('checked',false).change();
						}
					} else {
						$elm.val(data[i].value);
					}
					else {
						$elm.each(function(){
								if($(this).val() == data[i].value)
									$(this).attr('checked',true).change();
						});
					}
					if(i == data.length-1){
						var $page = $elm.parents('.page'),
						n = 0;
						while(!$page.hasClass('active') && n < 20){
							fragebogen.nextPage();
							n++;
						}
					}
				}
				$('input, textarea',fragebogen.popup).live('change', fragebogen.change);
				$('a',fragebogen.results).live('click', fragebogen.gotoPage);
				
				$('.page',fragebogen.popup).each(function(){
						fragebogen.pageStats[$(this).attr('id')] = {valid: 0, invalid: 0};
				});
				
				
				imagesPath = "/static/css/www.schilddruesen-institut.de/images/niceforms/";
				imagesExtension = "jpg";
			}
			);
		
		
		
	},
	show: function(){
		if(!fragebogen.popup){
			fragebogen.popup = layout.popup.show({
					templatePath: '/api/fragebogen/',
					popupLayout: 'inhalt',
					isModal: true,
					overlay: {opacity: 0.8, isAnimated: true, color: '#FFFFFF'},
					buttons: [],
					width: 900,
					showIndicator: true,
					onload: fragebogen.init,
					isDraggable: false
			}).element;
		}
		else{
			fragebogen.popup.fadeIn();
			$('#globalOverlay').fadeIn();
		}
		return false;
	},
	hide: function(){
		$('#globalOverlay').fadeOut();
		fragebogen.popup.fadeOut();
		return false;
	},
	refresh: function(){
		fragebogen.popup.remove();
		fragebogen.popup = false;
		fragebogen.show();
	},
	nextPage: function(){
		(fragebogen.progressWidth = fragebogen.progressWidth + fragebogen.progressFactor) && fragebogen.progressBar.css('width', (fragebogen.progressWidth<166)?fragebogen.progressWidth:170);
		fragebogen.percentValue = fragebogen.percentValue+fragebogen.percentFactor;
		fragebogen.percent.text((fragebogen.percentValue > 96)?100:fragebogen.percentValue);
		
		fragebogen.activePage.next().length && (fragebogen.activePage = fragebogen.activePage.removeClass('active').next().addClass('active')) && fragebogen.prevButton.css('visibility','visible') && fragebogen.pagenumber.text(fragebogen.pagenumber.text()*1 + 1);
		!fragebogen.activePage.next().length && fragebogen.nextButton.css('visibility','hidden') && fragebogen.validateAll();
		fragebogen.activePage.parent().parent().attr('scrollTop',0);
		return false;
	},
	prevPage: function(){
		fragebogen.progressWidth = fragebogen.progressWidth - fragebogen.progressFactor;
		fragebogen.progressBar.css('width', (fragebogen.progressWidth>1)?fragebogen.progressWidth:2);
		fragebogen.percentValue = fragebogen.percentValue-fragebogen.percentFactor;
		fragebogen.percent.text((fragebogen.percentValue < 1)?0:fragebogen.percentValue);
		
		fragebogen.activePage.prev().length && (fragebogen.activePage = fragebogen.activePage.removeClass('active').prev().addClass('active')) && fragebogen.nextButton.css('visibility','visible') && fragebogen.pagenumber.text(fragebogen.pagenumber.text()*1 - 1);
		!fragebogen.activePage.prev().length && fragebogen.prevButton.css('visibility','hidden');
		fragebogen.activePage.parent().parent().attr('scrollTop',0);
		$('.overview, .submit', fragebogen.popup).hide();
		return false;
	},
	change: function(e) {
		var target = $(e.target);
		var error  = false;
		var parent = target.parents('.group');
		if(parent.hasClass('checkpercent')) {
			if(!fragebogen.validatePercent(parent)) {
				error = true;
			}
		}
		if(e.target.type == 'text' && !fragebogen.validateText(target)) {
			error = true;
			return false;
		}
		
		if(!error) {
			fragebogen.clearError(target);
		}
		
		api.call(
			'/api/fragebogen/saveField',
			{field: e.target.name, value: e.target.value},
			function(res){
			}
			);
	},
	submit: function(){
		if(fragebogen.validateAll()){
			api.call(
				'/api/fragebogen/submit',
				null,
				function(res){
					fragebogen.hide();
					$('#fragebogenBox').remove();
				}
				);
		}
		return false;
	},
	validateAll: function(){
		for (var i in fragebogen.pageStats)
			fragebogen.pageStats[i] = {valid: 0, invalid: 0};
		$('.answerError',fragebogen.popup).removeClass('answerError');
		var $mandatory = $('.mandatory',fragebogen.popup);
		var $validate = $('.checkpercent',fragebogen.popup);
		var $names = [];
		$mandatory.each(function(){
				var name = $(this).attr('name');
				$names[name] || ($names[name] = []);
				$names[name].push(this);
		});
		var noError = true;
		for(var j in $names){
			if($names[j].length == 1){
				noError = fragebogen.validateText($names[j][0]) && noError;
			} else {
				noError = fragebogen.validateFields($names[j]) && noError;
			}
		}
		$validate.each(function() {
				noError = fragebogen.validatePercent($(this)) && noError;
		});
		
		fragebogen.results.html('');
		var isNotComplete = false;
		for(var i in fragebogen.pageStats){
			if(fragebogen.pageStats[i].invalid > 0){
				var seite  = parseInt(i.replace('fragebogenPage_', '')) - 1;
				var plural = (fragebogen.pageStats[i].invalid == 1) ? 'Antwort':'Antworten';
				fragebogen.results.append('<p><a href="#'+i+'">Frage '+seite+ '</a>' +': '+ fragebogen.pageStats[i].invalid +' fehlende oder ungültige '+plural+'</p>');
				isNotComplete = true;
			}
		}
		if(isNotComplete) {
			fragebogen.results.prepend('<p class="bold">Bei folgenden Fragen haben Sie leider noch keine oder eine falsche Antwort hinterlegt. Bitte vervollständigen Sie den Fragebogen um die Bearbeitung abzuschließen.</p>');
		}
		
		noError = !isNotComplete;
		
		if(!noError){
			fragebogen.percent.text(95);
			fragebogen.progressBar.css('width', 162);
			fragebogen.overviewEnabled = true;
		}
		else {
			$('.submit', fragebogen.popup).show();
		}
		$('.overview', fragebogen.popup).hide();
		
		return noError;
	},
	validatePercent: function($elem) {
		var percent = 0;
		var fields  = 0;
		$elem.find('input[type=text]').each(function() {
				$self = $(this);
				if($self.val() == '' || parseInt($self.val(), 10) < 0) {
					$self.val(0);
				}
				percent += parseInt($self.val(), 10);
				fields++;
		});
		if(fields == 1) {
			if(percent > 100) {
				$elem.find('.answer').addClass('answerError');
				fragebogen.pageStats[$elem.parents('.page').attr('id')].invalid++;
				return false;
			}
		} else {
			if(percent != 100) {
				$elem.find('.answer').addClass('answerError');
				fragebogen.pageStats[$elem.parents('.page').attr('id')].invalid++;
				return false;
			}
		}
		return true;
	},
	validateText: function(elem) {
		var $elem = $(elem);
		if(($elem.hasClass('checkint') && $elem.val().match(/\d+/))
			|| (!$elem.hasClass('checkint') && ($elem.val().trim() != '' || $elem.text().trim() != ''))) {
		fragebogen.pageStats[$elem.parents('.page').attr('id')].valid++;
		return true;
			}
			$elem.parents('.answer').addClass('answerError');
			fragebogen.pageStats[$elem.parents('.page').attr('id')].invalid++;
			return false;
	},
	validateFields: function(elems) {
		if(elems){
			var elem = $('');
			for(var i in elems){
				if(typeof($(elems[i]).get(0).name) != 'undefined')
					elem = $(elems[i]);
				
				if(!elem.hasClass('noSelection') && elem.attr('checked')) {
					fragebogen.pageStats[elem.parents('.page').attr('id')].valid++;
					return true;
				}
			}
			
			elem.parent().parent().parent().children('.answer').addClass('answerError');
			var pageid = elem.parents('.page').attr('id');
			fragebogen.pageStats[pageid] && fragebogen.pageStats[pageid].invalid++;
			return false;
		}
	},
	clearError: function($elem) {
		if($elem.parents('.group').hasClass('checkpercent')) {
			$elem.parents('.group').find('.answer').removeClass('answerError');
		} else {
			var par = $elem.parents('.answerError').removeClass('answerError');
			if(!par.parent().hasClass('textline')) {
				par.siblings('.answerError').removeClass('answerError');
			}
		}
	},
	lastPage: function(){
		var pages = $('.pages',fragebogen.popup).children();
		var target = $(pages.get(pages.length-1));
		var n = 0;
		while(!target.hasClass('active') && n < fragebogen.totalPages) {
			fragebogen.nextPage();
			n++;
		}
	},
	gotoPage: function(e) {
		var t = '#' + ($(e.target).attr('href')).replace(/(.*)#/,'');
		var target = $(t);
		var n = 0;
		while(!target.hasClass('active') && n < fragebogen.totalPages) {
			fragebogen.prevPage();
			n++;
		}
		fragebogen.overviewEnabled && $('.overview', fragebogen.popup).show();
		return false;
	}
}

/* Chat */
sdichat = {
	
	openHelp: function() {
		opts = {
			title: 'Chat Hilfe',
			text: $('#chatHelp').html(),
			type: 'text',
			allowHTML: true,
			isModal: true,
			width: 700,
			anchor: 'center',
			overlay: { opacity: 0.6, isAnimated: false, color: '#FFFFFF' },
			buttons: [{value: 'OK', result: true, canClose: true }]
		}
		sdichat.popup = layout.popup.show(opts);
		return false;
	},
	closeHelp: function(){
		sdichat.popup.close();
	},
	openChatiquette: function() {
		opts = {
			title: 'Chatiquette',
			text: $('#chatChatiquette').html(),
			type: 'text',
			allowHTML: true,
			isModal: true,
			width: 700,
			anchor: 'center',
			overlay: { opacity: 0.6, isAnimated: false, color: '#FFFFFF' },
			buttons: [{value: 'OK', result: true, canClose: true }]
		}
		sdichat.popup = layout.popup.show(opts);
		return false;
	}
	
}
networks.chat && $('#contactModForm').submit(function(e){
		e.preventDefault();
		networks.chat.whisperMod(e.target);
});
networks.chat && networks.chat.addFunc('beforeInsert', function(vars){
		var $li = vars.elem;
		var html = $li.html();
		if(html.indexOf('##TITLE##') != -1){
			if(vars.userLevel.mod || vars.userLevel.expert){
				html = html.replace('##TITLE##',(vars.userLevel.expert?'<b>Experte</b>':'<b>Moderator</b>'));
			}
			else{
				html = html.replace('##TITLE## - ','');
			}
			$li.html(html);
		}
		
		if(vars.type == 'whisperRecv'){
			var $text = $li.find('.text');
			var $ref = $li.find('.userlink');
			var $link = $ref.clone().text('(antworten)').addClass('answerlink').data('name',$ref.text());
			$text.append(' ').append($link);
		}
		
		return $li;
});
