var searchBuffer = "";
var play_index = 0;
var play_count = 0;
var play_albumName = Array();
var play_trackName = Array();
var play_albumImage = Array();
var play_soundFile = Array();
var play_is_hold = false;
var play_currentFile = false;
var play_default_volume = 50;
var play_is_init = false;

function contactRequest() {
	var postData = {
		"name" : jQuery('#formName').val(),
		"company" : jQuery('#formCompany').val(),
		"phone" : jQuery('#formTelephone').val(),
		"mail" : jQuery('#formEmail').val(),
		"homepage" : jQuery('#formUrl').val(),
		"message" : jQuery('#formMessage').val()
	}

	if ((postData.name == "" || postData.mail == "" || postData.message == "") ||
		(postData.mail != "" && !postData.mail.match(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i)) ||
		(postData.homepage != "" && !postData.homepage.match(/^(?:https?|s?ftp|telnet|ssh|scp):\/\/(?:(?:[\w]+:)?\w+@)?(?:(?:(?:[\w-]+\.)*\w[\w-]{0,66}\.(?:[a-z]{2,6})(?:\.[a-z]{2})?)|(?:(?:25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.)(?:(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})))(?:\:\d{1,5})?(?:\/(~[\w-_.])?)?(?:(?:\/[\w-_.]*)*)?\??(?:(?:[\w-_.]+\=[\w-_.]+&?)*)?$/i))) {
		
		if (!jQuery("#success").hasClass("hidden")) jQuery("#success").addClass("hidden");
		jQuery("#failure").removeClass("hidden");
	} else {
		if (!jQuery("#failure").hasClass("hidden")) jQuery("#failure").addClass("hidden");
		jQuery("#success").removeClass("hidden");
		
		jQuery.post(buildURI("contact", ""), postData, function(data) {
			// Reset Form Data
			jQuery('#formName').val("");
			jQuery('#formCompany').val("");
			jQuery('#formTelephone').val("");
			jQuery('#formEmail').val("");
			jQuery('#formUrl').val("");
			jQuery('#formMessage').val("");
			
			jQuery("#submitinput").css("display", "none");
		});
		
	}
	
	return false;
}

function initFlash() {
	var params = {
		wmode: "transparent"
	};
	
    swfobject.embedSWF(buildRelativePath('flash/header.swf'), "headerFlash", "650", "220", "7.0.0", "", "", params);
	
	if (!play_is_init) {
		jQuery("#audioPlayer").css("display", "none");
	}
}

function player_initPlayer() {
	soundManager.url = buildRelativePath('flash/');
	soundManager.debugMode = false;
	
	if (arguments.length > 1) {
		var trackData = arguments[0];
		
		if (!play_is_init && trackData.length > 0) {
			
			soundManager.onload = function() {
				for( var i = 0; i < trackData.length; i++) {
					player_addTrack(
						trackData[i][0],
						trackData[i][1],
						buildRelativePath(trackData[i][2]),
						buildRelativePath(trackData[i][3])
					);
				}
				
				play_is_init = true;
				
				if (play_count > 0) {
					player_setTrack(1);
				}
			}
		} else {
			return false;
		}
	} else {
		return false;
	}
}

function player_getCount() {
	if (play_is_init) {
		return play_index;
	} else {
		return false;
	}
}

