var rollovers = [];

function detectJs(test_object) {
	document.getElementById(test_object).value = 1;
}

function initRollover(object, per_column, def_id) {
	var data = getSourceData(object, def_id);
	initLayer(object, per_column, def_id, data['value']);
	init_value = data['value'];
	var rows = loadData(object, data, def_id, per_column);

    //highlightItems(object, data, def_id);

//	resizeLayer(object, rows, per_column);
	//attachMyEvent(document.getElementById(object + '_layer'), 'click', function(event) {  event.cancelBubble = true; }, false);
//	addRollover(object);
}

function addRollover(object) {
	rollovers[rollovers.length] = object;
}

function getSourceData(object, def_id) {
	var source_element = document.getElementById(object);
	var data_array = {};
	var selected_array = [];
	var selected_value_array = [];
	var id_array = def_id.split(',');
	for (var i = 1; i < source_element.options.length; i ++) {
		data_array[source_element.options[i].value] = [source_element.options[i].text];
		if (in_array(source_element.options[i].value, id_array)) {
			selected_value_array[selected_value_array.length] = source_element.options[i].text;
		}
	}
	selected_value = (selected_value_array.length) ? selected_value_array.join(', ') : 'Любой';
	return {'content' : data_array, 'value' : selected_value};
}

function initLayer(object, per_column, def_id, def_value) {
	var name = document.getElementById(object).name;

	var output =
	 '<div class="relative"><div class="multiselect" id="' + object + '_box" onMouseOver="this.className=\'multiselect_hover\'" onMouseOut="this.className=\'multiselect\'" onClick="toggleBlock(\'' + object + '\', ' + per_column + ')">' + "\n"  +
	 '   <div class="wrapper">'  + "\n"  +
	 '      <div id="' + object + '_input" class="wrapper_2">' + def_value + '</div>' + "\n"  +
	 '	 </div><input name="' + name + '_multi" id="' + object + '_hidden" type="hidden" value="' + def_id + '">'+ "\n"  +
	 '</div>' +
	 '<div class="absolute" id="' + object + '_layer" style="display:none;">' +
	 '		<div id="' + object + '_div" class="drop_down_menu_box district_select" style="z-index:999">' +
	 '	 <a class="close" href="javascript:showHideLayer(\'' + object + '\', 0)"> </a>' +
	 '			<table><tr><td><a class="menu" href="javascript:checkAll(\'' + object + '\', 1, \'top\', \'sub_top\')">отметить все</a></td>' +
	 '			<td><a class="menu" href="javascript:checkAll(\'' + object + '\', 0, \'top\', \'sub_top\')">снять галочки</a></td><td> </td></tr></table>' +
	 '		<div id="' + object + '_content"><table></table>' +
	 '</div></div>' +
	 '<iframe id="' + object + '_frame"></iframe></div>';
	document.getElementById(object).parentNode.innerHTML = output;
}

function toggleBlock(object, per_column) {
	var layer_obj = document.getElementById(object + '_layer');
 	if (layer_obj.style.display == 'block') {
		showHideLayer(object, 0);
 	}
 	else {
 		moveLayer(object, per_column);
		showHideLayer(object, 1);
		resizeLayer(object);
 	}
}

function moveLayer(object, per_column) {
	var sel_object = document.getElementById(object + '_input');
	var layer_obj = document.getElementById(object + '_layer');
	layer_obj.style.left = sel_object.offsetLeft;
}

function resizeLayer(object) {
	var div_obj = document.getElementById(object + '_div');
	var frame_obj = document.getElementById(object + '_frame');
	frame_obj.style.width = div_obj.offsetWidth;
	frame_obj.style.height = div_obj.offsetHeight;
}

function showHideLayer(object, action) {
	document.getElementById(object + '_layer').style.display = (action) ? 'block' : 'none';
}

function loadData(section, data_array, id, per_column) {
	var out = '';
	var cur_row = 1;
	var rows = 0;
	var data = data_array['content'];
	var id_array = id.split(',');
	out += '<table><tr>';
	for (var item in data) {
        var checked = (in_array(item, id_array)) ? ' checked' : '';
		out += '<td id="top_' + item + '"><input id="ctop_' + item + '" type="checkBox" name="' + data[item][0] + '" value="' + item + '" onClick="checkChilds(\'top_' + item + '\', \'' + section + '\', \'top\', \'sub_top\');fillSelected(\'' + section + '\')"' + checked + '><label onClick="toggleCheckbox(\'ctop_' + item + '\');checkChilds(\'top_' + item + '\', \'' + section + '\', \'top\', \'sub_top\');fillSelected(\'' + section + '\')">' + data[item][0] + '</label></td>';
        if (cur_row == per_column) {
			cur_row = 0;
	        out += '</tr><tr>';
	        rows ++;
        }
        cur_row ++;
	}
    out += '</tr></table>';
	document.getElementById(section + '_content').innerHTML = out;
	return rows;
}

