var arr_mapname = new Array();
var arr_checkbox = new Array();
var arr_mapindex = new Array();
var ueberArray = new Array();
var puffArray = new Array();

// Array Remove - By John Resig (MIT Licensed)
Array.remove = function(array, from, to) {
	//alert(from);
	var rest = array.slice((to || from) + 1 || array.length);
	array.length = from < 0 ? array.length + from : from;
	return array.push.apply(array, rest);
};


function CMapCheckClass (id, mapName, searchName) {
	this.rootId = id;
	this.mapName= mapName;
	if (searchName){
		this.searchName= searchName;
	}else{
		this.searchName= mapName;
	}
	
	this.childs = new Array();
	this.checked = false;
	this.parent = null;  // CMapCheckClass
	this.activeList = null; // should onlz be in root node
	
	if (!id){
		this.activeList = new CList();
	}
	
	this.setParent = function(parent){
		this.parent = parent;
	}
	
	this.addChild = function(child){
		child.setParent(this);
		this.childs.push(child);		
	}

	this.isChecked = function(){
		return this.checked;
	}
	
	this.clicked = function(id){
		for (idx in this.childs){
			this.childs[idx].clicked(id)	
		}
		if (this.rootId == id){
			if(document.getElementById(id).checked){
				this.check();
			}else{
				this.uncheck();
			}
		}
	}
	
	this.mapClicked = function(id){
		for (idx in this.childs){
			this.childs[idx].mapClicked(id)	
		}
		
		if (this.rootId == id){
			if(this.checked){
				this.uncheck();
			}else{
				this.check();
			}
		}
	}
	
	this.check = function(){
		this.checked = true;
		document.getElementById(this.rootId).checked = true;
		if(this.mapName){
			map_select(this.mapName);
		}
		
		for (idx in this.childs){
			this.childs[idx].check()	
		}
		//this.addToList(this.searchName, true);
		this.addToList(id, true);
		this.parent.checkStatusChanged();
	}

	this.uncheck = function(){
		this.checked = false;
		document.getElementById(this.rootId).checked = false;
		if(this.mapName){
			map_deselect(this.mapName);
		}
		
		for (idx in this.childs){
			this.childs[idx].uncheck();
		}
		//this.addToList(this.searchName, false);
		this.addToList(id, false);
		this.uncheckParent();
		this.parent.checkStatusChanged();
	}
	
	this.uncheckParent = function(){
		if(this.rootId){
			this.parent.uncheckParent();
			document.getElementById(this.rootId).checked = false;	
		}
	}
	
	this.onlyCheck = function(){
		this.checked = true;  // dirty hack ;D
		document.getElementById(this.rootId).checked = true;	
	}
	
	this.setCheckedStatus = function(id, val){
		for (idx in this.childs){
			this.childs[idx].setCheckedStatus(id, val)	
		}
		if (this.rootId == id){
			this.check();
	/*		this.checked = true;
			document.getElementById(this.rootId).checked = val;
		*/}
	}
	
	this.checkStatusChanged = function(){
		var allChecked = true;

		for (idx in this.childs){
			if (!this.childs[idx].isChecked()){
				allChecked = false;
			}
		}
		if (!allChecked){
			this.checked = false;
		}else{
			this.checked = true;
			document.getElementById(this.rootId).checked = true;
		}
		if (this.parent){
			this.parent.checkStatusChanged();
		}
	}
	
	this.getChilds = function(){
		return this.childs;
	}

	this.getAllChilds = function(){

		if (this.childs.length == 0){
		}else{
			for (idx in this.childs){
				this.childs[idx].getAllChilds()	
			}
		}
	}
	
	this.addToList = function(name,addrem){
		if(name){
			if(this.rootId){
				this.parent.addToList(name,addrem);
			}else{
				if (addrem){
					this.activeList.add(name);
				}else{
					this.activeList.rem(name);
				}			
			}
		}
	}
	
	this.getActive = function(){
		if (this.rootId){
			return false;
		}else{
			//alert(this.activeList.getList());
			return this.activeList.getList();
		}
	}
}

