﻿/*******************************************************
AutoComplete
*******************************************************/
(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) { 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) { v = words.slice(0, words.length - 1).join(options.multipleSeparator) + options.multipleSeparator + v } 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 [""] } var words = value.split(options.multipleSeparator); var result = []; $.each(words, function(i, value) { if ($.trim(value)) { result[i] = $.trim(value) } }); return result } function lastWord(value) { if (!options.multiple) { return value } var words = trimWords(value); 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)); $.Autocompleter.Selection(input, 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("") } } }) } if (wasVisible) { $.Autocompleter.Selection(input, input.value.length, input.value.length) } } 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 (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 (list && list.scrollTop) { 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) { if (list && list.scrollTop) { 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() } } }; $.Autocompleter.Selection = function(field, start, end) { if (field.createTextRange) { var selRange = field.createTextRange(); selRange.collapse(true); selRange.moveStart("character", start); selRange.moveEnd("character", end); selRange.select() } else { if (field.setSelectionRange) { field.setSelectionRange(start, end) } else { if (field.selectionStart) { field.selectionStart = start; field.selectionEnd = end } } } field.focus() } })(jQuery);

/*******************************************************
Big iFrame
*******************************************************/
(function($) { $.fn.bgIframe = $.fn.bgiframe = function(s) { if ($.browser.msie && /6.0/.test(navigator.userAgent)) { s = $.extend({ top: "auto", left: "auto", width: "auto", height: "auto", opacity: true, src: "javascript:false;" }, s || {}); var prop = function(n) { return n && n.constructor == Number ? n + "px" : n }, html = '<iframe class="bgiframe"frameborder="0"tabindex="-1"src="' + s.src + '"style="display:block;position:absolute;z-index:-1;' + (s.opacity !== false ? "filter:Alpha(Opacity='0');" : "") + "top:" + (s.top == "auto" ? "expression(((parseInt(this.parentNode.currentStyle.borderTopWidth)||0)*-1)+'px')" : prop(s.top)) + ";left:" + (s.left == "auto" ? "expression(((parseInt(this.parentNode.currentStyle.borderLeftWidth)||0)*-1)+'px')" : prop(s.left)) + ";width:" + (s.width == "auto" ? "expression(this.parentNode.offsetWidth+'px')" : prop(s.width)) + ";height:" + (s.height == "auto" ? "expression(this.parentNode.offsetHeight+'px')" : prop(s.height)) + ';"/>'; return this.each(function() { if ($("> iframe.bgiframe", this).length == 0) { this.insertBefore(document.createElement(html), this.firstChild) } }) } return this } })(jQuery);

