
function changeSearchType(value) {
    if (value == "extendedSearch") {
        document.getElementById("extendedSearch").style.display = "";
        document.getElementById("searchTypeSpan").style.display = "none";
        document.getElementById("searchType").value = "extendedSearch";
    } else {
        document.getElementById("extendedSearch").style.display = "none";
        document.getElementById("searchTypeSpan").style.display = "";
        document.getElementById("searchType").value = "simpleSearch";
    }
}

function changeDisable(formid, elemname, disable) {
    var form  = document.getElementById(formid);
    if (form == null) {
        return;
    }
    form.elements[elemname].disabled = disable;
}

function checkSelectBox(formid, selectBox, checkBox) {
    var allChecked = true;
    for (var i=0; i < selectBox.options.length;i++) {
        if (!selectBox.options[i].selected) {
            allChecked = false;
            break;
        }
    }
    var form  = document.getElementById(formid);
    if (form == null) {
        return;
    }
    form.elements[checkBox].checked = allChecked;
}

function selectAll(formid, checkBox, selector) {
    var form  = document.getElementById(formid);
    if (form == null) {
        return;
    }
    for (var i=0; i < form.elements[selector].options.length;i++){
        form.elements[selector].options[i].selected = checkBox.checked;
    }
}

function dtpicker_onUpdate1(cal) {
    dtpicker_newDate = cal.date;
    var selected = cal.date;
    if(selected.getDate()<10){
        document.getElementById("from_day").value = "0" + selected.getDate();
    } else {
        document.getElementById("from_day").value = selected.getDate();
    }    
    document.getElementById("from_month").selectedIndex = selected.getMonth()+1;    
    document.getElementById("from_year").value = selected.getFullYear();
}

function dtpicker_onUpdate2(cal) {
    dtpicker_newDate = cal.date;
    var selected = cal.date;
    if(selected.getDate()<10){
        document.getElementById("to_day").value = "0" + selected.getDate();
    } else {
        document.getElementById("to_day").value = selected.getDate();
    }    
    document.getElementById("to_month").selectedIndex = selected.getMonth()+1;    
    document.getElementById("to_year").value = selected.getFullYear();
}

function toggleMixinDisplay(mixin) {
    var mixinTr = document.getElementById(mixin);
    var childs = mixinTr.parentNode.childNodes;
    for (var i = 0; i < childs.length; i++) {
        if (childs[i].nodeName == 'TR') {
            if (childs[i].getAttribute("mixintype") == mixin) {
                if (childs[i].style.display == 'none') {
                    childs[i].style.display = '';
                } else {
                    childs[i].style.display = 'none';
                }
            }
        }
    }
}

function sorter(params) {
    pager(params);
}

function pager(params) {
    var form = $('search_form');
    var obj = params.toQueryParams();
    if (obj['searchList_page']) {
        form['page'].value = obj['searchList_page'];
    } else {
        form['page'].value = "1";
    }
    if (obj['searchList_sort']) {
        form['sort'].value = obj['searchList_sort'];
    } else {
        form['sort'].value = "";
    }
    if (obj['searchList_order']) {
        form['order'].value = obj['searchList_order'];
    } else {
        form['order'].value = "asc";
    }
    sendSearchForm(form.action, true);
}

function customSearchParameter(params) {
	//default do nothing
}

