var IsMouseOver = false;
var AvatorMenuInterval = 1000;
var folder_cntxt_menu = {
    bindings: {
        'rename': function(t) {
            var folder_id = $(t).attr('folder_id');
            var folder_inpname = $('<input type="text"/>').attr('size', 12).val( $(t).find('>a').text() )
            .bind('keypress', function(e){
                var ch = (e.charCode) ? e.charCode : ((e.keyCode) ? e.keyCode : ((e.which) ? e.which : 0));
                if (ch == 13) {
                    $(this).trigger('blur');
                    return false;
                }
            }).bind('blur', function(){
                renameFolder({ target: t, input: this });
            });
            $(t).hide().after( folder_inpname );
            folder_inpname.focus();
        },
        'delete': function(t) {
            if(!confirm(LangCommon.msg_sure_delete_folder)) return false;
            var folder_id = $(t).attr('folder_id');
            deleteFolder(t);
        }
    }
};
$(document).ready(function(){
    $('#add_folder').bind('click', function(){
        $('#li_addfolder').hide();
        $('#li_foldername').show();
        $('#folder_name').focus();
        return false;
    });
    $('#folder_name').bind('keypress', function(e){
        var ch = (e.charCode) ? e.charCode : ((e.keyCode) ? e.keyCode : ((e.which) ? e.which : 0));
        if (ch == 13) {
            $(this).trigger('blur');
            return false;
        }
    }).bind('blur', function(){
        if ($('#folder_name').val() != '') {
            saveFolder();
        } else {
            $('#li_foldername').hide();
            $('#li_addfolder').show();
            $('#folder_name').val('');
        }
        return false;
    });
    $('.folder_item').contextMenu('folder_menu', folder_cntxt_menu);

    $('img.user_avatar').bind('show.menu.plugin', function(){
        if (IsMouseOver == true) {
            var user_id = $(this).attr('user_id');
            var card_id = $(this).attr('card_id');
            if ($('ul.user_tiptool[card_id="' + card_id + '"]').size() == 0) {
                var img_pos = $(this).offset();
                $('ul.user_tiptool').css({
                    left: (img_pos.left + 25) + 'px',
                    top: (img_pos.top + 25) + 'px'
                }).attr({user_id: user_id, card_id: card_id}).show().addClass('visible');
            }
        }
    }).bind('mouseover', function(e){
        IsMouseOver = true;
        elem = this;
        setTimeout("$(elem).trigger('show.menu.plugin');", AvatorMenuInterval);
    }).bind('mouseout', function(){
        IsMouseOver = false;
    });
    
    $('ul.user_tiptool>li').hover(function(){
        $(this).addClass('hover');
    }, function(){
        $(this).removeClass('hover');
    });
    $(document).bind('mousemove', function(e){
        if (!$(e.target).is('img.user_avatar') && !$(e.target).is('ul.user_tiptool')
        && ($(e.target).parents('ul.user_tiptool').size() == 0)) {
            if($('ul.user_tiptool').hasClass('visible')) {
			$(this).trigger('click');
			}
        }
    }).bind('click', function(){
        $('ul.user_tiptool').removeAttr('user_id').removeAttr('card_id').hide().removeClass('visible');
    });
    
    $('#profile_view_fm').bind('click', function(){
        window.location.href = baseUrl + '/users/index/id/' + $(this).parent().attr('user_id') + '/';
    });
    $('#cv_view_fm').bind('click', function(){
        window.location.href = baseUrl + '/users/cv/user_id/' + $(this).parent().attr('user_id') + '/';
    });
    $('#card_view_fm').bind('click', function(){
        var card_id = $(this).parent().attr('card_id');
        while (card_id.length < 8) card_id = '0' + card_id;
        window.location.href = baseUrl + '/' + card_id + '/';
    });
    
    
    $('#send_card_fm').bind('click', function(){
        var params = '?user_id=' + $(this).parent().attr('user_id');
        openWindow(baseUrl + '/cards/sendcard/' + params,
				        $.browser.msie ? 500 : 500,
                    $.browser.msie ? 520 : 490
				   
				   );
    });
    $('#send_exchange_fm').bind('click', function(){
        var params = '?user_id=' + $(this).parent().attr('user_id');
        openWindow(baseUrl + '/cards/exchangecard/' + params,  
				   $.browser.msie ? 480 : 480,
                    $.browser.msie ? 490 : 470
				   
				   );
    });
    $('#send_message_fm').bind('click', function(){
        var params = '?user_id=' + $(this).parent().attr('user_id');
        openWindow(baseUrl + '/messages/writeto/' + params, 
				   
				       $.browser.msie ? 500 : 500,
                    $.browser.msie ? 520 : 490
				   
				   );
    });
    $('#send_request_fm').bind('click', function(){
        var params = '?user_id=' + $(this).parent().attr('user_id');
        openWindow(baseUrl + '/cards/requestcard/' + params,  
				     $.browser.msie ? 500 : 500,
                    $.browser.msie ? 520 : 490
				   );
    });
    $('#delete_card_fm').bind('click', function(){
        $.ajax({
            url: baseUrl + '/cardholder/deletecards/',
            data: { 'card_ids[]': [$(this).parent().attr('card_id')] },
            dataType: 'json',
            success: function(data) {
                if (data.success == true) {
                    window.location.reload();
                }
            }
        });
    });
});
function openWindow(url, w, h) {
    var width = w || 640;
    var height = h || 480;
    var left = parseInt((screen.availWidth/2) - (width/2));
    var top = parseInt((screen.availHeight/2) - (height/2));
    var windowFeatures = "width=" + width + ",height=" + height + 
        ",status,resizable=0,left=" + left + ",top=" + top + 
        ",screenX=" + left + ",screenY=" + top + ", scrollbars";
    return window.open(url, "subWind", windowFeatures);
};
function loadFolders(callback) {
    $.getJSON('/cardholder/loadfolders/', {}, function(data){
        if (data.success == true) {
            $('.folder_row').remove();
            $.each(data.rows, function(i, row){
                addFolder(row);
            });
        }
        if (typeof(callback) == 'function') {
            callback();
        }
    });
};
function saveFolder() {
    var folder_name = $('#folder_name').val();
    $.ajax({
        url: baseUrl + '/cardholder/addnewfolder/', type:'POST',
        data: { foldername: folder_name },
        dataType: 'json',
        success: function(data){
            if(data.success == true) {
                addFolder({ id: data.folder_id, name: folder_name, size: 0 });
                $('#li_foldername').hide();
                $('#li_addfolder').show();
                $('#folder_name').val('');
            }
            if(data.message) alert(data.message);
        }
    });
};
function renameFolder(ops) {
    var foldername = ops.input.value;
    $.ajax({
        url: baseUrl + '/cardholder/renamefolder/', type:'POST',
        data: { foldername: foldername, folderid: $(ops.target).attr('folder_id') },
        dataType: 'json',
        success: function(data){
            if(data.success == true) {
                $(ops.input).remove();
                $(ops.target).find('>a').text(foldername).end().show();
                sortFolders( $('li.folder_row').get() );
            }
            if(data.message) alert(data.message);
        }
    });
};
function deleteFolder(target) {
    var folder_id = $(target).attr('folder_id');
    $.ajax({
        url: baseUrl + '/cardholder/deletefolder/', type:'POST',
        data: { folderid: folder_id },
        dataType: 'json',
        success: function(data){
            if(data.success == true) {
                $(target).parent().remove();
                if (typeof(currFolder) == 'undefined') currFolder = '';
                if (currFolder && (currFolder == folder_id)) {
                    window.location.href = baseUrl + '/cardholder/';
                }
            }
            if(data.message) alert(data.message);
        }
    });
};
function addFolder(data) {
    $('<li/>').append(
        $('<span/>').append(
            $('<a/>').attr('href', baseUrl + '/cardholder/index/folder/' + data.id + '/')
                     .text(data.name)
        ).contextMenu('folder_menu', folder_cntxt_menu)
        .addClass('folder_item').addClass('fi').attr('folder_id', data.id)
    ).append(
        "<span class=\"count\">" + data.size + "</span>"
    ).addClass('folder_row').insertBefore('#li_addfolder');
};
function sortFolders(rows) {
    rows.sort(function(a, b) {
        var keyA = $(a).find('>span>a').text().toUpperCase();
        var keyB = $(b).find('>span>a').text().toUpperCase();
        if (keyA < keyB) return -1;
        if (keyA > keyB) return 1;
        return 0;
    });
    $.each(rows, function(index, row) {
        $(row).insertBefore('#li_addfolder');
    });
};
function reloadFolders(callback) {
    loadFolders(callback);
};
