

function filter_get_string() {
	var r = '';
	for ( var i in filterArray ) {
		var t = typeof(filterArray[i]);
		if ( t != 'object' && t != 'function' ) {
			if ( typeof(filterArray[i]) == 'boolean' ) {
				r += '&&' + i + '||' + ( filterArray[i] ? 1 : 0 );
			} else {
				r += '&&' + i + '||' + filterArray[i];
			}
		}
	}
	return r.substr(2);
}

function filter_set_value(key, val) {
	filterArray[key] = val;
}

function filter_remove_value(key) {
	filterArray = ac_array_remove(key, filterArray);
}




/*
function showUploadFiles() {
	var show = $('uploadBox').className == 'ac_hidden';
	ac_dom_toggle_class('uploadBox', 'ac_block', 'ac_hidden');
	if ( show ) {
		$('browseBox').className = 'ac_hidden';
		$('bookmarkBox').className = 'ac_hidden';
		//
	} else {
		$('browseBox').className = 'ac_block';
		$('bookmarkBox').className = 'ac_hidden';
	}
//	ac_dom_toggle_class('browseBox', 'ac_block', 'ac_hidden');
//	$('bookmarkBox').className = 'ac_hidden';
	return false;
}

function doUploadFiles() {
	var allBlank = true;
	var path = $('currentpath').value;
	var holderObj = $('uploadBoxHolder');
	var inputs = holderObj.getElementsByTagName('input');
	var remove = new Array();
    for ( var i = 0; i < inputs.length; i++ ) {
        if ( inputs[i].type == 'file' ) {
		    if ( inputs[i].value != '' ) {
				allBlank = false;
			} else {
				// remove node
				remove[remove.length] = inputs[i].parentNode.parentNode.parentNode.parentNode.parentNode.parentNode;
			}
    	}
    }
	if ( allBlank ) {
		alert(jsMustUploadAtLeastOneFile);
		return false;
	}
	for ( var i = 0; i < remove.length; i++ ) {
		remove_element(remove[i]);
	}
	//displayIt('processing');
	//showUploadFiles();
	return true;
}

function addUploadFile(holderObj) {
    var newinput = holderObj.getElementsByTagName('input');
    for ( var i = 0; i < newinput.length; i++ ) {
        if ( newinput[i].type == 'file' && newinput[i].value == '' ) return;
    }
    // if we reached this point, then there are no empty file slots, so add one
    clone_1st_div(holderObj);
}
*/



function setIcon(ico) {
	$('iconField').value = ico;
	var box = $('iconSelect');
	var icons = box.getElementsByTagName('a');
	for ( var i = 0; i < icons.length; i++ ) {
		icons[i].className = ( ico == icons[i].title ? 'ac_icon_selected' : '' );
	}
	return false;
}




function setSafeTitle(title) {
	// if safe title is already set, don't change it
	if ( $('stringidField').value != '' ) return;
	// no safe title set, try to convert title
	$('stringidField').value = ac_str_urlsafe(title);
}



function jump(url) {
	ac_loader_show();
	window.location = url;
}








/*
	DOM
*/

// in selects with optgroups it adds/edits/removes elements (updates after those actions)
function manage_groupped_list(list, group, action, id, title, descript) {
	var rel = list.getElementsByTagName('optgroup');
	for ( var i = 0; i < rel.length; i++ ) {
		if ( rel[i].label == group ) {
			return manage_list(rel[i], action, id, title, descript);
		}
	}
	// if action is add, and group doesn't exist, add group
	if ( action == 'add' ) {
		if ( rel.length == 0 ) {
			list.innerHTML += '<optgroup label="' + ac_str_htmlescape(group) + '"><option value="' + id + '" title="' + ac_str_htmlescape(descript) + '">' + title + '</option></optgroup>';
		} else {
			var el = clone_1st_element(list, 'optgroup', false);
			el.label = group;
			el.innerHTML = '<option value="' + id + '" title="' + ac_str_htmlescape(descript) + '">' + ac_str_htmlescape(title) + '</option>';
		}
		return;
	}
	return manage_list(list, action, id, title, descript);
}

// in selects without optgroups it adds/edits/removes elements (updates after those actions)
function manage_list(list, action, id, title, descript) {
	if ( action == 'add' ) {
		// ADD TO LIST
		// if we passed a group node ("groupped" function ensures that), then it will be added to that group
		var el = clone_1st_element(list, 'option', false);
		el.value = id;
		el.title = descript;
		el.innerHTML = ac_str_htmlescape(title);
		//el.selected = false;
	} else {
		// edit and delete gotta find it first
		var options = list.getElementsByTagName('option');
		for ( var i = 0; i < options.length; i++ ) {
			if ( options[i].value == id ) {
				if ( action == 'edit' ) {
					// MODIFY IN LIST
					options[i].title = descript;
					options[i].innerHTML = ac_str_htmlescape(title);
				} else if ( action == 'delete' ) {
					// REMOVE FROM LIST
					// get his parent
					var daddy = options[i].parentNode;
					// kill this node
					daddy.removeChild(options[i]);
					// if it was member of a group
					if ( daddy.nodeName.toLowerCase() == 'optgroup' ) {
						// if the only one
						if ( daddy.getElementsByTagName('option').length == 0 ) {
							// kill entire group
							daddy.parentNode.removeChild(daddy);
						}
					}
				}
				break;
			}
		}
	}
}