function sendSearchForm(url, currentSearch, servertime) {

    if (currentSearch==null) {
        currentSearch = false;
    }
    
    var SearchHelper = Class.create();
    SearchHelper.prototype = {
        initialize: function() {
        },
        setMixintypeFilter : function() {
            var form = $('search_form');
            var types = "";
            for (var i = 0; i < form.length; i++) {
                var e = form.elements[i];
                if (e.getAttribute('mixin') == 'true') {
                    if (e.type == 'radio') {
                        if (e.checked && e.value != 'null') {
                            if (types != '') {
                                types += ",";
                            }
                            types += e.name;
                        }
                    } else if (e.value != '') {
                        if (types != '') {
                          types += ",";
                        }
                        types += e.name;
                    }
                }
            }
            form['propertyTypes'].value = types;
        },
        setPage: function(currentSearch) {
            var form = $('search_form');
            if (currentSearch==false) {
               //default values
               form['page'].value = '1';
               form['sort'].value = '';
               form['order'].value = 'asc';
            }
            form['searchList_rows'].value = form['rows'].value;
            form['searchList_page'].value = form['page'].value;
            form['searchList_sort'].value = form['sort'].value;
            form['searchList_order'].value = form['order'].value;         
        },
        setFilterDate: function(time) {                        
            var form = $('search_form');                                         
            var field = Form.getInputs('search_form','radio','periodtype').find(function(radio) { return radio.checked; }).value;            
            
            var currentdate = (time != null)? new Date(time) : new Date(); 
            form['modifiedFrom'].value = "19700101//00000000";
            form['modifiedTo'].value = currentdate.getFullYear() + (((currentdate.getMonth() + 1) < 10)? "0" : "") + (currentdate.getMonth() + 1) + ((currentdate.getDate() < 10)? "0" : "") + currentdate.getDate() + "//23595900";
            form['createdFrom'].value = "19700101//00000000";
            form['createdTo'].value = currentdate.getFullYear() + (((currentdate.getMonth() + 1) < 10)? "0" : "") + (currentdate.getMonth() + 1) + ((currentdate.getDate() < 10)? "0" : "") + currentdate.getDate() + "//23595900";
            if(!$F(form['since_value']).empty() && !$F(form['since_type']).empty()) {  
               switch (form['since_type'].value) {
                  case "5": // Calendar.DATE
                     currentdate.setDate(currentdate.getDate()-(parseInt($F(form['since_value']), 10)));
                     break;
                  case "2": // Calendar.MONTH
                     currentdate.setMonth(currentdate.getMonth()-(parseInt($F(form['since_value']), 10)));
                     break;
                  case "1": // Calendar.YEAR
                     currentdate.setYear(currentdate.getFullYear()-(parseInt($F(form['since_value']), 10)));
                     break;                     
               }
               form[field + 'From'].value = currentdate.getFullYear() + (((currentdate.getMonth() + 1) < 10)? "0" : "") + (currentdate.getMonth() + 1) + ((currentdate.getDate() < 10)? "0" : "") + currentdate.getDate() + "//00000000";
            } else {
                if (!$F(form['from_year']).empty() && form['from_month'].value != "-1" && !$F(form['from_day']).empty()) {                	
                    var month = (parseInt($F(form['from_month']), 10) + 1);
                    var day = $F(form['from_day']);                 
                    form[field  + 'From'].value = $F(form['from_year']) + ((month < 10)? "0" : "") + month + ((day.length < 2)? "0" : "") + day + "//00000000";
                }
                if (!$F(form['to_year']).empty() && form['to_month'].value != "-1" && !$F(form['to_day']).empty()) {                	
                	var month = (parseInt($F(form['to_month']), 10) + 1);                  
                    var day = $F(form['to_day']);
                    form[field  + 'To'].value = $F(form['to_year']) + ((month < 10)? "0" : "") + month + ((day.length < 2)? "0" : "") + day + "//23595900";
                }
            }
        },
        searchSent: function(url) {
        	var searchParameters = $('search_form').serialize(true);
        	var form = $('search_form');
        	customSearchParameter(searchParameters);
        	var req = new Ajax.Request(url, {
                method: 'post',
                parameters: searchParameters,
                onComplete: function(transport) {
                    if (transport.status == 200) {
                        $('searchError').update("");
                        var text = transport.responseText;
                        var v1 = text.indexOf('%%viewSecurityTokenStart%%');
	                    var v2 = text.indexOf('%%viewSecurityTokenEnd%%');
	                    if (v1>=0 && v1<v2) {
	                    	v2 += '%%viewSecurityTokenEnd%%'.length;
	                        form['viewSecurityToken'] = data.substring(v1,v2);
	                        data = data.substr(v2);
	                    }
                        $('searchResult').update(text);
                    } else {
                    	var text = transport.responseText;
                        var v1 = text.indexOf('<!--%%viewSecurityTokenStart%%');
                        var v2 = text.indexOf('%%viewSecurityTokenEnd%%-->');
                        if (v1>=0 && v1<v2) {
                        	v2 += '%%viewSecurityTokenEnd%%-->'.length;
                        	form['viewSecurityToken'] = text.substring(v1,v2);
                        	text = text.substr(v2);
                        	$('searchError').update(text);
							$('searchResult').update("");
                        } else {
							document.open('text/html', 'replace');
							document.write(text);
							document.close();
                        }
                    }
                }
            });
        }
    }
    var searchHelper = new SearchHelper();
    searchHelper.setPage(currentSearch);
    searchHelper.setFilterDate(servertime);
    searchHelper.setMixintypeFilter();
    searchHelper.searchSent(url);
    return false;
}

