// orphographic
$.ctrl = function(key, callback, args) {
    $(document).keydown(function(e) {
        if(!args) args=[]; // IE barks when args is null
        if(e.keyCode == key && e.ctrlKey) {
            callback.apply(this, args);
            return false;
        }
    });
};

function get_captcha(){
    var control = $('#orpho').find('#capcha-control');
    $.post('/captcha/renew/',{},
        function(json){
            eval('var data = ' + json + ';');
            if (typeof(data.captcha_id) != 'undefined'){
                control.find('#id_captcha_0').attr({value: data.captcha_id});
                control.find('img').attr({src: '/captcha/getimage/' + data.captcha_id + '/'});
            }
        });
}

function show_admin_error(){
    if (window.getSelection) {
        var selectedText = window.getSelection();
    }
    else if (document.getSelection) {
        var selectedText = document.getSelection();
    }
    else if (document.selection) {
        var selectedText = document.selection.createRange().text;
    }
    selectedText = selectedText += '';
    
    if($('#orph-page').length) $('#orph-page').text(window.location.href);
    if($('#orph-text').length) $('#orph-text').html(selectedText);
    if(selectedText=='') $('#orph-text').html('&nbsp;');
    // clean form
    var formobj = $('#orpho').find('form')[0];
    formobj.elements['text'].value = '';
    if (typeof(formobj.elements['option_name']) != 'undefined'){
        formobj.elements['option_name'].value = '';
        formobj.elements['option_email'].value = '';
        formobj.elements['captcha_2'].value = '';
        get_captcha();
    }
    $('#orpho').find('div.allerrors').hide();
    $('#orpho').find('.orpho-error').remove();
    $('#orpho').find('.orpho-error-label').removeClass('orpho-error-label');
    $('a#open-orpho-popup').simpleLightbox({autoShow:true});
}

$.ctrl(13, function() {
    show_admin_error();
});

$(function(){
    $('#orpho').find('form').unbind('submit').submit(function(e){
        out = {};
        var formobj = $(this)[0];
        formobj.elements['link'].value = $(formobj.elements['link']).prev('div').html();
        formobj.elements['selected_text'].value = $(formobj.elements['selected_text']).prev('div').html();
        for (i=0; i < formobj.elements.length; i++){
            if (formobj.elements[i].type == 'radio'){
                if (formobj.elements[i].checked)
                    out[formobj.elements[i].name] = formobj.elements[i].value;
            }else{
                out[formobj.elements[i].name] = formobj.elements[i].value;
            }
            formobj.elements[i].blur();
        }
        $.post("/accounts/send_compliant_ajax/",
            out,
            function(json){
                eval("var data = " + json);
                if (data){
                    $('#orpho').find('.orpho-error').remove();
                    $('#orpho').find('.orpho-error-label').removeClass('orpho-error-label');
                    if (data['errors']){
                        if (typeof(formobj.elements['option_name']) != 'undefined'){
                            get_captcha();
                        }
                        $('#orpho').find('div.allerrors').html('Исправьте ошибки выше');
                        $('#orpho').find('div.allerrors').show();
                        for (li in data['errors']){
                            if (li == 'text')
                                $(formobj.elements[li]).parent('div').prev('div').prev('div').after('<div class="orpho-error" style="float: left;">'+data['errors'][li]+'</span>');
                            else if (li == 'captcha')
                                $(formobj.elements['captcha_0']).parent('div').prev('label').addClass('orpho-error-label');
                            else
                                $(formobj.elements[li]).parent('div').prev('label').addClass('orpho-error-label');
                        }
                    }
                    else{
                        formobj.elements['text'].value = '';
                        if (typeof(formobj.elements['option_name']) != 'undefined'){
                            formobj.elements['option_name'].value = '';
                            formobj.elements['option_email'].value = '';
                            formobj.elements['captcha_2'].value = '';
                        }
                        $('#orpho').find('div.allerrors').hide();
                        $(formobj).find('a.cancela').click();
                        show_popup('', 'Сообщение отправлено администратору');
                    }
                }
            });
        e.preventDefault();
    });
});

