$(document).ready(function() {
    
    FixAddThisPlacement();
    
    $('#subsitechooser, #languagechooser').change(gotoSite);
    //$('#languagechooser, #subsitechooser').DGselectbox().parent().find('.DGselectbox-inputwrapper label').wrapInner('<span />');
    
    $('#searchareachooser').DGselectbox({
        buttonWidth: 29,
        autoStyle: false,
        setSize: false
    });
    $('.b3200-type-5 select').DGselectbox({buttonWidth: 29});
    
    $('#topmenusearch input, .advancedsearch input, .noticeemail input').filter(':visible').fieldhint();
    
    $('.tout.tab').wrapAll('<div class="tabs"></div>')
    $('.tabs').tabs();
    
    FixNarrowTouts();
    HandleRandomStories();
    FixButtonBackgrounds();
    GetPollResults();
    HighlightSearchterm();
    HandleWebQuiz();
    HandleComments();
    HandleWebLex();
    HandleNoticeSubscribeForm();
	HandleQuestionaire();
});

function printPage() {
	window.print();
}

function HighlightSearchterm() {
    if ($('#container.searchresultpage').size() == 0) {
        var searchstring = $('#topmenusearch input[name=searchstring]').val();
        if (searchstring) $('article section > *:not(div#addThisMain)').highlight(searchstring);
    }
}


function FixNarrowTouts() {
    $('article .tout.narrow').add('<div class="clearfix" />').wrapAll('<div class="narrowtouts" />');
}

function gotoSite() {
    window.location = 'http://' + $(this).val();
}

function showSitemap(obj, toparea_id) {
    obj.load("index.dsp?_view_=sitemap&area=" + toparea_id);
}

function showSearchresult(obj, searchstring, searcharea, i) {
    obj.load("index.dsp?_view_=searchresult&searchstring=" + encodeURIComponent(searchstring) + "&searcharea=" + searcharea + "&i=" + i);
}

function showMostVisitedPages(obj, url) {
	obj.load(url);
}

function HandleRandomStories () {
    var repository = $('.randomstories_repository');
    var stories = repository.find('.story');
    var randomstories = $('.randomstories');
    var number = parseInt(repository.attr('data-number'), 10) || 4;
    var height = (214*number/2) - 20;
    randomstories.height(height);
    
    var randArr = new Array();
    for (var i = 0; i < stories.size(); i++) {
        randArr.push(i);
    }
    for (var i = 0; i < number; i++) {
        var r = Math.floor(Math.random() * randArr.length);
        randomstories.append($(stories.get(randArr.splice(r, 1))));
    }
}

function GetPollResults () {
    $('.WebVote').each(function() {
        var holdingDiv = $(this);
        var pollIdHolder = holdingDiv.find('.getresult');
        if (pollIdHolder.size()) {
            holdingDiv.load(
                'index.dsp?_view_=pollresult&NoCache=1&poll_id=' + pollIdHolder.text(),
                function () {
                    if (typeof (IE8FixLastChild) !== 'undefined') {
                        IE8FixLastChild();
                    }
                }
            );
        }
    });
}

function clickStory (href, target) {
    if (target == '') target = '_self';
    if (target == '_self') {
        window.location = href;
    } else {
        window.open(href);
    }
}

function FixButtonBackgrounds () {
    $('.b3200-submit input, button.submit').each(
        function() {
            var elem = $(this);
            var url = '';
            var width = 0;
            if (elem.outerWidth() > 130) {
                url = '/img/bg_submit_180.png';
                width = 180;
            } else if (elem.outerWidth() > 79) {
                url = '/img/bg_submit_130.png';
                width = 130;
            } else {
                url = '/img/bg_submit_79.png';
                width = 79;
            }
            elem.css('background-image', 'url(' + url + ')').width(width + 'px');
 
        }
    );
    
    $('button.small, button.large').each(
        function() {
            var elem = $(this);
            var url = '';
            var width = 0;
            if (elem.outerWidth() > 119) {
                url = '/img/bg_button_180.png';
                width = 180;
            } else if (elem.outerWidth() > 80) {
                url = '/img/bg_button_120.png';
                width = 120;
            } else if (elem.outerWidth() > 54) {
                url = '/img/bg_button_80.png';
                width = 80;
            } else {
                url = '/img/bg_button_54.png';
                width = 54;
            }
            if ($(this).hasClass('small')) {
                url = url.replace(/button_/gi, 'button_small_');
            }
            elem.css('background-image', 'url(' + url + ')').width(width + 'px');
 
        }
    );
}

function HandleWebQuiz() {
    $('.webquiz .startquiz').click(function (e) {
        e.stopPropagation();
        e.preventDefault();
        RunQuiz(this);
    });
    
    $('.webquiz form').live('submit', function (e) {
        e.preventDefault();
        SubmitQuiz($(this));
    });
    
}

