﻿/*****************************************************************************
* $.plugin - jQuery Plugin for on-demand loading of scripts and styles
*
* Documentation : http://nicolas.rudas.info/jQuery/getPlugin/
* Issues		 : http://plugins.jquery.com/project/getPlugin/
*
* Version: 081002 - 02 Oct 2008
*
*****************************************************************************/
; $(function() { $.plugins = $.plugins || {}; $.plugins.cache = window.sessionStorage || {}; $.plugins.settings = { cache: true, ajax: { cache: true }, context: $(document), target: $('head', this.context), init: function() { }, preLoad: function() { }, postLoad: function() { } }; var e = $.plugins.settings, cache = $.plugins.cache; Plugin = function(a, b) { var c = this; this.name = a; for (var i in b) { c[i] = b[i] }; this.context = this.context || b.context; this.target = this.target || b.target; this.loaded = {}; this.queue = []; this.init.apply(this); return this }; Plugin.prototype.getFile = function(c) { if (!c || typeof c != 'string') { throw new Error('$.plugin.getFile(url) - url {String} must be specified'); } var d = this, extension = c.split('.')[c.split('.').length - 1], fileId = c.replace(/\W/gi, ''), cached = cache[c], caching = (e.cache === true || e.cache == 'true'); if (extension != 'css' && extension != 'js') { throw new Error('$.plugin.getFile(url) - Invalid extension:' + extension + '\n\t' + c); return this; } if (caching && this.loaded[c]) { return this; } this.beforeGet(c); $('[data-file-id="' + fileId + '"]').remove(); if (caching && cached && cached != 'undefined') { if (extension == 'css') { this.target.append('<style type="text\/css" rel="stylesheet" data-file-id="' + fileId + '">' + cached + '<\/style>'); } else if (extension == 'js') { this.target.append('<script type="text\/javascript" data-file-id="' + fileId + '">' + cached + '<\/script>'); } setTimeout(function() { d.afterGet(c); }, 0); } else { if (extension == 'css') { (function() { var b = $.extend({ url: c }, e.ajax), onSuccess = b.success || function() { }; b.success = function(a) { onSuccess.apply(this, arguments); d.loaded[c] = true; cache[c] = a; d.target.append('<style type="text\/css" rel="stylesheet" data-file-id="' + fileId + '">' + a + '<\/style>'); d.afterGet(c); }; $.ajax(b); })(); } else if (extension == 'js') { (function() { var b = $.extend({ dataType: "script", url: c }, e.ajax), onSuccess = b.success || function() { }; b.success = function() { onSuccess.apply(this, arguments); var a = (typeof arguments[0] == 'string') ? arguments[0] : null; cache[c] = a; d.loaded[c] = true; d.afterGet(c); }; $.ajax(b); })(); } } return this; }; Plugin.prototype.beforeGet = function(a) { this.queue.push(a); e.preLoad.call(this, a); return this; }; Plugin.prototype.afterGet = function(a) { var b = this, callback = this.tmp_callback, index = $.inArray(a, this.queue); if (index == -1) { throw new Error('$.plugin.afterGet(url) - Ignoring postLoad for file that should not be in queue:\n ' + a); return this; } this.queue.splice(index, 1); if (this.queue.length == 0 && callback) { setTimeout(function() { callback.apply(b); delete b.tmp_callback; }, 0); } e.postLoad.call(this, a); return this; }; Plugin.prototype.get = function() { var b = this, files = (typeof this.files == 'string') ? [this.files] : this.files, callback = arguments[0] || this.callback; this.tmp_callback = callback; if (this.isNeeded() !== true) { return this; } var c = function(a) { b.getFile(a); }; for (var i = 0; i < files.length; i++) { (function() { var a = files[i]; if ($.browser.opera) { setTimeout(function() { c(a); }, 500); } else { c(a); } })(); } return this; }; Plugin.prototype.isNeeded = function() { var a = this, selectors = (typeof this.selectors == 'string') ? [this.selectors] : this.selectors, isNeeded; for (var i = 0; i < selectors.length; i++) { var b = selectors[i]; if ($(b, a.context).length > 0) { isNeeded = true; break; } }; return isNeeded || this; }; $.extend($, { plugin: function(a, b) { var c = $.plugin; if (arguments.length == 0) { for (var i in $.plugins) { if (i == 'settings' || i == 'cache') { continue; } $.plugins[i].get(); }; return c; } else if (typeof a != 'string') { throw new Error('$.plugin(name,[settings||callback])\n\t\t@param name\t\t{String}\n\t\t@param settings\t{Object}\n\t\t@param callback\t{Function}'); return c; } if (typeof b == 'object') { $.plugins[a] = new Plugin(a, $.extend(e, b)); } else { var d = $.plugins[a]; if (typeof d != 'object') { throw new Error('$.plugin: ' + a + ' is not specified'); return c; } if (typeof b == 'function') { d.get(b) } else if (!b) { return d } } return c }, getPlugin: function() { return $.plugin.apply(this, arguments) } }) });