function player_setTrack(index) {
	if (play_is_init) {
		jQuery("h3.albumName").html(play_albumName[index]);
		jQuery("p.titleName").html(play_trackName[index]);
		jQuery("img.albumCover").attr("src", play_albumImage[index]);
		
		jQuery("#audioPlayer .sIFR-flash").each(function() {
			jQuery(this).remove();
			
			jQuery("html.sIFR-hasFlash").removeClass("sIFR-hasFlash");
		
			jQuery("#audioPlayer .sIFR-replaced").each(function() {
				jQuery(this).html(jQuery(this).find(".sIFR-alternate").html());
				jQuery(this).removeClass("sIFR-replaced");
			});
		});
		
		if(typeof sIFR == "function"){
			sIFR.replaceElement("#audioPlayer h2", named({sFlashSrc: buildRelativePath("flash/tradegothic.swf"), sColor: "#FFFFFF", sCase: "upper", sBgColor: "#000000", sWmode: "transparent", sFlashVars: "textalign=left"}))
			sIFR.replaceElement("#audioPlayer h3", named({sFlashSrc: buildRelativePath("flash/tradegothic.swf"), sColor: "#FDCB05", sCase: "upper", sBgColor: "#000000", sWmode: "transparent", sFlashVars: "textalign=left"}))
			sIFR.replaceElement("#audioPlayer p.titleName", named({sFlashSrc: buildRelativePath("flash/tradegothic.swf"), sColor: "#FFFFFF", sCase: "upper", sBgColor: "#000000", sWmode: "transparent", sFlashVars: "textalign=left"}))
		};
		
		player_stopTrack();
		
		play_currentFile = false;
		
		play_currentFile = soundManager.createSound({
			id: 'audioPlayer_sound_' + index,
			url: play_soundFile[index],
			volume: play_default_volume,
			onload: function() {
				play_index = index;
			}
		});
		
		player_playTrack();
	} else {
		return false;
	}
}

function player_holdTrack() {
	if (play_is_init) {
		if (!play_is_hold && play_currentFile != false) {
			play_currentFile.pause();
		}
		
		refreshState(true);
	} else {
		return false;
	}
}

function refreshState(state) {
	play_is_hold = state;
	
	if (!play_is_hold) {
		jQuery("li.holdButton").removeClass("hidden");
		jQuery("li.playButton").addClass("hidden");
	} else {
		jQuery("li.holdButton").addClass("hidden");
		jQuery("li.playButton").removeClass("hidden");
	}				
}
		
function player_playTrack() {
	if (play_is_init) {
		if (play_is_hold && play_currentFile != false) {
			play_currentFile.play();
		}
		
		refreshState(false);
	} else {
		return false;
	}
}

function player_stopTrack() {
	if (play_is_init) {
		if (!play_is_hold && play_currentFile != false) {
			play_currentFile.stop();
		}
		
		refreshState(true);
	} else {
		return false;
	}
}

function player_prevTrack() {
	if (play_is_init) {
		if (play_index > 1) {
			play_index--;
			player_setTrack(play_index);
		}
	} else {
		return false;
	}
}

function player_nextTrack() {
	if (play_is_init) {
		if (play_index < play_count) {
			play_index++;
			player_setTrack(play_index);
		}
	} else {
		return false;
	}
}

function player_addTrack(albumName, trackName, albumImage, soundFile) {
	play_count++;
	
	play_albumName[play_count] = albumName;
	play_trackName[play_count] = trackName;
	play_albumImage[play_count] = albumImage;
	play_soundFile[play_count] = soundFile;
}

var initPlayer = function(param) {
	player_initPlayer(param);
}

var buildURI = function(doc, params) {
	return gConfig.rootURL + (gConfig.previewMode == 1 ? "preview/" : "") + gConfig.ajaxPath + doc + "." + gConfig.docExt + (params != "" ? "?" + params : "");
}

var buildRelativePath = function(path) {
	return gConfig.rootURL + path;
}

