//iMove utility functions //ie is the version of IE running. var ie = (function () { var undef, v = 3, div = document.createElement('div'), all = div.getElementsByTagName('i'); while ( div.innerHTML = '', all[0] ); return v > 4 ? v : undef; } ()); $(document).ajaxSend(function (event, xhr, settings) { var authToken = $.cookie('Auth-Token'); if (authToken != null && authToken != undefined && authToken.trim().length > 0) { xhr.setRequestHeader('Auth-Token', authToken); } var impersonateGuid = $.getParameterByName("impersonateid"); if (impersonateGuid != null && impersonateGuid != undefined && impersonateGuid.trim().length > 0) { $.sessionStorage('Auth-Impersonate-Guid', impersonateGuid); } impersonateGuid = $.sessionStorage('Auth-Impersonate-Guid'); if (impersonateGuid != null && impersonateGuid != undefined && impersonateGuid.trim().length > 0) { xhr.setRequestHeader('Auth-Impersonate-Guid', impersonateGuid); } var franchiseCode = $.sessionStorage('franchiseCode'); if (franchiseCode != null && franchiseCode != undefined && franchiseCode.trim().length > 0) { xhr.setRequestHeader('Auth-Current-Franchise', franchiseCode); } }); $.webMethod = function (options) { var settings = $.extend({ 'protocol': location.protocol, //http or https 'methodPage': '', //This should be something like UserMethods 'methodName': '', //Something like Createuser 'contentType': 'application/json; charset=utf-8', 'dataType': 'json', 'async': true, 'cache': false, timeout: 300000, 'parameters': {}, success: function (response) { }, error: function (xhr, error, error_thrown) { } }, options); if (settings.protocol.indexOf(':') < 0) { settings.protocol = settings.protocol + ':'; } var result; var baseUrl = window.API_BASE_URL; //var baseUrl = $("base").attr("href"); if (baseUrl === undefined || baseUrl === null || baseUrl.length === 0) baseUrl = ""; if (baseUrl.length > 0 && baseUrl[baseUrl.length - 1] !== "/") baseUrl = baseUrl + "/"; var url = baseUrl + settings.methodPage + (settings.methodName === undefined || settings.methodName === null || settings.methodName.length === 0 ? "" : "/" + settings.methodName); $.ajax({ type: "POST", url: url, data: JSON.stringify(settings.parameters), contentType: settings.contentType, dataType: settings.dataType, async: settings.async, cache: settings.cache, timeout: settings.timeout, beforeSend: null, success: function (value, textStatus, request) { if (value.hasOwnProperty("d")) result = $.parseJSON(value.d); else if (typeof value === 'object') result = value; else result = $.parseJSON(value); var authToken = request.getResponseHeader('Auth-Token'); var loggedIn = $.getBoolean(request.getResponseHeader('usahl_logged_in')); $.cookie.raw = true; if ($.getRememberMe() === true) { $.cookie('Auth-Token', authToken, { expires: 14, path: '/' }); $.cookie('usahl_logged_in', loggedIn, { expires: 14, path: '/' }); } else { $.cookie('Auth-Token', authToken, { expires: 365, path: '/' }); $.cookie('usahl_logged_in', loggedIn, { expires: 365, path: '/' }); } if (settings.success !== undefined) settings.success(result); }, error: function (xhr, error, errorThrown) { if (settings.error !== undefined) settings.error(xhr, error, errorThrown); } }); } $.webMethodAsync = async function (options) { var settings = $.extend({ 'protocol': location.protocol, //http or https 'methodPage': '', //This should be something like UserMethods. 'methodName': '', //Something like Createuser 'contentType': 'application/json; charset=utf-8', 'dataType': 'json', 'async': true, 'cache': false, timeout: 300000, 'parameters': {}, success: function (response) { }, error: function (xhr, error, error_thrown) { } }, options); if (settings.protocol.indexOf(':') < 0) { settings.protocol = settings.protocol + ':'; } var result; var baseUrl = window.API_BASE_URL; //var baseUrl = $("base").attr("href"); if (baseUrl === undefined || baseUrl === null || baseUrl.length === 0) baseUrl = ""; if (baseUrl.length > 0 && baseUrl[baseUrl.length - 1] !== "/") baseUrl = baseUrl + "/"; var url = baseUrl + settings.methodPage + (settings.methodName === undefined || settings.methodName === null || settings.methodName.length === 0 ? "" : "/" + settings.methodName); return $.ajax({ type: "POST", url: url, data: JSON.stringify(settings.parameters), contentType: settings.contentType, dataType: settings.dataType, async: settings.async, cache: settings.cache, timeout: settings.timeout, beforeSend: null, success: function (value, textStatus, request) { if (value.hasOwnProperty("d")) result = $.parseJSON(value.d); else if (typeof value === 'object') result = value; else result = $.parseJSON(value); var authToken = request.getResponseHeader('Auth-Token'); var loggedIn = $.getBoolean(request.getResponseHeader('usahl_logged_in')); $.cookie.raw = true; if ($.getRememberMe() === true) { $.cookie('Auth-Token', authToken, { expires: 14, path: '/' }); $.cookie('usahl_logged_in', loggedIn, { expires: 14, path: '/' }); } else { $.cookie('Auth-Token', authToken, { expires: 365, path: '/' }); $.cookie('usahl_logged_in', loggedIn, { expires: 365, path: '/' }); } if (settings.success !== undefined) settings.success(result); }, error: function (xhr, error, errorThrown) { if (settings.error !== undefined) settings.error(xhr, error, errorThrown); } }); } $.getBoolean = function (variable) { var vtype; var toReturn; if (variable != null) { switch (typeof (variable)) { case 'boolean': vtype = "boolean"; return variable; break; case 'number': vtype = "number"; if (variable == 0) toReturn = false; else toReturn = true; break; case 'string': vtype = "string"; if (variable.toLowerCase() == "true" || variable.toLowerCase() == "yes") toReturn = true; else if (variable.toLowerCase() == "false" || variable.toLowerCase() == "no") toReturn = false; else if (variable.length > 0) toReturn = true; else if (variable.length == 0) toReturn = false; break; } return toReturn; } }; $.isLoggedIn = function () { return $.getBoolean($.cookie('usahl_logged_in')); } //Send the auth-token in all ajax requests $.ajaxSetup({ beforeSend: function (xhr, settings) { xhr.setRequestHeader('Auth-Token', $.cookie('Auth-Token')); } }); $.sessionStorage = function (key, value) { if (value === undefined) { var val = window.sessionStorage.getItem(key); if ((/^usahl_json/).test(val)) { val = val.substring(11, val.length); val = $.parseJSON(val); } return val; } else { var val = value; if (typeof value === 'object') { val = "usahl_json:" + JSON.stringify(value); } window.sessionStorage.setItem(key, val); } }; $.sessionStorageClear = function () { window.sessionStorage.clear(); }; $.sessionStorageRemove = function (key) { window.sessionStorage.removeItem(key); }; $.localStorage = function (key, value) { if (value === undefined) { var val = window.localStorage.getItem(key); if ((/^usahl_json/).test(val)) { val = val.substring(11, val.length); val = $.parseJSON(val); } return val; } else { var val = value; if (typeof value === 'object') { val = "usahl_json:" + JSON.stringify(value); } window.localStorage.setItem(key, val); } }; $.localStorageClear = function () { window.localStorage.clear(); }; $.localStorageRemove = function (key) { window.localStorage.removeItem(key); }; $.setRememberMe = function (rememberMe) { $.sessionStorage("usahl_remember_me", rememberMe); } $.getRememberMe = function () { return true; /* var rememberMe = $.sessionStorage("usahl_remember_me"); if (rememberMe === undefined || rememberMe == null) { return false; } return $.getBoolean(rememberMe); */ } $.userHasPermission = function (permissionCode) { var allowed = false; var user = $.localStorage("session_currentUser"); $.each(user.Permissions, function () { if ($.compareStrings(this.Code, permissionCode)) { allowed = true; } }); return allowed; } $.userHasRole = function (role) { var hasRole = false; var user = $.localStorage("session_currentUser"); $.each(user.Roles, function () { if ($.compareStrings(this.FriendlyName, role)) { hasRole = true; } }); return hasRole; } $.checkForRole = function (user, role) { var hasRole = false; $.each(user.Roles, function () { if ($.compareStrings(this.FriendlyName, role)) { hasRole = true; } }); return hasRole; } $.checkForRoleCode = function (user, role) { var hasRole = false; $.each(user.roles, function () { if ($.compareStrings(this.role_code, role)) { hasRole = true; } }); return hasRole; } $.compareStrings = function (string1, string2) { return string1.toLowerCase() === string2.toLowerCase(); } $.getParameterByName = function (name) { name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]"); var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"), results = regex.exec(location.search); return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " ")); }