﻿
$().ready(function () {
    $.ajaxSetup({
        error: function (x, e) {
            if (x.status == 0) {
                alert('You are offline!!\n Please Check Your Network.');
            } else if (x.status == 404) {
                alert('Requested URL not found.');
            } else if (x.status == 500) {
                alert('Der opstod en fejl på serveren. Send evt. en mail med en beskrivelse af fejlen til mod@ditmer.dk.');
            } else if (e == 'parsererror') {
                alert('Error.\nParsing JSON Request failed.');
            } else if (e == 'timeout') {
                alert('Request Time out.');
            } else {
                alert('Unknow Error.\n' + x.responseText);
            }
        }
    });
});

function SetDatePickerDefaults() {
    jQuery(function($) {
        $.datepicker.regional['da'] = { clearText: 'Nulstil', clearStatus: 'Nulstil den aktuelle dato',
            closeText: 'Luk', closeStatus: 'Luk uden ændringer',
            prevText: '&#x3c;Forrige', prevStatus: 'Vis forrige måned',
            nextText: 'Næste&#x3e;', nextStatus: 'Vis næste måned',
            currentText: 'Idag', currentStatus: 'Vis aktuel måned',
            monthNames: ['Januar', 'Februar', 'Marts', 'April', 'Maj', 'Juni',
	        'Juli', 'August', 'September', 'Oktober', 'November', 'December'],
            monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'Maj', 'Jun',
	        'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dec'],
            monthStatus: 'Vis en anden måned', yearStatus: 'Vis et andet år',
            weekHeader: 'Uge', weekStatus: 'Årets uge',
            dayNames: ['Søndag', 'Mandag', 'Tirsdag', 'Onsdag', 'Torsdag', 'Fredag', 'Lørdag'],
            dayNamesShort: ['Søn', 'Man', 'Tir', 'Ons', 'Tor', 'Fre', 'Lør'],
            dayNamesMin: ['Sø', 'Ma', 'Ti', 'On', 'To', 'Fr', 'Lø'],
            dayStatus: 'Sæt DD som første ugedag', dateStatus: 'Vælg D, M d',
            dateFormat: 'dd-mm-yy', firstDay: 0,
            initStatus: 'Vælg en dato', isRTL: false
        };
        $.datepicker.setDefaults($.datepicker.regional['da']);
    });
}

function DatePickerInFrontOfDialog() {
    ///$("#ui-datepicker-div").css("z-index", $(this).parents(".ui-dialog").css("z-index") + 1);
    $("#ui-datepicker-div").css("z-index", 9999);
}

function CloseDatePickerDialog() {
    $("#ui-datepicker-div").css('display', 'none');
}

function GetNumberInStringEnd(mystring, separator) {
    return mystring.toString().substr(mystring.toString().indexOf(separator, 0) + 1, 300);
}

function GetNumberInStringStart(mystring, separator) {
    return mystring.toString().substr(0, mystring.toString().indexOf(separator, 0));
}

function GetArrayFromString(myString) {
    var result = new Array();
    var tal = 0;
    var lastIndex = 0;

    while (myString.indexOf(";", lastIndex) != -1) {
        var resultObject = new Object();
        resultObject.Key = myString.substr(lastIndex, myString.indexOf(":", lastIndex) - lastIndex);
        resultObject.Value = myString.substr(myString.indexOf(":", lastIndex + 1), myString.indexOf(";", lastIndex) - 1 - myString.indexOf(":", lastIndex) - resultObject.Key.length);
        result[tal] = resultObject;
        alert(result[tal].Key + ' ' + result[tal].Value);
        tal += 1;
        lastIndex = myString.indexOf(";", lastIndex);
    }
}

$.fn.clearSelect = function() {
    return this.each(function() {
        if (this.tagName == 'SELECT')
            this.options.length = 0;
    });
}

$.fn.fillSelect = function(data) {
    return this.clearSelect().each(function() {
        if (this.tagName == 'SELECT') {
            var dropdownList = this;
            $.each(data, function(index, optionData) {
                var option = new Option(optionData.Text, optionData.Value);

                if ($.browser.msie) {
                    dropdownList.add(option);
                }
                else {
                    dropdownList.add(option, null);
                }
            });
        }
    });
}

