var towns = new Array();
var emailchars = new String('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890@._-');
var fres;
var allowed_extensions = ['.jpg','.gif','.png','.bmp','.jpeg','.tif'];
function trhide(){
	$('tr#tredit').remove();
    img.attr('src',imgs[1]);
    return false;
}
var imgs = new Array(); // тут будем хранить адреса картинок

function turn_imgs(rotate) { // меняет местами элементы массива в зависимости от rotate 
    if (rotate==2) {
        imgs[0]=String(imgs[1]);
        imgs[1]=String(imgs[2]);
        imgs[2]=String(imgs[3]);
        imgs[3]=String(imgs[4]);
        imgs[4]=String(imgs[0]);
        return;
    }
    if (rotate==3) {
        imgs[0]=String(imgs[1]);
        imgs[1]=String(imgs[3]);
        imgs[3]=String(imgs[0]);
        imgs[0]=String(imgs[2]);
        imgs[2]=String(imgs[4]);
        imgs[4]=String(imgs[0]);
        return;
    }
    if (rotate==4) {
        imgs[0]=String(imgs[4]);
        imgs[4]=String(imgs[3]);
        imgs[3]=String(imgs[2]);
        imgs[2]=String(imgs[1]);
        imgs[1]=String(imgs[0]);
    }
}

checkmail = function(email) {
    res = '';
    badchars = false;
    baddots = false;
    badats = false;
    dotinend = false;
    atinend = false;
    badatdots = false;
    baddotats = false;
    for (ch=0; ch<email.length; ch++) {
        if (emailchars.indexOf(email.charAt(ch)) > -1)
            res += email.charAt(ch);
        else {
            res += '<b>'+email.charAt(ch)+'</b>';
            badchars = true;
        }
    }
    if (email.indexOf('..') > -1) baddots = true;
    if (email.indexOf('@.') > -1) badatdots = true;
    if (email.indexOf('.@') > -1) baddotats = true;
    if ( (email.indexOf('@') > -1) && (email.slice(email.indexOf('@')+1).indexOf('@') > -1) )
        badats = true;
    if (email.length>0 && email.lastIndexOf('.')==email.length-1) dotinend = true;
    if (email.length>0 && email.lastIndexOf('@')==email.length-1) atinend = true;
    fres = [];
    if (badchars || baddots || badats || dotinend || atinend || badatdots ) {
        if (badchars) fres.push('В набранном адресе есть недопустимые символы:<br/>   ' + res.replace(/ /g,'[пробел]').replace(/ /g,'[пробел]'));
        if (baddots) fres.push('В адресе не допускается две точки рядом');
        if (badats) fres.push('В адресе не допускаются два символа <b>@</b>');
        if (badatdots) fres.push('В адресе не допускается комбинация <b>@.</b>');
        if (baddotats) fres.push('В адресе не допускается комбинация <b>.@</b>');
        if (dotinend) fres.push('Точка в конце адреса не допускается');
        if (atinend) fres.push('Знак <b>@</b> в конце адреса не допускается');
        $('#badmail').html(fres.join('<br/>'));
    }
    else {
        $('#badmail').empty();
        fres = [];
    }
    return fres;
}