/*
    CLONER FUNCTIONS
*/

function clone_1st_element (node, elem, clearInputs) {
	return ac_dom_clone_node (node, elem, 0, clearInputs);
}

function clone_1st_div (node) {
    return clone_1st_element (node, 'div', true);
}

function clone_1st_tr (node) {
    return clone_1st_element (node, 'tr', false);
}

function clear_inputs (node)
{
    var newinput = node.getElementsByTagName ('input');
    for (var i=0; i<newinput.length; i++) {
        if (newinput[i].type == 'text' || newinput[i].type == 'file') newinput[i].value = '';
    }
}

function clear_areas (node)
{
    var newinput = node.getElementsByTagName ('textarea');
    for (var i=0; i<newinput.length; i++) {
        newinput[i].innerHTML = '';
    }
}
function remove_element (node)
{
    var papa = node;
    var divs = node.parentNode.getElementsByTagName ('div');
    var subDivs = 0;
    for ( var i = 0; i < divs.length; i++ ) {
   		// is directly underneath, count it
    	if ( divs[i].parentNode == node.parentNode ) {
    		subDivs++;
    	}
    }
    if (subDivs > 1)
    {
        node.parentNode.removeChild (node);
    }
    else
    {
	    var newinput = node.getElementsByTagName ('input');
	    for (var i=0; i<newinput.length; i++) {
	        if (newinput[i].type == 'text' || newinput[i].type == 'file') newinput[i].value = '';
	    }
    }
}
/*
    CLONER END
*/










function update_custom_fields() {
    somethingChanged = true;
    var categories = [];
    var options = $('parentsList').getElementsByTagName('option');
    for ( var i = 0; i < options.length; i++ ) {
    	if ( options[i].selected ) categories.push(options[i].value);
    }
    ac_ajax_call_cb('api.php', 'category_field_update', update_custom_fields_callback, manageID, categories.join('-'));
}

function update_custom_fields_callback(xml, txt) {
	var rel = $('custom_fields_table');
	var ary = ac_dom_read_node(xml, null);
	ac_dom_remove_children(rel);
	var total = 0;
	var visible = 0;
	if ( ary.row ) {
		for ( var i = 0; i < ary.row.length; i++ ) {
			var row = ary.row[i];
			var node = ac_custom_fields_cons(row);
			if ( parseInt(row.type, 10) != 6 ) {
				rel.appendChild(Builder.node(
					"tr",
					[
						Builder.node("td", { width: "75" }, [ Builder._text(ac_custom_fields_title(row)) ]),
						Builder.node("td", [ node ])
					]
				));
			} else {
				rel.appendChild(Builder.node(
					"tr",
					[
						Builder.node("td", [ Builder._text(" ") ]),
						Builder.node("td", [ node ])
					]
				));
			}
			total++;
			if ( parseInt(row.type, 10) != 6 ) visible++;
		}
	}
	if ( visible > 0 ) {
		$('articleFieldsBoxWrap').className = 'h2_wrap';
	} else {
		$('articleFieldsBoxWrap').className = 'ac_hidden';
	}
}


function toggleEditor(id, action, flips) {
	if ( action == ac_editor_is(id + 'Editor') ) return false;
	ac_editor_toggle(id + 'Editor');
	$(id + 'EditorLinkOn').className  = ( action ? 'currenttab' : 'othertab' );
	$(id + 'EditorLinkOff').className = ( !action ? 'currenttab' : 'othertab' );
	$(id + 'EditorLinkDefault').className = ( ( action != ( ac_js_admin.htmleditor == 1 ) ) ? 'notatab' : 'disabledtab' );
	if ( !$(id + 'Editor') )tmpEditorContent = ac_form_value_get($(id + 'Editor')); else // heavy hack!!!
	tmpEditorContent = ac_form_value_get($(id + 'Editor'));
	return false;
}

function setDefaultEditor(id) {
	var isEditor = ac_editor_is(id + 'Editor');
	if ( isEditor == ( ac_js_admin.htmleditor == 1 ) ) return false;
	// send save command
	// save new admin limit remotelly
	ac_ajax_call_cb('api.php', 'users.user_update_value', null, 'htmleditor', ( isEditor ? 1 : 0 ));
	$(id + 'EditorLinkDefault').className = 'disabledtab';
	ac_js_admin.htmleditor = ( isEditor ? 1 : 0 );
	return false;
}

// not used...
function editorContentChanged(inst) {
	tmpEditorContent = inst.getContent();
	somethingChanged = true;
}


/*
	SITE EXPLORER
*/

function browseCategory(obj, id) {
	// flip plus/minus img
	obj.src = ( obj.src.match(/minus/) ? obj.src.replace(/minus/, 'plus') : obj.src.replace(/plus/, 'minus') );
	ac_dom_toggle_class('children4idCat' + id, 'ac_hidden', 'ac_block');
	//setCookie(id, $('children4idCat' + id).className);
	return false;
}

function category_update_explorer(templateFolder) {
    ac_ajax_call_cb(
    	apipath,
    	'categories.category_update_explorer',
    	function (xml) {
			var ary = ac_dom_read_node(xml, null);
			if ( ary.data ) $('kbExplorer').innerHTML = ary.data;
    	},
    	templateFolder
    );
}

