/*
 * Fill the price list with chosen pricelist
 */
function fillPriceList(_priceList, _selected) {
	if (!document.getElementById('ps') || !document.getElementById('pe')) return;

	var price_s = document.getElementById('ps');
	var price_e = document.getElementById('pe');
    var Category = document.getElementById("cat").value ? document.getElementById("cat").value : queryString("c");
	// Selected from query string
	if (_selected) {
		price_s_selected = parseInt(queryString("ps"));
		price_e_selected = parseInt(queryString("pe"));
	} else {
		price_s_selected = price_e_selected = "";
	}

	// Reset the select options
	price_s.options.length = 0;
	price_e.options.length = 0;

	// Fill price list
    if (_priceList==2 || _priceList==3){
	if (Category == 33){
		price_s.options[0] = new Option('Affitto sett. min', 0);
		price_e.options[0] = new Option('Affitto sett. max', 0);
	}else if (Category == 7 || Category == 8 || Category == 43 || Category == 29 || Category == 32 ){
		price_s.options[0] = new Option('Affitto mese min', 0);
		price_e.options[0] = new Option('Affitto mese max', 0);
	}else{
		price_s.options[0] = new Option('Affitto min', 0);
		price_e.options[0] = new Option('Affitto max', 0);
	}
    }else if (_priceList==4 || _priceList==5){
        price_s.options[0] = new Option('Euro/gg min', 0);
        price_e.options[0] = new Option('Euro/gg max', 0);
    }else{
        price_s.options[0] = new Option('Prezzo min', 0);
        price_e.options[0] = new Option('Prezzo max', 0);
    }
	for(var i = 0; i < priceList[_priceList].length; i++) {
		// Start array

        if ((i > 0) && (i+1 < priceList[_priceList].length)) {
            price_s.options[i] = new Option(priceList[_priceList][i], i);
            if (price_s_selected == i && price_s_selected != "") {
                price_s.options[i].selected = true;	
            } else {
                price_s.options[i].selected = false;	
            }
        }

		// End array
        if ((i > 0) && (i+1 < priceList[_priceList].length)) {
			price_e.options[i] = new Option(priceList[_priceList][i], i, price_e_selected == i ? true : false);
			if (price_e_selected == i)
				price_e.options[i].selected = true;	
			else
				price_e.options[i].selected = false;	
		}	
	}
}

/*
 * Fill the list with chosen lists
 */
function fillList(_listno, _listname, _selected, _list_start, _list_end) {
    if (!document.getElementById(_list_start) || !document.getElementById(_list_end)) return;

    var list_s = document.getElementById(_list_start);
    var list_e = document.getElementById(_list_end);
    var list = eval(_listname);

    // Selected from query string
    if (_selected) {
        list_s_selected = parseInt(queryString(_list_start));
        list_e_selected = parseInt(queryString(_list_end));
    } else {
        list_s_selected = list_e_selected = "";
    }

    // Reset the select options
    list_s.options.length = 1;
    list_e.options.length = 1;

    // Fill price list
    for(var i = 0; i < list[_listno].length; i++) {
        // Start array
        if ((i>0) && (i+1 < list[_listno].length)) {
            list_s.options[i] = new Option(list[_listno][i], i+1);
            if (list_s_selected == i && list_s_selected != "") {
                list_s.options[i].selected = true;    
            } else {
                list_s.options[i].selected = false;   
            }
        }   
        // End array
        if ((i > 0) && (i+1 < list[_listno].length)) {
            list_e.options[i] = new Option(list[_listno][i], i+1, list_e_selected == i ? true : false);
            if (list_e_selected == i)
                list_e.options[i].selected = true;
            else
                list_e.options[i].selected = false; 
        }   
    }
}

function getAdTypeSelected(){
    result = null;
    if (document.dati.st){
        for (i=0;i<document.dati.st.length;i++){
            if(document.dati.st[i].checked)
                result = document.dati.st[i].value;
        }
    }
    if (result) return result;
    else return getAdTypeFromCaller();
}

/*
 * Fill the adtypes
 */
