dropdownEntries = new Array();
dropdownCounterI = 0;
dropdownCounterJ = 0;
dropdownHasMouse = false;
tabHasMouse = false;

function iniDropdown () {

	jQuery.ajax({
		url: "/dropdown.php",
		success: function(html) {
			var htmlmod = html.replace(/href="/g, 'href="http://www.braut.de/');
			jQuery("body").append(htmlmod);
			dropdownGenerateData();
	
			jQuery('div.navi-1 ul li a').each(function(item) {
				jQuery(this).bind("mouseenter", function(e){
					dropdownHasMouse = false;
					tabHasMouse = true;
					jQuery('div.navi-1 ul li a').each(function(item) {
						jQuery(this).removeClass("nav-1-active");
					});
					jQuery(this).addClass("nav-1-active");
					dropdownLoadByAreaName(jQuery(this));
    			});
    			jQuery(this).bind("mouseleave", function(e) {
    				tabHasMouse = false;
    				setTimeout(function() {
    					if (!dropdownHasMouse && !tabHasMouse) {
    						jQuery('#dropdownBox').remove();
    						jQuery('div.navi-1 ul li a').each(function(item) {
								jQuery(this).removeClass("nav-1-active");
							});
    					}
    				} , 50);
    			});
			});
		}
	});	
}

/*
 * Loads a dropdown by given area name.
 */

function dropdownLoadByAreaName(button) {
	var width = 600;
	
	var found = -1;
    for (i = 0; i < dropdownEntries.length; i++) {
    	if (dropdownEntries[i]['area'].substr(0,4) == button.html().substr(0,4) && found < 0) {
    		found = i;
    	}
    }
    if (found == 0) {
    	jQuery('#dropdownBox').remove();
    	return; // Forum & Community does not have sub-categories.
    }
    
    var calculatedOffset = Math.round(button.offset().left + (button.width() / 2) - (width / 2));
    var documentOffset = jQuery("div.col-1").offset();
    var documentWidth  = parseInt(jQuery("div.col-1").css("width").substr(0, jQuery("div.col-1").css("width").length-2));
    
    if (calculatedOffset < documentOffset.left) {
    	calculatedOffset = documentOffset.left;
    }

    if (calculatedOffset + width > documentOffset.left + documentWidth) {
    	calculatedOffset = documentOffset.left + documentWidth - width;
    }
    
    jQuery("body").append('<div id="dropdownBox"></div>');
    
    jQuery("#dropdownBox").bind("mouseenter", function(e) {
    	dropdownHasMouse = true;
    }).bind("mouseleave", function(e) {
    	dropdownHasMouse = false;
    	button.removeClass("nav-1-active");
    	jQuery(this).remove();
    });
    
    jQuery("#dropdownBox").empty();
    jQuery("#dropdownBox").css("top", ((button.offset().top)+28) + "px");
    jQuery("#dropdownBox").css("left", calculatedOffset + "px");
    jQuery("#dropdownBox").css("z-index", 9999);
    
    var blockCount = dropdownEntries[found]['blocks'].length;
    var blocksPerColumn = Math.ceil(dropdownEntries[found]['blocks'].length / 4);
    var appendTo = null;
    
    jQuery("#dropdownBox").append('<div class="column1"></div>').append('<div class="column2"></div>').append('<div class="column3"></div>').append('<div class="column4"></div>');
    
    for (i = 0; i < blockCount; i++) {
    	if (i < blocksPerColumn) {
    		appendTo = jQuery("#dropdownBox div.column1");
    	} else {
    		if (i < 2 * blocksPerColumn) {
    			appendTo = jQuery("#dropdownBox div.column2");
    		} else {
    			if (i < 3 * blocksPerColumn) {
    				appendTo = jQuery("#dropdownBox div.column3");
    			} else {
    				appendTo = jQuery("#dropdownBox div.column4");
    			}
    		}
    	}

    	appendTo.append('<a class="block" href="' + dropdownEntries[found]['blocks'][i]['link'] + '">' + dropdownEntries[found]['blocks'][i]['block'] + '</a>');
    	for (j = 0; j < dropdownEntries[found]['blocks'][i]['items'].length; j++) {
    		appendTo.append(dropdownEntries[found]['blocks'][i]['items'][j]);
    	}
    }
    jQuery("#dropdownBox div a").each(function(item) {
    	if (!jQuery(this).hasClass("block") && !jQuery(this).hasClass("item")) {
			jQuery(this).addClass("item").html("&bull; " + jQuery(this).html());
		}
	});
    
    // set all columns to equal height
	var maxColumnHeight = Math.max(Math.max(jQuery("#dropdownBox div.column1").height(), jQuery("#dropdownBox div.column2").height()), Math.max(jQuery("#dropdownBox div.column3").height(), jQuery("#dropdownBox div.column4").height()));
	jQuery("#dropdownBox div.column1").css("height", maxColumnHeight + "px");
	jQuery("#dropdownBox div.column2").css("height", maxColumnHeight + "px");
	jQuery("#dropdownBox div.column3").css("height", maxColumnHeight + "px");
	jQuery("#dropdownBox div.column4").css("height", maxColumnHeight + "px");
}

/*
 * Generates the data for the dropdown menu.
 * Data is stored in global vars.
 */

function dropdownGenerateData() {

	jQuery('#dropdown ol > li').each(function(item) { // Areas
    	dropdownEntries[dropdownCounterI] = new Object();
    	dropdownEntries[dropdownCounterI]['area'] = "";
    	dropdownEntries[dropdownCounterI]['blocks'] = new Array();
    	jQuery(this).children().each(function(item) {
    		if (jQuery(this).is("a")) {
    			var modLink = jQuery(this).attr("href");
    			if (modLink.substr(0,4) != "http") {
    				jQuery(this).attr("href","http://www.braut.de/" + modLink);
    			}
    			dropdownEntries[dropdownCounterI]['area'] = jQuery(this).html();
    		} else {
    			dropdownCounterJ = 0;
    			jQuery(this).children().each(function(item) { // Blocks
    				dropdownEntries[dropdownCounterI]['blocks'][dropdownCounterJ] = new Object();
    				dropdownEntries[dropdownCounterI]['blocks'][dropdownCounterJ]['block'] = "";
    				dropdownEntries[dropdownCounterI]['blocks'][dropdownCounterJ]['items'] = new Array();
    				jQuery(this).children().each(function(item) {
    					if (jQuery(this).is("a")) {
    						dropdownEntries[dropdownCounterI]['blocks'][dropdownCounterJ]['block'] = jQuery(this).html();
    						var modLink = jQuery(this).attr("href");
    						if (modLink.substr(0,4) != "http") {
    							modLink = "http://www.braut.de/" + modLink;
    						}
    						dropdownEntries[dropdownCounterI]['blocks'][dropdownCounterJ]['link'] = modLink;
    					} else {
    						jQuery(this).children().each(function(item) { // Items
    							jQuery(this).children().each(function(item) {
    								var modLink = jQuery(this).attr("href");
    								if (modLink.substr(0,4) != "http") {
    									jQuery(this).attr("href", "http://www.braut.de/" + modLink);
    								}
    								dropdownEntries[dropdownCounterI]['blocks'][dropdownCounterJ]['items'].push(jQuery(this));
    							});
    						});
    					}
    				});
    				dropdownCounterJ++;	
    			});
    		}
    	});
    	dropdownCounterI++;
    });
    
    // Insert Community items manually:
    dropdownEntries[0]['blocks'][0] = new Object();
    dropdownEntries[0]['blocks'][0]['block'] = "Community Home";
    dropdownEntries[0]['blocks'][0]['link'] = "http://community.braut.de/home";
    dropdownEntries[0]['blocks'][0]['items'] = new Array();
    dropdownEntries[0]['blocks'][1] = new Object();
    dropdownEntries[0]['blocks'][1]['block'] = "Forum";
    dropdownEntries[0]['blocks'][1]['items'] = new Array();
    dropdownEntries[0]['blocks'][1]['link'] = "http://community.braut.de/forums";
    dropdownEntries[0]['blocks'][2] = new Object();
    dropdownEntries[0]['blocks'][2]['block'] = "Suchen";
    dropdownEntries[0]['blocks'][2]['items'] = new Array();
    dropdownEntries[0]['blocks'][2]['link'] = "http://community.braut.de/search";
    dropdownEntries[0]['blocks'][3] = new Object();
    dropdownEntries[0]['blocks'][3]['block'] = "Mitglieder";
    dropdownEntries[0]['blocks'][3]['items'] = new Array();
    dropdownEntries[0]['blocks'][3]['link'] = "http://community.braut.de/users";
    dropdownEntries[0]['blocks'][4] = new Object();
    dropdownEntries[0]['blocks'][4]['block'] = "Tageb&uuml;cher";
    dropdownEntries[0]['blocks'][4]['items'] = new Array();
    dropdownEntries[0]['blocks'][4]['link'] = "http://community.braut.de/news";
    dropdownEntries[0]['blocks'][5] = new Object();
    dropdownEntries[0]['blocks'][5]['block'] = "Fotos";
    dropdownEntries[0]['blocks'][5]['items'] = new Array();
    dropdownEntries[0]['blocks'][5]['link'] = "http://community.braut.de/photos";
    dropdownEntries[0]['blocks'][6] = new Object();
    dropdownEntries[0]['blocks'][6]['block'] = "Videos";
    dropdownEntries[0]['blocks'][6]['items'] = new Array();
    dropdownEntries[0]['blocks'][6]['link'] = "http://community.braut.de/videos";
    dropdownEntries[0]['blocks'][7] = new Object();
    dropdownEntries[0]['blocks'][7]['block'] = "Gruppen";
    dropdownEntries[0]['blocks'][7]['items'] = new Array();
    dropdownEntries[0]['blocks'][7]['link'] = "http://community.braut.de/groups";
    dropdownEntries[0]['blocks'][8] = new Object();
    dropdownEntries[0]['blocks'][8]['block'] = "Termine";
    dropdownEntries[0]['blocks'][8]['items'] = new Array();
    dropdownEntries[0]['blocks'][8]['link'] = "http://community.braut.de/events";
    
    // Insert Branchenbuch items manually:
    dropdownEntries[4]['blocks'][0] = new Object();
    dropdownEntries[4]['blocks'][0]['block'] = "Suchen";
    dropdownEntries[4]['blocks'][0]['link'] = "branchenbuch/suchen.html";
    dropdownEntries[4]['blocks'][0]['items'] = new Array();
    dropdownEntries[4]['blocks'][1] = new Object();
    dropdownEntries[4]['blocks'][1]['block'] = "Eintragen";
    dropdownEntries[4]['blocks'][1]['link'] = "branchenbuch/eintragen.html";
    dropdownEntries[4]['blocks'][1]['items'] = new Array();
    dropdownEntries[4]['blocks'][2] = new Object();
    dropdownEntries[4]['blocks'][2]['block'] = "Braut &amp; Br&auml;utigam";
    dropdownEntries[4]['blocks'][2]['link'] = "branchenbuch/suchen.html";
    dropdownEntries[4]['blocks'][2]['items'] = new Array();
    dropdownEntries[4]['blocks'][2]['items'].push('<a href="http://www.braut.de/branchenbuch/suchen.html?tx_imxyellowpages_pi1%5Bcat%5D=23&tx_imxyellowpages_pi1%5Bzip%5D=999&x=14&y=9">Brautfrisur / Make-up</a>');
    dropdownEntries[4]['blocks'][2]['items'].push('<a href="http://www.braut.de/branchenbuch/suchen.html?tx_imxyellowpages_pi1%5Bcat%5D=6&tx_imxyellowpages_pi1%5Bzip%5D=999&x=23&y=5">Braut- &amp; Abendmode / Accessoires</a>');
    dropdownEntries[4]['blocks'][2]['items'].push('<a href="http://www.braut.de/branchenbuch/suchen.html?tx_imxyellowpages_pi1%5Bcat%5D=20&tx_imxyellowpages_pi1%5Bzip%5D=999&x=36&y=6">Brautstrau&szlig; / Deko</a>');
    dropdownEntries[4]['blocks'][2]['items'].push('<a href="http://www.braut.de/branchenbuch/suchen.html?tx_imxyellowpages_pi1%5Bcat%5D=30&tx_imxyellowpages_pi1%5Bzip%5D=999&x=29&y=11">Herren- &amp; Br&auml;utigam Mode</a>');
    dropdownEntries[4]['blocks'][3] = new Object();
    dropdownEntries[4]['blocks'][3]['block'] = "";
    dropdownEntries[4]['blocks'][3]['link'] = "branchenbuch/suchen.html";
    dropdownEntries[4]['blocks'][3]['items'] = new Array();
    dropdownEntries[4]['blocks'][4] = new Object();
    dropdownEntries[4]['blocks'][4]['block'] = "F&uuml;r die Feier";
    dropdownEntries[4]['blocks'][4]['link'] = "branchenbuch/suchen.html";
    dropdownEntries[4]['blocks'][4]['items'] = new Array();
    dropdownEntries[4]['blocks'][4]['items'].push('<a href="http://www.braut.de/branchenbuch/suchen.html?tx_imxyellowpages_pi1%5Bcat%5D=25&tx_imxyellowpages_pi1%5Bzip%5D=999&x=31&y=8">Gastgeschenke</a>');
    dropdownEntries[4]['blocks'][4]['items'].push('<a href="http://www.braut.de/branchenbuch/suchen.html?tx_imxyellowpages_pi1%5Bcat%5D=2&tx_imxyellowpages_pi1%5Bzip%5D=999&x=30&y=8">Hochzeitsfahrzeuge</a>');
    dropdownEntries[4]['blocks'][4]['items'].push('<a href="http://www.braut.de/branchenbuch/suchen.html?tx_imxyellowpages_pi1%5Bcat%5D=21&tx_imxyellowpages_pi1%5Bzip%5D=999&x=33&y=10">Fotografie / Video</a>');
    dropdownEntries[4]['blocks'][4]['items'].push('<a href="http://www.braut.de/branchenbuch/suchen.html?tx_imxyellowpages_pi1%5Bcat%5D=15&tx_imxyellowpages_pi1%5Bzip%5D=999&x=19&y=8">Hochzeitskarten / Drucksachen</a>');
    dropdownEntries[4]['blocks'][4]['items'].push('<a href="http://www.braut.de/branchenbuch/suchen.html?tx_imxyellowpages_pi1%5Bcat%5D=32&tx_imxyellowpages_pi1%5Bzip%5D=999&x=39&y=6">Hochzeitsplaner / Veranstalter</a>');
    dropdownEntries[4]['blocks'][4]['items'].push('<a href="http://www.braut.de/branchenbuch/suchen.html?tx_imxyellowpages_pi1%5Bcat%5D=52&tx_imxyellowpages_pi1%5Bzip%5D=999&x=36&y=9">Hochzeitsreisen</a>');
    dropdownEntries[4]['blocks'][4]['items'].push('<a href="http://www.braut.de/branchenbuch/suchen.html?tx_imxyellowpages_pi1%5Bcat%5D=37&tx_imxyellowpages_pi1%5Bzip%5D=999&x=28&y=10">Hochzeitstorten</a>');
    dropdownEntries[4]['blocks'][5] = new Object();
    dropdownEntries[4]['blocks'][5]['block'] = "";
    dropdownEntries[4]['blocks'][5]['link'] = "branchenbuch/suchen.html";
    dropdownEntries[4]['blocks'][5]['items'] = new Array();
    dropdownEntries[4]['blocks'][6] = new Object();
    dropdownEntries[4]['blocks'][6]['block'] = "Locations";
    dropdownEntries[4]['blocks'][6]['link'] = "branchenbuch/suchen.html";
    dropdownEntries[4]['blocks'][6]['items'] = new Array();
    dropdownEntries[4]['blocks'][6]['items'].push('<a href="http://www.braut.de/branchenbuch/suchen.html?tx_imxyellowpages_pi1%5Bcat%5D=43&tx_imxyellowpages_pi1%5Bzip%5D=999&x=15&y=8">Locations / Restaurants</a>');
    dropdownEntries[4]['blocks'][6]['items'].push('<a href="http://www.braut.de/branchenbuch/suchen.html?tx_imxyellowpages_pi1%5Bcat%5D=59&tx_imxyellowpages_pi1%5Bzip%5D=999&x=18&y=7">Musik / Unterhaltung</a>');
    dropdownEntries[4]['blocks'][6]['items'].push('<a href="http://www.braut.de/branchenbuch/suchen.html?tx_imxyellowpages_pi1%5Bcat%5D=8&tx_imxyellowpages_pi1%5Bzip%5D=999&x=22&y=12">Partyservice / Catering</a>');
    dropdownEntries[4]['blocks'][6]['items'].push('<a href="http://www.braut.de/branchenbuch/suchen.html?tx_imxyellowpages_pi1%5Bcat%5D=356&tx_imxyellowpages_pi1%5Bzip%5D=999&x=18&y=13">Recht / Finanzen / Versicherung</a>');
    dropdownEntries[4]['blocks'][6]['items'].push('<a href="http://www.braut.de/branchenbuch/suchen.html?tx_imxyellowpages_pi1%5Bcat%5D=22&tx_imxyellowpages_pi1%5Bzip%5D=999&x=16&y=9">Standes&auml;mter / Kirchen / Freie Trauungen</a>');
    dropdownEntries[4]['blocks'][6]['items'].push('<a href="http://www.braut.de/branchenbuch/suchen.html?tx_imxyellowpages_pi1%5Bcat%5D=56&tx_imxyellowpages_pi1%5Bzip%5D=999&x=26&y=1">Tanzschulen</a>');
    dropdownEntries[4]['blocks'][6]['items'].push('<a href="http://www.braut.de/branchenbuch/suchen.html?tx_imxyellowpages_pi1%5Bcat%5D=34&tx_imxyellowpages_pi1%5Bzip%5D=999&x=24&y=8">Trauringe / Schmuck</a>');
}

/*
 * Debug function.
 * Prints the dropdown data to the document body.
 */
function dropdownDebugData() {
	var msg = "";
    for (i = 0; i < dropdownEntries.length; i++) {
    	msg = msg + "Area: " + dropdownEntries[i]['area'] + "<br>";
    	for (j = 0; j < dropdownEntries[i]['blocks'].length; j++) {
    		msg = msg + "-- Block: " + dropdownEntries[i]['blocks'][j]['block'] + "<br>";
    		for (k = 0; k < dropdownEntries[i]['blocks'][j]['items'].length; k++) {
    			msg = msg + "---- Item: " + dropdownEntries[i]['blocks'][j]['items'][k] + "<br>";
    		}
    	}
    }
    jQuery("body").css('backgroundImage','none').html(msg);
}