function CList(){
	this.list = new Array();

	this.add = function(val){
		var inthere = false;
		for (idx in this.list){
			if (this.list[idx] == val){
				inthere = true;
			}
		}
		if (!inthere){
			this.list.push(val)
		}
	}

	this.rem = function(val){
		for (idx in this.list){
			if (this.list[idx] == val){
				//this.list.remove(this.list, idx);
				this.list.splice(idx,1);
			}
		}
	}

	this.getList = function(){
		var str = '';
		for (idx in this.list){
			str += this.list[idx] + ',' ;
		}
		return str;
	}		
}


// LEVEL 4 DRESDEN
var gr_dd_dd_zentrum = new CMapCheckClass(4, 'dresden', 'dresden_zentrum');
var gr_dd_dd_nord = new CMapCheckClass(5, 'dresden', 'dresden_nord');
var gr_dd_dd_ost = new CMapCheckClass(6, 'dresden', 'dresden_ost');
var gr_dd_dd_sued = new CMapCheckClass(7, 'dresden', 'dresden_sued');
var gr_dd_dd_west = new CMapCheckClass(8, 'dresden', 'dresden_west');

// LEVEL 3 KREISE
// GROSSRAUM DRESDEN
var gr_dd_dresden = new CMapCheckClass(3, 'dresden');
gr_dd_dresden.addChild(gr_dd_dd_zentrum);
gr_dd_dresden.addChild(gr_dd_dd_nord);
gr_dd_dresden.addChild(gr_dd_dd_ost);
gr_dd_dresden.addChild(gr_dd_dd_sued);
gr_dd_dresden.addChild(gr_dd_dd_west);

var gr_dd_weisseritz = new CMapCheckClass(9, 'lk_erzgebirge');
var gr_dd_meissen = new CMapCheckClass(10, 'lk_meissen');
var gr_dd_bautzen = new CMapCheckClass(11, 'lk_bautzen');
var gr_dd_oberlausitz = new CMapCheckClass(12, 'lk_goerlitz');

// GROSSRAUM DRESDEN
var gr_dresden = new CMapCheckClass(2);
gr_dresden.addChild(gr_dd_dresden);
gr_dresden.addChild(gr_dd_weisseritz);
gr_dresden.addChild(gr_dd_meissen);
gr_dresden.addChild(gr_dd_bautzen);
gr_dresden.addChild(gr_dd_oberlausitz);

// GROSSRAUM LEIPZIG
var gr_l_stadt = new CMapCheckClass(14, 'leipzig');
var gr_l_land = new CMapCheckClass(15, 'leipzig_bz');

// GROSSRAUM LEIPZIG
var gr_leipzig = new CMapCheckClass(13);
gr_leipzig.addChild(gr_l_stadt);
gr_leipzig.addChild(gr_l_land);


// GROSSRAUM CHEMNITZ
var gr_ch_stadt = new CMapCheckClass(18, 'chemnitz');
var gr_ch_land = new CMapCheckClass(19, 'chemnitz_bz');
var gr_chemnitz = new CMapCheckClass(17);
gr_chemnitz.addChild(gr_ch_stadt);
gr_chemnitz.addChild(gr_ch_land);


// SACHSEN
var sachsen = new CMapCheckClass(1);
sachsen.addChild(gr_dresden);
sachsen.addChild(gr_leipzig);
sachsen.addChild(gr_chemnitz);

// GROSSRAUM COTTBUS
var gr_cb_stadt = new CMapCheckClass(23, 'cottbus');
var gr_cb_land = new CMapCheckClass(24, 'cottbus_bz');
var gr_cottbus = new CMapCheckClass(22);

gr_cottbus.addChild(gr_cb_stadt);
gr_cottbus.addChild(gr_cb_land);

// BRANDENBURG
var brandenburg = new CMapCheckClass(21);
brandenburg.addChild(gr_cottbus);