var initHyperlinks = function() {
	jQuery("a").each(function() {
		var link = jQuery(this).attr("href");
		
		if (link.substr(0, gConfig.rootURL.length) == gConfig.rootURL) {
			link = link.substr(gConfig.rootURL.length)
			
			var urlParams = "";
			
			if (link.indexOf("?") > 0) {
			
				urlParams = link.substr(link.indexOf("?") + 1);
				link = link.substr(0, link.indexOf("?"));
				
			} else {
				urlParams = "";
			}
			
			if (link.substr(link.length - gConfig.docExt.length, gConfig.docExt.length) == gConfig.docExt) {
				link = link.substr(0, (link.length - gConfig.docExt.length) - 1)
				
				for (var i = link.length; i > 0; i--) {
					if (link.substr(i, 1) == "/") {
						var namespace = link.substr(i + 1)
						
						if (jQuery(this).attr("rel") != "reload" && !jQuery(this).hasClass("langLink")) {
							jQuery(this).attr("href", "javascript:void(0);");
							jQuery(this).attr("rel", namespace + "?" + urlParams);
						
							jQuery(this).bind("click", function() {
								var link = jQuery(this).attr("rel");
								var urlParams = "";
								
								if (link.indexOf("?") > 0) {
									urlParams = link.substr(link.indexOf("?") + 1);
									link = link.substr(0, link.indexOf("?"));
								} else {
									urlParams = "";
								}
								
								openHyperlink(buildURI("pages/" + gConfig.language + "/" + link, urlParams));
							});
						} else if (jQuery(this).hasClass("langLink")) {
							jQuery(this).attr("href", "javascript:void(0);");
							
							var lang = link;
							
							if (gConfig.previewMode == 1) {
								lang = lang.substr(8)
							}
							
							lang = lang.substr(0, lang.indexOf("/"));
							jQuery(this).attr("rel",lang);
														
							jQuery(this).bind("click", function() {
								changeLanguage(jQuery(this).attr("rel"));
							});
						}
						
						break;
					}
				}
			}
		}
	});
}

var ajaxSearch = function() {
	jQuery.post(
		buildURI("search", ""),
		
		{
			lang : gConfig.langauge,
			q : jQuery("#search-field").val(),
			render : true
		},
		
		function(data) {
			var json = eval(data);
			
			if ((json.length) == 1) {
				displayContent(json);
			}
		}
	);
	
	return false;
}

var changeLanguage = function(langName) {
	gConfig.language = langName;
	openHyperlink(buildURI("pages/" + gConfig.language + "/" + gConfig.currentNamespace));
}

var displayContent = function(json) {
	jQuery("#content").fadeOut("250", function() {
		gConfig.currentNamespace = json[0]['namespace'];
		
		jQuery("#nav li").each(function() {
			if (!jQuery(this).hasClass("search-box")) {
				jQuery(this).remove();
			}
		});
		
		jQuery("#content .sIFR-flash").each(function() {
			jQuery(this).remove();
			
			jQuery("html.sIFR-hasFlash").removeClass("sIFR-hasFlash");
		
			jQuery("#content .sIFR-replaced").each(function() {
				jQuery(this).html(jQuery(this).find(".sIFR-alternate").html());
				jQuery(this).removeClass("sIFR-replaced");
			});
		});
		
		var i = 0;
		
		document.title = json[0]['title'];
		jQuery("#nav").html(json[0]['navbar'] + jQuery("#nav").html());
		jQuery("#nav li").each(function() {
			if (!jQuery(this).hasClass("search-box") && i > 0) {
				jQuery(this).css("margin-left", "6px");
			}
			
			i++;
		});
		
		jQuery("#content-wrapper").css({
			'backgroundImage': (json[0]['background'] != "" ? "url(" + json[0]['background'] + ")" : "none"),
			'backgroundRepeat': 'no-repeat',
			'backgroundColor': 'black',
			'backgroundPosition': 'bottom right'
		});
		
		jQuery("#content").html(json[0]['content']);
		
		jQuery("a.active").each(function() {
			jQuery(this).removeClass("active");
		});
		
		initHyperlinks();
		
		jQuery("a").each(function() {
			var oc = jQuery(this).attr("onclick") + "";
			
			if (oc.indexOf(json[0]['namespace']) > 0) {
				jQuery(this).addClass("active");
			}
		});
							
		jQuery("#content").fadeIn("250");
		
		sIFR.replaceElement("#content h2.left", named({sFlashSrc: buildRelativePath("flash/tradegothic.swf"), sColor: "#FFFFFF", sCase: "upper", sBgColor: "#000000", sWmode: "transparent", sFlashVars: "textalign=left"}))
		sIFR.replaceElement("#content h2", named({sFlashSrc: buildRelativePath("flash/tradegothic.swf"), sColor: "#FFFFFF", sCase: "upper", sBgColor: "#000000", sWmode: "transparent", sFlashVars: "textalign=right"}))

	});
}