/*******************************************************
Block UI
*******************************************************/
(function($) { if (/1\.(0|1|2)\.(0|1|2)/.test($.fn.jquery) || /^1.1/.test($.fn.jquery)) { alert("blockUI requires jQuery v1.2.3 or later!  You are using v" + $.fn.jquery); return } $.fn._fadeIn = $.fn.fadeIn; var setExpr = (function() { if (!$.browser.msie) { return false } var div = document.createElement("div"); try { div.style.setExpression("width", "0+0") } catch (e) { return false } return true })(); $.blockUI = function(opts) { install(window, opts) }; $.unblockUI = function(opts) { remove(window, opts) }; $.growlUI = function(title, message, timeout, callback) { var $m = $('<div class="growlUI"></div>'); if (title) { $m.append("<h1>" + title + "</h1>") } if (message) { $m.append("<h2>" + message + "</h2>") } if (timeout == undefined) { timeout = 3000 } $.blockUI({ message: $m, fadeIn: 700, fadeOut: 1000, centerY: false, timeout: timeout, showOverlay: false, onUnblock: callback, css: $.blockUI.defaults.growlCSS }) }; $.fn.block = function(opts) { return this.unblock({ fadeOut: 0 }).each(function() { if ($.css(this, "position") == "static") { this.style.position = "relative" } if ($.browser.msie) { this.style.zoom = 1 } install(this, opts) }) }; $.fn.unblock = function(opts) { return this.each(function() { remove(this, opts) }) }; $.blockUI.version = 2.18; $.blockUI.defaults = { message: "<h1>Please wait...</h1>", css: { padding: 0, margin: 0, width: "30%", top: "40%", left: "35%", textAlign: "center", color: "#000", border: "3px solid #aaa", backgroundColor: "#fff", cursor: "wait" }, overlayCSS: { backgroundColor: "#000", opacity: "0.6" }, growlCSS: { width: "350px", top: "10px", left: "", right: "10px", border: "none", padding: "5px", opacity: "0.6", cursor: null, color: "#fff", backgroundColor: "#000", "-webkit-border-radius": "10px", "-moz-border-radius": "10px" }, iframeSrc: /^https/i.test(window.location.href || "") ? "javascript:false" : "about:blank", forceIframe: false, baseZ: 1000, centerX: true, centerY: true, allowBodyStretch: true, bindEvents: true, constrainTabKey: true, fadeIn: 200, fadeOut: 400, timeout: 0, showOverlay: true, focusInput: true, applyPlatformOpacityRules: true, onUnblock: null, quirksmodeOffsetHack: 4 }; var ie6 = $.browser.msie && /MSIE 6.0/.test(navigator.userAgent); var pageBlock = null; var pageBlockEls = []; function install(el, opts) { var full = (el == window); var msg = opts && opts.message !== undefined ? opts.message : undefined; opts = $.extend({}, $.blockUI.defaults, opts || {}); opts.overlayCSS = $.extend({}, $.blockUI.defaults.overlayCSS, opts.overlayCSS || {}); var css = $.extend({}, $.blockUI.defaults.css, opts.css || {}); msg = msg === undefined ? opts.message : msg; if (full && pageBlock) { remove(window, { fadeOut: 0 }) } if (msg && typeof msg != "string" && (msg.parentNode || msg.jquery)) { var node = msg.jquery ? msg[0] : msg; var data = {}; $(el).data("blockUI.history", data); data.el = node; data.parent = node.parentNode; data.display = node.style.display; data.position = node.style.position; if (data.parent) { data.parent.removeChild(node) } } var z = opts.baseZ; var lyr1 = ($.browser.msie || opts.forceIframe) ? $('<iframe class="blockUI" style="z-index:' + (z++) + ';display:none;border:none;margin:0;padding:0;position:absolute;width:100%;height:100%;top:0;left:0" src="' + opts.iframeSrc + '"></iframe>') : $('<div class="blockUI" style="display:none"></div>'); var lyr2 = $('<div class="blockUI blockOverlay" style="z-index:' + (z++) + ';display:none;cursor:wait;border:none;margin:0;padding:0;width:100%;height:100%;top:0;left:0"></div>'); var lyr3 = full ? $('<div class="blockUI blockMsg blockPage" style="z-index:' + z + ';display:none;position:fixed"></div>') : $('<div class="blockUI blockMsg blockElement" style="z-index:' + z + ';display:none;position:absolute"></div>'); if (msg) { lyr3.css(css) } if (!opts.applyPlatformOpacityRules || !($.browser.mozilla && /Linux/.test(navigator.platform))) { lyr2.css(opts.overlayCSS) } lyr2.css("position", full ? "fixed" : "absolute"); if ($.browser.msie || opts.forceIframe) { lyr1.css("opacity", "0.0") } $([lyr1[0], lyr2[0], lyr3[0]]).appendTo(full ? "body" : el); var expr = $.browser.msie && ($.browser.version < 8 || !$.boxModel) && (!$.boxModel || $("object,embed", full ? null : el).length > 0); if (ie6 || (expr && setExpr)) { if (full && opts.allowBodyStretch && $.boxModel) { $("html,body").css("height", "100%") } if ((ie6 || !$.boxModel) && !full) { var t = sz(el, "borderTopWidth"), l = sz(el, "borderLeftWidth"); var fixT = t ? "(0 - " + t + ")" : 0; var fixL = l ? "(0 - " + l + ")" : 0 } $.each([lyr1, lyr2, lyr3], function(i, o) { var s = o[0].style; s.position = "absolute"; if (i < 2) { full ? s.setExpression("height", "Math.max(document.body.scrollHeight, document.body.offsetHeight) - (jQuery.boxModel?0:" + opts.quirksmodeOffsetHack + ') + "px"') : s.setExpression("height", 'this.parentNode.offsetHeight + "px"'); full ? s.setExpression("width", 'jQuery.boxModel && document.documentElement.clientWidth || document.body.clientWidth + "px"') : s.setExpression("width", 'this.parentNode.offsetWidth + "px"'); if (fixL) { s.setExpression("left", fixL) } if (fixT) { s.setExpression("top", fixT) } } else { if (opts.centerY) { if (full) { s.setExpression("top", '(document.documentElement.clientHeight || document.body.clientHeight) / 2 - (this.offsetHeight / 2) + (blah = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + "px"') } s.marginTop = 0 } else { if (!opts.centerY && full) { var top = (opts.css && opts.css.top) ? parseInt(opts.css.top) : 0; var expression = "((document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + " + top + ') + "px"'; s.setExpression("top", expression) } } } }) } if (msg) { lyr3.append(msg); if (msg.jquery || msg.nodeType) { $(msg).show() } } if (($.browser.msie || opts.forceIframe) && opts.showOverlay) { lyr1.show() } if (opts.fadeIn) { if (opts.showOverlay) { lyr2._fadeIn(opts.fadeIn) } if (msg) { lyr3.fadeIn(opts.fadeIn) } } else { if (opts.showOverlay) { lyr2.show() } if (msg) { lyr3.show() } } bind(1, el, opts); if (full) { pageBlock = lyr3[0]; pageBlockEls = $(":input:enabled:visible", pageBlock); if (opts.focusInput) { setTimeout(focus, 20) } } else { center(lyr3[0], opts.centerX, opts.centerY) } if (opts.timeout) { var to = setTimeout(function() { full ? $.unblockUI(opts) : $(el).unblock(opts) }, opts.timeout); $(el).data("blockUI.timeout", to) } } function remove(el, opts) { var full = el == window; var $el = $(el); var data = $el.data("blockUI.history"); var to = $el.data("blockUI.timeout"); if (to) { clearTimeout(to); $el.removeData("blockUI.timeout") } opts = $.extend({}, $.blockUI.defaults, opts || {}); bind(0, el, opts); var els = full ? $("body").children().filter(".blockUI") : $(".blockUI", el); if (full) { pageBlock = pageBlockEls = null } if (opts.fadeOut) { els.fadeOut(opts.fadeOut); setTimeout(function() { reset(els, data, opts, el) }, opts.fadeOut) } else { reset(els, data, opts, el) } } function reset(els, data, opts, el) { els.each(function(i, o) { if (this.parentNode) { this.parentNode.removeChild(this) } }); if (data && data.el) { data.el.style.display = data.display; data.el.style.position = data.position; if (data.parent) { data.parent.appendChild(data.el) } $(data.el).removeData("blockUI.history") } if (typeof opts.onUnblock == "function") { opts.onUnblock(el, opts) } } function bind(b, el, opts) { var full = el == window, $el = $(el); if (!b && (full && !pageBlock || !full && !$el.data("blockUI.isBlocked"))) { return } if (!full) { $el.data("blockUI.isBlocked", b) } if (!opts.bindEvents || (b && !opts.showOverlay)) { return } var events = "mousedown mouseup keydown keypress"; b ? $(document).bind(events, opts, handler) : $(document).unbind(events, handler) } function handler(e) { if (e.keyCode && e.keyCode == 9) { if (pageBlock && e.data.constrainTabKey) { var els = pageBlockEls; var fwd = !e.shiftKey && e.target == els[els.length - 1]; var back = e.shiftKey && e.target == els[0]; if (fwd || back) { setTimeout(function() { focus(back) }, 10); return false } } } if ($(e.target).parents("div.blockMsg").length > 0) { return true } return $(e.target).parents().children().filter("div.blockUI").length == 0 } function focus(back) { if (!pageBlockEls) { return } var e = pageBlockEls[back === true ? pageBlockEls.length - 1 : 0]; if (e) { e.focus() } } function center(el, x, y) { var p = el.parentNode, s = el.style; var l = ((p.offsetWidth - el.offsetWidth) / 2) - sz(p, "borderLeftWidth"); var t = ((p.offsetHeight - el.offsetHeight) / 2) - sz(p, "borderTopWidth"); if (x) { s.left = l > 0 ? (l + "px") : "0" } if (y) { s.top = t > 0 ? (t + "px") : "0" } } function sz(el, p) { return parseInt($.css(el, p)) || 0 } })(jQuery);