var baden_wuerttemberg = new CMapCheckClass(30);
var bayern = new CMapCheckClass(31);
var berlin = new CMapCheckClass(32);
var bremen = new CMapCheckClass(33);
var hamburg = new CMapCheckClass(34);
var hessen = new CMapCheckClass(35);
var mecklenburg_vorpommern = new CMapCheckClass(36);
var niedersachsen = new CMapCheckClass(37);
var nordrhein_westfalen = new CMapCheckClass(38);
var rheinland_pfalz = new CMapCheckClass(39);
var saarland = new CMapCheckClass(40);
var sachsen_anhalt = new CMapCheckClass(41);
var schleswig_holstein = new CMapCheckClass(42);
var thueringen = new CMapCheckClass(43);

// DEUTSCHLAND
var deutschland = new CMapCheckClass(50);

deutschland.addChild(baden_wuerttemberg);
deutschland.addChild(bayern);
deutschland.addChild(berlin);
deutschland.addChild(brandenburg);
deutschland.addChild(bremen);
deutschland.addChild(hamburg);
deutschland.addChild(hessen);
deutschland.addChild(mecklenburg_vorpommern);
deutschland.addChild(niedersachsen);
deutschland.addChild(nordrhein_westfalen);
deutschland.addChild(rheinland_pfalz);
deutschland.addChild(saarland);
deutschland.addChild(sachsen);
deutschland.addChild(sachsen_anhalt);
deutschland.addChild(schleswig_holstein);
deutschland.addChild(thueringen);

deutschland.getAllChilds();

var welt = new CMapCheckClass();
welt.addChild(deutschland);

//welt.getAllChilds();

var i = false;
var abl = false;

var map_locations = new Array('tschechei','polen','deutschland','chemnitz_bz','cottbus_bz','leipzig_bz','lk_bautzen','lk_erzgebirge','lk_goerlitz','lk_meissen','leipzig','dresden','chemnitz','cottbus');



function getFilePath(Bild,Type) {
	switch(Type) {
		case "normal": var FilePath = "fileadmin/template/image/map_sachsen/normal/" + Bild + ".gif"; break;
		case "active": var FilePath = "fileadmin/template/image/map_sachsen/active/" + Bild + "_act.gif"; break;
		case "over": var FilePath = "fileadmin/template/image/map_sachsen/over/" + Bild + "_over.gif"; break;
	}
	return FilePath;
}

function map_select(Bildname) {
	var mapname = "map_" + Bildname;
	document.getElementById(mapname).style.zIndex = arr_mapindex["z"];
	document.getElementById(mapname).src = getFilePath(Bildname,"active");
	arr_mapname[mapname] = 1;
}

function map_deselect(Bildname) {
	var mapname = "map_" + Bildname;
	document.getElementById(mapname).style.zIndex = arr_mapindex["z"];
	document.getElementById(mapname).src = getFilePath(Bildname,"normal");
	arr_mapname[mapname] = 0;
}

function map_over(Bildname) {
	var mapname = "map_" + Bildname;
	arr_mapindex["z"] = document.getElementById(mapname).style.zIndex;
	document.getElementById(mapname).style.zIndex = 640;
	document.getElementById(mapname).src = getFilePath(Bildname,"over");
}

function map_out(Bildname) {
	var mapname = "map_" + Bildname;
	document.getElementById(mapname).style.zIndex = arr_mapindex["z"];
	if(arr_mapname[mapname]!=1) {
		document.getElementById(mapname).src = getFilePath(Bildname,"normal");
	} else {
		document.getElementById(mapname).src = getFilePath(Bildname,"active");
	}
}

function map_click(Bildname){
	var mapname = "map_" + Bildname;
	if(arr_mapname[mapname]== 1 && arr_checkbox[mapname] == 1) {
		arr_mapname[mapname] = 0;
		arr_checkbox[mapname] = 0;
		document.getElementById(mapname).src = getFilePath(Bildname,"over");
		delfromarray(Bildname);
	} else {
		arr_mapname[mapname] = 1;
		arr_checkbox[mapname] = 1;
		document.getElementById(mapname).src = getFilePath(Bildname,"active");
		insert2array(Bildname);
	}
	if(document.getElementById(firstUpRestLow(Bildname))){
        document.getElementById(firstUpRestLow(Bildname)).click();
	}
	if(document.getElementById("selectall[" + Bildname + "]")){
        document.getElementById("selectall[" + Bildname + "]").click();
        checkAll(Bildname);
	}
	//zuordnung();
}