var openHyperlink = function(uri) {
	jQuery.get(
		uri,
		function(data) {
			var json = eval(data);
			if ((json.length) == 1) {
				displayContent(json);
			}
		}
	);

	
	return false;
}

var initFonts = function() {
	if(typeof sIFR == "function"){
		sIFR.replaceElement("#content h2.left", named({sFlashSrc: buildRelativePath("flash/tradegothic.swf"), sColor: "#FFFFFF", sCase: "upper", sBgColor: "#000000", sWmode: "transparent", sFlashVars: "textalign=left"}))
		sIFR.replaceElement("#content h2", named({sFlashSrc: buildRelativePath("flash/tradegothic.swf"), sColor: "#FFFFFF", sCase: "upper", sBgColor: "#000000", sWmode: "transparent", sFlashVars: "textalign=right"}))
	};
}

var showSearchBox = function(searchTerm) {
	if (searchTerm == "") {
		hideSearchBox();
	} else {
		jQuery.post(buildURI("search", ""), { q : searchTerm, lang : gConfig.language}, function(data) {
			var json = eval (data);
			
			if (json) {
				if (json.length > 0) {
					if (jQuery("ul.suggestions").length == 0) {
						jQuery("li.search-box").append('<ul class="suggestions"></ul>')
					} else {
						jQuery("ul.suggestions li").remove();
					}
					
					jQuery("ul.suggestions").show("fast");
					
					for (var i = 0; i < json.length; i++) {
						jQuery("ul.suggestions").append('<li><a href="' + json[i].href + '" title="' + json[i].title + '">' + json[i].title + '</a></li>');
					}
					
					initHyperlinks();
				} else {
					hideSearchBox();
				}
			} else {
				hideSearchBox();
			}
		});
	}
}

var hideSearchBox = function() {
	if (jQuery("ul.suggestions").length != 0) {
		jQuery("ul.suggestions").slideUp("fast");
	}
}

var initSearchBox = function() {
	jQuery(".text_field, div.contain, .text_area").each(function() {
		jQuery(this).bind("blur", function() {
			if (jQuery(this).hasClass("blur")) jQuery(this).removeClass("blur");
		}).bind("focus", function() {
			if (!jQuery(this).hasClass("blur")) jQuery(this).addClass("blur");
		})
	});

	searchBuffer = jQuery("#search-field").val();
	
	jQuery("#search-field").bind("focus", function() {
		if (jQuery(this).val() == searchBuffer)
			jQuery(this).val("");
	}).bind("blur", function() {
		if (jQuery(this).val() == "")
			jQuery(this).val(searchBuffer);
	}).bind("keypress", function() {
		if (jQuery(this).val().length >= 3) {
			showSearchBox(jQuery(this).val());
		} else {
			hideSearchBox();
		}
	}).bind("change", function() {
		if (jQuery(this).val().length >= 3) {
			showSearchBox(jQuery(this).val());
		} else {
			hideSearchBox();
		}
	});
}

var handleMouseEvent = function(h, l) {
	var d = jQuery(h).next("ul");
	
	if(d.length == 0) {
		d = jQuery(h).next("p");
		var isOpen = (l == 0 ? jQuery(jQuery(h).parents()[0]).hasClass("open") : d.hasClass("open"));
	} else {
		var isOpen = (l == 0 ? jQuery(jQuery(h).parents()[0]).hasClass("open") : d.hasClass("open"));
	
		if (l == 0) {
			d.parent().parent().find("ul.multi.open").each(function() {
				if (jQuery(this) != d)
					jQuery(this).slideUp("fast", function() {
						jQuery(this).removeClass("open");
						jQuery(this).addClass("closed");
						jQuery(this).parent().removeClass("open");
						jQuery(this).parent().addClass("closed");
						
						jQuery(this).prev().removeClass("open");
						jQuery(this).prev().addClass("closed");
					});
			});
		
		} if (l == 1) {
			d.parent().parent().find("ul.multi.open").each(function() {
				if (jQuery(this) != d)
					jQuery(this).slideUp("fast", function() {
						jQuery(this).removeClass("open");
						jQuery(this).addClass("closed");
						
						jQuery(this).prev().removeClass("open");
						jQuery(this).prev().addClass("closed");
					});
			});
		}
	}
	
	if (!isOpen) {
		d.show("fast");
		d.removeClass("closed");
		d.addClass("open");
		
		if (l == 0) {
			d.parent().removeClass("closed");
			d.parent().addClass("open");
		}
		
		jQuery(h).removeClass("closed");
		jQuery(h).addClass("open");
	} else {
		d.slideUp("fast");
		d.removeClass("open");
		d.addClass("closed");
		
		if (l == 0) {
			d.parent().removeClass("open");
			d.parent().addClass("closed");
		}
		
		jQuery(h).removeClass("open");
		jQuery(h).addClass("closed");
	}
}