function genSubTypes(_category, _adtypeId, _displayAll) {
	if (!document.getElementById(_adtypeId)) return;
	var adType = document.getElementById(_adtypeId);
	var inner_html = '';
	
	// If no types
	if (!categoryList[_category] || !categoryList[_category]['type']) return;

	// Selected from query string
	adtype_selected = getAdTypeFromCaller();

	adType.innerHTML = '';
	if (_displayAll) {
			var inner_html = '<input type=radio name=st class="noborder" id="radio_sta" value=a onclick="SearchFeat();ShowHideFeat(this.value);">&nbsp;<label for="radio_sta">' + typeList['a'] + '</label>&nbsp;&nbsp;'; /* Due to bug in Internet explorer 5.2 for OS X */
	}
    if (adtype_selected == -1)
        adtype_selected = 's';	
		
	if (adtype_selected =='s' && _category==33)
		adtype_selected = 'h';
		
	if (adtype_selected =='s' && _category==43)
		adtype_selected = 'u';

	// Type array
	var typeArray = categoryList[_category]['type'].split(",");
	for (var t in typeArray) {
		if (t != 0)
			inner_html += "&nbsp;&nbsp;&nbsp;";

		t = typeArray[t];

		var typeName = typeList[t];

		// Check if category has type with different name
		if (category_params[_category] && category_params[_category][t] && category_params[_category][t]['labels'] && category_params[_category][t]['labels']['type']) { 
			typeName = category_params[_category][t]['labels']['type'];
		}
		inner_html += "<input type=radio name=st class=noborder id=\"radio_st"+t+"\" value='" +t+ "' "+(t==adtype_selected?"checked":"")+" onclick=\"SearchFeat();ShowHideFeat(this.value);\"> <label for=\"radio_st"+t+"\">" + typeName + "</label>";
	}

	adType.innerHTML = inner_html;
	ShowHideFeat(adtype_selected);
}

