/**
 * @author Kirowski Zrt.
 * @Copyright 2010 Kirowski Zrt.
 */

(function($){

    // Extend the jQuery itself
    jQuery.extend({
        scWidth: function(){
            var scw = 0, $iDiv = jQuery('<div style="height:200px"></div>'), $oDiv = jQuery('<div style="position:absolute;visibility:hidden;overflow:scroll;width:100px;height:100px"></div>').append($iDiv).appendTo('body');
            scw = $oDiv.outerWidth() - $iDiv.innerWidth();
            $oDiv.remove();
            return scw;
        },
        stringifyJSON: function (obj) {
            var t = typeof (obj);
            if (t != "object" || obj === null) {
                // simple data type
                if (t == "string") obj = '"'+obj+'"';
                return String(obj);
            }
            else {
                // recurse array or object
                var n, v, json = [], arr = (obj && obj.constructor == Array);
                for (n in obj) {
                    v = obj[n]; t = typeof(v);
                    if (t == "string") v = '"'+v+'"';
                    else if (t == "object" && v !== null) v = jQuery.stringifyJSON(v);
                    json.push((arr ? "" : '"' + n + '":') + String(v));
                }
                return (arr ? "[" : "{") + String(json) + (arr ? "]" : "}");
            }
        }
    });
    
    // Extend jQuery element method
    $.fn.extend({
        check: function(){
            return jQuery(this).attr('checked',true);
        },
        uncheck: function(){
            return jQuery(this).attr('checked',false);
        },
        select: function(){
            return jQuery(this).attr('selected','selected');
        },
        deselect: function(){
            return jQuery(this).removeAttr('selected');
        },
        disable: function(){
            return jQuery(this).attr('disabled','disabled').removeAttr('enabled');
        },
        enable: function(){
            return jQuery(this).attr('enabled','enabled').removeAttr('disabled');
        },
        clearInputs: function(a){
            return $(this).each(function(){
                var $t = $(this),
                d = a || $t.val() || $t.text();
                if(!$t.val() || $t.val() == '')$t.val(d);
                $t.focus(function(){
                    var b = $(this);
                    if(b.val() == d)b.val("");
                    b.removeClass("error");
                }).blur(function(){
                    var b = $(this);
                    if (b.val() == d || b.val() == "")b.val(d);
                    b.removeClass("error");
                }).parents('form').submit(function(){
                    if ($t.val() == d) {
                        $t.val('');
                    }
                });
            });
        },
        equalHeights: function(){
            var tallest = jQuery(this).eq(0).addClass('tallest').height();
            return jQuery(this).each(function(i){
                var $t = jQuery(this), h = $t.height();
                if (h > tallest){
                    tallest = h;
                    $t.addClass('tallest').siblings().removeClass('tallest');
                }
            }).css('height', tallest);
        },
        replaceSubmitBtn: function(myText, wrapWithSpan){
            var $sbmts = $(this).filter(function(){
                return !$(this).hasClass('replaced');
            });
            if ($sbmts.length) {
                $sbmts.each(function(){
                    var $sbmt = $(this).wrap('<span class="replacedSubmitContainer" style="position:relative; float:left;"></span>');
                    var $btn = $('<a href="#" class="arrow replacedSubmit"></a>').addClass($sbmt.attr('class')).css({
                        position: 'relative',
                        zIndex: 1
                    }).append($('<strong />').html(myText || $sbmt.val() || $sbmt.text()));
                    if (wrapWithSpan) {
                        $btn.find('strong').wrap('<span></span>');
                    };
                    
                    $sbmt.after($btn).css({
                        opacity: 0,
                        position: 'absolute',
                        zIndex: 2,
                        width: '100%',
                        height: '100%',
                        top: 0,
                        left: 0,
                        border: 0,
                        padding: 0,
                        margin: 0,
                        overflow: 'visible',
                        cursor: 'pointer'
                    }).addClass('replaced').hover(function(){
                        $btn.addClass('hovered');
                    }, function(){
                        $btn.removeClass('hovered');
                    }).click(function(e){
                    	$(this).parents('form').submit();
                    });                    
                    if ($(this).hasClass('withCancel'))$btn.after('<a class="cancel" href=\"#\"><strong>Mégsem</strong></a>');
                })
            }
        }
    });
})(jQuery);