var initSlideMenu = function() {
	jQuery("ul.slideMenu").children("li").each(function() {
		jQuery(this).addClass("level-0");
		
		jQuery(this).children("a").each(function() {
			jQuery(this).attr("href", "javascript:void(0);");
			jQuery(this).bind("click", function() {
				handleMouseEvent(this, 0);
			});
			
			jQuery(this).addClass("link");
			jQuery(this).addClass("open");
		});
		
		if (jQuery(this).children("ul").length > 0) {
			jQuery(this).addClass("multi");
				
			jQuery(this).children("ul").each(function() {
				jQuery(this).addClass("level-1");
				jQuery(this).addClass("multi");
				
				jQuery(this).children("li").each(function() {
					jQuery(this).addClass("level-2");
				
					if (jQuery(this).children("ul").length > 0) {
						jQuery(this).addClass("multi");
						
						jQuery(jQuery(this).children("a")[0]).attr("href", "javascript:void(0);");
						jQuery(jQuery(this).children("a")[0]).bind("click", function() {
							handleMouseEvent(this, 1);
						});
						
						jQuery(this).children("ul").each(function() {
							jQuery(this).addClass("level-3");
							jQuery(this).addClass("multi");
						
							jQuery(this).children("li").each(function() {
								if (jQuery(this).children("a").hasClass("active")) {
									var co = jQuery(this);
									var cb = false;
									
									while (co !== false) {
										cb = co;
										co = co.parent();
									
										if (co.hasClass("slideMenu")) {
											cb.addClass("open");
											co = false; cb = false;
											break;
											
										} else if (co[0].tagName.toLowerCase() == "ul") {
											jQuery(co[0]).addClass("open");
											jQuery(co[0]).prev().addClass("open");
										}
									}
								}
								
								jQuery(this).addClass("level-3");
								jQuery(this).addClass("single");
							});
						});
						
					} else {
						jQuery(this).addClass("single");
						
						if (jQuery(this).children("a").hasClass("active")) {
							var co = jQuery(this);
							var cb = false;
							
							while (co !== false) {
								cb = co;
								co = co.parent();
							
								if (co.hasClass("slideMenu")) {
									cb.addClass("open");
									co = false; cb = false;
									break;
									
								} else if (co[0].tagName.toLowerCase() == "ul") {
									jQuery(co[0]).addClass("open");
									jQuery(co[0]).prev().addClass("open");
								}
							}
						}
						
						jQuery(this).children("a").each(function() {
							jQuery(this).addClass("document");
						});
					}
				});
			});
		} else {
			jQuery(this).children("p").each(function() {
				jQuery(this).addClass("inner");
			});
			
			jQuery(this).addClass("single");
			jQuery(this).addClass("open");
		}
	});
	
	jQuery("ul.slideMenu ul").each(function() {
		if (!jQuery(this).hasClass("open")) {
			jQuery(this).addClass("closed");
			jQuery(this).prev().addClass("closed");
		}
	});
}

var initFooter = function() {
	jQuery("#footer .dropdown").each(function() {
		jQuery(this).bind(
			"mouseenter", function() {
				jQuery(this).animate({
					"top": "0px",
					"opacity": "1"
				}, 250);
			}).bind(
			"mouseout", function() {
				jQuery(this).animate({
					"top": "-8px",
					"opacity": (jQuery(this).hasClass("trans") ? "0.3" : "1")
				}, 250);
			});
	});
}