function VisBesked(overskrift, underoverskrift) {
    $.growlUI(overskrift, underoverskrift);
}

function IsNumeric(sText) {
    if (sText == undefined) {
        return false;
    }
    
    var ValidChars = "0123456789.,";
    var IsNumber = true;
    var Char;

    for (i = 0; i < sText.length && IsNumber == true; i++) {
        Char = sText.charAt(i);
        if (ValidChars.indexOf(Char) == -1) {
            IsNumber = false;
        }
    }
    return IsNumber;
}

function isDate(dateStr) {

    var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
    var matchArray = dateStr.match(datePat); // is the format ok?

    if (matchArray == null) {
        return false;
    }

    month = matchArray[3]; // p@rse date into variables
    day = matchArray[1];
    year = matchArray[5];

    if (month < 1 || month > 12) { // check month range
        return false;
    }

    if (day < 1 || day > 31) {
        return false;
    }

    if ((month == 4 || month == 6 || month == 9 || month == 11) && day == 31) {
        return false;
    }

    if (month == 2) { // check for february 29th
        var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
        if (day > 29 || (day == 29 && !isleap)) {
            return false;
        }
    }
    return true; // date is valid
}

function IsEMail(emailToCheck) {
    var filter = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
    if (filter.test(emailToCheck)) {
        return true;
    }
    else {
        return false;
    }
}

function GetLegalValue(value, valueToReturnIfIllegal) {
    if (value) {
        return value;
    }
    else {
        return valueToReturnIfIllegal;
    }
}

function GetJSonObjectFromSelector(selector) {
    var json = {};
    var vaerdi = "";
    $(selector).each(function () {
        vaerdi = $("#" + this.id).val();
        if (vaerdi.length == 0) vaerdi = "null";
        json[this.id] = vaerdi;
    }); 
    return json;
}

//function CountNumOfOccurrences(stringToSearch, stringToFind) {
//    var antal = stringToSearch.split(stringToFind/g).length - 1;
//    return antal
//}

// GENERELLE DIALOGER

function VisOpretBrugerDialog(holdID, dialogHostControlID, defaultRolleID) {
    $.ajax({ url: "/Bruger/Brugeroprettelse?defaultHold=" + holdID + "&defaultRolle=" + defaultRolleID, cache: false, async: false, success: function (data) { VisOpretBrugerDialogCallBack(data, dialogHostControlID); } });
}

function VisOpretBrugerDialogCallBack(data, dialogHostControlID) {
    $("#" + dialogHostControlID).html("");
    $("#" + dialogHostControlID).html(data);
    $("#" + dialogHostControlID).dialog({ height: 600, width: 750, modal: true, title: 'Opret/tilknyt bruger' });
    $("#" + dialogHostControlID).dialog('open');
    BrugerOprettelseDialogLoaded();
}

function LukOpretBrugerDialog(dialogHostControlID) {
    $("#" + dialogHostControlID).dialog('close');
}

jQuery.fn.shake = function(intShakes /*Amount of shakes*/, intDistance /*Shake distance*/, intDuration /*Time duration*/) {
    this.each(function() {
        $(this).css({position:'relative'});
        for (var x=1; x<=intShakes; x++) {
            $(this).animate({top:(intDistance*-1)}, (((intDuration/intShakes)/4)))
            .animate({top:intDistance}, ((intDuration/intShakes)/2))
            .animate({top:0}, (((intDuration/intShakes)/4)));
        }
    });
    return this;
};


function GenudsendVelkomstMail(brugerID, holdID) {
    $.ajax({ url: "/Bruger/GenudsendNotifikation?brugerID=" + brugerID + "&holdID=" + holdID, cache: false, async: false, success: function (data) { GenudsendVelkomstMailCallBack(data); } });
}

function GenudsendVelkomstMailCallBack(data) {
    if (data == "OK") {
        alert('Velkomsthilsen er genudsendt');
    }
    else {
        alert(data);
    }
}

