var cat_id;

function form_key_lookup(key, sel_id) {
	sel_id = sel_id ? sel_id : '';

	if (key == 'type') {
		var selectType = document.getElementById("type" + sel_id);

		if (selectType && selectType.tagName != 'SELECT') /* IE fix */
			selectType = false;

		if (selectType) {
			return selectType.value;
		} else {
			var cont = document.getElementById("type_container" + sel_id);
			var inputs = cont.getElementsByTagName('INPUT');

			for (var idx = 0; idx < inputs.length; idx++) {
				if (inputs[idx].type == 'radio' && inputs[idx].checked)
					return inputs[idx].value;
			}
			return 's';
		}
	}

	category_group = document.getElementById("category_group" + sel_id);

	var sub_cat = document.getElementById("sub_category" + sel_id);
	var cat_id_elem = document.getElementById("cat_id");

	if (cat_id_elem && cat_id_elem.value != 0)
		cat_id = cat_id_elem.value;
	else if (sub_cat && sub_cat.style && sub_cat.style.display != 'none' && sub_cat.value != 0 && category_list[sub_cat.value].parent == category_group.value)
		cat_id = sub_cat.value;
	else
		cat_id = category_group.value;

	if (key == "category") 
		return cat_id;
	
    if (key == "parent" && category_list[cat_id])
		return category_list[cat_id]['parent'];

	if (key == "has_store") {
		var store_row = document.getElementById('store_row');
		var res;

		if (store_row)
			res = store_row.style.display != 'none';
		else
			res = document.getElementById('store_holder') != null;
		if (res)
			return 1;
		else
			return 0;
	}

	var elem = document.getElementById(key + sel_id);
	if (elem) {
		return elem.value;
	}
}

function show_category_types(e, args) {
	var sel_id = this.getAttribute("sel_id");
	var selectType = document.getElementById("type" + sel_id);
	var selected;

	/* Don't display type radio buttons when editing an old category ad */
	if (selectType && selectType.type == 'hidden')
		return 0;

	if (selectType && selectType.tagName != 'SELECT')
		selectType = false;

	/* Get the selected type */
	if (selectType) {
		for (i = 0; i < selectType.options.length; i++) {
			if (selectType[i].selected) {
				selected = selectType[i].value;
                        }
		}
	}
     
        var types = get_settings('types', form_key_lookup, category_settings, sel_id);
	var type = types.split(',');
        
	typeList['s'] = ( cat_id == 7020 ? "Offer" : "For sale" );
        typeList['k'] = ( cat_id == 7020 ? "Jobseeker" : "Wanted" );
        
	if (!selectType) {
		for (var t in type) {
			var radio = document.getElementById("r" + type[t] + sel_id);
			if (radio && radio.checked) {
				selected = type[t];
				break;
			}
		}
	}

	/* Store new type options for this category */
	if (selectType) {
                /* Controlpanel Adqueue path */ 
		selectType.options.length = 1;
		for (i = 0; i < type.length; i++) {
			selectType.options[i+1] = new Option(typeList[type[i]], type[i]);
			
			if (selected == type[i])
				selectType.options[i+1].selected = true;
		}

                //alert( "cat: " + cat_id + ", sel_id: " + sel_id );

                if ( company_available_categories.toString().indexOf( cat_id ) !== -1 ) {
                	//alert( "company available for category: " + cat_id );
                        document.getElementById( "company_ad_1_" + sel_id ).disabled = "";
                        //document.getElementById( "company_ad_warning_" + sel_id ).style.display = "none";
                }
                else {
			//alert( "company not available for category: " + cat_id );
                        document.getElementById( "company_ad_1_" + sel_id ).disabled = "disabled";
                        document.getElementById( "company_ad_0_" + sel_id ).checked = "checked";                        
                }

	} else {
		/* Don't try to optimize this code, it wont work for older ie if you do! */
                /* Insert Ad path */
		var cont = document.getElementById("type_container" + sel_id);

		cont.innerHTML = '';

		if (type.length > 1) {
			var inner_html = ''; 

			for (var i in type) {
				var t = type[i];
				
				if (inner_html != "")                                    
					inner_html += "&nbsp;";
                                
				inner_html += '<input name="type" value="' + t + '" ' + ((t == "s" || (!isInArray("s", type) && t == "u")) ? 'checked="checked"' : '') + ' id="r' + t + sel_id + '" type="radio" sel_id="' + sel_id + '"> <label for="r' + t + sel_id + '">' + typeList[t] + '</label>&nbsp;';
			}

			cont.innerHTML = inner_html;
		}

		register_events(jsevents.ai, document);

		if (selected) { 
			setChecked("r" + selected + sel_id, true);
		}
	}
}

function set_category_changed() {
	var sel_id = this.getAttribute("sel_id");
	var selectType = document.getElementById("type" + sel_id);

	if (document.getElementById('category_changed' + sel_id)) {
		var cat_id = form_key_lookup('category', sel_id);
		document.getElementById('category_changed' + sel_id).value = (cat_id != document.getElementById('original_category' + sel_id).value) ? '1' : '0';
	}
}

function show_sub_category(e, args) {
	var sel_id = this.getAttribute("sel_id");
	var category_group = document.getElementById("category_group" + sel_id);
	var sub_cat = document.getElementById("sub_category" + sel_id);

	var par_id = category_group.value;

	var sub_cats = Array();
	if (category_list[par_id] && category_list[par_id]['level'] > 0) {
		for (var c in category_list) {
			if (category_list[c]['parent'] == par_id)
				sub_cats[sub_cats.length] = c;
		}
	}

	if (sub_cats.length > 0) {
		sub_cat.options.length = 1;
		for (var i = 0; i < sub_cats.length; i++) {
			var cat_id = sub_cats[i];
			var name = category_list[cat_id]['name'];
			if (args && args.noprice) {
				var price = split_setting(get_settings('price', 
							 function (key) {
								 if (key == "category")
									 return cat_id;
								 if (key == "parent" && category_list[cat_id])
									 return category_list[cat_id]['parent'];
							 },
							 category_settings));
				
				if (price)
					name += " \xA0 " + price.price + " kr"; /* XXX kr? */
			}
			sub_cat.options[i + 1] = new Option(name, sub_cats[i]);
		}
		sub_cat.style.display = 'block';
		sub_cat.disabled = false;
	} else {
		sub_cat.style.display = 'none';
		sub_cat.disabled = true;
	}
}

function category_select_all() {
	var target=document.getElementById('category_group');
        var selindex = 0;
        var defval = target.value;
        target.selectedIndex = 0;

	for (var i=0;i<target.options.length;i++) {
		var opt=target.options[i];
		opt.disabled=false;
		opt.style.display="block";
		opt.style.color="black";
                if ( defval == opt.value ) {
                    selindex = i;
                }
	}
        
        target.selectedIndex = selindex; 
}

function category_select_company(e, args) {
        var target=document.getElementById('category_group');
        var selindex = 0;
        var defval = target.value;
        var cat_array = args.is_store == 1 ? store_available_categories : company_available_categories;
        category_select_all();

        for (var i=0;i<target.options.length;i++) {
                var opt=target.options[i];
                opt.style.color="gray";
                opt.style.display="none";
                opt.disabled=true;

                for (var j=0;j<cat_array.length;j+=1) {
                        if (cat_array[j]==opt.value) {
                                opt.style.color="black";
                                opt.style.display="block";
                                opt.disabled=false;

                                if ( defval == opt.value ) {
                                    selindex = i;
                                }

                                break;
                        }
                }
        }

        target.selectedIndex = selindex;
}