function setActive(Bildname) {
	var mapname = "map_" + Bildname;
	if(arr_checkbox[mapname]== 1) {
		arr_checkbox[mapname] = 0;
	} else {
		arr_checkbox[mapname] = 1;

	}	
	
	map_click(Bildname);
	map_out(Bildname);
}

function isSelected(Bildname) {
	var mapname = "map_" + Bildname;
	if(arr_mapname[mapname]==1) {
	    return true;
	} else {
	    return false;
	}
}

function isinarray(what) {
	for(abl=0;abl<ueberArray.length;abl++) {
		if(ueberArray[abl]==what) {
			return true;
		}
	}
	return false;
}

function insert2array(what) {
	ueberArray.push(what);
}

function delfromarray(what) {
	for(abl=0;abl<ueberArray.length;abl++) {
		if(ueberArray[abl]!=what) {
			puffArray.push(ueberArray[abl]);
		}
	}
	ueberArray=puffArray;
	delete puffArray;
	puffArray = new Array();
}

function whichone(){
	var kette="";
	for(abl=0;abl<ueberArray.length;abl++){
		kette=kette+ueberArray[abl]+",";
	}
	document.getElementById('locations_neu').value=kette;

}

function fillLocations() {
	var kette="";
	for(abl=0;abl<ueberArray.length;abl++) {
		kette=kette+ueberArray[abl]+",";
	}
	document.getElementById('locations').value=kette;

	document.getElementById('SE_form').submit();
	return false;
}

function getElementsByClassName(className, tag, elm){
	var testClass = new RegExp("(^|\\s)" + className + "(\\s|$)");
	var tag = tag || "*";
	var elm = elm || document;
	var elements = (tag == "*" && elm.all)? elm.all : elm.getElementsByTagName(tag);
	var returnElements = [];
	var current;
	var length = elements.length;
	for(var i=0; i<length; i++){
		current = elements[i];
		if(testClass.test(current.className)){
			returnElements.push(current);
		}
	}
	return returnElements;
}


function checkAll(what){
	var mainCheckBoxName = 'selectall[' + what + ']';
	var chkbxarr = document.getElementById(mainCheckBoxName);
	if(chkbxarr.checked==true){
	    var sglchkbx = getElementsByClassName(what, "input");
        for(var i = 0; i < sglchkbx.length; i++){
			sglchkbx[i].checked=true;
		}
	}else{
		var sglchkbx = getElementsByClassName(what, "input");
	    for(var i = 0; i < sglchkbx.length; i++){
			sglchkbx[i].checked=false;
		}
	}
}

function map2checkbox(what){
	var val = document.getElementById(what).checked;
	var mapname = what.toLowerCase();
	if(document.getElementById('map_' + mapname)){
		if(val){
            map_select(mapname);
		}else{
            map_deselect(mapname);
		}
	}
}

function threesome(what){
	var lowerWhat   = what.toLowerCase();
	var checkGroup	= document.getElementById('selectall[' + lowerWhat + ']');
	var mapImage	= 'map_' + lowerWhat;
	var checkCity   = document.getElementById(lowerWhat);

	// Checkbox-Groups
	if(checkGroup.checked==true){
	    var sglchkbx = getElementsByClassName(what, "input");
        for(var i = 0; i < sglchkbx.length; i++){
			sglchkbx[i].checked=true;
		}
	    map_select(lowerWhat);
	}else{
		var sglchkbx = getElementsByClassName(what, "input");
	    for(var i = 0; i < sglchkbx.length; i++){
			sglchkbx[i].checked=false;
		}
		map_deselect(lowerWhat);
	}

	// City-List
	if(checkCity){
		if(checkCity.checked){
			checkCity.checked=false;
		}else{
		    checkCity.checked=true;
		}
	}

	// Map
	
}