function ShowHideFeat(_adType){
	var get_selected = false;
    var adType=_adType;
	var reset_values = 1;
	var displayTypes = false;
	var displayTinyLower = false;
	var watch_cmd = document.getElementById("cmd") != null ? true : false;
	var searcharea = document.getElementById('searcharea');
	var i;
	var expanded = false;

    var Category = document.getElementById("cat").value ? document.getElementById("cat").value : queryString("c");
    // Using timeout instead of using setcookie, "rendering flash" fix in ie
    setTimeout("document.cookie='c="+Category+"'", 0);
    setTimeout("document.cookie='features=0'", 0);

	if (categoryHasNonDefaultTypes(Category))
        displayTypes=true;

	if (categoryHasFeature(Category, 'mileage', adType)) {
		if (!reset_values) {
			setFeatureVal('ms');
			setFeatureVal('me');
		}	
		showField('mileage', 'block');
		// TODO Fix this
		if (!displayTinyLower)
			displayTinyLower = true;
		enable_field('ms');
		enable_field('me');
		expanded = true;
	} else {
		setValue('ms', "");
		setValue('me', "");
		disable_field('ms');
		disable_field('me');
		showField('mileage', 'none');
	}
	if (categoryHasFeature(Category, 'regdate', adType)) {
		if (!reset_values) {
			setFeatureVal('rs');
			setFeatureVal('re');
		}
		showField('regdate', 'block');
		if (!displayTinyLower)
			displayTinyLower = true;
		enable_field('rs');
		enable_field('re');
		expanded = true;
	} else {
		setValue('rs', "");
		setValue('re', "");
		disable_field('rs');
		disable_field('re');
		showField('regdate', 'none');
	}

	if (categoryHasFeature(Category, 'gearbox', adType)) {
		if (!reset_values) {
			setFeatureVal('gb');
		}	
		showField('gearbox', 'block');
		showField('gearbox_br','block');
		enable_field('gb');
		expanded = true;
	} else {
		setValue('gb', "");
		disable_field('gb');
		showField('gearbox', 'none');
		showField('gearbox_br','none');
	}

	if (categoryHasFeature(Category, 'phone_type', adType)) {
                if (!reset_values) {
                        setFeatureVal('telefoniatype');
                }
                showField('phone_type', 'block');
                enable_field('telefoniatype');
                expanded = true;
        } else {
                setValue('telefoniatype', "");
                disable_field('telefoniatype');
                showField('phone_type', 'none');
        }


	if (categoryHasFeature(Category, 'bicycle_type', adType)) {
		if (!reset_values) {
			setFeatureVal('bicycletype');
		}	
		showField('bicycle_type', 'block');
		enable_field('bicycletype');
		expanded = true;
	} else {
		setValue('bicycletype', "");
		disable_field('bicycletype');
		showField('bicycle_type', 'none');
	}
	if (categoryHasFeature(Category, 'sport_type', adType)) {
		if (!reset_values) {
			setFeatureVal('sporttype');
		}	
		showField('sport_type', 'block');
		enable_field('sporttype');
		expanded = true;
	} else {
		setValue('sporttype', "");
		disable_field('sporttype');
		showField('sport_type', 'none');
	}
	if (categoryHasFeature(Category, 'ship_type', adType)) {
		if (!reset_values) {
			setFeatureVal('shiptype');
		}	
		showField('ship_type', 'block');
		enable_field('shiptype');
		expanded = true;
	} else {
		setValue('shiptype', "");
		disable_field('shiptype');
		showField('ship_type', 'none');
	}
	if (categoryHasFeature(Category, 'caravan_type', adType)) {
		if (!reset_values) {
			setFeatureVal('caravantype');
		}	
		showField('caravan_type', 'block');
		enable_field('caravantype');
		expanded = true;
	} else {
		setValue('caravantype', "");
		disable_field('caravantype');
		showField('caravan_type', 'none');
	}
	if (categoryHasFeature(Category, 'room_type', adType)) {
		if (!reset_values) {
			setFeatureVal('roomtype');
		}	
		showField('room_type', 'block');
		enable_field('roomtype');
		expanded = true;
	} else {
		setValue('roomtype', "");
		disable_field('roomtype');
		showField('room_type', 'none');
	}
	if (categoryHasFeature(Category, 'gender', adType)) {
		if (!reset_values) {
			setFeatureVal('gndr');
		}	
		showField('gender', 'block');
		enable_field('gndr');
		expanded = true;
	} else {
		setValue('gndr', "");
		disable_field('smkr');
		showField('gender', 'none');
	}

	if (categoryHasFeature(Category, 'smoker', adType)) {
		if (!reset_values) {
			setFeatureVal('smkr');
		}	
		showField('smoker', 'block');
		enable_field('smkr');
		expanded = true;
	} else {
		setValue('smkr', "");
		disable_field('smkr');
		showField('smoker', 'none');
	}

	if (categoryHasFeature(Category, 'fuel', adType)) {
		if (!reset_values) {
			setFeatureVal('fu');
		}	
		showField('fuel', 'block');
		enable_field('fu');
		expanded = true;
	} else {
		setValue('fu', "");
		disable_field('fu');
		showField('fuel', 'none');
	}
	if (categoryHasFeature(Category, 'pollution', adType)) {
		if (!reset_values) {
			setFeatureVal('po');
		}	
		showField('pollution', 'block');
		enable_field('pl');
		expanded = true;
	} else {
		setValue('po', "");
		disable_field('pl');
		showField('pollution', 'none');
	}

	if (categoryHasFeature(Category, 'moto_type', adType)) {
		if (!reset_values) {
			setFeatureVal('mt');
		}	
		showField('moto_type', 'block');
		enable_field('mt');
		expanded = true;
	} else {
		setValue('mt', "");
		disable_field('mt');
		showField('moto_type', 'none');
	}

	if (categoryHasFeature(Category, 'boat_type', adType)) {
		if (!reset_values) {
			setFeatureVal('bt');
		}	
		showField('boat_type', 'block');
		enable_field('bt');
		expanded = true;
	} else {
		setValue('bt', "");
		disable_field('bt');
		showField('boat_type', 'none');
	}

	if (categoryHasFeature(Category, 'animal_type', adType)) {
		if (!reset_values) {
			setFeatureVal('at');
		}	
		showField('animal_type', 'block');
		enable_field('at');
		expanded = true;
	} else {
		setValue('at', "");
		disable_field('at');
		showField('animal_type', 'none');
	}

	if (categoryHasFeature(Category, 'clothing_gender', adType)) {
		if (!reset_values) {
			setFeatureVal('cg');
		}	
		showField('clothing_gender', 'block');
		enable_field('cg');
	} else {
		setValue('cg', "");
		disable_field('cg');
		showField('clothing_gender', 'none');
	}

	if (categoryHasFeature(Category, 'car_type', adType)) {
		if (!reset_values) {
			setFeatureVal('cart');
		}	
		showField('car_type', 'block');
		enable_field('cart');
	} else {
		setValue('cart', "");
		disable_field('cart');
		showField('car_type', 'none');
	}
	if (categoryHasFeature(Category, 'contract_type', adType)) {
		showField('whct_container', 'block');
		showField('contract_type', 'block');
		enable_field('cy');
	} else {
		setValue('cy', "");
		disable_field('cy');
		showField('contract_type', 'none');
		showField('whct_container', 'none');
	}
	if (categoryHasFeature(Category, 'worklevel', adType)) {
		showField('whct_container', 'block');
		showField('worklevel', 'block');
		enable_field('wl');
	} else {
		setValue('wl', "");
		disable_field('wl');
		showField('worklevel', 'none');
		showField('whct_container', 'none');
	}
	if (categoryHasFeature(Category, 'workhours', adType)) {
		showField('whct_container', 'block');
		showField('workhours', 'block');
		enable_field('wh');
	} else {
		setValue('wh', "");
		disable_field('wh');
		showField('workhours', 'none');
		showField('whct_container', 'none');
	}
	if (categoryHasFeature(Category, 'job_categories', adType)) {
		if (!reset_values) {
            //FIXME : 
			//setFeatureVal('jc');
            setJobCategoriesVal();
		}	
        showField('job_categories', 'block');
		enable_fields('jc');
	} else {
		//FIXME : insert loop here.
        //setValues('jc', "");
		disable_fields('jc');
		showField('job_categories', 'none');
	}
    /*town is temporarily disabled 
	if (categoryHasFeature(Category, 'town', adType)) {
        showField('search_town', 'block');
		if (parseInt(searcharea.value) < 100) enable_fields('search_town');
	}
    else {
		disable_fields('search_town');
		showField('search_town', 'none');
    }
    */
	if (categoryHasFeature(Category, 'cubic_capacity', adType)) {
        //rooms is featured among different categories. to have a consistent
        //behav we reset it. anyway
 		disable_field('ccs');
		disable_field('ccs');
		showField('cubic_capacity', 'block');
 		enable_field('ccs');
		enable_field('cce');
	} else {
 		disable_field('ccs');
		disable_field('cce');
		showField('cubic_capacity', 'none');
	}
	if (categoryHasFeature(Category, 'rooms', adType)) {
        //rooms is featured among different categories. to have a consistent
        //behav we reset it. anyway
 		disable_field('ros');
		disable_field('roe');
		showField('rooms', 'block');
 		enable_field('ros');
		enable_field('roe');
	} else {
 		disable_field('ros');
		disable_field('roe');
		showField('rooms', 'none');
	}
	var squareListId = categoryHasSquareList(Category, adType);
	if (typeof(squareListId) == 'string' && categoryHasFeature(Category, 'squarelist', adType)) {
        fillList(squareListId, "squareList", get_selected, "sqs", "sqe");
		if (!reset_values) {
			setFeatureVal('sqs');
			setFeatureVal('sqe');
		}	
		if (!displayTinyLower)
			displayTinyLower = true;
        showField('squarelist', 'block');
        enable_field("sqs");
        enable_field("sqe"); 

		expanded = true;
    } else {
		setValue('sqs', "");
		setValue('sqe', "");
		disable_field('sqs');
		disable_field('sqe');
		showField('squarelist', 'none');
    }

	
	var priceListId = categoryHasPriceList(Category, adType);
	if (typeof(priceListId) == 'string' && categoryHasFeature(Category, 'pricelist', adType)) {
		fillPriceList(priceListId, get_selected);
		if (!reset_values) {
			setFeatureVal('ps');
			setFeatureVal('pe');
		}	
		showField('pricelist', 'block');
		if (!displayTinyLower)
			displayTinyLower = true;
		enable_field('ps');
		enable_field('pe');
		expanded = true;
	} else {
		setValue('ps', "");
		setValue('pe', "");
		disable_field('ps');
		disable_field('pe');
		showField('pricelist', 'none');
	}
	
	var lengthListId = categoryHasLengthList(Category, adType);
	if (typeof(lengthListId) == 'string' && categoryHasFeature(Category, 'lengthlist', adType)) {
        fillList(lengthListId, "lengthList", get_selected, "lns", "lne");
		if (!reset_values) {
			setFeatureVal('lns');
			setFeatureVal('lne');
		}	
		if (!displayTinyLower)
			displayTinyLower = true;
        showField('lengthlist', 'block');
        enable_field("lns");
        enable_field("lne"); 

		expanded = true;
    } else {
		setValue('lns', "");
		setValue('lne', "");
		disable_field('lns');
		disable_field('lne');
		showField('lengthlist', 'none');
    }
	
}