/*jqTransform*/
(function($) {
    var defaultOptions = { preloadImg: true }; var jqTransformImgPreloaded = false; var jqTransformPreloadHoverFocusImg = function(strImgUrl) { strImgUrl = strImgUrl.replace(/^url\((.*)\)/, '$1').replace(/^\"(.*)\"$/, '$1'); var imgHover = new Image(); imgHover.src = strImgUrl.replace(/\.([a-zA-Z]*)$/, '-hover.$1'); var imgFocus = new Image(); imgFocus.src = strImgUrl.replace(/\.([a-zA-Z]*)$/, '-focus.$1'); }; var jqTransformGetLabel = function(objfield) {
        var selfForm = $(objfield.get(0).form); var oLabel = objfield.next(); if (!oLabel.is('label')) { oLabel = objfield.prev(); if (oLabel.is('label')) { var inputname = objfield.attr('id'); if (inputname) { oLabel = selfForm.find('label[for="' + inputname + '"]'); } } }
        if (oLabel.is('label')) { return oLabel.css('cursor', 'pointer'); }
        return false;
    }; var jqTransformHideSelect = function(oTarget) { var ulVisible = $('.jqTransformSelectWrapper ul:visible'); ulVisible.each(function() { var $select = $(this).parents(".jqTransformSelectWrapper:first").find("select").get(0); if (!(oTarget && $select.oLabel && $select.oLabel.get(0) == oTarget.get(0))) { $(this).hide(); } }); }; var jqTransformCheckExternalClick = function(event) { if ($(event.target).parents('.jqTransformSelectWrapper').length === 0) { jqTransformHideSelect($(event.target)); } }; var jqTransformAddDocumentListener = function() { $(document).mousedown(jqTransformCheckExternalClick); }; var jqTransformReset = function(f) { var sel; $('.jqTransformSelectWrapper select', f).each(function() { sel = (this.selectedIndex < 0) ? 0 : this.selectedIndex; $('ul', $(this).parent()).each(function() { $('a:eq(' + sel + ')', this).click(); }); }); $('a.jqTransformCheckbox, a.jqTransformRadio', f).removeClass('jqTransformChecked'); $('input:checkbox, input:radio', f).each(function() { if (this.checked) { $('a', $(this).parent()).addClass('jqTransformChecked'); } }); }; $.fn.jqTransInputButton = function() { return this.each(function() { $(this).replaceWith('<button id="' + this.id + '" name="' + this.name + '" type="' + this.type + '" value="' + $(this).attr('value') + '" class="' + this.className + ' jqTransformButton"><span><span>' + $(this).attr('value') + '</span></span>'); }); }; $.fn.jqTransInputText = function() {
        return this.each(function() {
            var safari = $.browser.safari; var $input = $(this); if ($input.hasClass('jqtranformdone') || !$input.is('input')) { return; }
            $input.addClass('jqtranformdone'); var oLabel = jqTransformGetLabel($(this)); oLabel && oLabel.bind('click', function() { $input.focus(); }); var inputSize = $input.width(); if ($input.attr('size')) { inputSize = $input.attr('size') * 10; $input.css('width', inputSize); }
            $input.addClass("jqTransformInput").wrap('<div class="jqTransformInputWrapper"><div class="jqTransformInputInner"><div></div></div></div>'); var $wrapper = $input.parent().parent().parent(); $wrapper.css("width", inputSize + 10); $input.focus(function() { $wrapper.addClass("jqTransformInputWrapper_focus"); }).blur(function() { $wrapper.removeClass("jqTransformInputWrapper_focus"); }).hover(function() { $wrapper.addClass("jqTransformInputWrapper_hover"); }, function() { $wrapper.removeClass("jqTransformInputWrapper_hover"); }); safari && $wrapper.addClass('jqTransformSafari'); safari && $input.css('width', $wrapper.width() + 16); this.wrapper = $wrapper;
        });
    }; $.fn.jqTransCheckBox = function() {
        return this.each(function() {
            var $input = $(this); var inputSelf = this; if ($input.hasClass('jqTransformHidden')) { return; }
            var oLabel = jqTransformGetLabel($input); $input.addClass('jqTransformHidden').wrap('<span class="jqTransformCheckboxWrapper"></span>'); var $wrapper = $input.parent(); var aLink = $('<a href="#" class="jqTransformCheckbox"></a>'); $wrapper.prepend(aLink); aLink.click(function() {
                var $a = $(this); if (inputSelf.checked === true) { inputSelf.checked = false; $a.removeClass('jqTransformChecked'); }
                else { inputSelf.checked = true; $a.addClass('jqTransformChecked'); }
                inputSelf.onchange && inputSelf.onchange(); return false;
            }); oLabel && oLabel.click(function() { aLink.trigger('click'); }); this.checked && aLink.addClass('jqTransformChecked');
        });
    }; $.fn.jqTransRadio = function() {
        return this.each(function() {
            var $input = $(this); var inputSelf = this; if ($input.hasClass('jqTransformHidden')) { return; }
            oLabel = jqTransformGetLabel($input); $input.addClass('jqTransformHidden').wrap('<span class="jqTransformRadioWrapper"></span>'); var $wrapper = $input.parent(); var aLink = $('<a href="#" class="jqTransformRadio" rel="' + this.name + '"></a>'); $wrapper.prepend(aLink); aLink.each(function() { this.radioElem = inputSelf; $(this).click(function() { var $a = $(this).addClass('jqTransformChecked'); inputSelf.checked = true; $('a.jqTransformRadio[rel="' + $a.attr('rel') + '"]', inputSelf.form).not($a).each(function() { $(this).removeClass('jqTransformChecked'); this.radioElem.checked = false; }); inputSelf.onchange && inputSelf.onchange(); return false; }); }); oLabel && oLabel.click(function() { aLink.trigger('click'); }); inputSelf.checked && aLink.addClass('jqTransformChecked');
        });
    }; $.fn.jqTransTextarea = function() {
        return this.each(function() {
            var textarea = $(this); if (textarea.hasClass('jqtransformdone')) { return; }
            textarea.addClass('jqtransformdone'); oLabel = jqTransformGetLabel(textarea); oLabel && oLabel.click(function() { textarea.focus(); }); var strTable = '<table cellspacing="0" cellpadding="0" border="0" class="jqTransformTextarea">'; strTable += '<tr><td id="jqTransformTextarea-tl"> </td><td id="jqTransformTextarea-tm"> </td><td id="jqTransformTextarea-tr"> </td></tr>'; strTable += '<tr><td id="jqTransformTextarea-ml"> </td><td id="jqTransformTextarea-mm"><div></div></td><td id="jqTransformTextarea-mr"> </td></tr>'; strTable += '<tr><td id="jqTransformTextarea-bl"> </td><td id="jqTransformTextarea-bm"> </td><td id="jqTransformTextarea-br"> </td></tr>'; strTable += '</table>'; var oTable = $(strTable).insertAfter(textarea).hover(function() { !oTable.hasClass('jqTransformTextarea-focus') && oTable.addClass('jqTransformTextarea-hover'); }, function() { oTable.removeClass('jqTransformTextarea-hover'); }); textarea.focus(function() { oTable.removeClass('jqTransformTextarea-hover').addClass('jqTransformTextarea-focus'); }).blur(function() { oTable.removeClass('jqTransformTextarea-focus'); }).appendTo($('#jqTransformTextarea-mm div', oTable)); this.oTable = oTable; if ($.browser.safari) { $('#jqTransformTextarea-mm', oTable).addClass('jqTransformSafariTextarea').find('div').css('height', textarea.height()).css('width', textarea.width()); } 
        });
    }; $.fn.jqTransSelect = function() {
        return this.each(function(index) {
            var $select = $(this); if ($select.hasClass('jqTransformHidden')) { return; }
            var oLabel = jqTransformGetLabel($select); $select.addClass('jqTransformHidden').wrap('<div class="jqTransformSelectWrapper"></div>'); var $wrapper = $select.parent().css({ zIndex: 10 - index }); $wrapper.prepend('<div><span></span><a href="#" class="jqTransformSelectOpen"></a></div><ul></ul>'); var $ul = $('ul', $wrapper).css('width', $select.width()); $('option', this).each(function(i) { var oLi = $('<li><a href="#" index="' + i + '">' + $(this).html() + '</a></li>'); $ul.append(oLi); }); $ul.hide().find('a').click(function() {
                $('a.selected', $wrapper).removeClass('selected'); $(this).addClass('selected'); if ($select[0].selectedIndex != $(this).attr('index') && $select[0].onchange) { $select[0].selectedIndex = $(this).attr('index'); $select[0].onchange(); }
                $select[0].selectedIndex = $(this).attr('index'); $('span:eq(0)', $wrapper).html($(this).html()); $ul.hide(); return false;
            }); $('a:eq(' + this.selectedIndex + ')', $ul).click(); $('span:first', $wrapper).click(function() { $("a.jqTransformSelectOpen", $wrapper).trigger('click'); }); oLabel && oLabel.click(function() { $("a.jqTransformSelectOpen", $wrapper).trigger('click'); }); this.oLabel = oLabel; var oLinkOpen = $('a.jqTransformSelectOpen', $wrapper).click(function() {
                if ($ul.css('display') == 'none') { jqTransformHideSelect(); }
                $ul.slideToggle('normal', function() { var offSet = ($('a.selected', $ul).offset().top - $ul.offset().top); $ul.animate({ scrollTop: offSet }); }); return false;
            }); var iSelectWidth = $select.width(); var oSpan = $('span:first', $wrapper); var newWidth = (iSelectWidth > oSpan.innerWidth()) ? iSelectWidth + oLinkOpen.outerWidth() : $wrapper.width(); $wrapper.css('width', newWidth); $ul.css('width', newWidth - 2); oSpan.css('width', iSelectWidth);
        });
    }; $.fn.jqTransform = function(options) {
        var self = this; var safari = $.browser.safari; var opt = $.extend({}, defaultOptions, options); return this.each(function() {
            var selfForm = $(this); if (selfForm.hasClass('jqtransformdone')) { return; }
            selfForm.addClass('jqtransformdone'); $('input:submit, input:reset, input[type="button"]', this).jqTransInputButton(); $('input:text, input:password', this).jqTransInputText(); $('input:checkbox', this).jqTransCheckBox(); $('input:radio', this).jqTransRadio(); $('textarea', this).jqTransTextarea(); if ($('select', this).jqTransSelect().length > 0) { jqTransformAddDocumentListener(); }
            selfForm.bind('reset', function() { var action = function() { jqTransformReset(this); }; window.setTimeout(action, 10); }); if (opt.preloadImg && !jqTransformImgPreloaded) {
                jqTransformImgPreloaded = true; var oInputText = $('input:text:first', selfForm); if (oInputText.length > 0) { var strWrapperImgUrl = oInputText.get(0).wrapper.css('background-image'); jqTransformPreloadHoverFocusImg(strWrapperImgUrl); var strInnerImgUrl = $('div.jqTransformInputInner', $(oInputText.get(0).wrapper)).css('background-image'); jqTransformPreloadHoverFocusImg(strInnerImgUrl); }
                var oTextarea = $('textarea', selfForm); if (oTextarea.length > 0) { var oTable = oTextarea.get(0).oTable; $('td', oTable).each(function() { var strImgBack = $(this).css('background-image'); jqTransformPreloadHoverFocusImg(strImgBack); }); } 
            } 
        });
    };
})(jQuery);