function threesome2(what){
	var lowerWhat   = what.toLowerCase();
	var checkGroup	= document.getElementById('selectall[' + lowerWhat + ']');
	var mapImage	= 'map_' + lowerWhat;
	var checkCity   = document.getElementById(lowerWhat);

	// City-List
	if(checkCity){
		if(checkCity.checked){
            checkGroup.checked=true;
			var sglchkbx = getElementsByClassName(what, "input");
	        for(var i = 0; i < sglchkbx.length; i++){
				sglchkbx[i].checked=true;
			}
		    map_select(lowerWhat);
		}else{
		    checkGroup.checked=false;
		    var sglchkbx = getElementsByClassName(what, "input");
		    for(var i = 0; i < sglchkbx.length; i++){
				sglchkbx[i].checked=false;
			}
			map_deselect(lowerWhat);
		}
	}
}

function threesome3(what){
	var lowerWhat   = what.toLowerCase();
	var checkGroup	= document.getElementById('selectall[' + lowerWhat + ']');
	var mapImage	= 'map_' + lowerWhat;
	var checkCity   = document.getElementById(lowerWhat);

	// City-List
	if(isSelected(what)){
        map_deselect(lowerWhat);
        delfromarray(what);
        checkGroup.checked=false;
	    var sglchkbx = getElementsByClassName(what, "input");
	    for(var i = 0; i < sglchkbx.length; i++){
			sglchkbx[i].checked=false;
		}
	}else{
		map_select(lowerWhat);
		insert2array(what);
		checkGroup.checked=true;
		var sglchkbx = getElementsByClassName(what, "input");
        for(var i = 0; i < sglchkbx.length; i++){
			sglchkbx[i].checked=true;
		}
	}
	if(checkCity){
		if(checkCity.checked){
			checkCity.checked=false;
		}else{
		    checkCity.checked=true;
		}
	}
}

function firstUpRestLow(kette){
	var first = kette.substr(0,1).toUpperCase();
	var rest = kette.substr(1).toLowerCase();
	return first + rest;
}