/*
 * Show/hide searchextras
 */
function SearchCrit(_checkCat) {
	/* Get selected values only if same category as in query string or called _checkCat */
	var get_selected = (_checkCat || queryString("c") == document.getElementById("cat").value) ? true : false;
    var adType = getAdTypeFromCaller();
	var reset_values = 0;
	var displayTypes = false;
	var displayTinyLower = false;
	var watch_cmd = document.getElementById("cmd") != null ? true : false;
	var i;

	// TODO FIX THIS
	var agt=navigator.userAgent.toLowerCase();
	var is_major = parseInt(navigator.appVersion);
	var is_ie     = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
	var is_ie5 = (is_ie && (is_major == 4) && (agt.indexOf("msie 5.0")!=-1) );

	if (!_checkCat) {
		var Category = document.getElementById("cat").value ? document.getElementById("cat").value : queryString("c");
		// Using timeout instead of using setcookie, "rendering flash" fix in ie
		setTimeout("document.cookie='c="+Category+"'", 0);
		setTimeout("document.cookie='features=0'", 0);
		reset_values = 1;
	} else {
		var Category = (_checkCat > 0 || queryString("c") < 0) ? _checkCat : queryString("c");
		document.getElementById("cat").value = Category;
	}

	// TODO
	if (categoryHasNonDefaultTypes(Category))
		displayTypes = true;

    ShowHideFeat(adType);

    if (categoryHasNonDefaultTypes(Category) || watch_cmd) {
		genSubTypes(Category, "subtypes", displayTypes);
		if (!reset_values) {
			setRadioVal();
		}	
		showField('subtypes', 'block');
	} else {
		showField('subtypes', 'none', '');
	}


	if (document.getElementById("cat_warning")) {
		var warningMessage = categoryHasWarning(Category, 'cat_warning');
		if (warningMessage && !watch_cmd) {
			document.getElementById("cat_warning").innerHTML = warningMessage;
			showField('cat_warning', 'block');
			showField('subtypes', 'none');
		} else {
			showField('cat_warning', 'none');
		}
	}	
    ShowHideIntown();
    //When selecting "Home in Foreign countries" category, set "All Italy" in searcharea field
   
        
}
/*
 * Save extra features in cookie
 */

