var _search = { criteria: { mark: '', model: '', energy: '', gearbox: '', pricemin: '', pricemax: '', body: '' }, url: '', Init: function() { for(var n_criterion in this.criteria) { this.criteria[n_criterion] = document.getElementById(n_criterion) ? document.getElementById(n_criterion).value : ''; } }, Serialize: function() { var l_arr = new Array(); for(var n_criterion in this.criteria) { if (this.criteria[n_criterion] != '') { l_arr.push(n_criterion + '=' + this.criteria[n_criterion]); } } return l_arr.join('&'); }, Update: function(i_strCriterion, i_idxCriterion) { switch(i_strCriterion) { case 'mark': this.criteria[i_strCriterion] = i_idxCriterion; if (i_idxCriterion.toString() != this.criteria[i_strCriterion].toString()) { this.criteria['model'] = ''; } break; default: this.criteria[i_strCriterion] = i_idxCriterion; } $('#search_maincontainer').load( this.url, this.criteria, function(){ _index.UpdateSelects(); } ); }, Urlize: function() { var l_arr = new Array(); for(var n_criterion in this.criteria) { l_arr.push(this.criteria[n_criterion]); } return l_arr.join('-'); }, Submit: function() { var l_url = '/multicriteres-'; window.parent.location = l_url + this.Urlize(); } }; _search.Init();