function RunQuiz(link) {
    var wrapper = $(link).parents('.webquiz:first');
    var quiz_id = wrapper.find('input[name=quiz_id]').val();
    $.ajax({
        type: 'GET',
        url: 'index.dsp',
        data: {
            _view_: 'webquiz',
            quiz_id: quiz_id
        },
        success: function (data, textStatus, jqXHR) {
            wrapper.html(data);
            FixButtonBackgrounds();
        },
        dataType: 'html'
    });
}

function SubmitQuiz (form) {
    var wrapper = $(form).parents('.webquiz:first');
    $.ajax({
        type: 'POST',
        url: 'post.dsp',
        data: form.serialize(),
        success: function (data, textStatus, jqXHR) {
            wrapper.html(data);
            FixButtonBackgrounds();
        },
        error: function () {
            
        },
        dataType: 'html'
    });
}

function HandleComments () {
    var comment_form = $('#new_comment_form');
    comment_form.find('input[name=text]').val('');
    comment_form.find('input[name=name]').val('');
    comment_form.find('input[name=safety_user]').val('');
    comment_form.submit(function(e){
        return ValidateComment(this);
    });
}

function wrong_security_code( msg ) {
    alert( msg );
}

function ValidateComment( frm ) {
    var comment_form = $(frm);
    var text = comment_form.find('input[name=text]').val();
    var name = comment_form.find('input[name=name]').val();
    var safety_user = comment_form.find('input[name=safety_user]').val();
    var safety_system = comment_form.find('input[name=safety_system]').val();
    if (text == '' || name == '' || safety_user == '') { 
        alert(translate('Udfyld_venligst_alle_felter'));
        return false;
    } else if (!checkSecurityCode(safety_user, safety_system)) {
        alert(translate('Fejl_i_kode'));
        return false;
    } else {
        return true;	
    }
}

function checkSecurityCode (safety_user, safety_system) {
	var valid = false;
	jQuery.ajax({
		url: 'index.dsp',
		data: {_view_: 'capchacheck', safety_user: safety_user, safety_system: safety_system},
		async: false,
		success: function(data, status, req) {
			if (data == 'true') {
				valid = true;
			}
		}
	});
	return valid;
}

function FixAddThisPlacement () {
    $('section.topstory').each(function () {
        var section = $(this);
        var addThis = section.find('#addThisMain');
        var figure = section.find('figure.frontpage_topimage.right');
        if (addThis.size() && figure.size()) {
            var ofsAddThis = addThis.offset();
            var ofsFigure = figure.offset();
            var figureLeftMargin = parseInt(figure.css('margin-left'), 10);
            
            //alert(
            //    'ofsAddThis: ' + ofsAddThis.left + ' - ' + ofsAddThis.top
            //    + '\nofsFigure: ' + ofsFigure.left + ' - ' + ofsFigure.top
            //    + '\nfigure.outerHeight(): ' + figure.outerHeight()
            //    + '\naddThis.outerWidth(): ' + addThis.outerWidth()
            //);
            
            
            if (
                    ofsFigure.top + figure.outerHeight() + 5 > ofsAddThis.top
                    &&
                    ofsAddThis.left + addThis.outerWidth() > ofsFigure.left
                ) {
                var margin = figure.outerWidth() + figureLeftMargin;
                addThis.css('margin-right', margin + 'px');
            }
        }
    });
}

function HandleWebLex () {
    $('.word_list .word .wordlink').click(function(e){
        e.preventDefault();
        var link = $(this);
        var word = link.parents('.word:first');
        var word_description = word.find('.word_description');
        var word_id = word.find('.word_id').text();
        if (word_description.is(':visible')) {
            word_description.hide();
            word.addClass('closed').removeClass('open');
        } else {
            if (word_description.text() == '' && word_id) {
                link.addClass('wait')
                word_description.load(
                    '/index.dsp?_view_=weblexword&word_id=' + word_id,
                    null,
                    function (responseText, textStatus, XMLHttpRequest) {
                        word.addClass('open').removeClass('closed');
                        link.removeClass('wait');
                    }
                );
            }
            word_description.show();
        }
    });
}

