
jQuery.fn.defaulter = function() {
    return this.each(function() {
        var element = $(this);
        var defaultText = element.val();

        $(this).closest('form').submit(function() {
            if(element.val() == defaultText) {
               element.val('');
            }
        });

        element.css('color', '#999');

        element.focus(function() {
            if(element.val() == defaultText) {
                element.val('').css('color', '#333');
            }
        });
        element.blur(function() {
            if(element.val() == '') {
                element.val(defaultText).css('color', '#999');
            }
        });
    });
}

function getUrlParam(param) {
    param = param.replace(/([\[\](){}*?+^$.\\|])/g, "\\$1");
    var regex = new RegExp("[?&]" + param + "=([^&#]*)");
    var url   = decodeURIComponent(window.location.href);
    var match = regex.exec(url);
    return match ? match[1] : "";
}


$(document).ready(function() {
    $('#head-search input[type=text]').defaulter();

    // Buttons
    $('button, .fake-button').button();

    // Login
    $('#login-div').dialog({
        bgiframe: true,
        autoOpen: false,
        modal: true,
        height: 290,
        width:280,
        resizable:false,
        title: 'Giriş',
        closeOnEscape: true,
        buttons: {
            'Giriş Yap': function() {
                var f = $(this).find('form');
                var dialogDiv = $(this).closest('div.ui-dialog');

                if(!f.get(0).elements.email.value || !f.get(0).elements.passwd.value) {
                    dialogDiv.effect('shake', {}, 100, function() {
                        $('#login-msg').html('Lütfen tüm alanları doldurun');
                        f.get(0).elements.email.select();
                    });
                } else {
                    $('#login-msg').html('Yükleniyor...');
                    $.ajax({
                        url: baseUrl + '/auth/_login',
                        type: 'post',
                        data: f.serialize(),
                        success: function(data) {
                            $('#login-msg').html('&nbsp;');
                            var hataRegExp = /^Hata: /;

                            if(hataRegExp.test(data)) {
                                dialogDiv.effect('shake', {}, 100, function() {
                                    $('#login-msg').html(data.replace(hataRegExp, ''));
                                    f.get(0).elements.email.select();
                                });
                            } else {
                                location.reload();
                            }
                        }
                    });
                }
            },
            'Yeni Üyelik': function() {
                location.href = baseUrl + '/auth/';
            }
        },
        open: function() {
            $(this).find('form input[name=email]').select();
            $buttonPane = $(this).next();
            $buttonPane.find('button:first').addClass('accept').addClass('ui-priority-primary');
            $buttonPane.find('button:last').addClass('cancel').addClass('ui-priority-secondary');
        },
        close: function() {
            $('#login-msg').html('<span style="color:#999;">Lütfen bilgilerinizi girin</span>');
            $(this).find('form :input').val('');
        }
    }).find(':input').keypress(function(e) {
        var key = (e.keyCode ? e.keyCode : e.which);
        switch (key) {
            case 13:
                // Fire the event if:
                //   - we're not currently in the browser's Autocomplete, or
                //   - this isn't a textbox, or
                //   - this is Opera (which provides its own protection)
                if (!$(this).data('safeEnter_InAutocomplete') || !$(this).is('input[type=text]') || $.browser.opera)
                {
                    $(this).closest('.ui-dialog').find('button').get(0).click();
                }
                $(this).data('safeEnter_InAutocomplete', false);
                break;

            case 40:
            case 38:
            case 34:
            case 33:
                // down=40,up=38,pgdn=34,pgup=33
                $(this).data('safeEnter_InAutocomplete', true);
                break;

            default:
                $(this).data('safeEnter_InAutocomplete', false);
                break;
        }
    });

    // Hash commands
    var hash = unescape(location.hash.substring(1)).replace(/\?.+$/, '');
    if(hash == 'login') {
        if($('#login-div').length == 0) { // Logged in
            var redirectTo = getUrlParam("rt");
            if(redirectTo) {
                location.href = baseUrl + redirectTo;
            }
        } else {
            $('#login-div').dialog('open');
        }
    }

    // Force login
    $('.force_login').click(function() {
        $('#login-div').dialog('open');
        return false;
    });

    // Resize sidebar
    var rightSidebar = $('#rsb-content');

    if(rightSidebar) {
        rightSidebar.height(rightSidebar.parent().parent().height());
    }


    // Beauty Tips
    $('.bt').bt();

    // Modal links
    $('.modal').click(function() {
        var url = this.href;
        var title = this.title;
        $('#modal_window').remove();
        $('<div id="modal_window"><div class="loading">Yükleniyor</div><img src="' + baseUrl + '/images/ajax-loader-small.gif"></div>').dialog({
            title: title,
            modal: true,
            height: 300,
            open: function() {
                $('#modal_window').load(url);
            }
        });
        return false;
    });
});

jQuery.bt.defaults.fill = '#ffc';
jQuery.bt.defaults.positions = 'bottom';
jQuery.bt.defaults.spikeLength = 10;
jQuery.bt.defaults.shrinkToFit = true;
jQuery.bt.defaults.strokeStyle = "#993";
jQuery.bt.defaults.strokeWidth = 1;

if(jQuery.validator != undefined) {
    $.extend($.validator.messages, {
        required : "Bu alanı doldurmalısınız.",
        email    : "Buraya geçerli bir e-posta girmelisiniz.",
        url      : "Buraya geçerli bir web adresi girmelisiniz.",
        equalTo  : "Yukarıdaki ile aynı değeri girmelisiniz",
        minlength: "Girdiğiniz değer yeterli değil. Lütfen en az uyarısına dikkat ediniz"
    });
    jQuery.validator.setDefaults({
        errorPlacement: function(error, element) {
            element.bt(error.html(), {
                trigger: 'none',
                spikeLength: 10,
                fill: "#ffc",
                strokeStyle: "#993",
                strokeWidth: 1,
                positions: 'bottom',
                shrinkToFit: true,
                closeWhenOthersOpen: false
            }).btOn();
        },
        highlight: function(element, errorClass, validClass) {
        },
        unhighlight: function(element, errorClass, validClass) {
            $('.bt-wrapper').btOff();
        }
    });

}

function on_izleme(answer_text) {
    if(!answer_text) {
        alert('Lütfen cevap giriniz');
        return;
    }

    var onizlemeDiv = $('<div id="cevap_onizleme">Yükleniyor...</div>');
    onizlemeDiv.dialog({
        bgiframe: true,
        autoOpen: true,
        modal: true,
        title: 'Ön İzleme',
        width: 500,
        height: 300,
        buttons: {
            'Kapat': function() {
                $(this).dialog('destroy');
            }
        },
        open: function() {
            $(this).load(baseUrl + '/soru/onizleme', {answer: answer_text}, function() {
                $(this).find('pre').each(function() {
                    SyntaxHighlighter.highlight(SyntaxHighlighter.defaults, this);
                });
            });
        },
        close: function() {
            $(this).dialog('destroy');
        }
    });

}