/*******************************************************
jqModal
*******************************************************/
(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);

/*******************************************************
ToolTip
*******************************************************/
(function($) {
    // the tooltip element
    var helper = {},
    // the current tooltipped element
		current,
    // the title of the current element, used for restoring
		title,
    // timeout id for delayed tooltips
		tID,
    // IE 5.5 or 6
		IE = $.browser.msie && /MSIE\s(5\.5|6\.)/.test(navigator.userAgent),
    // flag for mouse tracking
		track = false;

    $.tooltip = {
        blocked: false,
        defaults: {
            delay: 200,
            fade: false,
            showURL: true,
            extraClass: "",
            top: 15,
            left: 15,
            id: "tooltip"
        },
        block: function() {
            $.tooltip.blocked = !$.tooltip.blocked;
        }
    };

    $.fn.extend({
        tooltip: function(settings) {
            settings = $.extend({}, $.tooltip.defaults, settings);
            createHelper(settings);
            return this.each(function() {
                $.data(this, "tooltip", settings);
                this.tOpacity = helper.parent.css("opacity");
                // copy tooltip into its own expando and remove the title
                this.tooltipText = this.title;
                $(this).removeAttr("title");
                // also remove alt attribute to prevent default tooltip in IE
                this.alt = "";
            })
				.mouseover(save)
				.mouseout(hide)
				.click(hide);
        },
        fixPNG: IE ? function() {
            return this.each(function() {
                var image = $(this).css('backgroundImage');
                if (image.match(/^url\(["']?(.*\.png)["']?\)$/i)) {
                    image = RegExp.$1;
                    $(this).css({
                        'backgroundImage': 'none',
                        'filter': "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=crop, src='" + image + "')"
                    }).each(function() {
                        var position = $(this).css('position');
                        if (position != 'absolute' && position != 'relative')
                            $(this).css('position', 'relative');
                    });
                }
            });
        } : function() { return this; },
        unfixPNG: IE ? function() {
            return this.each(function() {
                $(this).css({ 'filter': '', backgroundImage: '' });
            });
        } : function() { return this; },
        hideWhenEmpty: function() {
            return this.each(function() {
                $(this)[$(this).html() ? "show" : "hide"]();
            });
        },
        url: function() {
            return this.attr('href') || this.attr('src');
        }
    });

    function createHelper(settings) {
        // there can be only one tooltip helper
        if (helper.parent)
            return;
        // create the helper, h3 for title, div for url
        helper.parent = $('<div id="' + settings.id + '"><h3></h3><div class="body"></div><div class="url"></div></div>')
        // add to document
			.appendTo(document.body)
        // hide it at first
			.hide();

        // apply bgiframe if available
        if ($.fn.bgiframe)
            helper.parent.bgiframe();

        // save references to title and url elements
        helper.title = $('h3', helper.parent);
        helper.body = $('div.body', helper.parent);
        helper.url = $('div.url', helper.parent);
    }

    function settings(element) {
        return $.data(element, "tooltip");
    }

    // main event handler to start showing tooltips
    function handle(event) {
        // show helper, either with timeout or on instant
        if (settings(this).delay)
            tID = setTimeout(show, settings(this).delay);
        else
            show();

        // if selected, update the helper position when the mouse moves
        track = !!settings(this).track;
        $(document.body).bind('mousemove', update);

        // update at least once
        update(event);
    }

    // save elements title before the tooltip is displayed
    function save() {
        // if this is the current source, or it has no title (occurs with click event), stop
        if ($.tooltip.blocked || this == current || (!this.tooltipText && !settings(this).bodyHandler))
            return;

        // save current
        current = this;
        title = this.tooltipText;

        if (settings(this).bodyHandler) {
            helper.title.hide();
            var bodyContent = settings(this).bodyHandler.call(this);
            if (bodyContent.nodeType || bodyContent.jquery) {
                helper.body.empty().append(bodyContent)
            } else {
                helper.body.html(bodyContent);
            }
            helper.body.show();
        } else if (settings(this).showBody) {
            var parts = title.split(settings(this).showBody);
            helper.title.html(parts.shift()).show();
            helper.body.empty();
            for (var i = 0, part; (part = parts[i]); i++) {
                if (i > 0)
                    helper.body.append("<br/>");
                helper.body.append(part);
            }
            helper.body.hideWhenEmpty();
        } else {
            helper.title.html(title).show();
            helper.body.hide();
        }

        // if element has href or src, add and show it, otherwise hide it
        if (settings(this).showURL && $(this).url())
            helper.url.html($(this).url().replace('http://', '')).show();
        else
            helper.url.hide();

        // add an optional class for this tip
        helper.parent.addClass(settings(this).extraClass);

        // fix PNG background for IE
        if (settings(this).fixPNG)
            helper.parent.fixPNG();

        handle.apply(this, arguments);
    }

    // delete timeout and show helper
    function show() {
        tID = null;
        if ((!IE || !$.fn.bgiframe) && settings(current).fade) {
            if (helper.parent.is(":animated"))
                helper.parent.stop().show().fadeTo(settings(current).fade, current.tOpacity);
            else
                helper.parent.is(':visible') ? helper.parent.fadeTo(settings(current).fade, current.tOpacity) : helper.parent.fadeIn(settings(current).fade);
        } else {
            helper.parent.show();
        }
        update();
    }

    /**
    * callback for mousemove
    * updates the helper position
    * removes itself when no current element
    */
    function update(event) {
        if ($.tooltip.blocked)
            return;

        if (event && event.target.tagName == "OPTION") {
            return;
        }

        // stop updating when tracking is disabled and the tooltip is visible
        if (!track && helper.parent.is(":visible")) {
            $(document.body).unbind('mousemove', update)
        }

        // if no current element is available, remove this listener
        if (current == null) {
            $(document.body).unbind('mousemove', update);
            return;
        }

        // remove position helper classes
        helper.parent.removeClass("viewport-right").removeClass("viewport-bottom");

        var left = helper.parent[0].offsetLeft;
        var top = helper.parent[0].offsetTop;
        if (event) {
            // position the helper 15 pixel to bottom right, starting from mouse position
            left = event.pageX + settings(current).left;
            top = event.pageY + settings(current).top;
            var right = 'auto';
            if (settings(current).positionLeft) {
                right = $(window).width() - left;
                left = 'auto';
            }
            helper.parent.css({
                left: left,
                right: right,
                top: top
            });
        }

        var v = viewport(),
			h = helper.parent[0];
        // check horizontal position
        if (v.x + v.cx < h.offsetLeft + h.offsetWidth) {
            left -= h.offsetWidth + 20 + settings(current).left;
            helper.parent.css({ left: left + 'px' }).addClass("viewport-right");
        }
        // check vertical position
        if (v.y + v.cy < h.offsetTop + h.offsetHeight) {
            top -= h.offsetHeight + 20 + settings(current).top;
            helper.parent.css({ top: top + 'px' }).addClass("viewport-bottom");
        }
    }

    function viewport() {
        return {
            x: $(window).scrollLeft(),
            y: $(window).scrollTop(),
            cx: $(window).width(),
            cy: $(window).height()
        };
    }

    // hide helper and restore added classes and the title
    function hide(event) {
        if ($.tooltip.blocked)
            return;
        // clear timeout if possible
        if (tID)
            clearTimeout(tID);
        // no more current element
        current = null;

        var tsettings = settings(this);
        function complete() {
            helper.parent.removeClass(tsettings.extraClass).hide().css("opacity", "");
        }
        if ((!IE || !$.fn.bgiframe) && tsettings.fade) {
            if (helper.parent.is(':animated'))
                helper.parent.stop().fadeTo(tsettings.fade, 0, complete);
            else
                helper.parent.stop().fadeOut(tsettings.fade, complete);
        } else
            complete();

        if (settings(this).fixPNG)
            helper.parent.unfixPNG();
    }

})(jQuery);

/*******************************************************
WaterMark
*******************************************************/
(function($) { var map = new Array(); $.watermarkinput = { ShowAll: function() { for (var i = 0; i < map.length; i++) { if (map[i].obj.val() == "") { map[i].obj.val(map[i].text); map[i].obj.css("color", map[i].WatermarkColor) } else { map[i].obj.css("color", map[i].DefaultColor) } } }, HideAll: function() { for (var i = 0; i < map.length; i++) { if (map[i].obj.val() == map[i].text) { map[i].obj.val("") } } } }; $.fn.watermarkinput = function(text, color) { if (!color) { color = "#aaa" } return this.each(function() { var input = $(this); var defaultColor = input.css("color"); map[map.length] = { text: text, obj: input, DefaultColor: defaultColor, WatermarkColor: color }; function clearMessage() { if (input.val() == text) { input.val("") } input.css("color", defaultColor) } function insertMessage() { if (input.val().length == 0 || input.val() == text) { input.val(text); input.css("color", color) } else { input.css("color", defaultColor) } } input.focus(clearMessage); input.blur(insertMessage); input.change(insertMessage); insertMessage() }) } })(jQuery); $(document).ready(function() { $("input[watermark]").each(function() { $(this).watermarkinput($(this).attr("watermark")) }) });


