﻿String.prototype.endWith = function (s) { return this.length >= s.length && this.substr(this.length - s.length) == s; }
var temp;
var General = {
    init: function () {
        this.prepareFlash();
        this.prepareShare();
        this.preparePopup();
        this.prepareSearch();
        this.prepareExercises();
        this.prepareContactForm();
        this.displayExerciseList();
        //this.prepareRadioButtons();
        this.preparePng();
    },
    displayExerciseList: function () {
        $('#exerciseList').show();
        $('#exerciseListFallback').hide();
    },
    preparePng: function () {
        if (typeof (ddpngfix) !== 'undefined') {
            $('img[src$=.png]:not(.opaque), #main-container, #header, .divider, .box .link span, .button span, .flash-shadow').each(function () {
                ddpngfix.fixPng(this);
            });
        }
    },
    prepareShare: function () {
        $('#js-share').hover(function () {
            $(this).addClass('js-expanded');
        }, function () {
            $(this).removeClass('js-expanded');
        }).children('a').click(function () {
            return false;
        });
    },
    preparePopup: function () {
        $('#js-send').click(function () {
            $('.error-popup').each(function () {
                $(this).addClass('visible-popup');
            }).find('.close-button').click(function () {
                $(this).parent().removeClass('visible-popup');
                return false;
            });
            return false;
        });
    },
    prepareFlash: function () {
        //FlashUtil.embed('path', 'container', width, height);	
    },
    prepareSearch: function () {
        $('#search input:text').keypress(function (e) {
            if (e.keyCode == 13) {
                var q = encodeURIComponent($.trim($(this).val().toLowerCase().replace(/[^a-z0-9åäö\s]/gi, '')));

                if (q.length > 0)
                    document.location.href = '/sv/sok/q/' + q;
                else
                    document.location.href = '#';

                if (!e) var e = window.event;

                e.cancelBubble = true;

                if (e.stopPropagation)
                    e.stopPropagation();

                return false;
            }
        });
    },
    prepareExercises: function () {
        if ($('div.exercise-container').length == 0)
            return;

        $('div.exercise-container').first().show().nextAll().hide();

        $('ul.menu.crumb-menu li a, div.exercise-container div.prev a, div.exercise-container div.next a').click(function () {
            var exercise = $('div.exercise-container[id^=' + $(this).attr('href').split('/')[3] + '-]');

            exercise.show().siblings('div.exercise-container').hide();

            $('html, body').animate({ scrollTop: 0 }, 'slow');

            if (exercise.find('#summary-container').length > 0)
                General.prepareExerciseSummary(exercise.find('#summary-container').eq(0));

            $('ul.menu.crumb-menu li a[href=' + $(this).attr('href') + ']').parent().addClass('selected').siblings().removeClass('selected');
            window.location.hash = $(this).attr('href').split('/')[3];
            return false;
        });

        $('div.exercise-container a.edit-link').live('click', function () {
            $('ul.menu.crumb-menu li a[href$=/' + $(this).attr('href') + ']').click();
            return false;
        });

        $('a.img-select').click(function () { $(this).prev().children().first().click(); return false; });

        this.prepareDragDropLists();
        this.prepareToDragDropLists();
        this.prepareDroppable();
    },
    prepareDragDropLists: function () {
        $('.drag-box-abs li').draggable({ delay: 200, revert: 'invalid', scroll: true, snap: '.ordered-list-from li div, .drag-box li', snapMode: 'inner', placeholder: 'placeholder', connectToSortable: '.connected-sortable',
            stop: function (event, ui) {
                var pageId = /pre-([\d]+)-([\d]+)/.exec(ui.helper.attr('id'))[2]
                var hid = $('input:hidden[name*=hidOrder_' + pageId + ']');

                var positions = new Array();
                for (var x = 0; x < ui.helper.parent().children().length; x++) {
                    var pos = $(ui.helper.parent().children()[x]).html();
                    var id = /pre-([\d]+)/.exec(ui.helper.parent().children()[x].id)[1];
                    positions[x] = { Pos: pos, Id: id };
                }

                positions.sort(
				function sortNumber(a, b) {
				    return a.Pos - b.Pos;
				}
			);

                var ids = '';
                for (var y = 0; y < positions.length; y++) {
                    if (positions[y].Pos > 0 && positions[y].Id > 0)
                        ids += positions[y].Id + ',';
                }
                if (ids.endWith(','))
                    ids = ids.substring(0, ids.length - 1);
                hid.val(ids);
            }
        }).disableSelection();
    },

    prepareToDragDropLists: function () {
        $('.ordered-list-from').sortable({ disabled: true, helper: 'clone', connectWith: '.drag-box-abs',
            stop: function (event, ui) {
            }
        }).disableSelection();
    },
    prepareDroppable: function (e) {
        $(".droppable").droppable({
            drop: function (event, ui) {
                try {
                    var id = 0, pid = 0;
                    if ($(this).attr('id').indexOf('pre-') > -1)
                        id = /pre-([\d]+)/.exec($(this).attr('id'))[1];
                    else
                        id = /item-([\d]+)/.exec($(this).attr('id'))[1];

                    if ($(this).attr('id').indexOf('pre-') > -1)
                        pid = /pre-([\d]+)-([\d]+)/.exec($(this).attr('id'))[2];
                    else
                        pid = /item-([\d]+)-([\d]+)/.exec($(this).attr('id'))[2];

                    var hid = $('input:hidden[name*=hidOrder_' + pid + ']');
                    if ($.inArray(id, hid.val().split(',')) > -1) {
						ui.draggable.attr('id', 'pre-0-' + pid);
                        ui.draggable.css('left', '');
                        ui.draggable.css('top', '');
                    }
					else
						ui.draggable.attr('id', 'pre-' + id + '-' + pid);
                }
                catch (e) { }
            }
        });

        $(".drag-box li").droppable({
            drop: function (event, ui) {
                try {
                
                    var id = 0, pid = 0;
                    if (ui.draggable.attr('id').indexOf('pre-') > -1)
                        id = /pre-([\d]+)/.exec(ui.draggable.attr('id'))[1];
                    else
                        id = /item-([\d]+)/.exec(ui.draggable.attr('id'))[1];

                    if (ui.draggable.attr('id').indexOf('pre-') > -1)
                        pid = /pre-([\d]+)-([\d]+)/.exec(ui.draggable.attr('id'))[2];
                    else
                        pid = /item-([\d]+)-([\d]+)/.exec(ui.draggable.attr('id'))[2];

                    ui.draggable.attr('id', 'pre-0-' + pid);
                    ui.draggable.css('left', '');
                    ui.draggable.css('top', '');
                }
                catch (e) { }
            }
        });
    },
    prepareExerciseSummary: function (e) {
        if (e.length == 0)
            return;

        e.empty();

        $('div.exercise-container').each(function (i) {
            var type = /([\d]+)-/.exec($(this).attr('id'))[1];
            var pid = /([\d]+)-([\d]+)$/.exec($(this).attr('id'))[2];
            if (General.exerciseEvaluators[type]) {
                var text = '[ redigera ]';
                if (type == 6) text = '[ visa ]';
                var name = $(this).children('h1')
								  .eq(0).html() + '&nbsp;' +
								  $('<div />').append($('<a />')
								  .attr('href', /(.*)-([\d])+-([\d])+$/.exec($(this).attr('id'))[1])
								  .addClass('edit-link')
								  .html(text))
								  .html();

                var val = General.exerciseEvaluators[type]($(this), pid);

                e.append($('<p />').append($('<em />').html((i + 1) + '. ' + name)));
                e.append($('<p />').html(val));
            }
        });
    },
    prepareContactForm: function () {

        if ($('.contact-submit').length == 0)
            return;

        $('.required-desc').hide();
        var button = $('<a id="js-send" class="button send-button contact-button" href=""><span>Skicka</span></a>');

        button.click(function () {
            $('.contact-submit').click();
            if (!Page_IsValid) {
                $('.required-desc').show(); /*delay(1000).queue(function () {$(this).show();
				$(this).dequeue();})*/
            }

            return false;
        });

        $('.contact-submit').hide().after(button);
    },
    prepareRadioButtons: function () {
        if ($('span.input-radio-fancy').length === 0) { return; }
        $('span.input-radio-fancy input').each(function () {
            var rr = $('<span class="radio-replacement"></span>');
            rr.click(function () {
                $(this).toggleClass('radio-replacement radio-replacement-checked');
                $(this).prev().change();
            });
            $(this).hide().after(rr);

        });
    },
    exerciseEvaluators: {
        // textarea
        "5": function (e, pid) {
            var val = $('div.textarea-container textarea', e).val().replace(/<.*>/, '');
            val = val.replace(new RegExp("\\n", "g"), '<br/>');
            return val;
        },

        // ordered list
        "7": function (e, pid) {
            var list = $('ul.ordered-list-to', e);
            var hid = $('input:hidden[name*=hidOrder_' + pid + ']');
            var ids = hid.val().split(',');
            //var ids = $('input:hidden', e).val().split(',');
            if (hid.val().length > 0)
                return $.map(ids, function (id, i) { return (i + 1) + '. ' + $('li[id=item-' + id + '-' + pid + ']').html(); }).join('<br />');
            else
                return '';
        },

        // radio button list
        "8": function (e, pid) {
            var result = [];

            $('table tbody tr:gt(0)', e).each(function () {
                var val = /[\d]+$/.exec($('td input:radio:checked', this).val());
                result.push($('td:first', this).html() + ': ' + (val == 1 ? 'Helt' : (val == 2 ? 'Delvis' : (val == 3 ? 'Inte alls' : 'Ej vald'))));
            });

            return result.join('<br />');
        },

        // image radio button list
        "9": function (e, pid) {
            var p = $('div input:radio:checked', e).parent().parent().find('p:first');
            p.find('strong').css('padding-right', '5px');
            return p.html();
        },

        // info
        "6": function (e, pid) {
            return '';
        }
    }
};

$(function(){
	General.init();
});
