jQuery.ajaxSettings.traditional = true; var SenecaFCEUtil = SenecaFCEUtil || {}; SenecaFCEUtil.jsonpTimeout = 1000 * 40; // 40 seconds SenecaFCEUtil.server = 'https://apps.senecacollege.ca/ce'; SenecaFCEUtil.log = function(obj) { if (typeof obj == 'string') setTimeout(function() { throw new Error(obj); }, 0); else setTimeout(function() { throw obj; }, 0); } SenecaFCEUtil.getUniqueVariableName = function(){ var rtn = 'jquery_var_' + (new Date()).getTime(); alert(rtn); return rtn; } SenecaFCEUtil.getParamObject = function(paramUrl){ var rtn = {}; if (paramUrl.indexOf('?') == 0) paramUrl = paramUrl.substring(1); var items = paramUrl.split('&'); for(var i = 0; i < items.length; i++) { var keyval = items[i].split('='); rtn[keyval[0]] = decodeURIComponent(keyval[1]); } return rtn; } SenecaFCEUtil.serchingFor = function(type, filters, contact, interest, details, callback){ var param = {}; param.type = type; param.askFor = type; param.filters = filters; param.contact = contact; param.interest = interest; param.details = details; $.ajax({ url: this.server + '/cart/searchingfor.jsp?jsoncallback=?', dataType: 'jsonp', crossDomain: true, data: param, timeout: SenecaFCEUtil.jsonpTimeout, cb: callback, success: function(data) { this.cb(data); }, error: function(){ this.cb({error:true}); } }); } SenecaFCEUtil.askFor = function(type, contact, section, details, fname, lname, callback){ var param = {}; param.type = type; param.contact = contact; param.section = section; param.details = details; param.fname = fname; param.lname = lname; $.ajax({ url: this.server + '/cart/searchingfor.jsp?jsoncallback=?', dataType: 'jsonp', crossDomain: true, data: param, timeout: SenecaFCEUtil.jsonpTimeout, cb: callback, success: function(data) { this.cb(data); }, error: function(){ this.cb({error:true}); } }); } var Cart = Cart || {}; var statusParam = statusParam || {}; var statusEvents = statusEvents || {}; Cart.server = SenecaFCEUtil.server; Cart.status = function(callback) { statusEvents.success = statusEvents.success || new Array(); statusEvents.error = statusEvents.error|| new Array(); var dt = {}; dt['method'] = 'status'; for(var key in statusParam) { dt[key] = statusParam[key]; } $.ajax({ url: this.server + '/cart/cart_functions.jsp?jsoncallback=?', dataType: 'jsonp', crossDomain: true, data: dt, timeout: SenecaFCEUtil.jsonpTimeout, cb: callback, success: function(data) { for(var i = 0; i < statusEvents.success.length; i++) { statusEvents.success[i](data); } callback(data); }, error: function(){ for(var i = 0; i < statusEvents.error .length; i++) { statusEvents.error[i]({error:true}); } } }); }; Cart.addSubject = function (code, yys, isWaitList) { /* var forwarded_host = '< request.getHeader("x-forwarded-host") >'; if(forwarded_host.indexOf("www.senecac") > -1) { var currLoc = window.location + ""; var newLink = "https://apps.senecacollege.ca/" + currLoc.substring(currLoc.indexOf("ce"), currLoc.length); // alert("new link = " + newLink ); location.href = newLink; } */ var param= {}; param.subject = code; param.method = 'add'; if (yys > 0) param.yys = yys; if (isWaitList) param.waitlist = 'true'; $.ajax({ url: this.server + '/cart/cart_functions.jsp?jsoncallback=?', dataType: 'jsonp', crossDomain: true, data: param, // in SUP, commentout timeout timeout: SenecaFCEUtil.jsonpTimeout, success: function(data) { for(f in Cart.subjectAddedEventSuccess) { try{Cart.subjectAddedEventSuccess[f](data);} catch(e){SenecaFCEUtil.log(e);} } }, error: function(){ var pData = null; if(typeof this.data == 'string') pData = SenecaFCEUtil.getParamObject(this.data); else pData = this.data; for(f in Cart.addSubjectAddedEventError) { try{Cart.addSubjectAddedEventError[f](pData.subject);} catch(e){SenecaFCEUtil.log(e);} } } }); }; Cart.subjectAddedEventSuccess = new Array(); Cart.addSubjectAddedEventSuccess = function(event) { this.subjectAddedEventSuccess[this.subjectAddedEventSuccess.length] = event; }; Cart.subjectAddedEventError = new Array(); Cart.addSubjectAddedEventError = function(event) { this.subjectAddedEventError[this.subjectAddedEventError.length] = event; }; Cart.removeSubject = function(code) { $.ajax({ url: this.server + '/cart/cart_functions.jsp?jsoncallback=?', dataType: 'jsonp', crossDomain: true, data: { method:"remove", subject:code }, timeout: SenecaFCEUtil.jsonpTimeout, success: function(data) { for(f in Cart.subjectRemovedEventSuccess) { try{Cart.subjectRemovedEventSuccess[f](data);} catch(e){SenecaFCEUtil.log(e);} } }, error: function(){ var pData = null; if(typeof this.data == 'string') pData = SenecaFCEUtil.getParamObject(this.data); else pData = this.data; for(f in Cart.subjectRemovedEventError) { try{Cart.subjectRemovedEventError[f](pData);} catch(e){SenecaFCEUtil.log(e);} } } }); }; Cart.subjectRemovedEventSuccess = new Array(); Cart.addSubjectRemovedEventSuccess = function(event) { this.subjectRemovedEventSuccess[this.subjectRemovedEventSuccess.length] = event; }; Cart.subjectRemovedEventError = new Array(), Cart.addSubjectRemovedEventError = function(event) { this.subjectRemovedEventError[this.subjectRemovedEventError.length] = event; }; Cart.checkPreReq = function (code, yys) { //var pData = eval('(' + data + ')'); $.ajax({ url: this.server + '/cart/cart_functions.jsp?jsoncallback=?', dataType: 'jsonp', crossDomain: true, data:{ 'method':'checkpreq', 'subject':code, 'yys':yys }, timeout: SenecaFCEUtil.jsonpTimeout, success: function(data) { alert(data.message); }, error: function() { alert('Unable to check pre-req'); } }); }; var SubjectAvailability = SubjectAvailability || {}; SubjectAvailability.server = SenecaFCEUtil.server; SubjectAvailability.loadAvailability = function(subject) { var param = {}; param.subject = arguments[0]; if (arguments.length > 1) { for(var key in arguments[1]) { param[key] = arguments[1][key]; } } $.ajax({ url: this.server + '/cart/classes/jsonp/availability.jsp?jsoncallback=?', dataType: 'jsonp', crossDomain: true, data: param, timeout: SenecaFCEUtil.jsonpTimeout, success: function(data) { if (data.code == 'undefined') { data.code = param.subject; } for(f in SubjectAvailability.loadAvailabilityEventSuccess) { try{SubjectAvailability.loadAvailabilityEventSuccess[f](data, this.data);} catch(e){SenecaFCEUtil.log(e);} } }, error: function(){ var pData = null; if(typeof this.data == 'string') pData = SenecaFCEUtil.getParamObject(this.data); else pData = this.data; for(f in SubjectAvailability.loadAvailabilityEventError ) { try{SubjectAvailability.loadAvailabilityEventError[f](pData.subject);} catch(e){SenecaFCEUtil.log(e);} } } }); }; //vvvvvvintncent 2014-12-09 cop[ed from production SubjectAvailability.loadAvailabilityWithFilter = function(subject) { var param = {}; param.subject = arguments[0]; if (arguments.length > 1) { for(var key in arguments[1]) { param[key] = arguments[1][key]; } } $.ajax({ url: this.server + '/cart/classes/jsonp/availability.jsp?jsoncallback=?', dataType: 'jsonp', crossDomain: true, data: param, timeout: SenecaFCEUtil.jsonpTimeout, success: function(data) { if (data.code == 'undefined') { data.code = param.subject; } for(f in SubjectAvailability.loadAvailabilityEventSuccess) { try{SubjectAvailability.loadAvailabilityEventSuccess[f](data, this.data);} catch(e){SenecaFCEUtil.log(e);} } redoFilter(); }, error: function(){ var pData = null; if(typeof this.data == 'string') pData = SenecaFCEUtil.getParamObject(this.data); else pData = this.data; for(f in SubjectAvailability.loadAvailabilityEventError ) { try{SubjectAvailability.loadAvailabilityEventError[f](pData.subject);} catch(e){SenecaFCEUtil.log(e);} } } }); }; //vvvvvvv SubjectAvailability.loadAvailabilityEventSuccess = new Array(); SubjectAvailability.addLoadAvailabilityEventSuccess = function(event) { SubjectAvailability.loadAvailabilityEventSuccess[SubjectAvailability.loadAvailabilityEventSuccess.length] = event; }; SubjectAvailability.loadAvailabilityEventError = new Array(); SubjectAvailability.addLoadAvailabilityEventError = function(event) { SubjectAvailability.loadAvailabilityEventError[SubjectAvailability.loadAvailabilityEventError.length] = event; }; SubjectAvailability.loadOrientations = function(subject) { var param = {}; param.subject = arguments[0]; if (arguments.length > 1) { for(var key in arguments[1]) { param[key] = arguments[1][key]; } } $.ajax({ // url: this.server + '/cart/orientations/jsonp/availability.jsp?jsoncallback=?', url: this.server + '/cart/classes/jsonp/availability.jsp?jsoncallback=?', dataType: 'jsonp', crossDomain: true, data: param, timeout: SenecaFCEUtil.jsonpTimeout, success: function(data) { if (data.code == 'undefined') { data.code = param.subject; } for(f in SubjectAvailability.loadAvailabilityEventSuccess) { try{SubjectAvailability.loadAvailabilityEventSuccess[f](data, this.data);} catch(e){SenecaFCEUtil.log(e);} } }, error: function(){ var pData = null; if(typeof this.data == 'string') pData = SenecaFCEUtil.getParamObject(this.data); else pData = this.data; for(f in SubjectAvailability.loadAvailabilityEventError ) { try{SubjectAvailability.loadAvailabilityEventError[f](pData.subject);} catch(e){SenecaFCEUtil.log(e);} } } }); /*var param = {}; param.subject = arguments[0]; var cfg = {}; if (arguments.length == 3) { for(var key in arguments[1]) { param[key] = arguments[1][key]; } cfg = arguments[2]; } else if (arguments.length == 2) { cfg = arguments[1]; } $.ajax({ url: this.server + '/cart/orientations/jsonp/availability.jsp?jsoncallback=?', dataType: 'jsonp', crossDomain: true, data: param, oSuccess: cfg.success, oError: cfg.error, timeout: SenecaFCEUtil.jsonpTimeout, success: function(data) { if (this.oSuccess != null && this.oSuccess != 'undefined') this.oSuccess(data); for(f in SubjectAvailability.loadOrientationsEventSuccess) { try{SubjectAvailability.loadOrientationsEventSuccess[f](data);} catch(e){SenecaFCEUtil.log(e);} } }, error: function(){ var pData = null; if(typeof this.data == 'string') pData = SenecaFCEUtil.getParamObject(this.data); else pData = this.data; if (this.oError!= null && this.oError!= 'undefined') this.oError(pData.subject); for(f in SubjectAvailability.loadOrientationsEventError) { try{SubjectAvailability.loadOrientationsEventError[f](pData.subject);} catch(e){SenecaFCEUtil.log(e);} } } });*/ }; SubjectAvailability.loadOrientationsEventSuccess = new Array(); SubjectAvailability.addLoadOrientationsEventSuccess = function(event) { SubjectAvailability.loadOrientationsEventSuccess[SubjectAvailability.loadOrientationsEventSuccess.length] = event; }; SubjectAvailability.loadOrientationsEventError = new Array(); SubjectAvailability.addLoadOrientationsEventError = function(event) { SubjectAvailability.loadOrientationsEventError[SubjectAvailability.loadOrientationsEventError.length] = event; }; var Local = Local || {}; Local.loadAvailability = function(subject){ if (window['ajax_data_availability_' + subject] != null) { for(f in SubjectAvailability.loadAvailabilityEventSuccess) { try{SubjectAvailability.loadAvailabilityEventSuccess[f](window['ajax_data_availability_' + subject]);} catch(e){SenecaFCEUtil.log(e);} } } else { for(f in SubjectAvailability.loadAvailabilityEventError ) { try{SubjectAvailability.loadAvailabilityEventError[f](subject);} catch(e){SenecaFCEUtil.log(e);} } } } var StudentServices = StudentServices || {} StudentServices.server = SenecaFCEUtil.server; StudentServices.affiliateWithProgram = function(programCode) { var param = {}; param.add = programCode; var cfg = {}; if (arguments.length == 3) { for(var key in arguments[1]) { param[key] = arguments[1][key]; } cfg = arguments[2]; } else if (arguments.length == 2) { cfg = arguments[1]; } $.ajax({ url: this.server + '/cart/affiliation.jsp?jsoncallback=?', dataType: 'jsonp', crossDomain: true, data: param, oSuccess: cfg.success, oError: cfg.error, timeout: SenecaFCEUtil.jsonpTimeout, success: function(data) { if (this.oSuccess != null && this.oSuccess != 'undefined') this.oSuccess(data); }, error: function(){ var pData = null; if(typeof this.data == 'string') pData = SenecaFCEUtil.getParamObject(this.data); else pData = this.data; if (this.oError!= null && this.oError!= 'undefined') this.oError(pData.subject); } }); } StudentServices.removeAffiliateWithProgram = function(programCode) { var param = {}; param.remove = programCode; var cfg = {}; if (arguments.length == 3) { for(var key in arguments[1]) { param[key] = arguments[1][key]; } cfg = arguments[2]; } else if (arguments.length == 2) { cfg = arguments[1]; } $.ajax({ url: this.server + '/cart/affiliation.jsp?jsoncallback=?', dataType: 'jsonp', crossDomain: true, data: param, oSuccess: cfg.success, oError: cfg.error, timeout: SenecaFCEUtil.jsonpTimeout, success: function(data) { if (this.oSuccess != null && this.oSuccess != 'undefined') this.oSuccess(data); }, error: function(){ var pData = null; if(typeof this.data == 'string') pData = SenecaFCEUtil.getParamObject(this.data); else pData = this.data; if (this.oError!= null && this.oError!= 'undefined') this.oError(pData.subject); } }); }