(function($) {
    var l = {
        preloadImg: true
    };
    var m = false;
    var n = function(a) {
        a = a.replace(/^url\((.*)\)/, '$1').replace(/^\"(.*)\"$/, '$1');
        var b = new Image();
        b.src = a.replace(/\.([a-zA-Z]*)$/, '-hover.$1');
        var c = new Image();
        c.src = a.replace(/\.([a-zA-Z]*)$/, '-focus.$1')
    };
    var o = function(a) {
        var b = $(a.get(0).form);
        var c = a.next();
        if (!c.is('label')) {
            c = a.prev();
            if (c.is('label')) {
                var d = a.attr('id');
                if (d) {
                    c = b.find('label[for="' + d + '"]')
                }
            }
        }
        if (c.is('label')) {
            return c.css('cursor', 'pointer')
        }
        return false
    };
    var p = function(b) {
        var c = $('.jqTransformSelectWrapper ul:visible');
        c.each(function() {
            var a = $(this).parents(".jqTransformSelectWrapper:first").find("select").get(0);
            if (! (b && a.oLabel && a.oLabel.get(0) == b.get(0))) {
                $(this).hide()
            }
        })
    };
    var q = function(a) {
        if ($(a.target).parents('.jqTransformSelectWrapper').length === 0) {
            p($(a.target))
        }
    };
    var r = function() {
        $(document).mousedown(q)
    };
    var s = function(f) {
        var a;
        $('.jqTransformSelectWrapper select', f).each(function() {
            a = (this.selectedIndex < 0) ? 0: this.selectedIndex;
            $('ul', $(this).parent()).each(function() {
                $('a:eq(' + a + ')', 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() {
			if ($(this).hasClass("next")) {
				$(this).replaceWith('<button id="' + this.id + '" name="' + this.name + '" type="' + this.type + '" class="' + this.className + '"><span>' + $(this).attr('value') + '</span>')
			} else {
            	$(this).replaceWith('<button id="' + this.id + '" name="' + this.name + '" type="' + this.type + '" class="' + this.className + ' jqTransformButton"><span><span>' + $(this).attr('value') + '</span></span>')
			}
        })
    };
    $.fn.jqTransLinkButton = function() {
        return this.each(function() {
			$(this).replaceWith('<a id="' + this.id + '" type="' + this.type + '" class="' + this.className + '"><span>' + $(this).attr('value') + '</span>')
        })
    };
    $.fn.jqTransInputText = function() {
        return this.each(function() {
            var a = $.browser.safari;
            var b = $(this);
            if (b.hasClass('jqtranformdone') || !b.is('input')) {
                return
            }
            b.addClass('jqtranformdone');
            var c = o($(this));
            c && c.bind('click',
            function() {
                b.focus()
            });
            var d = b.width();
            if (b.attr('size')) {
                d = b.attr('size') * 10;
                b.css('width', d)
            }
            b.addClass("jqTransformInput").wrap('<div class="jqTransformInputWrapper"><div class="jqTransformInputInner"><div></div></div></div>');
            var e = b.parent().parent().parent();
            e.css("width", d + 10);
            b.focus(function() {
                e.addClass("jqTransformInputWrapper_focus")
            }).blur(function() {
                e.removeClass("jqTransformInputWrapper_focus")
            }).hover(function() {
                e.addClass("jqTransformInputWrapper_hover")
            },
            function() {
                e.removeClass("jqTransformInputWrapper_hover")
            });
            a && e.addClass('jqTransformSafari');
            a && b.css('width', e.width() + 16);
            this.wrapper = e
        })
    };
    $.fn.jqTransCheckBox = function() {
        return this.each(function() {
            var b = $(this);
            var c = this;
            if (b.hasClass('jqTransformHidden')) {
                return
            }
            var d = o(b);
            b.addClass('jqTransformHidden').wrap('<span class="jqTransformCheckboxWrapper"></span>');
            var e = b.parent();
            var f = $('<a href="#" class="jqTransformCheckbox"></a>');
            e.prepend(f);
            f.click(function() {
                var a = $(this);
                if (c.checked === true) {
                    c.checked = false;
                    a.removeClass('jqTransformChecked')
                } else {
                    c.checked = true;
                    a.addClass('jqTransformChecked')
                }
                c.onchange && c.onchange();
                return false
            });
            d && d.click(function() {
                f.trigger('click')
            });
            this.checked && f.addClass('jqTransformChecked')
        })
    };
    $.fn.jqTransRadio = function() {
        return this.each(function() {
            var b = $(this);
            var c = this;
            if (b.hasClass('jqTransformHidden')) {
                return
            }
            oLabel = o(b);
            b.addClass('jqTransformHidden').wrap('<span class="jqTransformRadioWrapper"></span>');
            var d = b.parent();
            var e = $('<a href="#" class="jqTransformRadio" rel="' + this.name + '"></a>');
            d.prepend(e);
            e.each(function() {
                this.radioElem = c;
                $(this).click(function() {
                    var a = $(this).addClass('jqTransformChecked');
                    c.checked = true;
                    $('a.jqTransformRadio[rel="' + a.attr('rel') + '"]', c.form).not(a).each(function() {
                        $(this).removeClass('jqTransformChecked');
                        this.radioElem.checked = false
                    });
                    c.onchange && c.onchange();
                    return false
                })
            });
            oLabel && oLabel.click(function() {
                e.trigger('click')
            });
            c.checked && e.addClass('jqTransformChecked')
        })
    };
    $.fn.jqTransTextarea = function() {
        return this.each(function() {
            var a = $(this);
            if (a.hasClass('jqtransformdone')) {
                return
            }
            a.addClass('jqtransformdone');
            oLabel = o(a);
            oLabel && oLabel.click(function() {
                a.focus()
            });
            var b = '<table cellspacing="0" cellpadding="0" border="0" class="jqTransformTextarea">';
            b += '<tr><td id="jqTransformTextarea-tl">&nbsp;</td><td id="jqTransformTextarea-tm">&nbsp;</td><td id="jqTransformTextarea-tr">&nbsp;</td></tr>';
            b += '<tr><td id="jqTransformTextarea-ml">&nbsp;</td><td id="jqTransformTextarea-mm"><div></div></td><td id="jqTransformTextarea-mr">&nbsp;</td></tr>';
            b += '<tr><td id="jqTransformTextarea-bl">&nbsp;</td><td id="jqTransformTextarea-bm">&nbsp;</td><td id="jqTransformTextarea-br">&nbsp;</td></tr>';
            b += '</table>';
            var c = $(b).insertAfter(a).hover(function() { ! c.hasClass('jqTransformTextarea-focus') && c.addClass('jqTransformTextarea-hover')
            },
            function() {
                c.removeClass('jqTransformTextarea-hover')
            });
            a.focus(function() {
                c.removeClass('jqTransformTextarea-hover').addClass('jqTransformTextarea-focus')
            }).blur(function() {
                c.removeClass('jqTransformTextarea-focus')
            }).appendTo($('#jqTransformTextarea-mm div', c));
            this.oTable = c;
            if ($.browser.safari) {
                $('#jqTransformTextarea-mm', c).addClass('jqTransformSafariTextarea').find('div').css('height', a.height()).css('width', a.width())
            }
        })
    };
    $.fn.jqTransSelect = function() {
        return this.each(function(b) {
            var c = $(this);
            if (c.hasClass('jqTransformHidden')) {
                return
            }
            var d = o(c);
            c.addClass('jqTransformHidden').wrap('<div class="jqTransformSelectWrapper"></div>');
            var e = c.parent().css({
                zIndex: 10 - b
            });
            e.prepend('<div><span></span><a href="#" class="jqTransformSelectOpen"></a></div><ul></ul>');
            var f = $('ul', e).css('width', c.width());
            $('option', this).each(function(i) {
                var a = $('<li><a href="#" index="' + i + '">' + $(this).html() + '</a></li>');
                f.append(a)
            });
            f.hide().find('a').click(function() {
                $('a.selected', e).removeClass('selected');
                $(this).addClass('selected');
                if (c[0].selectedIndex != $(this).attr('index') && c[0].onchange) {
                    c[0].selectedIndex = $(this).attr('index');
                    c[0].onchange()
                }
                c[0].selectedIndex = $(this).attr('index');
                $('span:eq(0)', e).html($(this).html());
                f.hide();
                return false
            });
            $('a:eq(' + this.selectedIndex + ')', f).click();
            $('span:first', e).click(function() {
                $("a.jqTransformSelectOpen", e).trigger('click')
            });
            d && d.click(function() {
                $("a.jqTransformSelectOpen", e).trigger('click')
            });
            this.oLabel = d;
            var g = $('a.jqTransformSelectOpen', e).click(function() {
                if (f.css('display') == 'none') {
                    p()
                }
                f.slideToggle('normal',
                function() {
                    var a = ($('a.selected', f).offset().top - f.offset().top);
                    f.animate({
                        scrollTop: a
                    })
                });
                return false
            });
            var h = c.width();
            var j = $('span:first', e);
            var k = (h > j.innerWidth()) ? h + g.outerWidth() : e.width();
            e.css('width', k);
            f.css('width', k - 2);
            j.css('width', h)
        })
    };
    $.fn.jqTransform = function(h) {
        var i = this;
        var j = $.browser.safari;
        var k = $.extend({},
        l, h);
        return this.each(function() {
            var b = $(this);
            if (b.hasClass('jqtransformdone')) {
                return
            }
            b.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) {
                r()
            }
            b.bind('reset',
            function() {
                var a = function() {
                    s(this)
                };
                window.setTimeout(a, 10)
            });
            if (k.preloadImg && !m) {
                m = true;
                var c = $('input:text:first', b);
                if (c.length > 0) {
                    var d = c.get(0).wrapper.css('background-image');
                    n(d);
                    var e = $('div.jqTransformInputInner', $(c.get(0).wrapper)).css('background-image');
                    n(e)
                }
                var f = $('textarea', b);
                if (f.length > 0) {
                    var g = f.get(0).oTable;
                    $('td', g).each(function() {
                        var a = $(this).css('background-image');
                        n(a)
                    })
                }
            }
        })
    }
})(jQuery);