/*
Утилита для работы с формой простого поиска v1.0
2006 Magic Wand
*/

function simpleSearchUtils(search_input) {
    var sinput = null;
    var sform = null;
    var mode = ''; // режим 
                   // 'search' - пустая строка, в поле слово "поиск"
                   // 'clean' - пустая строка, фокус в поле ввода
                   // 'ready' - поле не пустое, без фокуса
                   // 'edit' - пустая строка, фокус в поле ввода
    var search_message = '';
    var warn_message = 'Строка поиска должна содержать слова длиной не менее 4-х символов';
    
    __construct();
    function __construct() {
        sinput = search_input;
        sform = search_input.form;
        initMode();
        sinput.onblur = onBlurString;
        sinput.onfocus = onFocusString;
        sform.onsubmit = onSubmitString;
    }
    
    function initMode() {
        if(sinput.value == '') {
            mode = 'search';
            setSearchMessage();
        }
        else mode = 'ready';
    }
    
    function setSearchMessage() {
        sinput.value = search_message;
        sinput.style.color = 'gray';
    }
    
    function resetSearchMessage() {
        sinput.value = '';
        sinput.style.color = 'black';
    }

    function onBlurString() {
        switch(mode) {
        case 'clean':
        case 'edit':
            if(sinput.value == '') {
                mode = 'search';
                setSearchMessage();
            } else mode = 'ready';
            break;
        }
    }
    
    function onFocusString() {
        switch(mode) {
        case 'search':
            mode = 'clean';
            resetSearchMessage();
            break;
        case 'ready':
            mode = 'edit';
            break;
        }
    }
    
    function maySubmit() {
        switch(mode) {
        case 'clean':
        case 'ready':
        case 'edit':
            if(validateSearchString(sinput.value)) return true;
            alert(warn_message);
            break;
        }
        return false;
    }
    
    function onSubmitString() {
        return maySubmit();
        
    }
    
    this.submitForm = function() {
        if(maySubmit()) sform.submit();
    }
    
    function validateSearchString(str) {
        var words = str.split(/ /);
        for(var n = 0; n < words.length; n ++) {
            if(words[n].length < 4) return false;
        }
        return true;
    }
    
}
