/* Base object that all javascript on any Student Voice Groups web page should prototype. Ex. //JQUERY document.onload short hand syntax $(function() { //Define SVG object if not already defined. if(typeof(SVG) == 'undefined')){ SVG = {}; } SVG.getCommunity = function(var communityID){ //GET COMMUNITY }; }); */ $(function () { $(window).ajaxComplete(function (event, request, settings) { if (request.getResponseHeader('AUTH_REQUIRED') === '1') { window.location = '/account/logonrequired'; } }); $.ajaxSetup({ cache: false }); }); (function () { function SVG() { if (typeof (window.SVG) != 'undefined') return window.SVG; $.ajaxSettings.traditional = true; busyElement = null; if (!window.console) { (function () { var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"]; window.console = {}; for (var i = 0; i < names.length; ++i) { window.console[names[i]] = function () { }; } } ()); } return { CurrentMember: { Id: null, Name: null }, /* Collection used to store all AJAX URLS. Use this mapping so that we can strongly type the URLS, set them inline but reference them properly through a .js file. */ URLS: { UploadFlyer: '', GetAllFlyerBoardImages: '', GetThisWeekFlyerBoardImages: '', GetNextWeekFlyerBoardImages: '', CorkBoard: '', LoadingIcon: '', RightScroller: '', RightScrollerHover: '', LeftScroller: '', LeftScrollerHover: '', GetUsersFacebookGroups: '', GetUsersFacebookFriends: '', GetGroupMembers: '', DeleteUsersFromGroup: '', GetGroupWallPosts: '', UploadDocument: '', DeleteManyGroups: '', EventPopup: '', GetEventsForAdmin: '', DeleteManyEvents: '', GetDocument: '', TinyMCEUrl: '' }, MessageTypes: { GroupType: 'GroupType', Group: 'Group', PositionTemplate: 'PositionTemplate', CommunityMember: 'CommunityMember', GroupMembership: 'GroupMembership', GroupMembershipInvitation: 'GroupMembershipInvitation', GroupMembershipRequest: 'GroupMembershipRequest', AllGroupMembers: 'AllGroupMembers' }, FileTypes: { Image: ["jpg", "jpeg", "gif", "png"], Document: ["doc", "docx", "ppt", "pptx", "xls", "xlsx", "pdf"] }, RegExpressions: { EmailSplit: new RegExp(",|;|\r|\n|\t", "gi"), IsEmail: /^[_a-zA-Z0-9-'']+(\.[_a-zA-Z0-9-'']+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.(([0-9]{1,3})|([a-zA-Z]{2,3})|(aero|coop|info|museum|name))$/ }, BlockUI: { width: '100%', height: '100%', border: 'none', padding: '0px', opacity: .1, color: '#fff', cursor: 'none', 'font-family': "Helvetica,Arial,sans-serif", 'font-size': "1em", css: { border: '1px solid #ddd', '-moz-border-radius': '5px', '-webkit-border-radius': '5px', 'border-radius': '5px', '-moz-box-shadow': '0px 0px 5px #aaa', '-webkit-box-shadow': '0px 0px 5px #aaa', 'box-shadow': '0px 0px 5px #aaa' } }, ReloadPage: function() { window.location.reload(true); }, HistoryHandlers: [], PreventHandlers: false, ListenForUrl: function(anchorTag, fn) { this.HistoryHandlers["" + anchorTag + ""] = fn; }, InitHistoryManager: function() { var _this = this; function FireListener() { var href = window.location.href.split("#"); if (href.length < 2 || _this.PreventHandlers) return; var fn = _this.HistoryHandlers["" + href[1] + ""]; if ($.isFunction(fn)) fn(); } $(window).bind('hashchange', FireListener); }, ValidateForm: function(form) { if (!form) return false; var errors = Sys.Mvc.FormContext.getValidationForForm(form[0]).validate(); if (errors && errors.length > 0) return false; return true; }, Block: function(container, text, overlay, fadeIn) { var msg = '
' + (text || "Loading...") + "
"; $(container).block({ showOverlay: overlay, centerX: true, message: msg, fadeIn: (fadeIn || 0), css: { border: '1px solid #666', color: '#555', fontSize: '1.25em', fontStyle: 'italic', fontWeight: 'bold', '-moz-border-radius': '5px', '-webkit-border-radius': '5px', 'border-radius': '5px', '-moz-box-shadow': '0px 0px 10px #333', '-webkit-box-shadow': '0px 0px 10px #333', 'box-shadow': '0px 0px 10px #333' } }); }, Busy: function(container) { if (container) { busyElement = container; container.block({ fadeIn: 0, message: '
', css: { backgroundColor: 'transparent', border: 0, left: '50%', padding: 0, top: '50%', width: 'auto' }, overlayCSS: { backgroundColor: '#fff', opacity: '.6' } }); } else { if (busyElement != null) { busyElement.unblock(); } } }, Watercolor: function(input, onKeyUp, value) { value = value ? value : "Start typing to search"; input.attr("value", value).addClass("helperText"); input.click(function() { if ($.trim(this.value) == value) { $(this).removeClass("helperText"); this.value = ''; } }); input.blur(function() { if ($.trim(this.value) == '') { $(this).addClass("helperText"); this.value = value; } }); if ($.isFunction(onKeyUp)) input.keyup(onKeyUp); }, AddRandomKeyToUrl: function(url) { if (!url) url = window.location.href; var val = "rand=" + (Math.random() * 10); var queryString = url.split('?'); if (queryString.length != 2) val = "?" + val; else val = "&" + val; return url + val; }, GetUrlKeyValue: function(key, url) { if (!url) url = window.location.href; var params = url.split(/[?&]/g); var paramCount = params.length; for (var i = 0; i < paramCount; i++) { var param = params[i].split("="); if (param[0].toLowerCase() == key.toLowerCase()) return param[1]; } return null; }, ReplaceValueInQueryString: function(URL, searchKey, val) { var queryString = URL.split('?'); //Parse out query key/value pairs if (queryString.length != 2) { return false; } //Either no querystring or invalid one var hostname = queryString[0]; var map = queryString[1].split('&'); var keyCount = map.length; for (var i = 0; i < keyCount; i++) { var keyValue = map[i].split('='); var key = keyValue[0]; if (key == searchKey) { map[i] = key + "=" + val; } } hostname += "?"; for (var i = 0; i < keyCount; i++) { hostname += map[i]; if (i < keyCount - 1) { hostname += "&"; } } return hostname; }, IndexOf: function(str, val) { return $.inArray(val, str); }, IsRightClick: function(e) { return $.event.fix(e).which != 1 }, IsEmailAddress: function(emailAddress) { return this.RegExpressions.IsEmail.test(emailAddress); }, /* List should be an array of objects that looking like this. { value : "", text : "' } */ ListToHTMLSelect: function(list) { var select = $("