///
///
///
///
var DateDiff = {
inDays: function (d1, d2) {
var t2 = d2.getTime();
var t1 = d1.getTime();
return parseInt((t2 - t1) / (24 * 3600 * 1000));
},
inWeeks: function (d1, d2) {
var t2 = d2.getTime();
var t1 = d1.getTime();
return parseInt((t2 - t1) / (24 * 3600 * 1000 * 7));
},
inMonths: function (d1, d2) {
var d1Y = d1.getFullYear();
var d2Y = d2.getFullYear();
var d1M = d1.getMonth();
var d2M = d2.getMonth();
return (d2M + 12 * d2Y) - (d1M + 12 * d1Y);
},
inYears: function (d1, d2) {
return d2.getFullYear() - d1.getFullYear();
}
}
var DateAdd = {
Days: function (date, days) {
if (isNaN(days))
throw "DataAdd: Days is not a number";
t1 = date.getTime();
t2 = days * 24 * 3600 * 1000
return new Date(parseInt(t1 + t2));
}
};
var DateHelper = function () {
var stripTime = function (date) {
return new Date(date.getFullYear(), date.getMonth(), date.getDate())
},
between = function (beginDate, endDate, checkDate) {
var c = DateHelper.NewDate(checkDate),
b = DateHelper.NewDate(beginDate),
e = DateHelper.NewDate(endDate);
if (DateDiff.inDays(c, b) <= 0 && DateDiff.inDays(c, e) >= 0) {
return true;
}
else {
return false;
}
},
isDate = function (date) {
var dt = parseISO8601(date)
if (dt != "NaN" && dt != "Invalid Date")
return true
if (date == null || date == "" || (new Date(date) == "NaN") || dt == "Invalid Date")
return false
else
return true
},
formatDate = function (date) {
var mm = "0" + (date.getMonth() + 1);
var dd = "0" + date.getDate();
//return date.getFullYear() + "-" + mm.substr(mm.length - 2, 2) + "-" + dd.substr(dd.length - 2, 2);
var dt = "";
switch (Global.CurrentCulture) {
case "en": //Engelska och Franska
case "fr":
dt = dd.substr(dd.length - 2, 2) + "/" + mm.substr(mm.length - 2, 2) + "/" + date.getFullYear();
break;
case "ty": //Tyska
dt = dd.substr(dd.length - 2, 2) + "." + mm.substr(mm.length - 2, 2) + "." + date.getFullYear();
break;
default: // Svenska yyyy-MM-dd
dt = date.getFullYear() + "-" + mm.substr(mm.length - 2, 2) + "-" + dd.substr(dd.length - 2, 2); ;
}
return dt;
},
newDate = function (dt) {
/*
var tmp = parseISO8601(dt);
if (tmp != "NaN")
return tmp
else
return new Date(dt)
*/
var yyyy, mm, dd, hh = 0, mi = 0, ss = 0, ms = 0;
//Date
switch (Global.CurrentCulture) {
case "en": //Engelska och Franska
case "fr":
case "ty": //Tyska
yyyy = dt.substring(6, 10);
mm = dt.substring(3, 5) * 1 - 1
dd = dt.substring(0, 2)
break;
case "sv":
yyyy = dt.substring(0, 4);
mm = dt.substring(5, 7) * 1 - 1
dd = dt.substring(8, 10)
break;
default:
throw "Invalid Culture";
}
//Time
if (dt.length > 10) {
if (dt.length > 20) {
ms = dt.substring(20);
dt = dt.substring(0, 19); //Stip ms
}
switch (dt.length) {
case 19:
ss = dt.substring(17, 19);
case 16:
mi = dt.substring(14, 16);
case 13:
hh = dt.substring(11, 13);
break;
default:
throw "Invalid time format";
}
}
return new Date(yyyy, mm, dd, hh, mi, ss, ms);
},
/*toInternalDate = function (dt) {
var internalDt = "";
switch ("dd/mm/yy") {
case "dd/mm/yy": //Engelska och Franska
internalDt = dt.substring(6) + "-" + dt.substring(3, 5) + "-" + dt.substring(0, 2);
break;
case "dd.mm.yy": //Tyska
internalDt = dt.substring(6) + "-" + dt.substring(3, 5) + "-" + dt.substring(0, 2);
break;
default:
internalDt = dt;
}
if (isDate(internalDt)) {
return internalDt;
}
else {
return "";
}
},*/
/**Parses string formatted as YYYY-MM-DD to a Date object.
* If the supplied string does not match the format, an
* invalid Date (value NaN) is returned.
* @param {string} dateStringInRange format YYYY-MM-DD, with year in
* range of 0000-9999, inclusive.
* @return {Date} Date object representing the string.
*/
parseISO8601 = function (dateStringInRange) {
var isoExp = /^\s*(\d{4})-(\d\d)-(\d\d)\s*$/,
date = new Date(NaN), month,
parts = isoExp.exec(dateStringInRange);
if (parts) {
month = +parts[2];
date.setFullYear(parts[1], month - 1, parts[3]);
if (month != date.getMonth() + 1) {
date.setTime(NaN);
}
}
return date;
},
weekdays = function () {
var weekday = new Array(7);
weekday[0] = "S";
weekday[1] = "M";
weekday[2] = "Ti";
weekday[3] = "O";
weekday[4] = "To";
weekday[5] = "F";
weekday[6] = "L";
return weekday;
}
;
return {
StripTime: stripTime,
FormatDate: formatDate,
IsDate: isDate,
NewDate: newDate,
Weekdays: weekdays,
Between: between/*,
ToInternalDate: toInternalDate*/
}
} ();
/*********************************
*********************************/
var EventHelper = function () {
var stopEventFromBubbleUp = function (e) {
jQuery.event.fix(e).stopPropagation();
};
return { StopEventFromBubbleUp: stopEventFromBubbleUp }
} ();
/****************************************
****************************************/
var CookiesHelper = function () {
var read = function (cookieName) {
var i, cookie, value,
cookies = document.cookie.split(";");
for (i = 0; i < cookies.length; i++) {
cookie = cookies[i].substr(0, cookies[i].indexOf("="));
value = cookies[i].substr(cookies[i].indexOf("=") + 1);
cookie = cookie.replace(/^\s+|\s+$/g, "");
if (cookie == cookieName) {
return unescape(value);
}
}
return "";
},
write = function (cookieName, value, expire) {
//sätter defult till 10 dagar expire.
//Sättet att skriva på ger oss möjlighet att skicka in null
expire = typeof expire !== 'undefined' ? expire : DateAdd.Days(new Date(), 10);
var cookieValue = escape(value) + ((expire == null) ? "" : "; expires=" + expire.toUTCString()) + "; path=/";
document.cookie = cookieName + "=" + cookieValue;
};
return {
Write: write,
Read: read
};
} ();
String.prototype.replaceAt = function (index, char) {
return this.substr(0, index) + char + this.substr(index + char.length);
}
String.prototype.startsWith = function (str, caseInsnsitive) {
if (this.length == 0 && str.length > 0) return false;
if (caseInsnsitive) {
return (this.toLowerCase().match("^" + str.toLowerCase()) == str.toLowerCase())
}
else {
return (this.match("^" + str) == str)
}
}
String.prototype.endsWith = function (str, caseInsnsitive) {
if (this.length == 0 && str.length > 0) return false;
if (caseInsnsitive) {
return (this.toLowerCase().match(str.toLowerCase() + "^") == str.toLowerCase())
}
else {
return (this.match(str + "^") == str)
}
}
var loadingGUI = function () {
createOverlay = function (container) {
var newDate = new Date;
var overlayId = "overlay_" + newDate.getTime();
$("#"+overlayId).remove()
container.before('
');
$("#" + overlayId).css({
height: container.outerHeight(),
width: container.outerWidth()
});
var lodingDiv = $("div.Loding", "#" + overlayId);
lodingDiv.css({
left: ((container.outerWidth() / 2) - (lodingDiv.outerWidth() / 2))
});
return overlayId
};
return{
CreateOverlay: createOverlay
}
} ();
/***************************************
****************************************/
(function ($) { //re-set all client validation given a jQuery selected form or child
$.fn.resetValidation = function () {
var $form = this.closest('form'); //reset jQuery Validate's internals
$form.validate().resetForm(); //reset unobtrusive validation summary, if it exists
$form.find("[data-valmsg-summary=true]")
.removeClass("validation-summary-errors")
.addClass("validation-summary-valid")
.find("ul").empty(); //reset unobtrusive field level, if it exists
$form.find("[data-val=true]")
.removeClass("input-validation-error")
.addClass("valid");
$form.find("[data-valmsg-replace]")
.removeClass("field-validation-error")
.addClass("field-validation-valid")
.empty();
return $form;
};
//reset a form given a jQuery selected form or a child
//by default validation is also reset
$.fn.formReset = function (resetValidation) {
var $form = this.closest('form');
$form[0].reset();
if (resetValidation == undefined || resetValidation) {
$form.resetValidation();
}
return $form;
}
})(jQuery);