Ozein.Freeword = new Class.create();
Ozein.Freeword.prototype = {
    initialize: function(node, options) {
        this.node = node;
        this.setOptions(options);
        Event.observe(node,'submit',this.submit.bindAsEventListener(this));
    },
    setOptions: function(options) {
        this.options = {
            selectId:null,
            textId:null,
            noSubmitMessage:null,
            asynchronous:false,
            urlList: { }
        }
        Object.extend(this.options, options || {});
    },
    submit: function(e) {
        var controllerNum = $F(this.options.selectId);
        var fw = $F(this.options.textId).replace(/\//g,'');
        if(this.options.noSubmitMessage == fw || !fw.match(/[^\s]+/)) {
            if(!this.options.asynchronous) {
                alert('キーワードを入力してください');
            }
            Event.stop(e);
            return false;
        }
        var fwStr = "";
        var url = "";
        if(fw) {
            fwStr = 'フリーワード\'' + fw + '\'を含む';
        }
        if(controllerNum == 1) {
            if(this.options.asynchronous) {
                Event.stop(e);
                return false;
            }
            var url = decodeURIComponent(location.href);
            var pattern = /(フリーワード(.*)を含む\/)/;
            if(url.match(pattern)) {
                url = url.gsub(pattern,fwStr);
            } else {
                var urlArr = url.split('?');
                if(urlArr[0].slice(-1) != '/') urlArr[0] += '/';
                urlArr[0] += fwStr;
                url = urlArr.join('?');
            }
        } else {
            if(this.options.urlList[controllerNum]) {
                var url = this.options.urlList[controllerNum];
                url = url.replace('<$fw>',fwStr);
            }
        }
        url = this.encodeURIStr(url);
        location.href = url;
        Event.stop(e);
    },
    encodeURIStr: function(str) {
        var tmpArr = str.split('/');
        for(var i=0;i<tmpArr.length;i++){
            tmpArr[i] = tmpArr[i].ozeinEncode();
        }
        var ret = tmpArr.join('/');
        return ret
    }
}

