var ajax_call_counter = 0; var safariRateLimited = null; var validationCallbacks = new Array(); var numbersOnly = new RegExp('^[0-9]*$'); var gDateFormat; var isie6 = false; // Should be set by conditional comments on page. var isie7 = false; var isie8 = false; var isie = window.clipboardData; function CoreNamespace() { this.timer = 0; this.performSetHeights = true; } CoreNamespace.prototype.resetTimer = function () { this.timer = this.getTimer(); console.log('timer reset: ' + this.timer); }; CoreNamespace.prototype.logTime = function (label) { var datetime = new Date(); if (label == null) label = ''; var localTimer = this.getTimer(); var duration = this.timer == 0 ? 0 : localTimer - this.timer; this.timer = localTimer; console.log(label + ': ' + duration); }; CoreNamespace.prototype.getTimer = function (label) { var datetime = new Date(); return datetime.getMinutes() * 60 * 1000 + datetime.getSeconds() * 1000 + datetime.getMilliseconds(); }; //gets the cookie, if it exists function getCookieValue(cookiename) { var ck = document.cookie; var cn = cookiename + "="; var pos = ck.indexOf(cn); if (pos != -1) { var start = pos + cn.length; var end = ck.indexOf(";", start); if (end == -1) end = ck.length; var cookieValue = ck.substring(start, end); return (cookieValue); } return (null); } // Gets Json object using a given url. function GetJson(url) { var result; var alreadySync = !$.ajaxSettings.async; if (!alreadySync) $.ajaxSetup({ async: false }); $.post(url, function (data) { result = data; }); if (!alreadySync) $.ajaxSetup({ async: true }); return result; } //Update and maintain the value of "daysSinceLastLogin" cookie function setDaysSinceLastLoginCookie() { var currentDate = new Date(); var curDateStr = currentDate.getMonth() + 1 + '/' + currentDate.getDate() + '/' + currentDate.getFullYear(); if ($.cookie('lastLoginDate') == null) { $.cookie('lastLoginDate', curDateStr, { path: '/' }); $.cookie('daysSinceLastLogin', '0', { path: '/' }); } else { var lastLoginDate = $.cookie('lastLoginDate'); $.cookie('lastLoginDate', curDateStr, { path: '/' }); $.cookie('daysSinceLastLogin', dayDifference(curDateStr, lastLoginDate), { path: '/', expires: 9999 }); } } // Do not use in new code. Use jQuery with event.preventDefault(). function hookAnchorClick(anchor, fn) { /// Hooks an anchor onclick and prevents default HREF behavior. /// The DOM element to attach the event handler for. /// Function to be called when anchor is clicked. Should have sender and event argument, in that order. var clickHandler = function (event) { var sender; if (window.event) { event = window.event; sender = event.srcElement; } else sender = event.target; fn(sender, event); if (event.stopPropagation) event.stopPropagation(); else event.cancelBubble = true; return false; } // HACK: MSIE/Opera onclick fails to operate correctly. if (isie || isie8 || isie7 || isie6 || (document.documentMode < 8) || window.opera) anchor.onmousedown = clickHandler; else anchor.onclick = clickHandler; } function beginRequest(sender, args) { document.body.style.cursor = "wait"; } function pageLoaded(sender, args) { document.body.style.cursor = "default"; } var ajaxSpinnerVisible = false; // Called when async postbacks begins function onAjaxPostBackStart(sender, args) { ajaxPostBackStart('Loading'); } // Called when async postback ends function onAjaxPostBackEnd(sender, args) { ajaxPostBackEnd(); } // Show ajax process panel with a customized text function ajaxPostBackStart(textProcessing) { if (!textProcessing || textProcessing == "") textProcessing = 'Loading'; if (!ajaxSpinnerVisible) { var panelAjaxProgress = $("#divAjaxProgress"), divAjaxImgProgress = $("#divAjaxImgProgress"), panelAjaxShade = $("#divAjaxShade"); if (panelAjaxProgress.length == 0) { //create divs on the fly panelAjaxProgress = $(''); panelAjaxShade = $('
'); divAjaxImgProgress = $('

