Blogs = {};
Blogs.options = {};

Blogs.setOptions = function(options)
{
    this.options = options;
}
Blogs.getFileExt = function(fileName)
{
    if(fileName.length == 0) { return ""; }
    var dot = fileName.lastIndexOf(".");
    if(dot == -1) { return ""; }
    return fileName.substr( dot+1, fileName.length ).toLowerCase();
}
Blogs.isNotAllowedFileExt = function(fileName, allowedExt)
{ 
    var ext = Blogs.getFileExt(fileName);
    for (var i=0; i<allowedExt.length; i++)
    {
        if(ext == allowedExt[i])
        {
            return false;
        }
    }
    return true;
} 
Blogs.insertAtCaret = function(val)
{
    var el = document.getElementById(Blogs.options.post_container);
    el.focus();
    if (document.selection)
    {
        sel = document.selection.createRange();
        sel.text = val;
        el.focus();
    }
    else if (el.selectionStart || el.selectionStart == '0')
    {
        var startPos = el.selectionStart;
        var endPos = el.selectionEnd;
        var scrollTop = el.scrollTop;
        el.value = el.value.substring(0, startPos)+val+el.value.substring(endPos,el.value.length);
        el.focus();
        el.selectionStart = startPos + val.length;
        el.selectionEnd = startPos + val.length;
        el.scrollTop = scrollTop;
    }
    else
    {
        el.value += val;
        el.focus();
    }
}

Blogs.setImageSettings = function(uploadifySettings)
{
    this.image_settings = uploadifySettings;
}

Blogs.setVideoSettings = function(uploadifySettings)
{
    this.video_settings = uploadifySettings;
}

Blogs.onStartUploadImage = function(event, ID, fileObj)
{
    if(Blogs.isNotAllowedFileExt(fileObj.name, ['png','jpg','jpeg','gif']))
    {
        $('#upload-video-error').hide();
        $('#upload-image-error').hide();
        $('#upload-ext-error').show();
        $('#errors-holder').show();
        $("#image_uploader").uploadifyCancel(ID);
        return false;
    }
    if(fileObj.size > 5242880)
    {
        $('#upload-video-error').hide();
        $('#upload-ext-error').hide();
        $('#upload-image-error').show();
        $('#errors-holder').show();
        $("#image_uploader").uploadifyCancel(ID);
        return false;
    }
    if($('#errors-holder').is(":visible"))
    {
        $('#errors-holder').hide();
    }
    jQuery(Blogs.options.container).append('<li class="image" style="display:none;"><table><tr><td><div class="progress" id="imageprogress-'+ID+'"></div></td></tr></table></li>');
    jQuery(Blogs.options.container+' li:last').slideDown('slow');
    return false;
}

Blogs.onProgressUploadImage = function(event, ID, fileObj, data)
{
    var border = parseInt(data.percentage*0.60);
    var width = 60 - parseInt(data.percentage*0.60);
    jQuery('#imageprogress-'+ID).css('width',width+'px');
    jQuery('#imageprogress-'+ID).css('border-left-width',border+'px');
    return false;
}

Blogs.onCompleteUploadImage = function(event, ID, fileObj, response, data)
{
    if ($('#imageprogress-'+ID).length == 0)
    {
        return false;
    }
    var info = eval(response);
    var p1=$('#imageprogress-'+ID).parent().get(0);
    var p2=$(p1).parent().get(0);
    var p3=$(p2).parent().get(0);
    var p4=$(p3).parent().get(0);
    var p5=$(p4).parent().get(0);
    if (info.success == false) {
        $(p5).remove();
        $('#upload-image-error').hide();
        $('#upload-ext-error').hide();
        $('#upload-video-error').hide();
        $('#upload-video-server-error').hide();
        $('#upload-image-server-error').show();
        $('#errors-holder').show();
        return false;
    }
    $(p5).html('<a class="delete" href="#удалить изображение" onclick="Blogs.deleteImage('+info.id+',this);return false;">&#215;</a><table><tr><td><a href="#вставить картинку в текст" title="вставить картинку в текст" onclick="Blogs.addImage('+info.id+');return false;" ><img src="' + info.url + '" /></a></td></tr></table>');
    return false;
}

Blogs.addImage = function(id)
{
    Blogs.insertAtCaret('\n[picture='+id+']\n');
}