function HandleNoticeSubscribeForm () {
    var elem = $('.noticesubscribe');
    var form = elem.find('form');
    var form_disabled = (form.find('input[disabled=disabled]').size() > 0);
    form.find('input[name=serveraction]').val(form.find('input[name=serveraction_ajax]').val());
    
    form.bind('submit', function (e) {
        e.preventDefault();
        var formdata = form.serialize();
        form.find('*:not(label)').css('cursor', 'wait');
        $.ajax({
            type: 'GET',
            url: 'post.dsp',
            data: formdata,
            success: function (data, textStatus, jqXHR) {
                //alert(data);
                form.find('*:not(label)').css('cursor', 'auto');
                var xml = $(data);
                var mode = xml.find('mode').text();
                var result = xml.find('result');
                if (mode == 'noticelists') {
                    elem.find('.error').hide();
                    if (parseInt(result.attr('emailsuccess'), 10) == 0) {
                        elem.find('.error.errortext').show();
                    } else {
                        var lists = xml.find('lists list');
                        lists.each(function() {
                            form.find('.listcheckbox input[value=' + $(this).attr('id') + ']').attr('checked', 'checked');
                        });
                        form.find('.listcheckbox input').removeAttr('disabled');
                        form.find('input[name=serveraction]').val(xml.find('nextserveraction').text());
                        form.find('input[name=subscriberemail]').val(xml.find('subscriberemail').text());
                        form.find('.noticeemail .subscriberemail').show().text(xml.find('subscriberemail').text());
                        form.find('.noticeemail input').hide();
                    }
                    
                } else {
                    var result = xml.find('result');
                    var message_ident = '';
                    if (parseInt(result.attr('subscribesuccess'), 10) == 0) {
                        message_ident = 'errortext';
                    } else {
                        if (parseInt(result.attr('count_lists'), 10) == 0){
                            message_ident = 'unsubscribe_all_text';
                        } else {
                            message_ident = 'successtext';
                        }
                    }
                    elem.find('.error').hide();
                    elem.find('.error.' + message_ident).show();
                } 
            },
            dataType: 'xml'
        });
    });
}

function HandleQuestionaire () {
	var old_questionaire = $('.questionaire');
	//questionaire.hide();
	
	var questionaireholder = old_questionaire.find('.advanced');
	var questionholder = questionaireholder.find('.question');
	
	var nav = $('<div class="nav" />');
	
	$.QuestionaireQuestionIndex = 0;
	var ShowNextQuestionaireQuestion = function (e) {
		e.preventDefault();
		ShowQuestionaireQuestion(old_questionaire, questionaireholder, questionholder, $.QuestionaireQuestionIndex + 1);
	}
	var ShowPrevQuestionaireQuestion = function (e) {
		e.preventDefault();
		ShowQuestionaireQuestion(old_questionaire, questionaireholder, questionholder, $.QuestionaireQuestionIndex - 1);
	}
	
	
	nav.append($('<div class="prev button"></div>').click(ShowPrevQuestionaireQuestion));
	var dots = $('<div class="dots button" />');
	old_questionaire.find('form .question').each(function(index) {
		var dot = $('<div class="dot button"></div>').click(function (e) {
			e.preventDefault();
			ShowQuestionaireQuestion(old_questionaire, questionaireholder, questionholder, index);
		});
		dots.append(dot);
	});
	nav.append(dots);
	nav.append($('<div class="next button"></div>').click(ShowNextQuestionaireQuestion));
	nav.append($('<div class="submit button"></div>').click(function(e) {
		e.preventDefault();
		$(old_questionaire.find('form').submit());
	}));
	questionaireholder.append(nav);
	ShowQuestionaireQuestion(old_questionaire, questionaireholder, questionholder, $.QuestionaireQuestionIndex);
}

function ShowQuestionaireQuestion (old_questionaire, questionaireholder, questionholder, i) {
	$.QuestionaireQuestionIndex = i;
	
	var question = $(old_questionaire.find('form .question').get(i));
	questionholder.html(question.html());
	var option_first_text = 'notset';
	var option_last_text = 'notset';
	questionholder.find('input[type=radio]').each(function(index) {
		var n = index + 1;
		var radio = $(this);
		var label = radio.parent();
		if (n == 1) {
			option_first_text = label.text();
		}
		if (n == 5) {
			option_last_text = label.text();
		}
		var orig = question.find('input[type=radio]').filter('input[value=' + radio.val() + ']');
		var link = $('<div class="option button"></div>').text(n);
		if (orig.is(':checked')) {
			link.addClass('checked');
		}
		label.before(link).remove();
		link.click(function(e) {
			e.preventDefault();
			$(this).parent().find('.option').removeClass('checked');
			$(this).addClass('checked');
			orig.trigger('click');
		});
	})
	
	option_first_text = option_first_text.split('(')[0].replace(/^\s*/g, '').replace(/\s*$/g, '');
	option_last_text = option_last_text.split('(')[0].replace(/^\s*/g, '').replace(/\s*$/g, '');
	
	var options_text = $('<div class="options_text"></div>');
	options_text.append($('<div class="first">' + option_first_text + '</div>'));
	options_text.append($('<div class="last">' + option_last_text + '</div>'));
	questionholder.append(options_text);
	
	var dots = questionaireholder.find('.nav .dots .dot');
	dots.removeClass('active');
	dots.filter(':eq(' + $.QuestionaireQuestionIndex + ')').addClass('active');
	
	if ($.QuestionaireQuestionIndex <= 0) {
		questionaireholder.find('.nav .prev').hide();
	} else {
		questionaireholder.find('.nav .prev').show();
	}
	
	if ($.QuestionaireQuestionIndex + 1 >= old_questionaire.find('form .question').size()) {
		questionaireholder.find('.nav .next').hide();
		questionaireholder.find('.nav .submit').show();
	} else {
		questionaireholder.find('.nav .next').show();
		questionaireholder.find('.nav .submit').hide();
	}
	
}