'); panelAjaxProgress.append(panelAjaxShade); panelAjaxProgress.append(divAjaxImgProgress); panelAjaxProgress.prependTo('body'); panelAjaxProgress .css({ 'position': 'fixed', 'top': '0px', 'left': '0px', 'bottom': '0px', 'right': '0px', 'text-align': 'center', 'border': '1px solid #666', 'z-index': '90000000' }); panelAjaxShade .css({ 'position': 'fixed', 'top': '0px', 'left': '0px', 'bottom': '0px', 'right': '0px', 'background': '#fff', 'opacity': '0.5' }); divAjaxImgProgress.css({ 'position': 'relative' }); } ajaxSpinnerVisible = true; ajaxProcesingResizing(); ajaxUpdateText(textProcessing); panelAjaxProgress.show(); divAjaxImgProgress.show(); $(window).bind('resize', ajaxProcesingResizing); } } // Hide ajax process panel function ajaxPostBackEnd(noAnimation) { if (ajaxSpinnerVisible) { var panelAjaxProgress = $("#divAjaxProgress"); var divAjaxImgProgress = $("#divAjaxImgProgress"); if (noAnimation) { divAjaxImgProgress.hide(); panelAjaxProgress.hide(); } else { divAjaxImgProgress.fadeOut("fast", function () { panelAjaxProgress.hide(); }); } ajaxSpinnerVisible = false; $(window).unbind('resize', ajaxProcesingResizing); } } // Update ajax panel feedback text while panel is being displayed function ajaxUpdateText(text) { if (ajaxSpinnerVisible) { var divAjaxImgProgress = $("#divAjaxImgProgress"); divAjaxImgProgress.children('img').attr('alt', text).attr('title', text); divAjaxImgProgress.children('p').html(text); } } // Resize ajax panel when on window resize function ajaxProcesingResizing() { if (ajaxSpinnerVisible) { var panelAjaxProgress = $("#divAjaxProgress"); var divAjaxImgProgress = $("#divAjaxImgProgress"); var panelAjaxShade = $("#divAjaxShade"); panelAjaxProgress.height($(window).height()).width($(window).width()); panelAjaxShade.height($(window).height()).width($(window).width()); divAjaxImgProgress.css({ 'top': ($(window).height() / 2) - (divAjaxImgProgress.height() / 2) + 'px' }); } } // Implements HTML5 placeholder attribute for browsers that do not support it (and for HTML5 server-side control). var tmpPH = document.createElement('input'); var supportPH = (tmpPH.placeholder != null); //var colorPH = '#c0c0c0'; var removePlaceholder = (supportPH ? function (elem) { } : function (elem) { if (elem != null) { if (elem.hidePlaceholder) elem.hidePlaceholder(); elem.hidePlaceholder = null; elem.showPlaceholder = null; removeEvent(elem, 'focus', elem._ph_focus, false); removeEvent(elem, 'blur', elem._ph_onblur, false); removeEvent(elem, 'onmouseout', elem.ph_onmouseout, false); removeEvent(elem._ph_form, 'submit', elem._ph_form_submit, false); } }); var setPlaceholder = (supportPH ? function (elem) { } : function (elem) { if (elem != null) { if (elem.showPlaceholder != null) removePlaceholder(elem); var attrVal = elem.getAttribute('placeholder'); elem.hidePlaceholder = function () { if (elem.value == attrVal) { if (elem.oldClassName != null) elem.className = elem.oldClassName; elem.value = ''; } } elem.showPlaceholder = function () { if (elem.value == '') { if (attrVal == null) attrVal = ''; elem.value = attrVal; var className = elem.className; className = (className == null ? '' : elem.className); elem.oldClassName = className; elem.className = className + ' fakePlaceholder'; } } if (elem.value == null || elem.value == '') elem.showPlaceholder(); elem._ph_focus = function (event) { elem.hidePlaceholder(); }; elem._ph_blur = function (event) { elem.showPlaceholder(); }; addEvent(elem, 'focus', elem._ph_focus, false); addEvent(elem, 'blur', elem._ph_blur, false); if (elem.form) { elem._ph_form = elem.form; elem._ph_form_submit = function (event) { if (elem) removePlaceholder(elem); }; addEvent(elem._ph_form, 'submit', elem._ph_form_submit, false); } } }); //When programtically form.submit() is invoked, the placeholders are not removed automatically (onsubmit event is not called). //This function could be invoked before form.submit() if necessary. function removePlaceHolders() { $('input[placeholder]').each(function () { removePlaceholder($(this).get(0)); }); } var setPlaceHolder = setPlaceholder; // Validation plugs for runat=server form in master page. function headerValidationCallback() { for (var i = 0; i < validationCallbacks.length; i++) { if (!validationCallbacks[i]()) return false; } return true; } function addHeaderValidator(method) { validationCallbacks.push(method); } function getBrowser() { var N = navigator.appName, ua = navigator.userAgent, tem; var M = ua.match(/(opera|chrome|safari|firefox|msie)\/?\s*(\.?\d+(\.\d+)*)/i); if (M && (tem = ua.match(/version\/([\.\d]+)/i)) != null) M[2] = tem[1]; M = M ? [M[1], M[2]] : [N, navigator.appVersion, '-?']; return M[0]; } function getBrowserVersion() { var N = navigator.appName, ua = navigator.userAgent, tem; var M = ua.match(/(opera|chrome|safari|firefox|msie)\/?\s*(\.?\d+(\.\d+)*)/i); if (M && (tem = ua.match(/version\/([\.\d]+)/i)) != null) M[2] = tem[1]; M = M ? [M[1], M[2]] : [N, navigator.appVersion, '-?']; return M[1]; } function isLegacyBrowser() { var browser = getBrowser(), browserVersion = getBrowserVersion(), browserMajorVersion = Number(browserVersion.split('.')[0]); var legacyBrowser = ((browser == 'MSIE' && browserMajorVersion < 10) || (browser == 'Chrome' && browserMajorVersion < 30) || (browser == 'Firefox' && browserMajorVersion < 24) || (browser == 'Netscape' && browserMajorVersion != 5) || (browser == 'Safari' && browserMajorVersion < 5) || (browser != 'MSIE' && browser != 'Chrome' && browser != 'Firefox' && browser != 'Safari' && browser != 'Netscape')); return legacyBrowser; } function setTrackBrowserCookie(trackValue) { var date = new Date(); date.setYear(2100); document.cookie += ("; expires=" + date.toUTCString()); document.cookie = "CP_TrackBrowser=" + JSON.stringify(trackValue) + "; expires=" + date.toUTCString() + "; path=/"; }; function getTrackBrowserCookie() { var trackBrowser = { doNotShowLegacyMsg: false, supportNewUI: true }; var trackBrowserRaw = getCookieValue('CP_TrackBrowser'); if (trackBrowserRaw != null) { trackBrowser = JSON.parse(trackBrowserRaw); } else { trackBrowser.legacy = isLegacyBrowser(); trackBrowser.isMobile = navigator.userAgent.match(/(iPad)|(iPhone)|(iPod)|(android)|(webOS)/i) || false; setTrackBrowserCookie(trackBrowser); } return trackBrowser; } function browserFailOvers() { var trackBrowser = getTrackBrowserCookie(); if (trackBrowser.legacy && window.isModuleUsingAngular && trackBrowser.supportNewUI) { trackBrowser.supportNewUI = false; setTrackBrowserCookie(trackBrowser); window.location.reload(true); //reload to not show new UI return; } if (trackBrowser.legacy && !trackBrowser.isMobile && !trackBrowser.doNotShowLegacyMsg && !$('body').hasClass('mobile') && !$('body').hasClass('narrow')) { $.ajax({ url: '/Site/Browser/Message', type: 'GET', success: function (response) { $('#divToolbars').append(response); $('.browserMessage a.dismiss').click(function (e) { e.preventDefault(); trackBrowser.doNotShowLegacyMsg = true; setTrackBrowserCookie(trackBrowser); $('.browserMessage').slideUp(); }); $('.browserMessage').slideDown(); } }); } }