function highlightItems(section, data_array, id) {
	var data = data_array['content'];
	var id_array = id.split(',');
	for (var item in data) {
        if (in_array(item, id_array)) {
	        checkChilds('top_' + item, section, 'top', 'sub_top');
        }
	}
}

function fillSelected(name) {
	var sel_object = document.getElementById(name + '_input');
	var sel_hidden = document.getElementById(name + '_hidden');
	out = '';
	sel_hidden.value = '';
	var elems = document.getElementById('searchForm').elements;
	for (var i = 0; i < elems.length; i++) {
		if (elems[i].tagName == 'INPUT' && elems[i].type == 'checkbox' && elems[i].id.indexOf('ctop_') != -1 && elems[i].checked) {
			if (out) {
				out += ', ';
				sel_hidden.value += ',';
			}
			out += elems[i].name;
			sel_hidden.value += elems[i].value;
		}
	}
	if (!out) {
		out = init_value;
	}
	sel_object.innerHTML = out;
}

function checkChilds(name, section, top_style, sub_style) {
	var object = document.getElementById(name);
	object.className = (object.firstChild.checked) ? section + '_' + top_style + '_selected' : section + '_' + top_style;
	var elems = object.childNodes;
	for (var i = 1; i < elems.length; i++) {
		if (elems[i].tagName == 'DIV') {
			document.getElementById(elems[i].id).firstChild.checked = object.firstChild.checked;
			checkBlock(document.getElementById(elems[i].id).firstChild.id, elems[i].id, section + '_' + sub_style);
		}
	}
}

function checkAll(name, check, top_style, sub_style) {
	var elems = document.getElementById(name + '_content').childNodes;
	var elems = document.getElementById('searchForm').elements;
	for (var i = 0; i < elems.length; i++) {
		if (elems[i].tagName == 'INPUT' && elems[i].type == 'checkbox' && elems[i].id.indexOf('ctop_') != -1) {
			elems[i].checked = (check);
			//checkChilds(elems[i].childNodes[a].id, name, top_style, sub_style);
		}
	}
	if (check == 1) {
		fillSelected(name);
	}
	else {
		document.getElementById(name + '_input').innerHTML = 'Любой';
		document.getElementById(name + '_hidden').value = '';
	}
}

function checkBlock(checkbox, object, name) {
	document.getElementById(object).className = (document.getElementById(checkbox).checked) ? name + '_selected' : name;
}

function toggleCheckbox(object) {
	var object = document.getElementById(object);
	object.checked = !(object.checked);
}

function attachMyEvent(obj,evt,fnc,useCapture){
	if (!useCapture) useCapture=false;
	if (obj.addEventListener){
		obj.addEventListener(evt,fnc,useCapture);
		return true;
	}
	else if (obj.attachEvent) {
		return obj.attachEvent("on"+evt,fnc);
	}
	else{
		MyAttachEvent(obj,evt,fnc);
		obj['on'+evt]=function(){ MyFireEvent(obj,evt) };
	}
}

//The following are for browsers like NS4 or IE5Mac which don't support either
//attachEvent or addEventListener
function MyAttachEvent(obj,evt,fnc){
	if (!obj.myEvents) obj.myEvents={};
	if (!obj.myEvents[evt]) obj.myEvents[evt]=[];
	var evts = obj.myEvents[evt];
	evts[evts.length]=fnc;
}
function MyFireEvent(obj,evt){
	if (!obj || !obj.myEvents || !obj.myEvents[evt]) return;
	var evts = obj.myEvents[evt];
	for (var i=0,len=evts.length;i<len;i++) evts[i]();
}

function hideAllRollovers(event){
	//for (var i = 0; i < rollovers.length; i++) {
	//	showHideLayer(rollovers[i], 0);
	//}
	return true;
}

function in_array(val, arr) {
	for (var i = 0; i < arr.length; i++) {
		if(arr[i] == val) return true;
	}
	return false;
}