
var menu = {
	isActive: false,
	Activate: function(menu_id) {
		menu.isActive = true;
		dojo.byId('map').src = config.baseTemplateUrl + 'images/map/' + menu_id.replace(/mapMenu_/, '') + '.png';
		dojo.byId('co_' + menu_id.replace(/mapMenu_/, '')).className = 'co co_hover';
	},
	Deactivate: function() {
		menu.isActive = false;
		dojo.byId('map').src = config.baseTemplateUrl + 'images/map/map.png';
		dojo.query('.co_hover').removeClass('co_hover');
	}
};

var arr_district = ['niederbayern', 'oberbayern', 'schwaben', 'oberpfalz', 'unterfranken', 'mittelfranken', 'oberfranken'];

dojo.addOnLoad(function() {
	loadTabs();
	loadMenuDialog();

	for (var id in arr_district) {
		var str_district = arr_district[id];
		
		dojo.connect(dojo.byId('map_' + str_district),'onmouseover', function(e) {
			if (!menu.isActive) {
				dojo.byId('map').src = config.baseTemplateUrl + 'images/map/' + e.target.alt.toLowerCase() + '.png';
				dojo.byId('co_' + e.target.alt.toLowerCase()+'_link').className = 'co co_hover';
			}
    	});
		dojo.connect(dojo.byId("map_" + str_district),'onmouseout', function(e) {
			if (!menu.isActive) {
				dojo.byId('map').src = config.baseTemplateUrl + 'images/map/map.png';
				dojo.byId('co_' + e.target.alt.toLowerCase()+'_link').className = 'co';
			}
    	});
		dojo.connect(dojo.byId('co_' + str_district + '_div'),'onmouseover', function(e) {
			if (!menu.isActive) {
				var link_part = e.target.id.toLowerCase().split('_');
				//if link is hit, we do nothing, because link id sheme is co_niederbayern_link so length is > 2
				if(link_part.length == 3) {
					dojo.byId('map').src = config.baseTemplateUrl + 'images/map/' + link_part[1] + '.png';
					dojo.byId('co_' + link_part[1] + '_link').className = 'co co_hover co_active';
				}
			}
    	});
		dojo.connect(dojo.byId('co_' + str_district + '_div'),'onmouseout', function(e) {
			if (!menu.isActive) {
				var link_part = e.target.id.toLowerCase().split('_');
				//if link is hit, we do nothing, because link id sheme is co_niederbayern_link so length is > 2
				if(link_part.length == 2) {
					dojo.byId('co_' + link_part[1] + '_link').className = 'co co_hover';
				}
			}
    	});
	}

	dojo.require("dijit.Dialog");
	dojo.require("dijit.form.Button");
	dojo.require("dojo.parser");

	createDialogLinks(arr_district);

	preload_images();
});

function preload_images() {
	for (var id in arr_district) {
		var str_district = arr_district[id];
    	var image = new Image();
    	image.src = config.baseTemplateUrl + 'images/map/' + str_district + '.png';
	}
}

function firmClick(firm_id) {
	window.location.href = config.baseurl + 'firms/list/id/' + firm_id;
}

function districtClick(district) {
	window.location.href = config.baseurl + 'firms/list/district/' + district;
}


function createDialogLinks(districts) {
	for (var id in districts) {
		var district = districts[id];
		dojo.connect(dojo.byId('map_' + district.toLowerCase()), 'onclick', dojo.hitch(dojo.byId('map_' + district.toLowerCase()), dialogClick, district));
		dojo.connect(dojo.byId('co_' + district.toLowerCase()+'_div'), 'onclick', dojo.hitch(dojo.byId('co_' + district.toLowerCase()+'_div'), districtClick, district));
	}
}

function dialogClick(district) {
	showMapMenu(1);
	for (var i=1; i<7; i++) {
		dojo.byId('map_menu_' + i + '_list').innerHTML = '';
	}
	dojo.byId('map_menu_actualFirms_list').innerHTML = '';
	var obj = document.createElement('div');
	obj.id = district;
	selectMapMenu(obj,1);
	showDialog('dialog_map','df_field',ucFirst(district),false);
}

