// v 1.2
jQuery.cookie = function(a, b, c) { if (typeof b != 'undefined') { c = c || {}; if (b === null) { b = ''; c.expires = -1 } var d = ''; if (c.expires && (typeof c.expires == 'number' || c.expires.toUTCString)) { var e; if (typeof c.expires == 'number') { e = new Date(); e.setTime(e.getTime() + (c.expires * 24 * 60 * 60 * 1000)) } else { e = c.expires } d = '; expires=' + e.toUTCString() } var f = c.path ? '; path=' + (c.path) : ''; var g = c.domain ? '; domain=' + (c.domain) : ''; var h = c.secure ? '; secure' : ''; if (typeof b === 'object') { var j = ""; for (var k in b) { if (j.length > 0) j = j + "&"; j = j + k + "=" + b[k] } document.cookie = [a, '=', j, d, f, g, h].join('') } else { document.cookie = [a, '=', b, d, f, g, h].join('') } } else { var l = null; var m = {}; if (document.cookie && document.cookie != '') { var n = document.cookie.split(';'); for (var i = 0; i < n.length; i++) { var o = jQuery.trim(n[i]); if (o.substring(0, a.length + 1) == (a + '=')) { l = o.substring(a.length + 1); break } } } if (l !== null) { var s = l.toString().split('&'); if (s.length > 1) { for (var i = 0; i < s.length; i++) { var p = s[i].toString().split('='); m[p[0]] = p[1] } return m } else { return l } } else { return l } } };
(function($) { $.fn.hoverIntent = function(f, g) { var cfg = { sensitivity: 7, interval: 100, timeout: 0 }; cfg = $.extend(cfg, g ? { over: f, out: g} : f); var cX, cY, pX, pY; var track = function(ev) { cX = ev.pageX; cY = ev.pageY; }; var compare = function(ev, ob) { ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t); if ((Math.abs(pX - cX) + Math.abs(pY - cY)) < cfg.sensitivity) { $(ob).unbind("mousemove", track); ob.hoverIntent_s = 1; return cfg.over.apply(ob, [ev]); } else { pX = cX; pY = cY; ob.hoverIntent_t = setTimeout(function() { compare(ev, ob); }, cfg.interval); } }; var delay = function(ev, ob) { ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t); ob.hoverIntent_s = 0; return cfg.out.apply(ob, [ev]); }; var handleHover = function(e) { var p = (e.type == "mouseover" ? e.fromElement : e.toElement) || e.relatedTarget; while (p && p != this) { try { p = p.parentNode; } catch (e) { p = this; } } if (p == this) { return false; } var ev = jQuery.extend({}, e); var ob = this; if (ob.hoverIntent_t) { ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t); } if (e.type == "mouseover") { pX = ev.pageX; pY = ev.pageY; $(ob).bind("mousemove", track); if (ob.hoverIntent_s != 1) { ob.hoverIntent_t = setTimeout(function() { compare(ev, ob); }, cfg.interval); } } else { $(ob).unbind("mousemove", track); if (ob.hoverIntent_s == 1) { ob.hoverIntent_t = setTimeout(function() { delay(ev, ob); }, cfg.timeout); } } }; return this.mouseover(handleHover).mouseout(handleHover); }; })(jQuery);
(function($) { $.fn.jqm = function(o) { var p = { overlay: 50, overlayClass: 'jqmOverlay', closeClass: 'jqmClose', trigger: '.jqModal', ajax: F, ajaxText: '', target: F, modal: F, toTop: F, onShow: F, onHide: F, onLoad: F }; return this.each(function() { if (this._jqm) return H[this._jqm].c = $.extend({}, H[this._jqm].c, o); s++; this._jqm = s; H[s] = { c: $.extend(p, $.jqm.params, o), a: F, w: $(this).addClass('jqmID' + s), s: s }; if (p.trigger) $(this).jqmAddTrigger(p.trigger) }) }; $.fn.jqmAddClose = function(e) { return hs(this, e, 'jqmHide') }; $.fn.jqmAddTrigger = function(e) { return hs(this, e, 'jqmShow') }; $.fn.jqmShow = function(t) { return this.each(function() { t = t || window.event; $.jqm.open(this._jqm, t) }) }; $.fn.jqmHide = function(t) { return this.each(function() { t = t || window.event; $.jqm.close(this._jqm, t) }) }; $.jqm = { hash: {}, open: function(s, t) { var h = H[s], c = h.c, cc = '.' + c.closeClass, z = (parseInt(h.w.css('z-index'))), z = (z > 0) ? z : 3000, o = $('<div></div>').css({ height: '100%', width: '100%', position: 'fixed', left: 0, top: 0, 'z-index': z - 1, opacity: c.overlay / 100 }); if (h.a) return F; h.t = t; h.a = true; h.w.css('z-index', z); if (c.modal) { if (!A[0]) L('bind'); A.push(s) } else if (c.overlay > 0) h.w.jqmAddClose(o); else o = F; h.o = (o) ? o.addClass(c.overlayClass).prependTo('body') : F; if (ie6) { $('html,body').css({ height: '100%', width: '100%' }); if (o) { o = o.css({ position: 'absolute' })[0]; for (var y in { Top: 1, Left: 1 }) o.style.setExpression(y.toLowerCase(), "(_=(document.documentElement.scroll" + y + " || document.body.scroll" + y + "))+'px'") } } if (c.ajax) { var r = c.target || h.w, u = c.ajax, r = (typeof r == 'string') ? $(r, h.w) : $(r), u = (u.substr(0, 1) == '@') ? $(t).attr(u.substring(1)) : u; r.html(c.ajaxText).load(u, function() { if (c.onLoad) c.onLoad.call(this, h); if (cc) h.w.jqmAddClose($(cc, h.w)); e(h) }) } else if (cc) h.w.jqmAddClose($(cc, h.w)); if (c.toTop && h.o) h.w.before('<span id="jqmP' + h.w[0]._jqm + '"></span>').insertAfter(h.o); (c.onShow) ? c.onShow(h) : h.w.show(); e(h); return F }, close: function(s) { var h = H[s]; if (!h.a) return F; h.a = F; if (A[0]) { A.pop(); if (!A[0]) L('unbind') } if (h.c.toTop && h.o) $('#jqmP' + h.w[0]._jqm).after(h.w).remove(); if (h.c.onHide) h.c.onHide(h); else { h.w.hide(); if (h.o) h.o.remove() } return F }, params: {} }; var s = 0, H = $.jqm.hash, A = [], ie6 = $.browser.msie && ($.browser.version == "6.0"), F = false, i = $('<iframe src="javascript:false;document.write(\'\');" class="jqm"></iframe>').css({ opacity: 0 }), e = function(h) { if (ie6) if (h.o) h.o.html('<p style="width:100%;height:100%"/>').prepend(i); else if (!$('iframe.jqm', h.w)[0]) h.w.prepend(i); f(h) }, f = function(h) { try { $(':input:visible', h.w)[0].focus() } catch (_) { } }, L = function(t) { $()[t]("keypress", m)[t]("keydown", m)[t]("mousedown", m) }, m = function(e) { var h = H[A[A.length - 1]], r = (!$(e.target).parents('.jqmID' + h.s)[0]); if (r) f(h); return !r }, hs = function(w, t, c) { return w.each(function() { var s = this._jqm; $(t).each(function() { if (!this[c]) { this[c] = []; $(this).click(function() { for (var i in { jqmShow: 1, jqmHide: 1 }) for (var s in this[i]) if (H[this[i][s]]) H[this[i][s]].w[i](this); return F }) } this[c].push(s) }) }) } })(jQuery);
(function($) { $.fn.extend({ autocomplete: function(urlOrData, options) { var isUrl = typeof urlOrData == "string"; options = $.extend({}, $.Autocompleter.defaults, { url: isUrl ? urlOrData : null, data: isUrl ? null : urlOrData, delay: isUrl ? $.Autocompleter.defaults.delay : 10, max: options && !options.scroll ? 10 : 150 }, options); options.highlight = options.highlight || function(value) { return value; }; options.formatMatch = options.formatMatch || options.formatItem; return this.each(function() { new $.Autocompleter(this, options); }); }, result: function(handler) { return this.bind("result", handler); }, search: function(handler) { return this.trigger("search", [handler]); }, flushCache: function() { return this.trigger("flushCache"); }, setOptions: function(options) { return this.trigger("setOptions", [options]); }, unautocomplete: function() { return this.trigger("unautocomplete"); } }); $.Autocompleter = function(input, options) { var KEY = { UP: 38, DOWN: 40, DEL: 46, TAB: 9, RETURN: 13, ESC: 27, COMMA: 188, PAGEUP: 33, PAGEDOWN: 34, BACKSPACE: 8 }; var $input = $(input).attr("autocomplete", "off").addClass(options.inputClass); var timeout; var previousValue = ""; var cache = $.Autocompleter.Cache(options); var hasFocus = 0; var lastKeyPressCode; var config = { mouseDownOnSelect: false }; var select = $.Autocompleter.Select(options, input, selectCurrent, config); var blockSubmit; $.browser.opera && $(input.form).bind("submit.autocomplete", function() { if (blockSubmit) { blockSubmit = false; return false; } }); $input.bind(($.browser.opera ? "keypress" : "keydown") + ".autocomplete", function(event) { hasFocus = 1; lastKeyPressCode = event.keyCode; switch (event.keyCode) { case KEY.UP: event.preventDefault(); if (select.visible()) { select.prev(); } else { onChange(0, true); } break; case KEY.DOWN: event.preventDefault(); if (select.visible()) { select.next(); } else { onChange(0, true); } break; case KEY.PAGEUP: event.preventDefault(); if (select.visible()) { select.pageUp(); } else { onChange(0, true); } break; case KEY.PAGEDOWN: event.preventDefault(); if (select.visible()) { select.pageDown(); } else { onChange(0, true); } break; case options.multiple && $.trim(options.multipleSeparator) == "," && KEY.COMMA: case KEY.TAB: case KEY.RETURN: if (selectCurrent()) { event.preventDefault(); blockSubmit = true; return false; } break; case KEY.ESC: select.hide(); break; default: clearTimeout(timeout); timeout = setTimeout(onChange, options.delay); break; } }).focus(function() { hasFocus++; }).blur(function() { hasFocus = 0; if (!config.mouseDownOnSelect) { hideResults(); } }).click(function() { if (hasFocus++ > 1 && !select.visible()) { onChange(0, true); } }).bind("search", function() { var fn = (arguments.length > 1) ? arguments[1] : null; function findValueCallback(q, data) { var result; if (data && data.length) { for (var i = 0; i < data.length; i++) { if (data[i].result.toLowerCase() == q.toLowerCase()) { result = data[i]; break; } } } if (typeof fn == "function") fn(result); else $input.trigger("result", result && [result.data, result.value]); } $.each(trimWords($input.val()), function(i, value) { request(value, findValueCallback, findValueCallback); }); }).bind("flushCache", function() { cache.flush(); }).bind("setOptions", function() { $.extend(options, arguments[1]); if ("data" in arguments[1]) cache.populate(); }).bind("unautocomplete", function() { select.unbind(); $input.unbind(); $(input.form).unbind(".autocomplete"); }); function selectCurrent() { var selected = select.selected(); if (!selected) return false; var v = selected.result; previousValue = v; if (options.multiple) { var words = trimWords($input.val()); if (words.length > 1) { var seperator = options.multipleSeparator.length; var cursorAt = $(input).selection().start; var wordAt, progress = 0; $.each(words, function(i, word) { progress += word.length; if (cursorAt <= progress) { wordAt = i; return false; } progress += seperator; }); words[wordAt] = v; v = words.join(options.multipleSeparator); } v += options.multipleSeparator; } $input.val(v); hideResultsNow(); $input.trigger("result", [selected.data, selected.value]); return true; } function onChange(crap, skipPrevCheck) { if (lastKeyPressCode == KEY.DEL) { select.hide(); return; } var currentValue = $input.val(); if (!skipPrevCheck && currentValue == previousValue) return; previousValue = currentValue; currentValue = lastWord(currentValue); if (currentValue.length >= options.minChars) { $input.addClass(options.loadingClass); if (!options.matchCase) currentValue = currentValue.toLowerCase(); request(currentValue, receiveData, hideResultsNow); } else { stopLoading(); select.hide(); } }; function trimWords(value) { if (!value) return [""]; if (!options.multiple) return [$.trim(value)]; return $.map(value.split(options.multipleSeparator), function(word) { return $.trim(value).length ? $.trim(word) : null; }); } function lastWord(value) { if (!options.multiple) return value; var words = trimWords(value); if (words.length == 1) return words[0]; var cursorAt = $(input).selection().start; if (cursorAt == value.length) { words = trimWords(value) } else { words = trimWords(value.replace(value.substring(cursorAt), "")); } return words[words.length - 1]; } function autoFill(q, sValue) { if (options.autoFill && (lastWord($input.val()).toLowerCase() == q.toLowerCase()) && lastKeyPressCode != KEY.BACKSPACE) { $input.val($input.val() + sValue.substring(lastWord(previousValue).length)); $(input).selection(previousValue.length, previousValue.length + sValue.length); } }; function hideResults() { clearTimeout(timeout); timeout = setTimeout(hideResultsNow, 200); }; function hideResultsNow() { var wasVisible = select.visible(); select.hide(); clearTimeout(timeout); stopLoading(); if (options.mustMatch) { $input.search(function(result) { if (!result) { if (options.multiple) { var words = trimWords($input.val()).slice(0, -1); $input.val(words.join(options.multipleSeparator) + (words.length ? options.multipleSeparator : "")); } else { $input.val(""); $input.trigger("result", null); } } }); } }; function receiveData(q, data) { if (data && data.length && hasFocus) { stopLoading(); select.display(data, q); autoFill(q, data[0].value); select.show(); } else { hideResultsNow(); } }; function request(term, success, failure) { if (!options.matchCase) term = term.toLowerCase(); var data = cache.load(term); if (data && data.length) { success(term, data); } else if ((typeof options.url == "string") && (options.url.length > 0)) { var extraParams = { timestamp: +new Date() }; $.each(options.extraParams, function(key, param) { extraParams[key] = typeof param == "function" ? param() : param; }); $.ajax({ mode: "abort", port: "autocomplete" + input.name, dataType: options.dataType, url: options.url, data: $.extend({ q: lastWord(term), limit: options.max }, extraParams), success: function(data) { var parsed = options.parse && options.parse(data) || parse(data); cache.add(term, parsed); success(term, parsed); } }); } else { select.emptyList(); failure(term); } }; function parse(data) { var parsed = []; var rows = data.split("\n"); for (var i = 0; i < rows.length; i++) { var row = $.trim(rows[i]); if (row) { row = row.split("|"); parsed[parsed.length] = { data: row, value: row[0], result: options.formatResult && options.formatResult(row, row[0]) || row[0] }; } } return parsed; }; function stopLoading() { $input.removeClass(options.loadingClass); }; }; $.Autocompleter.defaults = { inputClass: "ac_input", resultsClass: "ac_results", loadingClass: "ac_loading", minChars: 1, delay: 400, matchCase: false, matchSubset: true, matchContains: false, cacheLength: 10, max: 100, mustMatch: false, extraParams: {}, selectFirst: true, formatItem: function(row) { return row[0]; }, formatMatch: null, autoFill: false, width: 0, multiple: false, multipleSeparator: ", ", highlight: function(value, term) { return value.replace(new RegExp("(?![^&;]+;)(?!<[^<>]*)(" + term.replace(/([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/gi, "\\$1") + ")(?![^<>]*>)(?![^&;]+;)", "gi"), "<strong>$1</strong>"); }, scroll: true, scrollHeight: 180 }; $.Autocompleter.Cache = function(options) { var data = {}; var length = 0; function matchSubset(s, sub) { if (!options.matchCase) s = s.toLowerCase(); var i = s.indexOf(sub); if (options.matchContains == "word") { i = s.toLowerCase().search("\\b" + sub.toLowerCase()); } if (i == -1) return false; return i == 0 || options.matchContains; }; function add(q, value) { if (length > options.cacheLength) { flush(); } if (!data[q]) { length++; } data[q] = value; } function populate() { if (!options.data) return false; var stMatchSets = {}, nullData = 0; if (!options.url) options.cacheLength = 1; stMatchSets[""] = []; for (var i = 0, ol = options.data.length; i < ol; i++) { var rawValue = options.data[i]; rawValue = (typeof rawValue == "string") ? [rawValue] : rawValue; var value = options.formatMatch(rawValue, i + 1, options.data.length); if (value === false) continue; var firstChar = value.charAt(0).toLowerCase(); if (!stMatchSets[firstChar]) stMatchSets[firstChar] = []; var row = { value: value, data: rawValue, result: options.formatResult && options.formatResult(rawValue) || value }; stMatchSets[firstChar].push(row); if (nullData++ < options.max) { stMatchSets[""].push(row); } }; $.each(stMatchSets, function(i, value) { options.cacheLength++; add(i, value); }); } setTimeout(populate, 25); function flush() { data = {}; length = 0; } return { flush: flush, add: add, populate: populate, load: function(q) { if (!options.cacheLength || !length) return null; if (!options.url && options.matchContains) { var csub = []; for (var k in data) { if (k.length > 0) { var c = data[k]; $.each(c, function(i, x) { if (matchSubset(x.value, q)) { csub.push(x); } }); } } return csub; } else if (data[q]) { return data[q]; } else if (options.matchSubset) { for (var i = q.length - 1; i >= options.minChars; i--) { var c = data[q.substr(0, i)]; if (c) { var csub = []; $.each(c, function(i, x) { if (matchSubset(x.value, q)) { csub[csub.length] = x; } }); return csub; } } } return null; } }; }; $.Autocompleter.Select = function(options, input, select, config) { var CLASSES = { ACTIVE: "ac_over" }; var listItems, active = -1, data, term = "", needsInit = true, element, list; function init() { if (!needsInit) return; element = $("<div/>").hide().addClass(options.resultsClass).css("position", "absolute").appendTo(document.body); list = $("<ul/>").appendTo(element).mouseover(function(event) { if (target(event).nodeName && target(event).nodeName.toUpperCase() == 'LI') { active = $("li", list).removeClass(CLASSES.ACTIVE).index(target(event)); $(target(event)).addClass(CLASSES.ACTIVE); } }).click(function(event) { $(target(event)).addClass(CLASSES.ACTIVE); select(); input.focus(); return false; }).mousedown(function() { config.mouseDownOnSelect = true; }).mouseup(function() { config.mouseDownOnSelect = false; }); if (options.width > 0) element.css("width", options.width); needsInit = false; } function target(event) { var element = event.target; while (element && element.tagName != "LI") element = element.parentNode; if (!element) return []; return element; } function moveSelect(step) { listItems.slice(active, active + 1).removeClass(CLASSES.ACTIVE); movePosition(step); var activeItem = listItems.slice(active, active + 1).addClass(CLASSES.ACTIVE); if (options.scroll) { var offset = 0; listItems.slice(0, active).each(function() { offset += this.offsetHeight; }); if ((offset + activeItem[0].offsetHeight - list.scrollTop()) > list[0].clientHeight) { list.scrollTop(offset + activeItem[0].offsetHeight - list.innerHeight()); } else if (offset < list.scrollTop()) { list.scrollTop(offset); } } }; function movePosition(step) { active += step; if (active < 0) { active = listItems.size() - 1; } else if (active >= listItems.size()) { active = 0; } } function limitNumberOfItems(available) { return options.max && options.max < available ? options.max : available; } function fillList() { list.empty(); var max = limitNumberOfItems(data.length); for (var i = 0; i < max; i++) { if (!data[i]) continue; var formatted = options.formatItem(data[i].data, i + 1, max, data[i].value, term); if (formatted === false) continue; var li = $("<li/>").html(options.highlight(formatted, term)).addClass(i % 2 == 0 ? "ac_even" : "ac_odd").appendTo(list)[0]; $.data(li, "ac_data", data[i]); } listItems = list.find("li"); if (options.selectFirst) { listItems.slice(0, 1).addClass(CLASSES.ACTIVE); active = 0; } if ($.fn.bgiframe) list.bgiframe(); } return { display: function(d, q) { init(); data = d; term = q; fillList(); }, next: function() { moveSelect(1); }, prev: function() { moveSelect(-1); }, pageUp: function() { if (active != 0 && active - 8 < 0) { moveSelect(-active); } else { moveSelect(-8); } }, pageDown: function() { if (active != listItems.size() - 1 && active + 8 > listItems.size()) { moveSelect(listItems.size() - 1 - active); } else { moveSelect(8); } }, hide: function() { element && element.hide(); listItems && listItems.removeClass(CLASSES.ACTIVE); active = -1; }, visible: function() { return element && element.is(":visible"); }, current: function() { return this.visible() && (listItems.filter("." + CLASSES.ACTIVE)[0] || options.selectFirst && listItems[0]); }, show: function() { var offset = $(input).offset(); element.css({ width: typeof options.width == "string" || options.width > 0 ? options.width : $(input).width(), top: offset.top + input.offsetHeight, left: offset.left }).show(); if (options.scroll) { list.scrollTop(0); list.css({ maxHeight: options.scrollHeight, overflow: 'auto' }); if ($.browser.msie && typeof document.body.style.maxHeight === "undefined") { var listHeight = 0; listItems.each(function() { listHeight += this.offsetHeight; }); var scrollbarsVisible = listHeight > options.scrollHeight; list.css('height', scrollbarsVisible ? options.scrollHeight : listHeight); if (!scrollbarsVisible) { listItems.width(list.width() - parseInt(listItems.css("padding-left")) - parseInt(listItems.css("padding-right"))); } } } }, selected: function() { var selected = listItems && listItems.filter("." + CLASSES.ACTIVE).removeClass(CLASSES.ACTIVE); return selected && selected.length && $.data(selected[0], "ac_data"); }, emptyList: function() { list && list.empty(); }, unbind: function() { element && element.remove(); } }; }; $.fn.selection = function(start, end) { if (start !== undefined) { return this.each(function() { if (this.createTextRange) { var selRange = this.createTextRange(); if (end === undefined || start == end) { selRange.move("character", start); selRange.select(); } else { selRange.collapse(true); selRange.moveStart("character", start); selRange.moveEnd("character", end); selRange.select(); } } else if (this.setSelectionRange) { this.setSelectionRange(start, end); } else if (this.selectionStart) { this.selectionStart = start; this.selectionEnd = end; } }); } var field = this[0]; if (field.createTextRange) { var range = document.selection.createRange(), orig = field.value, teststring = "<->", textLength = range.text.length; range.text = teststring; var caretAt = field.value.indexOf(teststring); field.value = orig; this.selection(caretAt, caretAt + textLength); return { start: caretAt, end: caretAt + textLength} } else if (field.selectionStart !== undefined) { return { start: field.selectionStart, end: field.selectionEnd} } }; })(jQuery);
(function(d) { var k = d.scrollTo = function(a, i, e) { d(window).scrollTo(a, i, e) }; k.defaults = { axis: 'xy', duration: parseFloat(d.fn.jquery) >= 1.3 ? 0 : 1 }; k.window = function(a) { return d(window)._scrollable() }; d.fn._scrollable = function() { return this.map(function() { var a = this, i = !a.nodeName || d.inArray(a.nodeName.toLowerCase(), ['iframe', '#document', 'html', 'body']) != -1; if (!i) return a; var e = (a.contentWindow || a).document || a.ownerDocument || a; return d.browser.safari || e.compatMode == 'BackCompat' ? e.body : e.documentElement }) }; d.fn.scrollTo = function(n, j, b) { if (typeof j == 'object') { b = j; j = 0 } if (typeof b == 'function') b = { onAfter: b }; if (n == 'max') n = 9e9; b = d.extend({}, k.defaults, b); j = j || b.speed || b.duration; b.queue = b.queue && b.axis.length > 1; if (b.queue) j /= 2; b.offset = p(b.offset); b.over = p(b.over); return this._scrollable().each(function() { var q = this, r = d(q), f = n, s, g = {}, u = r.is('html,body'); switch (typeof f) { case 'number': case 'string': if (/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(f)) { f = p(f); break } f = d(f, this); case 'object': if (f.is || f.style) s = (f = d(f)).offset() } d.each(b.axis.split(''), function(a, i) { var e = i == 'x' ? 'Left' : 'Top', h = e.toLowerCase(), c = 'scroll' + e, l = q[c], m = k.max(q, i); if (s) { g[c] = s[h] + (u ? 0 : l - r.offset()[h]); if (b.margin) { g[c] -= parseInt(f.css('margin' + e)) || 0; g[c] -= parseInt(f.css('border' + e + 'Width')) || 0 } g[c] += b.offset[h] || 0; if (b.over[h]) g[c] += f[i == 'x' ? 'width' : 'height']() * b.over[h] } else { var o = f[h]; g[c] = o.slice && o.slice(-1) == '%' ? parseFloat(o) / 100 * m : o } if (/^\d+$/.test(g[c])) g[c] = g[c] <= 0 ? 0 : Math.min(g[c], m); if (!a && b.queue) { if (l != g[c]) t(b.onAfterFirst); delete g[c] } }); t(b.onAfter); function t(a) { r.animate(g, j, b.easing, a && function() { a.call(this, n, b) }) } }).end() }; k.max = function(a, i) { var e = i == 'x' ? 'Width' : 'Height', h = 'scroll' + e; if (!d(a).is('html,body')) return a[h] - d(a)[e.toLowerCase()](); var c = 'client' + e, l = a.ownerDocument.documentElement, m = a.ownerDocument.body; return Math.max(l[h], m[h]) - Math.min(l[c], m[c]) }; function p(a) { return typeof a == 'object' ? a : { top: a, left: a} } })(jQuery);
String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g, "") }; String.prototype.limit = function(a) { var b = this; if (b.length > a) { var c = b.split(" "); var d = ""; var j = 0; var e; while (j < c.length - 1) { e = d; d += c[j] + " "; if (d.length > a) { break } e = d; j++ } return e.substring(0, e.length - 1) + "..." } return b }; String.prototype.IsNullOrEmpty = function() { var a = this; var b = true; if (a) { if (typeof (a) === 'string') { if (a.length > 0) { b = false } } } return b }; Array.prototype.remove = function(a) { for (var i = 0; i < this.length; i++) { if (a === this[i]) { this.splice(i, 1); break } } }; Array.prototype.find = function(a) { for (var i = 0; i < this.length; i++) { if (this[i] === a) { return true } } return false };
if (!window.Ninemsn) { window.Ninemsn = {} } 
Ninemsn.Share = new function() { var e = this; var f = ["ninemsn.com.au", "msn.co.nz"]; var g; var h = 'http://get.live.com/messenger/config'; var i = document.title; var j = location.hostname; var k = 626; var l = 436; var m = { program_id: 0, event_id: 0, region_id: 0 }; var n; this.Init = function(a, b, c) { g = a; m = b; n = c; $("#share-email > a").click(function() { return e.Email() }); $(".fav-share .fb").click(function() { return e.ShareOnFacebook() }); $(".fav-share .twitter").click(function() { return e.TwitterStatus() }); $("#share-im-dl").click(function() { return e.DownloadWLM() }); $("#share-blog > a").click(function() { return e.BlogThis() }); $("#share-delicious > a").click(function() { return e.ShareOnDelicious() }); $("#share-digg > a").click(function() { return e.ShareOnDigg() }); $("#share-myspace > a").click(function() { return e.ShareOnMySpace() }) }; this.Email = function(a) { var b = shareUrl(); window.location = "mailto:?subject=" + i + "&body=I thought you might like this clip from ninemsn Video: " + b + "%0A%0AIf you cannot click on the link above, copy and paste the entire address below into your web browser." + b; return false }; this.ShareOnFacebook = function(a) { window.open('http://www.facebook.com/sharer.php?u=' + encodeURIComponent(shareUrl(i)), 'sharer', 'toolbar=0,status=0,width=626,height=436'); return false }; this.TwitterStatus = function(a) { var b = shareUrl(); window.open('http://twitter.com/home?status=' + encodeURIComponent(b) + '&title=' + encodeURIComponent(i), 'twitter', 'toolbar=0,status=0,width=626,height=436') }; this.BlogThis = function(a) { var d = GetProgramData(); window.open('http://spaces.msn.com/BlogIt.aspx' + '?Title=' + encodeURIComponent(i) + '&SourceURL=' + encodeURIComponent(shareUrl()) + '&description=&CM=BlogThis&CE=1', 'blogthis', 'toolbar=0,status=0,width=626,height=436'); return false }; this.ShareOnDigg = function(a) { var d = GetProgramData(); window.open('http://digg.com/submit?url=' + encodeURIComponent(shareUrl()) + '&bodytext=&media=&topic=', 'digg', 'width=770,height=500,resizable=1,scrollbars=1,status=1,top=0,left=0'); return false }; this.ShareOnDelicious = function(a) { var d = GetProgramData(); window.open('http://del.icio.us/post?v=4&noui&jump=close&url=' + encodeURIComponent(shareUrl()) + '&title=' + encodeURIComponent(i), 'delicious', 'width=' + k + ',height=' + l + ',resizable=1,scrollbars=1,status=1,top=0,left=0'); return false }; this.ShareOnMySpace = function(a) { var d = GetProgramData(); window.open('http://www.myspace.com/index.cfm?fuseaction=postto&t=' + encodeURIComponent(shareUrl()) + '&u=' + encodeURIComponent(g) + '&l=1'); return false }; this.DownloadWLM = function(a) { window.open(h); return false }; function GetProgramData() { return m } function shareUrl(a) { if (a) { if (n === 'show') { return showUrl(a) } else { return eventUrl(a) } } else { if (n === 'show') { return showUrl() } else { return eventUrl() } } } function showUrl(a) { var d = GetProgramData(); var b = g + "/program/default.aspx?program_id=" + d.program_id; if (a) { b = b + "&t=" + a } return b } function eventUrl(a) { var d = GetProgramData(); var b = g + "/guide/event.aspx?program_id=" + d.program_id + "&event_id=" + d.event_id + "&region_id=" + d.region_id; if (a) { b = b + "&t=" + a } return b } function ImThisNoSupported() { var a = '<ul><li><div class="close">[x]</div>' + 'Sorry, your configuration doesn\'t support this feature.' + '<br />' + 'The minimum requirements are MSN Messenger 6.0 or higher and Internet Explorer 5.5 or higher.' + '<br />' + '<a id="share-im-dl" href="http://get.live.com/messenger/config" target="_blank">Download Windows Live Messenger now</a>.' + '</li></ul>'; return a } };
if (!window.TvFix) { window.TvFix = {} } 
TvFix.Config = new function() { var a = this; a.LoggingEnabled = false; a.Mode = "live"; a.ServiceBasePath = "http://data.ninemsn.com.au/Services/Service.axd?"; a.GuideServicePath = a.ServiceBasePath + "ServiceName=TvFix"; a.MembershipServicePath = a.ServiceBasePath + "ServiceName=TvFix.Membership"; a.RegionListUrl = "/guide/ajax/regions/List.aspx"; a.FavAutoCompleteUrl = "/guide/ajax/favourites/AutoComplete.aspx"; a.FavProgramListUrl = "/guide/ajax/favourites/ProgramList.aspx"; a.FavKeywordListUrl = "/guide/ajax/favourites/KeywordList.aspx"; a.FavEventListUrl = "/guide/ajax/favourites/EventList.aspx"; a.FavModalUrl = "/guide/ajax/favourites/Modal.aspx"; a.FavActionUrl = "/guide/favourites.aspx"; a.AlertModalUrl = "/guide/ajax/alerts/Modal.aspx"; a.NewsletterModuleUrl = "/guide/ajax/newsletter/Subscribe.aspx"; a.EventListUrl = "/guide/ajax/event/EventList.aspx"; a.EventBeforeAfterUrl = "/guide/ajax/event/BeforeAfter.aspx"; a.EventAlsoNowUrl = "/guide/ajax/event/AlsoNow.aspx"; a.EventRecommendationsUrl = "/guide/ajax/event/Recommendations.aspx"; a.SearchActionUrl = "/guide/search.aspx"; a.MiniGridTabUrl = "/guide/ajax/grid/Mini.aspx"; a.LoginModalUrl = "/account/ajax/login.aspx"; a.RegisterModalUrl = "/account/ajax/register.aspx"; a.RecoverModalUrl = "/account/ajax/password.aspx"; a.GuideSettingsCookie = "TvFixGuide"; a.CookieDomain = "tvfix.com.au"; a.CookieExpiryDays = 30 }; $.ajaxSetup({ cache: false });
TvFix.Util = new function() { var c = this; this.Log = function(a) { if (!TvFix.Config.LoggingEnabled) { return } if (typeof console !== "undefined") { console.log(a) } else { } }; this.EventPopup = function(e) { var a = $(this).attr("href"); var b = window.open(a, 'margin', 'toolbar=no,location=yes,directories=no,menubar=no,scrollbars=yes,status=no,resizable=yes,width=750,height=560'); b.focus(); return false }; this.PopupLink = function(e) { var a = $(this).attr("href"); if (opener) { opener.location = a; self.close(); return false } else { return true } }; this.Unescape = function(a) { a = "" + a; while (true) { var i = a.indexOf('+'); if (i < 0) { break } a = a.substring(0, i) + '%20' + a.substring(i + 1, a.length) } return unescape(a) }; this.Shorten = function(a, b) { a = a.trim(); if (a.length > b + 1) { return '<span title=\"' + a + '\">' + a.substring(0, b) + '...</span>' } else { return a } }; function AppendPreviewParam(a) { if (TvFix.Config.Mode === "debug") { if (a.indexOf("?", 0) !== -1) { a += "&mode=preview" } else { a += "?mode=preview" } } return a } };
TvFix.Common = new function() { var f = this; var g; var h = { regions: false }; this.InitOtherRegionsMenuItem = function() { var a = { sensitivity: 3, interval: 200, over: showRegions, timeout: 500, out: hideRegions }; $("#guide-regions-menu > li").hoverIntent(a) }; function showRegions() { log('showRegions'); if (h.regions) { $(this).find(">.placeholder").show() } else { $(this).find(">.placeholder").show().load(TvFix.Config.RegionListUrl, function(a, b, c) { if (b === "success") { h.regions = true; log('regions loaded') } else { log('error loading regions') } }) } } function hideRegions() { $(this).find(">.placeholder").hide() } this.InitNewsletter = function(a) { $('#daily-email-btn').live('click', function() { $(a).load(TvFix.Config.NewsletterModuleUrl + "?subscribe=" + $("#subscribe").val()) }) }; this.InitModal = function(a, b, c, d) { $('#jqModal').jqm(a); var e = d ? loadModalAuthenticated : loadModal; if (c) { $(b).live('click', e) } else { $(b).click(e) } $("#jqModal .modal-close").live('click', f.CloseModal) }; this.CloseModal = function() { $('#jqModal').jqmHide(); $("form").unbind() }; function loadModal(a) { f.CloseModal(); $('#jqModal').jqmShow(this); return false } function loadModalAuthenticated(b) { if (isLoggedIn(this)) { $('#jqModal').jqmShow(this) } else { if (g !== $(this).attr("href")) { g = $(this).attr("href") } $(this).attr("href", TvFix.Config.LoginModalUrl); $("#account-tabs a").unbind().live('click', loadModal); $('#jqModal').jqmShow(this); $(this).attr("href", g); $("#account .save-btn").unbind().live('click', function() { if ($(this).hasClass("save-btn-loading")) { return false } $(this).addClass("save-btn-loading"); var u; var d = { Submit: "true", RedirectTo: g }; switch (selectedTab()) { case "Login": u = '/account/ajax/login.aspx'; d.Username = $("#Username").val(); d.Password = $("#Password").val(); break; case "Register": u = '/account/ajax/register.aspx'; d.Username = $("#Username").val(); d.Screenname = $("#Screenname").val(); d.Password = $("#Password").val(); d.Password2 = $("#Password2").val(); break; case "Recover": u = '/account/ajax/recover.aspx'; d.Email = $("#Email").val(); break } $.post(u, d, function(a) { $('#jqModal').html(a); TvFix.Favourites.InitFavouriteModal() }); return false }) } return false } function selectedTab() { var a = $("#account-tabs > li.selected").get(0).id; if (a.indexOf("Login") !== -1) { return "Login" } else if (a.indexOf("Signup") !== -1) { return "Register" } else if (a.indexOf("Recover") !== -1) { return "Recover" } else { return "undefined" } } function isLoggedIn(a) { var b = $.cookie(TvFix.Config.GuideSettingsCookie); return b["Id"] > 0 } function checkLoggedIn(d) { var e = $.cookie(TvFix.Config.GuideSettingsCookie); if (e["Id"] === 0) { if ($(d).data("originalUrl") !== $(d).attr("href")) { $(d).data("originalUrl", $(d).attr("href")) } $(d).attr("href", TvFix.Config.LoginModalUrl); $("#account-tabs a").live('click', loadModal); $("#login-btn").unbind().live('click', function() { var b = $("#Username").val(); var c = $("#Password").val(); $.post('/account/ajax/login.aspx', { action: "ajaxSubmit", RedirectTo: $(d).data("originalUrl"), Username: b, Password: c }, function(a) { $('#jqModal').html(a) }); return false }) } else { if ($(d).data("originalUrl") !== null) { $(d).attr("href", $(d).data("originalUrl")) } } } function log(a) { TvFix.Util.Log(a) } };
TvFix.Channels = new function() { var f = this; this.Init = function() { $(".fta-region-id").change(LoadFtaRegionVenues); $(".pay-region-id").change(LoadPayRegionVenues); f.InitRegions() }; this.InitRegions = function() { var a = $(".fta-region-id")[0]; var b = $(".pay-region-id")[0]; var c = a.options[a.selectedIndex].value; var d = b.options[b.selectedIndex].value; f.LoadRegionVenues("fta", c, "#fta-result"); f.LoadRegionVenues("pay", d, "#pay-result") }; this.LoadRegionVenues = function(a, b, c) { log('LoadRegionVenues'); var d; if (a === 'fta') { d = "/guide/ajax/channels/ChannelsFta.aspx?region_id=" + b } else { d = "/guide/ajax/channels/ChannelsPay.aspx?region_id=" + b } $(c).empty(); if (b.length !== 0) { $(c).load(d, function() { $(".channel-group-header input").click(VenueHeaderToggle); $("#select-all-pay, #select-all-fta").click(VenueRegionToggle) }) } }; function VenueHeaderToggle() { log('VenueHeaderToggle'); var b = this.id; var c = this.checked; log('gid: ' + b); $(".channel-group-" + b).each(function(a) { this.checked = c }) } function VenueRegionToggle() { log('VenueRegionToggle'); var c = this.checked; var b = this.id; log(b); var d = (b === "select-all-pay") ? "#pay-result input" : "#fta-result input"; $(d).each(function(a) { this.checked = c }) } function LoadFtaRegionVenues(e) { log('LoadFtaRegions'); var a = this.options[this.selectedIndex].value; f.LoadRegionVenues("fta", a, "#fta-result") } function LoadPayRegionVenues(e) { log('LoadPayRegions'); var a = this.options[this.selectedIndex].value; f.LoadRegionVenues("pay", a, "#pay-result") } function log(a) { TvFix.Util.Log(a) } };
TvFix.Show = new function() { var f = this; var g; var h; this.Init = function(b, c, d) { g = b; h = c; TvFix.Common.InitModal({ ajax: '@href', onLoad: TvFix.Favourites.InitFavouriteModal }, '#fav-toolbar .fav-add a, #fav-toolbar .fav-reminder a', true, true); Ninemsn.Share.Init(d, { program_id: b }, "show"); loadShowTimes(); $("#tags-view-related").live('click', function() { var a = $(".section_header h1").text(); document.location = "/tags.aspx?domain=site&tags=" + b + "|Tv%20Programs&showname=" + a.trim(); return false }); if ($(".related-links li").size() >= 5) { $(".related-links .view-related").show() } }; function loadShowTimes() { var b = TvFix.Config.EventListUrl + "?type=more&program_id=" + g + "&region_id_list=" + h; $("#upcomming-show-times").load(b, function(e) { $(this).find("h3 a").click(TvFix.Util.EventPopup); var a = $(this).find("li:gt(5)"); if (a.length > 0) { a.hide(); $("#view-all").toggle(function() { a.slideDown() }, function() { a.slideUp() }) } else { $("#view-all").hide() } }) } function log(a) { TvFix.Util.Log(a) } };
TvFix.Event = new function() { var g = this; var h = false; var i = false; var j = {}; var k; var l; var m = [false, false, false]; var n = "Search for a show"; this.Init = function(b, c, d, f) { if (b) { j = b; k = c; l = d; $("#time-expander").toggle(this.LoadAlternateTimes, this.CloseAlternateTimes); $("#episode-expander, #episode-expander-text").toggle(this.LoadMoreEpisodes, this.CloseMoreEpisodes); $(".green-tabs li").click(tabClick); $("li#before-after").click(); $(".related-links a").live('click', TvFix.Util.PopupLink); TvFix.Common.InitModal({ ajax: '@href', onLoad: TvFix.Favourites.InitFavouriteModal }, '#fav-toolbar .fav-add a, #fav-toolbar .fav-reminder a', true, true); Ninemsn.Share.Init(f, { program_id: j.ProgramId, event_id: j.Id, region_id: j.RegionId }, "event"); if ($(".related-links li").size() >= 5) { $(".related-links .view-related").show() } } $("h1 a, .p-link, #sign-up, #cat_hl_222217 a, #guide-link").click(TvFix.Util.PopupLink); $("#tags-view-related").click(function() { var a = $(".event-info-header h1").text(); opener.location = "/tags.aspx?domain=site&tags=" + j.ProgramId + "|Tv%20Programs&showname=" + a.trim(); self.close(); return false }); this.searchInput = $(".search-input"); this.searchSubmit = $(".search-submit"); this.searchInput.focus(searchFocus); this.searchInput.blur(searchBlur); this.searchInput.val(n); this.searchSubmit.click(searchSubmit); this.searchInput.keyup(function(e) { if (e.keyCode === 13) { searchSubmit() } }); $("input[name=feedback]").click(feedbackFormToggle); $("#feedback-submit").click(feedbackFormValidate) }; this.LoadAlternateTimes = function(e) { if (h) { $(this).find(".expand-btn").removeClass("expand-gray").addClass("collapse-gray"); $("#event-time-content").slideDown() } else { $(this).addClass("loading"); var a = $(this); var b = TvFix.Config.EventListUrl + "?type=alternate&event_id=" + j.Id + "&region_id_list=" + l; $("#event-time-content").load(b, function() { a.find(".expand-btn").removeClass("expand-gray").addClass("collapse-gray"); $("#event-time-content").slideDown(); a.removeClass("loading") }); h = true } }; this.CloseAlternateTimes = function(e) { $(this).find(".expand-btn").removeClass("collapse-gray").addClass("expand-gray"); $("#event-time-content").slideUp() }; this.LoadMoreEpisodes = function(e) { if (i) { $(this).find(".expand-btn").removeClass("expand-gray").addClass("collapse-gray"); $("#more-episodes-content").slideDown() } else { $(this).addClass("loading"); var a = $(this); var b = TvFix.Config.EventListUrl + "?type=more&program_id=" + j.ProgramId + "&region_id_list=" + l; $("#more-episodes-content").load(b, function() { a.find(".expand-btn").removeClass("expand-gray").addClass("collapse-gray"); $("#more-episodes-content").slideDown(); a.removeClass("loading") }); i = true } }; this.CloseMoreEpisodes = function(e) { $(this).find(".expand-btn").removeClass("collapse-gray").addClass("expand-gray"); $("#more-episodes-content").slideUp() }; function programInfoLink(e) { opener.location = $(this).attr("href"); self.close(); return false } function tabClick() { log('tabClick'); var a = null; var p = $(this).parent("ul"); p.removeClass("event-tabs-left"); p.removeClass("event-tabs-mid"); p.removeClass("event-tabs-right"); p.children("li").removeClass("selected"); $(".event-tabs-content").hide(); switch (this.id) { case "before-after": p.addClass("event-tabs-left"); if (!m[0]) { a = TvFix.Config.EventBeforeAfterUrl + "?event_date=" + encodeURIComponent(j.EventDate) + "&event_date_end=" + encodeURIComponent(j.EventDateEnd) + "&venue_id=" + j.VenueId + "&state=" + k; $("#before-after-content").load(a).show(); m[0] = true } else { $("#before-after-content").show() } break; case "also-now": p.addClass("event-tabs-mid"); if (!m[1]) { a = TvFix.Config.EventAlsoNowUrl + "?event_date=" + encodeURIComponent(j.EventDate) + "&state=" + k + "&regions=" + l + "&venue_id=" + j.VenueId; $("#also-now-content").load(a).show(); m[1] = true } else { $("#also-now-content").show() } break; case "recommended": p.addClass("event-tabs-right"); if (!m[2]) { a = TvFix.Config.EventRecommendationsUrl + "?program_id=" + j.ProgramId; $("#recommended-content").load(a, function() { $(this).find(" .pname a").click(TvFix.Util.PopupLink) }).show(); m[2] = true } else { $("#recommended-content").show() } break } $(this).addClass("selected") } function searchFocus(e) { g.searchInput.addClass("focus"); if (g.searchInput.val() === n) { g.searchInput.val("") } } function searchBlur(e) { if (g.searchInput.val() === "") { g.searchInput.removeClass("focus"); g.searchInput.val(n) } } function searchSubmit(e) { log('searchSubmit'); if (g.searchInput.val() === "" || g.searchInput.val() === n) return false; var a = TvFix.Config.SearchActionUrl + "?q=" + g.searchInput.val(); if (opener) { opener.location = a; self.close(); return false } else { location = a; return true } } function feedbackFormToggle() { if ($(this).is(":checked")) { $("input[name=feedback]").attr('checked', false); $(this).attr('checked', true) } } function feedbackFormValidate() { var a = true; var b = ''; if (!$("input[name=feedback]").is(":checked")) { b += "Please select a feedback type.\n"; a = false } if ($("textarea[name=comment]").val().trim().length === 0) { b += "Please enter a description.\n"; a = false } if (a) { return true } else { alert(b); return false } } function log(a) { TvFix.Util.Log(a) } };
TvFix.Favourites = new function() { var me = this; var PROGRAM_DEFAULT_TEXT = "Add a show"; var KEYWORD_DEFAULT_TEXT = "Add a keyword"; var DEFAULT_TEXT_KEY = "DefaultText"; var KEYWORD_KEY = "kid"; var ORIGINAL_KEYWORD_KEY = "kid_orig"; var VALIDATE_KEYWORD_MAX_KEYWORDS = 10; var VALIDATE_KEYWORD_MAX_KEYWORDS_MSG = "You have added the maximum number (" + VALIDATE_KEYWORD_MAX_KEYWORDS + ") of keyword phrases allowed"; var VALIDATE_KEYWORD_MIN_LENGTH = 3; var VALIDATE_KEYWORD_MIN_LENGTH_MSG = "Please enter at least " + VALIDATE_KEYWORD_MIN_LENGTH + " characters"; var VALIDATE_KEYWORD_MAX_LENGTH = 200; var VALIDATE_KEYWORD_MAX_LENGTH_MSG = "Please limit you keyword(s) to " + VALIDATE_KEYWORD_MIN_LENGTH + " characters"; var VALIDATE_KEYWORD_MAX_RESULTS = 61; var VALIDATE_KEYWORD_MAX_RESULTS_MSG = "The search term entered is too generic. Please refine the value"; var tabLoaded = { "today": false, "next": false }; var tabActive = null; var config = { cacheLength: 0, width: 275, scrollHeight: 310, max: 10, minChars: 1, matchContains: false, selectFirst: true, formatItem: keywordResultFormat }; this.Init = function() { this.tabContentOriginalState = $(".tab-content:first").html(); this.FavResultsTable = $("table.favourite-results"); this.todayContent = $("#today-content"); this.nextContent = $("#next-content"); this.favProgramConatiner = $("#fav-program-container"); this.favProgramInput = $("#program-title"); this.favProgramButton = $("#program-title-add"); this.favKeywordConatiner = $("#fav-keyword-container"); this.favKeywordInput = $("#program-keyword"); this.favKeywordButton = $("#program-keyword-add"); this.newsletterContainer = $("#fav-newsletter"); me.favProgramInput.focus(inputFocus); me.favProgramInput.blur(inputBlur); me.favProgramInput.val(PROGRAM_DEFAULT_TEXT); me.favProgramInput.data(DEFAULT_TEXT_KEY, PROGRAM_DEFAULT_TEXT); me.favKeywordInput.focus(inputFocus); me.favKeywordInput.blur(inputBlur); me.favKeywordInput.val(KEYWORD_DEFAULT_TEXT); me.favKeywordInput.data(DEFAULT_TEXT_KEY, KEYWORD_DEFAULT_TEXT); $("#fav-tabs li").click(tabClick); $("#fav-tabs #today").click(); me.FavResultsTable.find(" tr:not('.day-group-header')").live('mouseover', function(e) { $(this).addClass("highlight") }).live('mouseout', function(e) { $(this).removeClass("highlight") }); me.FavResultsTable.find(" a.event").live('click', TvFix.Util.EventPopup); me.FavResultsTable.find(" .btn-remove").live('click', excludeEvent); me.favProgramInput.autocomplete(TvFix.Config.FavAutoCompleteUrl, config).result(programSelectResult); me.favProgramInput.keydown(addProgramChange); me.favProgramConatiner.load(TvFix.Config.FavProgramListUrl); me.favProgramButton.click(addProgram); me.favProgramConatiner.find(" li .btn-remove").live('click', removeProgram); me.favKeywordConatiner.load(TvFix.Config.FavKeywordListUrl); me.favKeywordButton.click(validateKeyword); me.favKeywordConatiner.find(" li .btn-remove").live('click', removeKeyword); me.favKeywordConatiner.find(" a").live('click', editKeyword); $("#fav-keywords a.more").toggle(function() { $($(this).attr("href")).slideDown() }, function() { $($(this).attr("href")).slideUp() }); TvFix.Common.InitNewsletter("#fav-newsletter"); me.newsletterContainer.load(TvFix.Config.NewsletterModuleUrl); TvFix.Common.InitModal({ ajax: '@href', onLoad: this.InitFavouriteModal }, '.alert-me a', true, true); TvFix.Common.InitOtherRegionsMenuItem(); me.ResetKeywordInputs() }; this.Refresh = function() { me.RefreshFavouriteShowsCount(); me.RefreshTabContents(); me.favProgramConatiner.load(TvFix.Config.FavProgramListUrl) }; this.ResetKeywordInputs = function() { log('ResetKeywordInputs'); me.favKeywordInput.val("").blur().data(KEYWORD_KEY, null).data(ORIGINAL_KEYWORD_KEY, null); me.favKeywordButton.val("Add").attr("disabled", "disabled").addClass("disabled") }; this.RefreshFavouriteShowsCount = function() { }; this.RefreshTabContents = function() { log('RefreshTabContents'); var sUrl = TvFix.Config.FavEventListUrl + "?action="; if (tabActive === "today") { me.todayContent.html(me.tabContentOriginalState).load(sUrl + "today") } else { me.todayContent.html(me.tabContentOriginalState); tabLoaded["today"] = false } if (tabActive === "next") { me.nextContent.html(me.tabContentOriginalState).load(sUrl + "next") } else { me.nextContent.html(me.tabContentOriginalState); tabLoaded["next"] = false } }; this.SetLoading = function(el, t) { if (t) { $(el).find(" .box-gray-title").addClass("loading") } else { $(el).find(" .box-gray-title").removeClass("loading") } }; this.InitFavouriteModal = function() { log('TvFix.Favourites.InitFavouriteModal'); $("input.favourite-event, input.favourite-program").unbind().change(function() { var c = $(this).attr("class"); if (c === "favourite-event" && $(this).is(":checked")) { $("input.favourite-program").attr("checked", null); $("input.favourite-excluded").attr("checked", null); $("input.favourite-excluded").attr("disabled", "disabled") } else if (c === "favourite-program") { if ($(this).is(":checked")) { $("input.favourite-event").attr("checked", null); $("input.favourite-excluded").removeAttr("disabled"); $("label.favourite-excluded-label").removeClass("disabled") } else { $("input.favourite-excluded").attr("checked", null); $("input.favourite-excluded").attr("disabled", "disabled"); $("label.favourite-excluded-label").addClass("disabled") } } }); $("form").unbind().submit(function() { return false }); $(".modal #fav-save, .modal #alert-save").unbind().click(function() { if ($(this).hasClass("save-btn-loading")) { return } $(this).addClass("save-btn-loading"); if (this.id === "fav-save") { saveFavourites() } else if (this.id === "alert-save") { saveReminders(this) } else { log('Unhandled modal submit (' + this.id + ')') } }) }; function saveFavourites() { log('TvFix.Favourites.saveFavourites'); var sParams = { Submit: true, type: "save", event_id: $("input[name=fav_event_id]").val(), program_id: $("input[name=fav_program_id]").val(), progChecked: $(".favourite-program").is(":checked"), progCheckedCurrent: ($(".favourite-program-checked").val() === 1), eventChecked: $(".favourite-event").is(":checked"), eventCheckedCurrent: ($(".favourite-event-checked").val() === 1), excludeChecked: $(".favourite-excluded").is(":checked"), excludeCheckedCurrent: ($(".favourite-excluded-checked").val() === 1) }; $.post(TvFix.Config.FavModalUrl, sParams, function(data) { $('#jqModal').html(data); $(".modal #confirm-ok").unbind().click(TvFix.Common.CloseModal); if (opener && opener.$('#favourites').length !== 0 && typeof (opener.TvFix.Favourites.Refresh) === 'function') { opener.TvFix.Favourites.Refresh() } else if (opener && opener.$('#grid').length !== 0 && typeof (opener.TvFix.Grid.RefreshFavourites) === 'function') { opener.TvFix.Grid.RefreshFavourites() } }) } function saveReminders(el) { log('TvFix.Favourites.saveReminders'); var sParams = { Submit: true, event_id: $("input[name=alert_event_id]").val(), region_id: $("input[name=alert_region_id]").val(), alert_type_email: $("input[name=alert_type_email]").is(":checked"), alert_type_email_checked: $("input[name=alert_type_email_checked]").val() === 1, alert_mins_before: $("input[name=alert_mins_before]").val() }; $.post(TvFix.Config.AlertModalUrl, sParams, function(data) { $('#jqModal').html(data); $(".modal #confirm-ok").unbind().click(TvFix.Common.CloseModal) }) } function inputFocus() { log('inputFocus'); if ($(this).val() === $(this).data(DEFAULT_TEXT_KEY)) { $(this).addClass("focus"); $(this).val(""); if (this.id === "program-keyword") { me.favKeywordButton.removeAttr("disabled").removeClass("disabled") } } } function inputBlur() { log('inputBlur'); log($(this).val()); if ($(this).val() === "") { $(this).removeClass("focus"); $(this).val($(this).data(DEFAULT_TEXT_KEY)); $(this).siblings(".box-gray-btn").attr("disabled", "disabled").addClass("disabled") } } function acInputBlur() { log('acInputBlur'); me.favProgramInput.removeClass("focus"); me.favProgramInput.val(me.favProgramInput.data(DEFAULT_TEXT_KEY)); me.favProgramButton.attr("disabled", "disabled").addClass("disabled"); me.favProgramButton.data("id", null) } function addProgram() { var pid = $(this).data("id"); if (!this.disabled && pid !== "") { me.SetLoading("#fav-shows", true); me.favProgramButton.attr("disabled", "disabled"); var sUrl = TvFix.Config.FavProgramListUrl + "?action=add&program_id=" + pid; me.favProgramConatiner.load(sUrl, function() { me.SetLoading("#fav-shows", false); $(this).data("id", null); me.favProgramInput.blur(); acInputBlur(); me.RefreshTabContents(); me.RefreshFavouriteShowsCount() }) } else { log("No Program set") } } function validateKeyword() { var keyword = me.favKeywordInput.val().trim(); keyword = keyword.toString().trim(); var len = keyword.toString().trim().length; if ($("#fav-keyword-container>ul>li").size() >= VALIDATE_KEYWORD_MAX_KEYWORDS) { alert(VALIDATE_KEYWORD_MAX_KEYWORDS_MSG) } else if (len < VALIDATE_KEYWORD_MIN_LENGTH) { alert(VALIDATE_KEYWORD_MIN_LENGTH_MSG) } else if (len > VALIDATE_KEYWORD_MAX_LENGTH) { alert(VALIDATE_KEYWORD_MIN_LENGTH_MSG) } else { addKeyword(keyword) } } function addKeyword(keyword) { log('addKeyword'); var sUrl; var input = me.favKeywordInput; var error = false; me.SetLoading("#fav-keywords", true); var kid = me.favKeywordInput.data(KEYWORD_KEY); if (kid !== null) { if (me.favKeywordInput.data(ORIGINAL_KEYWORD_KEY) === keyword) { me.favKeywordConatiner.find("li#" + kid).show(); me.SetLoading("#fav-keywords", false); me.ResetKeywordInputs(); return } me.ResetKeywordInputs(); sUrl = TvFix.Config.FavKeywordListUrl + "?action=update&keyword_id=" + kid + "&keyword=" + encodeURIComponent(keyword); me.favKeywordConatiner.load(sUrl, function() { input.val(""); input.blur(); me.SetLoading("#fav-keywords", false); me.RefreshTabContents() }) } else { sUrl = TvFix.Config.FavKeywordListUrl + "?action=add&keyword=" + encodeURIComponent(keyword); $.get(sUrl, function(data) { if (data === "too many keywords") { alert('Sorry, we could not add your keyword because you have reached the maximum limit allowed.\n\nDO NOT use the keyword alert list for storing favourite programs. Use the favourite shows module above instead.') } else { me.favKeywordConatiner.html(data); input.val(""); input.blur(); me.RefreshTabContents() } me.SetLoading("#fav-keywords", false) }) } } function editKeyword() { var li = $(this).parents("li"); var kid = li.attr("id"); var keyword = $(this).attr("href").replace("keyword:", ""); li.siblings().show(); me.favKeywordButton.val("Edit"); me.favKeywordInput.data(KEYWORD_KEY, kid); me.favKeywordInput.data(ORIGINAL_KEYWORD_KEY, keyword); me.favKeywordInput.focus(); me.favKeywordInput.val(keyword); li.hide(); return false } function removeProgram() { log('removeProgram'); me.SetLoading("#fav-shows", true); var pid = $(this).parents("#fav-program-container li").attr("id"); var sUrl = TvFix.Config.FavProgramListUrl + "?action=remove&program_id=" + pid; me.favProgramConatiner.load(sUrl, function(html) { me.RefreshTabContents(); me.SetLoading("#fav-shows", false); me.RefreshFavouriteShowsCount() }) } function removeKeyword() { log('removeKeyword'); me.SetLoading("#fav-keywords", true); var kid = $(this).parents("#fav-keyword-container li").attr("id"); var sUrl = TvFix.Config.FavKeywordListUrl + "?action=remove&keyword_id=" + kid; me.favKeywordConatiner.load(sUrl, function(html) { me.RefreshTabContents(); me.SetLoading("#fav-keywords", false); me.ResetKeywordInputs() }) } function excludeEvent() { var tr = $(this).parents("tr"); var pid = tr.attr("pid"); var eid = tr.attr("id"); var sUrl = TvFix.Config.FavActionUrl; $.getJSON(sUrl, { action: "exclude", program_id: pid, event_id: eid }, function(data) { tr.remove() }) } function addProgramChange(e) { log('addProgramChange'); if (e.which !== 13 && (e.which < 37 || e.which > 40)) { me.favProgramButton.attr("disabled", "disabled"); me.favProgramButton.addClass("disabled") } } function programSelectResult(event, data, formatted) { log('programSelectResult'); if (data) { me.favProgramInput.val(unescapeHtml(me.favProgramInput.val())); me.favProgramButton.removeAttr("disabled"); me.favProgramButton.removeClass("disabled"); me.favProgramButton.data("id", data[1]) } } function keywordResultFormat(data) { var result = data[0]; if (data[2].length > 0) { result += " <span class=\"ac_year\">(" + data[2] + ")</span>" } result += "<div class=\"ac_extra\">"; result = result + data[4] + ", "; result += data[5]; if (data[3].length > 0) { result += " " + data[3] + " " } result += "</div>"; return result } function tabClick() { var sUrl = TvFix.Config.FavEventListUrl + "?action="; var p = $(this).parent("ul"); p.children("li").removeClass("selected"); $(".tab-content").hide(); switch (this.id) { case "today": if (!tabLoaded["today"]) { me.todayContent.load(sUrl + "today").show(); tabLoaded["today"] = true } else { me.todayContent.show() } tabActive = "today"; if (me.todayContent.find("table tr.favourite-event").length === 0) { log('no content in tab') } break; case "next": if (!tabLoaded["next"]) { me.nextContent.load(sUrl + "next").show(); tabLoaded["next"] = true } else { me.nextContent.show() } tabActive = "next"; break } $(this).addClass("selected") } function unescapeHtml(html) { var temp = document.createElement("div"); temp.innerHTML = html; var result = temp.childNodes[0].nodeValue; temp.removeChild(temp.firstChild); return result } function log(val) { TvFix.Util.Log(val) } };
TvFix.GridHome = new function() { var b = this; var c = false; this.Init = function() { var a = { sensitivity: 3, interval: 200, over: regionOver, timeout: 600, out: regionOut }; $("#home-region > li").hoverIntent(a); $("input.region-cancel").click(function() { $("#home-region > li > ul").hide() }); $("#guide-menu-channels").load("/guide/ajax/channels/UserChannels.aspx"); $(".pname a").click(TvFix.Util.EventPopup) }; function regionOver() { if (!c) { $(this).parent("#home-region").addClass("hover"); $(this).find(">ul").show().find(" .placeholder").load(TvFix.Config.RegionListUrl + "?type=select", function() { c = true }) } else { $(this).parent("#home-region").addClass("hover"); $(this).find(">ul").show() } } function regionOut() { var p = $(this).parent("#home-region"); $(this).find(">ul").hide(); p.removeClass("hover") } };
TvFix.GridSearch = new function() { var a = this; this.Init = function() { $("td .pname a").click(TvFix.Util.EventPopup) } };
TvFix.Grid = new function() { var n = this; var o = "company-group-divider"; var q = { favs: false }; var s = { favs: [] }; this.Init = function(p, d) { this.Period = p; this.Date = d; this.fta = $("tbody.FTA"); this.ftaCells = this.fta.find(" td"); this.pay = $("tbody.PAY"); this.payRows = this.pay.find(" tr"); this.payCells = this.pay.find(" td"); this.payChannelJump = $("#pay-channel-jump"); this.payChannelJumpOptions = this.payChannelJump.find(" option"); this.confirmDisabled = false; this.filter = null; $("td .pname a").click(TvFix.Util.EventPopup); $("#pay-region-add-link").click(addPayRegion); $(".highlight-nav > li span").click(filterShowsByGenre); $(".venue-collapse .btn").click(collapseChannel); $("#pay-genre-nav li span").click(filterPayTvChannels); $("#nav-header a, #nav-footer a").click(addFilter); $(".region-toggle").toggle(regionCollapse, regionOpen); this.payChannelJump.change(channelJump); TvFix.Common.InitOtherRegionsMenuItem(); $('#confirm').jqm({ modal: true, trigger: false }); applyFilter() }; function addFilter() { if (n.filter !== null) { var a = $(this).attr("href"); document.location = a + "#" + n.filter; return false } return true } function jqmConfirm(a, b, c) { $('#confirm').jqmShow().find('p.confirmMsg').html(a).end(); $(".modal .save-btn").click(function() { if ($("input[name=no_confirm]").is(":checked")) { n.confirmDisabled = true } if (typeof b === 'string') { window.location.href = b } else { b(c) } $('#confirm').jqmHide() }); $("#confirm .modal-close").click(function() { $('#confirm').jqmHide() }) } this.RefreshFavourites = function() { q.favs = false; s.favs = [] }; function addPayRegion() { var a = $(this).attr("href"); var b = $("#pay_region_id option:selected").val(); log(b); document.location = a + "&region_id=" + b + "&redirect=" + encodeURIComponent("/guide/#PAY-header"); return false } function regionCollapse() { $(this).parents('tr').next().hide(); $(this).parents('tbody').find(".time-header").hide(); $(this).parents('tbody').next().hide().next().find(".time-header").hide(); $(this).removeClass('region-open').addClass('region-collapse') } function regionOpen() { $(this).parents('tr').next().show(); $(this).parents('tbody').find(".time-header").show(); $(this).parents('tbody').next().show().next().find(".time-header").show(); $(this).removeClass('region-collapse').addClass('region-open') } function channelJump() { n.payChannelJumpOptions.filter(":selected").each(function() { log($(this).val()); $.scrollTo("#" + $(this).val(), { axis: 'y', duration: 500 }) }); $("#pay-channel-jump")[0].selectedIndex = 0 } function collapseChannel(e) { var b = $(this).parent("td").parent("tr"); var c = b.next(); var d = b.attr("id"); var f = $.cookie(TvFix.Config.GuideSettingsCookie); var g = f["Venues"].split(","); g.remove(d); f["Venues"] = g.join(","); $.cookie(TvFix.Config.GuideSettingsCookie, f, { expires: TvFix.Config.CookieExpiryDays, path: "/" }); var h = b.prev(); var i = c.next(); if (h !== null && i !== null && h.hasClass(o) && i.hasClass(o)) { i.remove() } var j = b.parent("tbody"); b.remove(); c.remove(); var k = j.find("tr:first-child"); if (k.hasClass(o)) { k.remove() } var l = j.find("tr:last-child").prev().prev(); if (l.hasClass(o)) { l.remove() } if (f["Id"] > 0) { var m = TvFix.Config.ServiceBasePath + 'ServiceName=TvFix&ServiceAction=RemoveChannel&ServiceFormat=json&callback=?'; $.getJSON(m, { person_id: f["Id"], channel_id: d }, function(a) { log('Updating permanent storage: success') }) } } function collapseChannelCallback(b) { var c = $(b).parent("td").parent("tr"); var d = c.next(); var e = c.attr("id"); var f = $.cookie(TvFix.Config.GuideSettingsCookie); var g = f["Venues"].split(","); g.remove(e); f["Venues"] = g.join(","); $.cookie(TvFix.Config.GuideSettingsCookie, f, { expires: TvFix.Config.CookieExpiryDays, path: "/" }); var h = c.prev(); var i = d.next(); if (h !== null && i !== null && h.hasClass(o) && i.hasClass(o)) { i.remove() } var j = c.parent("tbody"); c.remove(); d.remove(); var k = j.find("tr:first-child"); if (k.hasClass(o)) { k.remove() } var l = j.find("tr:last-child").prev().prev(); if (l.hasClass(o)) { l.remove() } if (f["Id"] > 0) { var m = TvFix.Config.ServiceBasePath + 'ServiceName=TvFix&ServiceAction=RemoveChannel&ServiceFormat=json&callback=?'; $.getJSON(m, { person_id: f["Id"], channel_id: e }, function(a) { log('Updating permanent storage: success') }) } } this.Highlight = function(a) { n.ftaCells.filter(".event-highlight").removeClass("event-highlight"); n.payCells.filter(".event-highlight").removeClass("event-highlight"); n.ftaCells.filter(".event-dim").removeClass("event-dim"); n.payCells.filter(".event-dim").removeClass("event-dim"); if (a !== 'none') { if (a === "favourite") { highlightFavourites() } else { n.ftaCells.filter(":not(.venue, .venue-collapse)").addClass("event-dim"); n.ftaCells.find(a).parent("td").removeClass("event-dim").addClass("event-highlight"); n.payCells.filter(":not(.venue, .venue-collapse)").addClass("event-dim"); n.payCells.find(a).parent("td").removeClass("event-dim").addClass("event-highlight") } } }; function applyFilter() { if (document.location.hash && document.location.hash.substring(0, 7) === "#filter") { var a = document.location.hash.substring(1); if (a === "filter-fav") { highlightFavourites(); $(".highlight-nav > li").removeClass("selected"); $("." + a).parents("li").addClass("selected") } else { filterShowsByGenreInternal(a) } n.filter = a } } function highlightFavourites() { log('highlightFavourites'); n.ftaCells.filter(":not(.venue, .venue-collapse)").addClass("event-dim"); n.payCells.filter(":not(.venue, .venue-collapse)").addClass("event-dim"); if (q.favs) { highlightFavouritesCallback() } else { var a = $.cookie(TvFix.Config.GuideSettingsCookie); var r = a["Regions"].split(','); var b = r[0]; var c = 0; if (r.length > 1) { c = r[1] } var e = TvFix.Config.GuideServicePath + "&ServiceAction=FavouriteEventsIdGet&ServiceFormat=json&callback=?"; $.getJSON(e, { personid: a["Id"], venues: a["Venues"], date: n.Date, period: n.Period, state: a["State"], ftaregion: b, payregion: c }, function(d) { if (d && d.Events && d.Events.Event) { if (d.Events.Event.value) { s.favs.push(d.Events.Event.value) } else { for (var i = 0; i < d.Events.Event.length; i++) { s.favs.push(d.Events.Event[i].value) } } q.favs = true; highlightFavouritesCallback() } }) } } function highlightFavouritesCallback() { log('highlightFavouritesCallback'); log(s.favs); for (var i = 0; i < s.favs.length; i++) { log(s.favs[i]); n.ftaCells.find("#" + s.favs[i]).parent("td").removeClass("event-dim").addClass("event-highlight"); n.payCells.find("#" + s.favs[i]).parent("td").removeClass("event-dim").addClass("event-highlight") } } function filterShowsByGenre(e) { var c = $(this).attr("class"); if (c !== "filter-none") { n.filter = c } else { n.filter = null } filterShowsByGenreInternal(c) } function filterShowsByGenreInternal(c) { $(".highlight-nav > li").removeClass("selected"); switch (c) { case "filter-none": n.Highlight("none"); break; case "filter-fav": n.Highlight("favourite"); break; case "filter-movies": n.Highlight(".movie"); break; case "filter-family": n.Highlight(".genre-11, .genre-47"); break; case "filter-sports": n.Highlight(".genre-42"); break; case "filter-news": n.Highlight(".genre-33"); break; case "filter-special": n.Highlight(".genre-0"); break } $("." + c).parents("li").addClass("selected") } function filterPayTvChannels(e) { var a = $(this).text(); if (a === "Kids & Family") { a = "Kids" } if (a === "All Channels") { n.payRows.show().filter("#bottom-placeholder").hide(); n.payChannelJumpOptions.show() } else { n.payRows.show(); n.payChannelJumpOptions.show(); n.payRows.filter(":not(." + a + ")").each(function(i) { $(this).hide(); if (parseInt(this.id).toString() !== 'NaN') { n.payChannelJumpOptions.filter("[value=" + this.id + "]").hide() } }); if (!n.payRows.is(":visible")) { n.payRows.filter("#bottom-placeholder").show() } } $(this).parents("li").siblings().removeClass("selected"); $(this).parents("li").addClass("selected") } function log(a) { TvFix.Util.Log(a) } };
TvFix.MiniGrid = new function() { var d = this; var f = [false, false]; var g = false; this.Init = function() { var a = { sensitivity: 3, interval: 200, over: showRegions, timeout: 500, out: hideRegions }; $(".pname a").live('click', TvFix.Util.EventPopup); $("ul.grid-tabs li").click(tabClick); $("li#tonight-tab").click(); $("#mini-grid .grid-region li").hoverIntent(a); $("#region-id-list a").live('click', changeRegion) }; function changeRegion(e) { var a = $(this).attr("href"); var p = a.split('/'); var b = TvFix.Util.Unescape(p[1]); $(".region-label").html(TvFix.Util.Shorten(b, 16)); var c = p[2]; setCookieRegion(c); f[0] = f[1] = false; $("li#tonight-tab").click(); $("#mini-grid .grid-region li >.placeholder").hide(); return false } function setCookieRegion(a) { var b = $.cookie(TvFix.Config.GuideSettingsCookie); b["Regions"] = a; $.cookie(TvFix.Config.GuideSettingsCookie, b, { expires: TvFix.Config.CookieExpiryDays, path: "/" }) } function showRegions() { if (g) { $(this).find(">.placeholder").show() } else { $(this).find(">.placeholder").show().load(TvFix.Config.RegionListUrl); g = true } } function hideRegions() { $(this).find(">.placeholder").hide() } function tabClick() { log('tabClick'); var a = null; var p = $(this).parent("ul"); p.children("li").removeClass("selected"); log(this.id); switch (this.id) { case "tonight-tab": if (!f[0]) { a = TvFix.Config.MiniGridTabUrl + "?period=peak"; $("#tonight-content").load(a); $("#nownext-content").hide(); $("#tonight-content").show(); f[0] = true } else { $("#nownext-content").hide(); $("#tonight-content").show() } break; case "nownext-tab": if (!f[1]) { a = TvFix.Config.MiniGridTabUrl + "?period=nownext"; $("#nownext-content").load(a); $("#tonight-content").hide(); $("#nownext-content").show(); f[1] = true } else { $("#tonight-content").hide(); $("#nownext-content").show() } break } $(this).addClass("selected") } function log(a) { TvFix.Util.Log(a) } };