var RankersWidgets = { version: 2.0, global_obj_reference: 'RankersWidgetsObjectName', widget_frame_url: 'https://www.rankers.co.nz/widgets/frame', obj_name: 'RankersWidgets', insert: function(id, target) { RankersWidgets.insert_widget(RankersWidgets.widget_frame_url, id, target); }, insert_doc_badge: function(doc_page_id, target) { var frame_url = 'https://www.rankers.co.nz/widgets/doc_frame'; RankersWidgets.insert_widget(frame_url, doc_page_id, target); }, insert_widget: function(url, id, target) { // target can be changed but will take some time to update due to caching on the server. if (typeof target == "string") { var target_el = document.getElementById(target); if (target_el != null && id != null) { var frame_url = url + "/" + id + ".js?target=" + encodeURIComponent(target); RankersUtils.require(frame_url); } } } }; var RankersUtils = { referrer: function(){ return window.location.href }, require: function(url) { // Load an external js dependency var script = document.createElement('script'); script.src = url; document.getElementsByTagName('head')[0].appendChild(script); } }; (function(){ function executeRankersWidgetsMethodByName(method_name, context /*, args */) { try { var obj_name = RankersWidgets.obj_name; var args = Array.prototype.slice.call(arguments, 2)[0]; return context[obj_name][method_name].apply(context, args); } catch(e) { console.warn('Error calling function "' + method_name + '" on context[\'' + obj_name + '\'] object "' + context[obj_name] + '": ' + e); } } var w = arguments[0]; var obj_name = w[RankersWidgets.global_obj_reference]; if (typeof obj_name == 'undefined' || obj_name == null){ return; } var calls = w[obj_name].calls_array || []; // TODO continuously monitor calls for new items added on the clientside. for (i = 0; i < calls.length; i++) { try { var functionName = calls[i][0]; var args = Array.prototype.slice.call(calls[i],1); executeRankersWidgetsMethodByName(functionName, w, args); } catch(exception) { console.warn(exception); } } })(window); // Include any widget JS Dependencies // @deprecated // The rankers object below is no longer supported and is only included here for backwards compatibility with existing widget code in the wild. var rankers = { version: 1.0, widget_frame_url: 'https://www.rankers.co.nz/widgets/frame', experience_badge_widget: function(target, widget_id, href, width, height) { this.insert_widget(target, widget_id, width, height); }, experience_rating_widget: function(target, widget_id, href, width, height) { this.insert_widget(target, widget_id, width, height); }, industry_experience_widget: function(target, widget_id, href, width, height) { this.insert_widget(target, widget_id, width, height); }, industry_review_widget: function(target, widget_id, href, width, height) { this.insert_widget(target, widget_id, width, height); }, industry_tips_widget: function(target, widget_id, href, width, height) { this.insert_widget(target, widget_id, width, height); }, insert_widget: function(target, widget_id, width, height) { // width and height are currently ignored, instead resize the widget by editing it on rankers.co.nz // target can be changed but will take some time to update due to caching on the server. if (typeof target == "string") { var target_el = document.getElementById(target); if (target_el != null && widget_id != null) { var url = rankers.widget_frame_url + widget_id + ".js?target=" + encodeURIComponent(target); RankersUtils.require(url); } } }, referrer: RankersUtils.referrer };