function SearchFeat() {
	var checkedButton = "";
	var searchfeatures = Array();

	searchfeatures[0] = "ps";
	searchfeatures[1] = "pe";
	searchfeatures[2] = "ms";
	searchfeatures[3] = "me";
	searchfeatures[4] = "rs";
	searchfeatures[5] = "re";
	searchfeatures[6] = "lns";
	searchfeatures[7] = "lne";
	
	var feat_str = "";
	
	for (var i = 0; i < searchfeatures.length; i++) {
		feat_str += searchfeatures[i] + ":" + document.getElementById(searchfeatures[i]).value + "&";
	}
	
	if (document.dati.st) {
		for (var j = 0; j < document.dati.st.length; j++) {
			if (document.dati.st[j].checked == "1") {
				checkedButton=document.dati.st[j].value;
	       	 	}
		}
		if (checkedButton) {
			feat_str += "st:" + checkedButton;
		}	
	}	

	setTimeout("document.cookie='features="+feat_str+"'", 0);
}

/*
 * Set category cookie, used by searchbox and reset the searchbox feature cookie
 */ 
function clearSearch(_category) {
	setCookie('c', _category);
	setCookie('features', '0');
}	


//ajax function to handle dynamic town menu
function TownsAjaxFunction(select) {
    var xmlHttp;
    try {
        // Firefox, Opera 8.0+, Safari
        xmlHttp=new XMLHttpRequest();
    }
    catch (e) {
        // Internet Explorer
        try {
            xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (e) {
            try {
                xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch (e) {
                alert("Your browser does not support AJAX!");
                return false;
            }
        }
    }
    //setup the action to be performed when the response arrives
    xmlHttp.onreadystatechange=function() {
        if(xmlHttp.readyState==4) {
            //the "towns" string is defined in the txt we get.
            //this replace is to avoid mess with html comments always appended to template output
            towns = xmlHttp.responseText.replace(/<.*>/g,"")
            towns = towns.split('~');
            towns.sort();
            populateTowns(towns,select);
        }
    }
    return xmlHttp;
}
function selectTown(town_id) {
    /*
    select = document.f.search_town;
    for (i=0;i<select.options.length;i++)
        if (select.options[i].value == town_id) {
            select.options[i].selected = true;
            break;
        }
    */
}




function launch_search(){
  try{
    url ="";
    qs =""
    path="/";
    searchparams = document.dati.elements;
    region="11";
    where="0";
    category="";
    type="s";
    subtype="";
    layout="";
    for (i=0;i<searchparams.length;i++){
      param = searchparams[i];
      name = "";
      value = "";
      if (!param.disabled){
        if ((param.type=='checkbox' || param.type=='radio') && param.checked){
          name = param.name;
          value = param.value;
        }else if (param.type=='text' || param.type=='hidden'){
          name = param.name;
          value = param.value;
        }else if (param.type=='select-one'){
          name = param.name;
          value = param.options[param.selectedIndex].value;
        }
        switch (name){
          case "ca": ca = value.split(/_/g);
                     if (ca){
                       region = ca[0];
                       type = ca[1];
                     }
                     break;
          case "l": layout = value;break;
          case "c": category = value;break;
          case "st": subtype = value;break;
          default: if (value) qs = qs + "&" + name + "=" + encodeURIComponent(value);
        }
      }
    }
    path = path + region_friendly[region];
    if (where=="2")
      path = path + "-vicino";
    else if (where=="3")
      path = path + "-italia";

    if (category==0){
      path = path + "/" + type_friendly[type];
    }else{
      category_types = categoryList[category].type;
      selected_type = subtype ? subtype : type
      if (category_types && (selected_type!='a') && category_types.indexOf(selected_type)==-1){
        array_types = category_types.split(",");
        selected_type=array_types[0];
      }else if(!category_types){
        selected_type='a';
      }
      path = path + "/" + type_friendly[selected_type];
    }
    if (category==0){
      path = path + "/usato";
    }else{
      path = path + "/" + category_friendly[category];
    }
    if (where>3)
      if (where<100)
        path = path + "/" + city_friendly[region][where-3];
      else
        path = path + "/" + region_friendly[where-100];
    path = path + "/";
    if (qs!=""){
      qs = qs.substring(1);
      url = path + "?" + qs;
    }else
      url = path;

    window.location.href = url;
    return false;
  }catch(e){return true;}
}