$(document).ready(function() {
    aimg = $('tr.upfile').find('a:first');
    img = aimg.find('img:first');
    divrot = $('div.rotated');
    imgs[1] = img.attr('src');
    imgs[2] = divrot.find('img:eq(0)').attr('src');
    imgs[3] = divrot.find('img:eq(1)').attr('src');
    imgs[4] = divrot.find('img:eq(2)').attr('src');
    //alert(imgs);
    etr = $('#id_reg-email,#id_pvt-email').parents('tr:first');
    etr.after('<tr><td></td><td><small id="badmail" class="err"></small></td></tr>');
    checkmail($('#id_reg-email,#id_pvt-email').val());
    ttd = $('#id_reg-town,#id_pvt-town').parents('td:first');
    country = $('select#id_reg-country,select#id_pvt-country').val();
    towns[country] = ttd.html();
    $('input:file').attr('title','Допустимые расширения: ' + allowed_extensions.join(', '))
    $('span#nofile').live('click', function() {
        $('input:file').removeAttr('value');
        $('small#filename').html('');
    });
    $('input:file').change(function() {
        fname = $(this).val();
        if(fname.length>100) {
            alert('Имя файла не должно превышать 100 символов!');
            $(this).removeAttr('value');
            $('small#filename').html('');
            return;
        }
        for(i=0;i<allowed_extensions.length;i++) {
            ext = allowed_extensions[i];
            lenn = ext.length;
            if (fname.slice(-lenn).toLowerCase()==ext) {
                $('small#filename').html('<br/>Вы собираетесь загрузить файл: <i class="msg">'
                    + fname + '</i>   <span class="ptr c720" id="nofile">не загружать</span>');
                return;
            }
        }
        $('small#filename').html('');
        $(this).removeAttr('value');
        alert('Допустимые расширения:\n' + allowed_extensions.join(', ') + '.');
    });
    $('.edup').click(function() {
        if ($('tr#tredit:visible').text().length>0) {
            trhide();
            return
        }
        $(this).parents('tr.upfile').after('<tr id="tredit"><td colspan="'+$('tr.upfile:first td').length+'"></td></tr>');
        descr = $(this).parents('tr.upfile').find('small:first').html();
        $('tr#tredit td').html('Подпись: <input type="text" size=40 maxlength=50><br/><input type="checkbox" /> Повернуть фото<br/><div class="rotate"><input type="radio" value="4" name="rotate" /> <small>на 90° по часовой стрелке</small><br/><input type="radio" value="3" name="rotate" /> <small>на 180°</small><br/><input type="radio" value="2" name="rotate" /> <small>на 90° против часовой стрелки</small><br/></div><button id="save_but">сохранить</button> <button id="cancel_but">отменить</button>');
        chrot = $('tr#tredit input:eq(1)');
        chrot.change(function(){
            if (chrot.attr('checked')) {
                $('div.rotate').show();
                $('input:radio:checked').attr('checked',false);
            }
            else {
                $('div.rotate').hide();
                img.attr('src',imgs[1]);
            }
        });
        $('input:radio').change(function(){
            img.attr('src',imgs[$('input:radio:checked').val()]);
        });
        $('tr#tredit input:eq(0)').val(descr);
        //$('tr#tredit input:eq(1)').val(long_);
        $('#cancel_but').click(trhide);
        $('#save_but').click(function() { // сохранить 
            $('#save_but').text('сохраняем...');
            $('#save_but').attr("disabled","disabled");
            rotate = $('input:radio:checked').val();
            if (chrot.attr('checked')==true) data = { descr: $('tr#tredit input:eq(0)').val(), rotate:rotate }
            else data = { descr: $('tr#tredit input:eq(0)').val() }
            $.ajax({
                type: "POST",
                url: location.href+'editpic/',
                data: data,
                success: function(msg,stat){
                    $('tr.upfile').find('small:first').html($('tr#tredit input:eq(0)').val());
                    aimg.attr('title',aimg.attr('title').replace(descr,$('tr.upfile').find('small:first').text()));
                    turn_imgs(rotate);
                    trhide();
                },
                error: function(msg,stat,err){
                    alert( 'Ошибка!\n' + msg + '\n' + err );
                    trhide();
                }
            });
            return false;
        });
    });
    $('.delup').click(function() {
        trhide();
        if (!confirm('Точно удалить данный файл?')) return;
        // удалить файл нафиг
        $.ajax({
            type: "POST",
            url: location.href+'delpic/',
            data: {},
            success: function(msg,stat){
                //alert( msg );
                $('#available').html(msg);
                $('tr.upfile').parents('tr:first').next().find('b:first').text('Загрузить');
                $('tr.upfile').hide('slow'); // уберем эту строку
            },
            error: function(msg,stat,err){
                alert( 'Ошибка!\n' + msg + '\n' + err );
            }
        });
    });

    $('#id_reg-email,#id_pvt-email').keyup(function() { // проверем наличие неправильных символов в мейле
        email = $(this).val();
        checkmail(email);
    });
    $('#id_reg-email,#id_pvt-email').change(function() { // проверем наличие неправильных символов в мейле
        email = $(this).val();
        checkmail(email);
    });
    $('select#id_reg-country,select#id_pvt-country').change(function() { // запрос списка для городов
        // узнать номер страны, отправить его ajax-ом, полученный ответ поместить в соответствующее место страницы и сохранить в кэше
        country = $(this).val();
        for (var i in towns) {
            if(i==country) {
                ttd.html( towns[country] );
                return;
            }
        }
        ttd.html('<select style="width:20ex"><option value="0">загружается...</option></select>');
        $.ajax({
            type: "POST",
            url: '/register/',
            data: {
                country: country
            },
            success: function(msg,stat){
                ttd.html( msg );
                towns[country] = msg;
            },
            error: function(msg,stat,err){
                alert( 'Ошибка!\n' + msg + '\n' + err );
            }
        });
    });
    $('button:last').click(function() {
        fres = checkmail($('#id_reg-email,#id_pvt-email').val());
        if (fres.length>0) {
            alert('Вы указали недопустимый адрес e-mail.\nДанные не будут сохранены.');
            return false;
        }
    });
});