function ucFirst (param) {
	return param.substr(0,1).toUpperCase() + param.substr(1,param.length);
}

var MapMenuHistory = new Array();
var MapMenuActual = 0;


function mapMenuRemoveCurrent(parent) {
	dojo.query('a',parent).forEach(
    	function(selectTag) {
        	dojo.removeClass(selectTag,'current');
    	}
    );
}

function selectMapMenu(obj,type) {
	if(obj.tagName == 'A') {
		mapMenuRemoveCurrent('map_menu_'+(type-1)+'_list');
		dojo.addClass(obj,'current');

	}
	refreshContent = true;
	if(type == 6) refreshContent = false;
	loadMapMenuHtml('map_menu_'+type+'_list','content/ajaxcall/type/map_menu/level/'+type+'/value/'+obj.id,refreshContent);
	if(type != 6) {
		if(type > 2)
			dojo.byId('map_menu_'+(type-2)).style.display = 'none';
		dojo.byId('map_menu_'+type).style.display = 'inline';
		MapMenuHistory[type] = obj.id;
		MapMenuActual = type;
	}
}

function loadMapMenuHtml(contentId,requestUrl,refreshContent) {
	if(typeof(refreshContent) == 'undefined')
		refreshContent = true;
	var contentNode = dojo.byId(contentId);
	var firmsNode = dojo.byId('map_menu_actualFirms_list');
	dojo.xhrGet({
		url: config.baseurl+requestUrl,
		handleAs: "json",
		load: function(data,args){
			if(refreshContent) {
				// fade out the node we're modifying
				dojo.fadeOut({
					node: contentNode,
					fade: 0,
					onEnd: function(){
					  // set the data, fade it back in
					  contentNode.innerHTML = data['node'];
					  dojo.fadeIn({node: contentNode}).play();
					}
				}).play();
			}

			dojo.fadeOut({
				node: firmsNode,
				fade: 0,
				onEnd: function(){
				  // set the data, fade it back in
				  firmsNode.innerHTML = data['firms'];

				  dojo.fadeIn({node: firmsNode}).play();
				}
			}).play();


			if(typeof data == "error"){
				console.warn("error!");
				console.log(args);
			}
		},
		// if any error occurs, it goes here:
		error: function(error,args){
			console.warn("error!",error);
		}
	});

}


function updateMapHistory() {
	for(var type in MapMenuHistory) {
			//TODO work on...
			MapMenuHistory[type] = obj.id;
	}
}


function mapMenuBack() {
	var typeShow = MapMenuActual-2;
	if(typeShow > 0) {
		showMapMenu(typeShow);
	}
}

function showMapMenu(type) {
	for(var i=1;i<7;i++) {
		if(i != type && i != (type +1))
			dojo.byId('map_menu_'+i).style.display = 'none';
		else dojo.byId('map_menu_'+i).style.display = 'inline';
	}
	MapMenuActual = type+1;
}


function loadMenuDialog() {
	var menuDialog = new dijit.Dialog({
			title:'Firmensuche',
			prelaod: true
		},
		dojo.byId('dialog_map')
	);
}


function moreShortInfo(container,divClass,linkClass) {
	dijit.byId(container).resize({h:180});
	dojo.query(divClass).forEach("item.style.display = 'inline'");
	dojo.query(linkClass).forEach("item.style.display = 'none'");
}

function loadTabs() {
	var latest = new dijit.layout.ContentPane({
			title:'Neueste Eintr&auml;ge'
		},
		dojo.byId('smalllist_latest')
	);

	var premium = new dijit.layout.ContentPane({
			title: 'Premium-Eintr&auml;ge'
		},
		dojo.byId('smalllist_premium')
	);

	var events = new dijit.layout.ContentPane({
			title: 'Aktuelle Events / Aktionen'
		},
		dojo.byId('smalllist_event')
	);

	var tabPane = new dijit.layout.TabContainer({
			title: 'Eintr&auml;ge'
		},
		dojo.byId('smalllist_container')
	);

	tabPane.addChild(latest);
	tabPane.addChild(premium);
	tabPane.addChild(events);
	tabPane.startup();
}