
window.WoSnakeSearch = {
    
    query: function(keyphrase){
        if (/^[-_a-zA-Z0-9\s.]+$/.test(keyphrase)){
            document.title = keyphrase;
            $('#search .text').val(keyphrase);
            $('#output').html('').addClass('loading');
            
            if ($.browser.mozilla){
                if (WoSnakeSearch.blank && WoSnakeSearch.blank.close)
                    WoSnakeSearch.blank.close();
                WoSnakeSearch.blank = window.open(SITE_URL + 'blank.php?q=' + keyphrase.replace(/-/g, '--').replace(/\s/g, '-'), 'blank', 'menubar=no,location=no,resizable=no,scrollbars=no,status=no,width=50,height=50');
                window.focus();
            }
            else{
                $.post(SITE_URL + 'wosnake.php', {word: keyphrase}, function(output){
                    if ($.trim(output) == 'empty'){
                        WoSnake.q(keyphrase, function(keywords, failure){
                            WoSnakeSearch.callback(keyphrase, keywords, failure);
                        });
                    }
                    else $('#output').removeClass('loading').hide().html('<div class="words"><h1>Keywords for \'' + keyphrase + '\'</h1>' + output + '</div><div class="clear"></div>').fadeIn();
                });
            }
        } else alert('Incorrect word!');
    },
    
    callback: function(keyphrase, keywords, failure){
        if (failure){
            var output = '<div class="words"><h1>Keywords for \'' + keyphrase + '\'</h1><ul>';
            if (keywords.length){
                for (var i = 0; i < keywords.length; i++)
                    output += '<li' + (i % 3 == 0 ? ' class="nl"' : '') + '><a href="#' + keywords[i] + '">' + keywords[i] + '</a></li>';
            }
            else output += '<li class="not-found">not found</li>';
            output += '</ul></div><div class="clear"></div>';
            $('#output').removeClass('loading').hide().html(output).fadeIn();
        }
        else{
            var content = '';
            if (keywords.length){
                for (var i = 0; i < keywords.length; i++)
                    content += '<item>' + keywords[i] + '</item>';
                content = '<content>' + content + '</content>';
            }
            $.post(SITE_URL + 'wosnake.php', {wosnake: '<wosnake><word>' + keyphrase + '</word>' + content + '</wosnake>'}, function(output){
                $('#output').removeClass('loading').hide().html('<div class="words"><h1>Keywords for \'' + keyphrase + '\'</h1>' + output + '</div><div class="clear"></div>').fadeIn();
            });
        }
    },
    
    cancel: function(keyphrase){
        window.WoSnakeSearch.canceled = true;
        $('#output').removeClass('loading').hide().html('<div class="words"><h1>Keywords for \'' + keyphrase + '\'</h1><ul><li class="not-found">Search is canceled</li></ul></div><div class="clear"></div>').fadeIn();
    }
    
};

$(function(){

    if ($.browser.mozilla){
        $(window).unload(function(){
            if (WoSnakeSearch.blank && WoSnakeSearch.blank.close)
                WoSnakeSearch.blank.close();
        });
    }
    
    $('#search form').submit(function(){
        WoSnakeSearch.query( $('#search .text').val() );
        return false;
    });

    $('.words li', '#output').each(function(){
        if ($(this).html().indexOf('<') == -1 && !$(this).hasClass('not-found'))
            $(this).click(function(){ WoSnakeSearch.query( jQuery.trim($(this).html()) ); });
    });

});