/*function deselectall() {
	for (var j=0;j<map_locations.length;j++) {
		var mapname = 'map_' + map_locations[j];
		arr_mapname[mapname] = 0;
		document.getElementById(mapname).src = getFilePath(map_locations[j],'normal');
		delfromarray(map_locations[j]);
	}
}

function zuordnung() {
	var arr_names = new Array('cottbus','chemnitz','chemnitz_bz','cottbus_bz','leipzig_bz','lk_bautzen','lk_erzgebirge','lk_goerlitz','lk_meissen');
	var arr_numbers = new Array(23,18,19,24,15,11,9,12,10);

	for(i=0;i<arr_names.length;i++) {
		if(document.getElementById(arr_numbers[i]).checked == false) {
            map_deselect(arr_names[i]);
		}
	}
	cottbus - 23
	chemnitz - 18
	chemnitz_bz - 19
	cottbus_bz - 24
	leipzig_bz - 15
	lk_bautzen - 11
	lk_erzgebirge - 9
	lk_goerlitz - 12
	lk_meissen - 10
}
function check(what) {
	if(document.getElementById(what).checked==true) {
		document.getElementById(what).checked=false;
	} else {
		document.getElementById(what).checked=true;
	}
	//zuordnung();
}
function check_sachsen() {
	var locarr = new Array('1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','17','18','19');
	if(document.getElementById(locarr[0]).checked==true) {
		for(var i=0;i<locarr.length;i++) {
			document.getElementById(locarr[i]).checked = true;
		}
	} else {
		for(var i=0;i<locarr.length;i++) {
			document.getElementById(locarr[i]).checked = false;
		}
	}
}

function select_sachsen() {
    if(isSelected('dresden')==false) setActive('dresden');
	if(isSelected('lk_erzgebirge')==false) setActive('lk_erzgebirge');
	if(isSelected('lk_meissen')==false) setActive('lk_meissen');
	if(isSelected('lk_bautzen')==false) setActive('lk_bautzen');
	if(isSelected('lk_goerlitz')==false) setActive('lk_goerlitz');
	if(isSelected('chemnitz_bz')==false) setActive('chemnitz_bz');
	if(isSelected('chemnitz')==false) setActive('chemnitz');
	if(isSelected('leipzig')==false) setActive('leipzig');
	if(isSelected('leipzig_bz')==false) setActive('leipzig_bz');
}
function check_brandenburg() {
	var locarr = new Array('21','22','23','24');
	if(document.getElementById(locarr[0]).checked==true) {
		for(var i=0;i<locarr.length;i++) {
			document.getElementById(locarr[i]).checked = true;
		}
	} else {
		for(var i=0;i<locarr.length;i++) {
			document.getElementById(locarr[i]).checked = false;
		}
	}
}
function check_dresden() {
	var locarr = new Array('3','4','5','6','7','8');
	if(document.getElementById(locarr[0]).checked==true) {
		for(var i=0;i<locarr.length;i++) {
			document.getElementById(locarr[i]).checked = true;
		}
	} else {
		for(var i=0;i<locarr.length;i++) {
			document.getElementById(locarr[i]).checked = false;
		}
	}
}
function check_gr_dresden() {
	var locarr = new Array('2','3','4','5','6','7','8','9','10','11','12');
	var picarr = new Array('dresden','lk_erzgebirge','lk_meissen','lk_bautzen','lk_goerlitz');
	if(document.getElementById(locarr[0]).checked==true) {
		for(var i=0;i<locarr.length;i++) {
			document.getElementById(locarr[i]).checked = true;
		}
	} else {
		for(var i=0;i<locarr.length;i++) {
			document.getElementById(locarr[i]).checked = false;
		}
		for(var i=0;i<picarr.length;i++) {
            map_deselect(picarr[i]);
		}
	}
}
function select_gr_dresden() {
	var locarr = new Array('9','10','11','12');
	var picarr = new Array('lk_erzgebirge','lk_meissen','lk_bautzen','lk_goerlitz');

	for(i=0;i<locarr.length;i++) {
		if(document.getElementById(locarr[i]).checked==true) {
			setActive(picarr[i]);
		}
	}
}

function check_gr_leipzig() {
	var locarr = new Array('13','14','15');
	var picarr = new Array('leipzig','leipzig_bz');
	if(document.getElementById(locarr[0]).checked==true) {
		for(var i=0;i<locarr.length;i++) {
			document.getElementById(locarr[i]).checked = true;
		}
	} else {
		for(var i=0;i<locarr.length;i++) {
			document.getElementById(locarr[i]).checked = false;
		}
		for(var i=0;i<picarr.length;i++) {
            map_deselect(picarr[i]);
		}
	}
}
function select_gr_leipzig() {
    var locarr = new Array('13','14','15');
	var picarr = new Array('leipzig','leipzig_bz');
	for(i=0;i<locarr.length;i++) {
		if(document.getElementById(locarr[i]).checked==true) {
			setActive(picarr[i]);
		}
	}
}

function check_gr_chemnitz() {
	var locarr = new Array('17','18','19');
	var picarr = new Array('chemnitz','chemnitz_bz');
	if(document.getElementById(locarr[0]).checked==true) {
		for(var i=0;i<locarr.length;i++) {
			document.getElementById(locarr[i]).checked = true;
		}
	} else {
		for(var i=0;i<locarr.length;i++) {
			document.getElementById(locarr[i]).checked = false;
		}
		for(var i=0;i<picarr.length;i++) {
            map_deselect(picarr[i]);
		}
	}
}

function check_gr_cottbus() {
	var locarr = new Array('22','23','24');
	if(document.getElementById(locarr[0]).checked==true) {
		for(var i=0;i<locarr.length;i++) {
			document.getElementById(locarr[i]).checked = true;
		}
	} else {
		for(var i=0;i<locarr.length;i++) {
			document.getElementById(locarr[i]).checked = false;
		}
	}
	if(isSelected('cottbus_bz')==false) {
		setActive('cottbus_bz');
	} else {
		map_deselect('cottbus_bz');
	}
	if(isSelected('cottbus')==false) {
		setActive('cottbus');
	} else {
		map_deselect('cottbus');
	}
}*/

