/*
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 = $("");
function getOption(value, text) {
return $("