﻿$(document).ready(function () {

	//Set watermark on marked fields
	$("input[data-watermark]").each(function () {

		var field = $(this);

		var watermark = field.attr("data-watermark");
		field.watermark(watermark, { className: "watermark", useNative: false });

		$.watermark.options.hideBeforeUnload = false;

	});

	$("input.watermarked").each(function () {

		var field = $(this);
		var data = field.metadata();

		if (data != undefined || data != null) {
			var watermark = data.watermark;
			field.watermark(watermark, { className: "watermark", useNative: false });

			$.watermark.options.hideBeforeUnload = true;
		}
	});

	// Set all links with class 'arrow' to shift arrow when clicked
	$("a[data-panel-class]").each(function () {

		var link = $(this);
		link.click(function () {

			var originalLinkClass = link.attr("data-link-class");
			var container = $("." + link.attr("data-panel-class"));
			if (container.length > 0) {

				var clearButton = container.children(".clearOnHide");
				if (link.hasClass(originalLinkClass + "-active")) {
					link.removeClass(originalLinkClass + "-active");
					container.slideUp(undefined, function () {
						// fix for IE7
						var items = container.find('.rounded-select-field .rounded-select-field-inner > span');
						items.each(function () {
							var $this = $(this);
							$this.css('position', '');
						});
					});
					if (clearButton.length > 0) clearButton.click();
				}
				else {
					link.addClass(originalLinkClass + "-active");
					container.slideDown(undefined, function () {
						// fix for IE7
						var items = container.find('.rounded-select-field .rounded-select-field-inner > span');
						items.each(function () {
							var $this = $(this);
							$this.css('position', 'relative');
						});
					});
				}

			}

		});

	});

	$("a.info-popup, .dialogTrigger").live('click', function () {

		var link = $(this);
		link.css("cursor", "pointer");

		//        link.click(function () {

		link.openDialog(true, "#000");

		//        });

	});

	$(".dialogDisposer").each(function () {

		var trigger = $(this);
		trigger.css("cursor", "pointer");

		trigger.click(function () {

			trigger.closeDialog();

			return false;

		});

	});

	$(".loaderTrigger").each(function () {

		var trigger = $(this);

		var data = trigger.metadata();
		var loaderText = data.text;
		var confirmText = data.confirm;

		var isContinue = true;

		trigger.click(function () {
			//alert(confirmText);
			if (confirmText) {
				isContinue = confirm(confirmText);
			}
			//alert(isContinue);
			if (isContinue) {
				setTimeout(function () { showLoader(loaderText), 2000 });
			}
			return isContinue;

		});


	});

	$(".countChars").each(function () {

		var field = $(this);
		var maxlength = 300;

		var data = field.metadata();
		if (data.length > 0) maxlength = parseInt(data.length);

		field.maxlength({ max: maxlength,
			feedbackText: "{r} tegn igjen"
		});

	});

});

function CallPageMethod(functionName, jsonParams, onSuccess, onError) {

    var pagePath = window.location.pathname;

    $.ajax({
        type: "POST",
        url: pagePath + "/" + functionName,
        contentType: "application/json; charset=utf-8",
        data: jsonParams,
        dataType: "json",
        success: onSuccess,
        error: onError
    });

}

var daysinmonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
function UpdateDayDropDownList(dayList, monthYearList) {
    var ddlDay = $(dayList);
    var ddlMonth = $(monthYearList);
    var originalSelectedValue = ddlDay.find('option:selected').val();
    var monthyear = ddlMonth.find('option:selected').val();

    if (monthyear != "0") {
        var month = parseInt(monthyear.split('-')[1]);
        var year = parseInt(monthyear.split('-')[0]);
        ddlDay.find('option:not(option:first)').remove();

        var dim = daysinmonth[month - 1];
        if (year % 4 == 0 && month == 2) {
            dim++;
        }

        for (var i = 1; i <= dim; i++) {
            ddlDay.append('<option value="' + i + '">' + i + '</option>');
        }
        if (originalSelectedValue > dim) {
            originalSelectedValue = 1;
        }
        ddlDay.val(originalSelectedValue);
    }
}

// params: link: link element to remove, obj: object to show
function readmore(link, obj) {
    $(link).remove();
    $(obj).removeClass('hidden');
    return false;
}

// Case insensitive search with case sensitive replace
function preg_quote(str) {
    // http://kevin.vanzonneveld.net
    // +   original by: booeyOH
    // +   improved by: Ates Goral (http://magnetiq.com)
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   bugfixed by: Onno Marsman
    // *     example 1: preg_quote("$40");
    // *     returns 1: '\$40'
    // *     example 2: preg_quote("*RRRING* Hello?");
    // *     returns 2: '\*RRRING\* Hello\?'
    // *     example 3: preg_quote("\\.+*?[^]$(){}=!<>|:");
    // *     returns 3: '\\\.\+\*\?\[\^\]\$\(\)\{\}\=\!\<\>\|\:'

    return (str + '').replace(/([\\\.\+\*\?\[\^\]\$\(\)\{\}\=\!\<\>\|\:])/g, "\\$1");
}

// Hack for highlighting items in jQuery Autocomplete

function monkeyPatchAutocomplete() {

    // don't really need this, but in case I did, I could store it and chain
    var oldFn = $.ui.autocomplete.prototype._renderItem;

    $.ui.autocomplete.prototype._renderItem = function (ul, item) {
        //var re = new RegExp("^/s" + this.term + "/i");
        var re = new RegExp(preg_quote(this.term), 'i');

        var t = item.label.replace(re, "<span style='font-weight:bold;color:#2d98bd;'>" + "$&" + "</span>");
        return $("<li></li>").data("item.autocomplete", item).append("<a>" + t + "</a>").appendTo(ul);
    };
}

function setAutocompleteFilterMethod() {

    $.extend($.ui.autocomplete, {
        escapeRegex: function (value) {
            return value.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
        },
        filter: function (array, term) { // Iterates only per item!
            var matcher = new RegExp("^" + $.ui.autocomplete.escapeRegex(term), "i"); // Here's the 'contains'!
            return $.grep(array, function (value) {
                return matcher.test(value.label);
            });
        }
    });
}

function handleKeyPress(e, buttonId) {

    //the purpose of this function is to allow the enter key to 
    //point to the correct button to click.
    var key;

    if (window.event) key = window.event.keyCode;     //IE
    else key = e.which;     //firefox

    if (key == 13) {
        //Get the button the user wants to have clicked
        var btn = $("#" + buttonId);
        if (btn != null) { //If we find the button click it
            btn.click();
            //alert(btn.attr("href"));
            eval(btn.attr("href"));
        }
    }

}

function showLoader(text) {

    var overlay = $("div.overlay");
    var loader = $("#loader-wrapper");

    var textHolder = loader.find("span.loaderText");
    if (text.length > 0) textHolder.html(text);

    var loaderImageHolder = loader.find(".loader-image-wrapper");
    if (loaderImageHolder.length > 0) {
        //loaderImageHolder.html('<img src="/Media/img/PleaseWaitAnim.gif" name="AnimatedImage" alt="Vennligst vent" width="163" height="32" />');
        var img = loaderImageHolder.find("img");
        setTimeout(function () {
            img.attr("src", img.attr("src"));
        }, 50);
    }
    overlay.show();
    loader.show();

}

function setDialogTitle(dialogId, title) {

    var dialog = parent.$('#' + dialogId);
    if (dialog.length > 0) {
        dialogTitle = dialog.prev('div.ui-dialog-titlebar').children('span');
        dialogTitle.html(title);
    }
}