Blogs.deleteImage = function(id, element)
{
    $.ajax({
        type: 'GET',
        url: '/emotions/image/'+id+'/delete/',
        success: function(response){
            var info = eval(response);
            if(info.success == '1') {
                var p1=$(element).parent().get(0);
                jQuery(p1).slideUp('slow', function (){ $(p1).remove(); });
            }
        }
    });
}

Blogs.onStartUploadVideo = function(event, ID, fileObj)
{
    if ( Blogs.isNotAllowedFileExt( fileObj.name, ['mov','avi','mpeg','mpg','vmw','mp4','flv','swf'] ) )
    {
        $('#upload-video-error').hide();
        $('#upload-image-error').hide();
        $('#upload-ext-error').show();
        $('#errors-holder').show();
        $("#video_uploader").uploadifyCancel(ID);
        return false;
    }
    if (fileObj.size > 52428800 )
    {
        $('#upload-image-error').hide();
        $('#upload-ext-error').hide();
        $('#upload-video-error').show();
        $('#errors-holder').show();
        $("#video_uploader").uploadifyCancel(ID);
        return false;
    }
    if ($('#errors-holder').is(":visible"))
    {
        $('#errors-holder').hide();
    }
    jQuery(Blogs.options.container).append('<li class="video" style="display:none;"><table><tr><td><div class="progress" id="videoprogress-'+ID+'"></div></td></tr></table></li>');
    jQuery(Blogs.options.container+' li:last').slideDown('slow');
    return false;
}

Blogs.onProgressUploadVideo = function(event, ID, fileObj, data)
{
    var border = parseInt(data.percentage*0.60);
    var width = 60 - parseInt(data.percentage*0.60);
    jQuery('#videoprogress-'+ID).css('width',width+'px');
    jQuery('#videoprogress-'+ID).css('border-left-width',border+'px');
    return false;
}

Blogs.onCompleteUploadVideo = function(event, ID, fileObj, response, data)
{
    if ($('#videoprogress-'+ID).length == 0)
    {
        return false;
    }
    var info = eval(response);
    var p1=$('#videoprogress-'+ID).parent().get(0);
    var p2=$(p1).parent().get(0);
    var p3=$(p2).parent().get(0);
    var p4=$(p3).parent().get(0);
    var p5=$(p4).parent().get(0);
    if (info.success == false) {
        $(p5).remove();
        $('#upload-image-error').hide();
        $('#upload-image-server-error').hide();
        $('#upload-ext-error').hide();
        $('#upload-video-error').hide();
        $('#upload-video-server-error').show();
        $('#errors-holder').show();
        return false;
    }
    $(p5).html('<a class="delete" href="#удалить видео" onclick="Blogs.deleteVideo('+info.id+',this);return false;">&#215;</a><table><tr><td><a href="#вставить видео в текст" title="вставить видео в текст" onclick="Blogs.addVideo('+info.id+');return false;" ><img src="' + info.url + '" /></a></td></tr></table>');
    return false;
}

Blogs.addVideo = function(id)
{
    Blogs.insertAtCaret('\n[video='+id+']\n');
}

Blogs.deleteVideo = function(id, element)
{
    $.ajax({
        type: 'GET',
        url: '/emotions/video/'+id+'/delete/',
        success: function(response){
            var info = eval(response);
            if(info.success == '1') {
                var p1=$(element).parent().get(0);
                jQuery(p1).slideUp('slow', function (){ $(p1).remove(); });
            }
        }
    });
}
/* пытаемся очень скрытно вставить на страницу e-mail,
 * смутно надеясь, что роботы не умеют работать с HTML
 * динамически получаемым от javascript... */
Blogs.putContact = function(id, login, domain)
{
    var dog = 64;
    var href_arr = [60, 97, 32, 104, 114, 101, 102, 61, 34, 109, 97, 105, 108, 116, 111, 58];
    var result = '';
    for(var i=0; i<href_arr.length; i++)
    {
        result += String.fromCharCode(href_arr[i]);
    }
    result += login + String.fromCharCode(dog) + domain;
//    result += '">' + login + '(at)' + domain.replace('.', '[dot]') + '</a>';
    result += '">' + login + String.fromCharCode(dog) + domain + '</a>';
    $('#'+id).html(result);
}


