var colorChange = 1;

function modifySubmitButtons() {
	// alle Submit-Buttons ersetzen
	$(".csc-mailform-submit").each(function() {
		if(!$(this).parent().hasClass('button-left')) {
			$(this).wrap('<div class="button-left"></div>');
		}
	});
}
// http://kawika.org/jquery/cssCheckbox/
jQuery.fn.cssCheckbox = function () {
	jQuery("input[type='checkbox'] + label", this)
		.each(function(){
			if(jQuery(this).prev()[0].checked)
				jQuery(this).addClass("checked");
		})
		.click( function() {
			jQuery(this)
				.toggleClass("checked")
				.prev()[0].checked = jQuery(this).prev()[0].checked;
		})
		.prev().hide();
}

// http://kawika.org/jquery/cssRadio/
jQuery.fn.cssRadio = function () {
	var context = this;
	jQuery("input[type='radio'] + label", this)
		.each( function(){
			if ( jQuery(this).prev()[0].checked )
				jQuery(this).addClass("checked");
			})
		.click( function() {
			jQuery("input[type='radio'] + label", context)
				.each( function() {
					jQuery(this)
						.removeClass()
						.prev()[0].checked = false;
				});
			jQuery(this)
				.addClass("checked")
				.prev()[0].checked = true;
			})
		.prev().hide();
}

function randomKey(maxKey, actKey) {
	if(maxKey > 0) {
		newKey = Math.floor(Math.random() * (maxKey + 1));
		if(newKey != actKey) {
			return newKey;
		}
		else if(newKey < maxKey) {
			return newKey + 1;
		}
		else if(newKey == maxKey) {
			return newKey - 1;
		}
	}
	else {
		return maxKey;
	}
}
function randomNumber(n) {
	return Math.floor(Math.random() * (n + 1));
}
function changeColor() {
	if(i < 10) {
		if(i == bgLeChangeStep) {
			if(colorChange == 1) {
				$("#tooltip").css("color", colors[randColorKey][toolTipColor]);
				$("body").css("background-image", "url(" + colors[randColorKey]['bg'] + ")");
				for(var j = 0; j < le.length; j++) {
					$(le[j]).removeClass();
					$(le[j]).addClass(colors[randColorKey]['le'][randClassKey]);
				}
			}
		}
		if(colorChange == 1) {
			$(".n" + (i + 1)).css("background-color",colors[randColorKey][i]);
		}
		i++;
		window.setTimeout("changeColor()", (minTimeColorSetup + randomNumber(maxTimeColorSetup - minTimeColorSetup)));
	}
	else {
		i = 0;
		if(colorChange == 1) {
			randColorKey = randomKey((colors.length - 1), randColorKey);
			randClassKey = randomNumber((colors[randColorKey]['le'].length - 1));
		}
		window.setTimeout("changeColor()", (minTimeColorChange + randomNumber(maxTimeColorChange - minTimeColorChange)));
	}
}
function tx_amsfeuser_pi1_afterLogin() {
	loaded = new Object();
	$('.cb .origurl').each(function () {
		link = $(this).text();
		if (typeof link == 'string' && !loaded[link]) {
			getBoxen(link);
			loaded[link] = true;
		}
	});
	$("#metanavi-box").find('.tx-amsfeuser-pi1 a').click(function(){ getBoxen(this);return false;});
}
function tx_amsfeuser_pi1_afterLogout() {
	loaded = new Object();
	$('.cb .origurl').each(function () {
		link = $(this).text();
		if (typeof link == 'string' && !loaded[link]) {
			getBoxen(link);
			loaded[link] = true;
		}
});
//  $('.cb').each(function () {
//     pid = $(this).attr('pid');
//     if (typeof pid == 'string' && !loaded[pid]) {
//       getBoxen("index.php?type=98&id="+pid);
//       loaded[pid] = true;
//     }
//  });
	$("#metanavi-box").find('.tx-amsfeuser-pi1 a').click(function(){ getBoxen(this);return false;});
}
function objectSize(obj) {
		var i, v;
		var count = 0;
		//var props = [];
		if (typeof(obj) === 'object') {
			for (i in obj) {
				v = obj[i];
				if (v !== undefined && v !== null && typeof(v) !== 'function') {
//          props[count] = i;
					count++;
				}
			}
		}
		return count;
}
function deleteOldestEntry(obj) {
	var minTime = 0;
	var minId = '';
	var v, i;
	for (i in obj) {
		v = obj[i];
		if (i.indexOf('cb') === 0 && (minTime == 0 || v.t < minTime)) {
			minTime = v.t;
			minId = i;
		}
	}
	if (minTime > 0 && minId != "") {
		delete obj[minId];
	}
	return obj;
}
function deleteOldEntries(obj, keep) {
	var size = objectSize(obj);
	if (size > keep) {
		while (objectSize(obj) > keep) {
			obj = deleteOldestEntry(obj);
		}
	}
	return obj;
}
function saveCookieCurrentPosition(elemObj) {
	var maxItems = 15;
	var tmp = jQuery.cookie('ajpositions');
	if (typeof tmp == "string") {
		cookieObj = JSON.parse(tmp);
	}
	else {
		cookieObj = new Object();
	}
	jetzt = new Date().getTime();

	cookieObj[elemObj.id] = $.extend(
								cookieObj[elemObj.id],
								{ id: elemObj.id ,
									x: $(elemObj).css('left'),
									y: $(elemObj).css('top'),
									z: $(elemObj).css('z-index'),
									t: jetzt
								}
								);
	cookieObj = deleteOldEntries(cookieObj, maxItems);
	jQuery.cookie('ajpositions',JSON.stringify(cookieObj));

	//metanavi beim ersten verschieben vom unteren rand abdocken
	if (elemObj.id == 'metanavi-box' || elemObj.id == 'music-box') {
		$(elemObj).css('bottom','inherit');
		//$(elemObj).css('right','inherit');
	}
}

function restoreCookiePosition(elemObj) {
	tmp = jQuery.cookie('ajpositions');
	if (typeof tmp == "string") {
		cookieObj = JSON.parse(tmp);
		if (cookieObj[elemObj.id]) {
			$(elemObj).css('left', cookieObj[elemObj.id].x);
			$(elemObj).css('top', cookieObj[elemObj.id].y);
			$(elemObj).css('z-index', cookieObj[elemObj.id].z);
			if (elemObj.id == 'metanavi-box' || elemObj.id == 'music-box') {
				$(elemObj).css('bottom','inherit');
				//$(elemObj).css('right','inherit');
			}
		}
	}
}

function deleteCookiePosition(elemObj) {
	tmp = jQuery.cookie('ajpositions');
	if (typeof tmp == "string") {
		cookieObj = JSON.parse(tmp);
		if (cookieObj[elemObj.id]) {
			cookieObj[elemObj.id] = null;
			jQuery.cookie('ajpositions',JSON.stringify(cookieObj));
		}
	}
}

function deleteAllCookiePositions() {
	jQuery.cookie('ajpositions',JSON.stringify(new Object()));
}

function initColorChange() {
	if($.cookie('tx_amsyouth_pi1_colorchange') == 1 || $.cookie('tx_amsyouth_pi1_colorchange') == 0) {
		colorChange = $.cookie('tx_amsyouth_pi1_colorchange');
	}
	if(colorChange == 1) {
		$('#stop-colorchange').show();
		$('#start-colorchange').hide();
	}
	else {
		$('#stop-colorchange').hide();
		$('#start-colorchange').show();
	}
}

function init() {
	// replace all checkboxes
	$().cssCheckbox();

	// replace all radio buttons
	$().cssRadio();

	// alle Submit-Buttons ersetzen
	modifySubmitButtons();

	// start and stop functions für user wall
	$('#stop-colorchange').click(function() {
		colorChange = 0;
		$.cookie('tx_amsyouth_pi1_colorchange', 0, { expires: 356 });
		$('#stop-colorchange').hide();
		$('#start-colorchange').show();
	});
	$('#start-colorchange').click(function() {
		colorChange = 1;
		$.cookie('tx_amsyouth_pi1_colorchange', 1, { expires: 356 });
		$('#stop-colorchange').show();
		$('#start-colorchange').hide();
	});

	$("body").css("background-image","url("+backgroundImage+")");
	for(var k = 0; k < le.length; k++) {
		$(le[k]).addClass(startClass);
	}
	createToolTips();
	$('.open-actionbox').click(function() {
		if($('#actionbox-form').css("display") == "none") {
			$('#actionbox-form').css("display", "block");
		}
		else {
			$('#message###cUid###').css("display", "none");
			$('#actionbox-form').css("display", "none");
		}
	});
	$('.open-actionbox').hover(
		function() {
		$(this).css('background', 'url(typo3conf/ext/ams_youth/res/actionbox-bottom-arrow.png) no-repeat 95px 27px');
		},
		function() {
			$(this).css('background', 'none');
		}
	);
	$('#actionbox-box').draggable({containment: ['0', '0', '9999', '9999'], handle: ".drag", stop: function() {saveCookieCurrentPosition(this)}});
	$('#mainnavi-box').draggable({containment: ['0', '0', '9999', '9999'], handle: ".drag", stop: function() {saveCookieCurrentPosition(this)}});
	$('#imagepopup').draggable({containment: ['0', '0', '9999', '9999'], handle: ".drag", stop: function() {saveCookieCurrentPosition(this)}});
	$('#metanavi-box').draggable({containment: ['0', '0', '9999', '9999'], handle: ".drag", stop: function() {saveCookieCurrentPosition(this)}});
	$('#music-box').draggable({containment: ['0', '0', '9999', '9999'], handle: ".drag", stop: function() {saveCookieCurrentPosition(this)}});
	$('#metanavi-box .tx-amsfeuser-pi1 a').click(function(){ getBoxen(this);return false;});
	$('#actionbox-box a').click(function(){ getBoxen(this);return false;});
	$(".cb").draggable({containment: ['0', '0', '9999', '9999'], handle: ".drag, .h, .f, .move", stack: { group: '.cb', min: 50 }, stop: function() {saveCookieCurrentPosition(this)} });
	$(".ui-draggable").each( function() {
		restoreCookiePosition(this);
	});
	$('.ui-draggable').click( function () {
		bringToFront(this,'.ui-draggable');
	});
	$('.close').click(function() {
		$(this).parent().remove();
	});
	$('.closeMessageImage').click(function() {
		$(this).parent().css('display', 'none');
	});
	$('.minimize').click(function() {
		$(this).parent().toggleClass("min");
	});
	$('#reset-layout').click(function() {
		resetLayout();
	});
	$('.jqueryform form').submit(function() { sendForm(this); return false;});
	$('#jqueryform').submit(function() { sendForm(this); return false;});
	$('.drag').hover(
		function() {
		$(this).css('background', 'url(typo3conf/ext/ams_youth/res/navigation-move.png) no-repeat center center');
		},
		function() {
			$(this).css('background', 'none');
		}
	);
	$('.close').hover(
		function() {
		$(this).css('background', 'url(typo3conf/ext/ams_youth/res/close.png) no-repeat');
		$(this).prev().css('background', 'url(typo3conf/ext/ams_youth/res/minimize.png) no-repeat');
		$(this).prev().prev().css('background', 'url(typo3conf/ext/ams_youth/res/move.png) no-repeat');
		},
		function() {
			$(this).css('background', 'none');
			$(this).prev().css('background', 'none');
			$(this).prev().prev().css('background', 'none');
		}
	);
	$('.move').hover(
		function() {
		$(this).css('background', 'url(typo3conf/ext/ams_youth/res/move.png) no-repeat');
		$(this).next().css('background', 'url(typo3conf/ext/ams_youth/res/minimize.png) no-repeat');
		$(this).next().next().css('background', 'url(typo3conf/ext/ams_youth/res/close.png) no-repeat');
		},
		function() {
			$(this).css('background', 'none');
			$(this).next().css('background', 'none');
			$(this).next().next().css('background', 'none');
		}
	);
	$('.minimize').hover(
		function() {
		$(this).css('background', 'url(typo3conf/ext/ams_youth/res/minimize.png) no-repeat');
		$(this).prev().css('background', 'url(typo3conf/ext/ams_youth/res/move.png) no-repeat');
		$(this).next().css('background', 'url(typo3conf/ext/ams_youth/res/close.png) no-repeat');
		},
		function() {
			$(this).css('background', 'none');
			$(this).prev().css('background', 'none');
			$(this).next().css('background', 'none');
		}
	);
	$('.h').hover(
		function() {
			$(this).prev().css('background', 'url(typo3conf/ext/ams_youth/res/close.png) no-repeat');
			$(this).prev().prev().css('background', 'url(typo3conf/ext/ams_youth/res/minimize.png) no-repeat');
			$(this).prev().prev().prev().css('background', 'url(typo3conf/ext/ams_youth/res/move.png) no-repeat');
		},
		function() {
			$(this).prev().css('background', 'none');
			$(this).prev().prev().css('background', 'none');
			$(this).prev().prev().prev().css('background', 'none');
		}
	);

	$('#message-data').jqm();
	window.setTimeout("changeColor()", (minTimeColorChange + randomNumber(maxTimeColorChange - minTimeColorChange)));
}
$(document).ready(init);

function resetLayout() {
	//alle contentboxen schließen
	$('.cb').remove();
	//positionscookie löschen
	deleteAllCookiePositions();
	//positionen zurücksetzen
	$('#mainnavi-box').css('left',leftPosMainNavi);
	$('#mainnavi-box').css('top',topPosMainNavi);
	$('#metanavi-box').css('left','inherit');
	$('#metanavi-box').css('top','inherit');
	$('#metanavi-box').css('bottom',bottomPosMetaNavi);
	$('#metanavi-box').css('right',rightPosMetaNavi);
	$('#actionbox-box').css('left',leftPosActionBox);
	$('#actionbox-box').css('top',topPosActionBox);
	$('#music-box').css('top','inherit');
	$('#music-box').css('left',leftPosMusicBox);
	$('#music-box').css('bottom',bottomPosMusicBox);
	//Funktionsarray leeren
	jsFunc = new Array();
}
function createToolTips() {
	$('.userwall > a').tooltip({
		delay: 0,
		showURL: false
	}).click(function(){ getBoxen(this);return false;});
}
function setBodyBackground(backgroundImage) {
	$("body").css("background-image","url("+backgroundImage+")");
}
var zmax = 0;
function bringToFront(item, selector) {
	//den max-wert aller boxen finden, die per selector definiert sind
	$( selector ).each(function() {
		var cur =  $( this ).css( 'zIndex');
		zmax = cur > zmax ? cur : zmax;
	});
	//die eigentliche box nach oben setzen, wenn sie nicht oben ist
	$( item ).css( 'zIndex', ++zmax );
	//das mainmenu und das metamenu immer nach ganz oben holen
	$('#mainnavi-box, #metanavi-box, #actionbox-box, #music-box').css( 'zIndex', zmax );
}

function showBoxen(htmlresponse, origin) {
	// Funktionsarray leeren
	jsFunc = new Array();

	//content boxen im ajax rückgabewert in versteckten container laden
	$('#content-hidden').append(htmlresponse);
	$('#content-hidden .cb').each(function () { //alle nachgeladenen boxen durchlaufen
		thisid = $(this).attr('id');
		//$('#'+thisid).log();
		if (origin == false) origin = "";
		if ($('#content-container #'+thisid).size()) { //aktuelle box id ist bereits auf der seite sichtbar
			//$(this).log("gefunden: "+thisid);
			//inhalt kopieren
			$('#content-container #'+thisid+' .c').html($(this).find('.c .w').get());
			$('#content-container #'+thisid+' .origurl').html(origin);
			//box aus dem hidden-container löschen
			$(this).remove();

			//A-Tags im inhalt mit ajax callback versehen
			$('#content-container #'+thisid+' .c a[target!="_blank"]').click(function(){ getBoxen(this);return false;});
			// muß in den ersten Filter integriert werden!!!!!!
			//$('#content-container #'+thisid+' .c a[target!="thePicture"]').click(function(){ getBoxen(this);return false;});
			test = $('.jqueryform form');
			$('.jqueryform form').submit(function() { sendForm(this,test); return false;});
			$('#jqueryform').submit(function() { sendForm(this); return false;});
		}
		else { //aktuelle box id ist neu

			//$(this).log("nicht gefunden: "+thisid);

			//events für die neue box definieren
			$(this).draggable({containment: ['0', '0', '9999', '9999'], handle: ".drag, .h, .f, .move", stack: { group: '.cb', min: 50 }, stop: function() {saveCookieCurrentPosition(this)} });

			$(this).click( function () {
				bringToFront(this,'.ui-draggable');
			});
			$(this).find('.close').click(function() {
				$(this).parent().remove();
			});
			$(this).find('.minimize').click(function() {
				$(this).parent().toggleClass("min");
			});

			$(this).prepend("<div class='origurl' style='display:none'>"+origin+"</div>");
			$(this).find('.c a[target!="_blank"]').click(function(){ getBoxen(this);return false;});
			// muß in den ersten Filter integriert werden!!!!!!
			//$(this).find('.c a[target!="thePicture"]').click(function(){ getBoxen(this);return false;});
			$(this).find('.jqueryform form').submit(function() { sendForm(this); return false;});
			$('#jqueryform').submit(function() { sendForm(this); return false;});

			//position aus Cookie laden
			restoreCookiePosition(this);

			//neue box kopieren
			$('#content-container').append($(this).get());

			//box aus dem hidden-container löschen
			$('#content-hidden #'+thisid).remove();

			$('.close').hover(
		function() {
		$(this).css('background', 'url(typo3conf/ext/ams_youth/res/close.png) no-repeat');
		$(this).prev().css('background', 'url(typo3conf/ext/ams_youth/res/minimize.png) no-repeat');
		$(this).prev().prev().css('background', 'url(typo3conf/ext/ams_youth/res/move.png) no-repeat');
		},
		function() {
			$(this).css('background', 'none');
			$(this).prev().css('background', 'none');
			$(this).prev().prev().css('background', 'none');
				}
			);
			$('.move').hover(
		function() {
		$(this).css('background', 'url(typo3conf/ext/ams_youth/res/move.png) no-repeat');
		$(this).next().css('background', 'url(typo3conf/ext/ams_youth/res/minimize.png) no-repeat');
		$(this).next().next().css('background', 'url(typo3conf/ext/ams_youth/res/close.png) no-repeat');
		},
		function() {
			$(this).css('background', 'none');
			$(this).next().css('background', 'none');
			$(this).next().next().css('background', 'none');
				}
			);
			$('.minimize').hover(
		function() {
		$(this).css('background', 'url(typo3conf/ext/ams_youth/res/minimize.png) no-repeat');
		$(this).prev().css('background', 'url(typo3conf/ext/ams_youth/res/move.png) no-repeat');
		$(this).next().css('background', 'url(typo3conf/ext/ams_youth/res/close.png) no-repeat');
		},
		function() {
			$(this).css('background', 'none');
			$(this).prev().css('background', 'none');
			$(this).next().css('background', 'none');
				}
			);
			$('.h').hover(
				function() {
					$(this).prev().css('background', 'url(typo3conf/ext/ams_youth/res/close.png) no-repeat');
					$(this).prev().prev().css('background', 'url(typo3conf/ext/ams_youth/res/minimize.png) no-repeat');
					$(this).prev().prev().prev().css('background', 'url(typo3conf/ext/ams_youth/res/move.png) no-repeat');
				},
				function() {
					$(this).prev().css('background', 'none');
					$(this).prev().prev().css('background', 'none');
					$(this).prev().prev().prev().css('background', 'none');
				}
			);
		}
		bringToFront('#'+thisid,'.ui-draggable');
	});
	// replace all checkboxes
	$().cssCheckbox();
	// replace all radio buttons
	$().cssRadio();
	// alle Submit-Buttons ersetzen
	modifySubmitButtons();
	hideLoadBar();
	// call all jcarousels
	runFunc();
}
function getBoxen(link) {
	if(link.href) {
		link = link.href
	}
	if(link.indexOf('javascript') != 0) {
		showLoadBar();
		if (link == "") return false;
		if (link.indexOf('type=98') == -1 && link.indexOf(realurlPageTypeFileName) == -1) {
				link = link.replace(/([^#?]*)(\??[^#]*)(#?.*)/,'$1'+realurlPageTypeFileName+'$2$3');
		}
		$.get(link,function(htmlresponse) {
			showBoxen(htmlresponse, link);
		});
	}
	else {
		js = link.replace(/javascript:/,'');
		eval(js);
	}
}
var olddata = "";
var oldurl = "";
function sendForm(form) {
	theform = $(form);
	if(theform.find('#jqueryformremoveOnSuccess').length) {
		if((typeof doValidate == 'function') && !doValidate()) return false;
	}
	showLoadBar();
	theform.find('input[name="submitpage"]').val(theform.find('input[name="submitpage"]').val()+realurlPageTypeFileName);
	submitbutton = theform.find('input[type="submit"]');
	dataString = theform.serialize()+'&'+submitbutton.attr('name')+'='+submitbutton.val();
	url = theform.attr('action');
	if (url.indexOf('type=98') == -1 && url.indexOf(realurlPageTypeFileName) == -1) {
		url = url + realurlPageTypeFileName;
	}
	if (olddata == dataString && oldurl == url) {
		//$.log("doublecall");
		//workaround weil sendForm manchmal doppelt aufgerufen wird
		//ursache muss noch gefunden werden
		return false;
	}
	else {
		olddata = dataString;
		oldurl = url;
	}
	$.ajax({
		type: "POST",
		url: url,
		data: dataString,
		success: function(htmlresponse) {
			if (theform.find('#jqueryformremoveOnSuccess').length && (theform.parents().find('#'+$(htmlresponse)[0].id).length == 0)) {
				//das abschickende formular soll samt box verschwinden wenn es ein hiddenfeld mit ID=jqueryformremoveOnSuccess gibt (bzw. name=removeOnSuccess)
				// und wenn die danke-seite eine andere cID hat
				theform.parent().parent().parent().remove();
			}
			showBoxen(htmlresponse, false);
			olddata = "";
			oldurl = "";
		}
	});
	return false;
}
function openPic(url, winName, winParams) {
	imagepopup = $('#imagepopup');
	$.get(url,function(htmlresponse) {
		contenthidden = $('#content-hidden').clone();
		contenthidden.html(htmlresponse);
		imagepopup.find('#imagepopupcontent').html(contenthidden.find('img').get());
		bringToFront('#imagepopup','.ui-draggable');
		imagepopup.fadeIn();
		contenthidden.remove();
		hideLoadBar();
	});
}

function tx_amsforum_pi1_afterAssign() {
	$().cssCheckbox();
	$().cssRadio();
	modifySubmitButtons();
	$('.tx-amsforum-pi1 a').click(function(){ getBoxen(this);return false;});
	hideLoadBar();
}
function tx_amsmessages_pi1_afterAssign() {
	$().cssCheckbox();
	$().cssRadio();
	modifySubmitButtons();
	$('.tx-amsmessages-pi1 a').click(function(){ getBoxen(this);return false;});
	hideLoadBar();
}
function tx_amsfeuser_pi1_afterAssign() {
	$().cssCheckbox();
	$().cssRadio();
	modifySubmitButtons();
	$('.tx-amsfeuser-pi1 a').click(function(){ getBoxen(this);return false;});
	hideLoadBar();
}
function tx_amsmediaupload_pi1_afterAssign() {
	$().cssCheckbox();
	$().cssRadio();
	modifySubmitButtons();
	$('.tx-amsmediaupload-pi1 a').click(function(){ getBoxen(this);return false;});
	hideLoadBar();
}
function showLoadBar() {
	$('#load-data').css('display', 'block');
	bringToFront("#load-data", ".ui-draggable");
}
function hideLoadBar() {
	$('#load-data').css('display', 'none');
}
function closeAlert() {
	$('#message-data').jqmHide();
};
function openAlert() {
	window.scrollTo(0, 0);
	bringToFront("#message-data", ".ui-draggable");
	$('#message-data').jqmShow();
};
function addFunc(name) {
	add = true
	for(i = 0; i < jsFunc.length; i++) {
		if(jsFunc[i] == name) {
			add = false;
		}
	}
	if(add) {
		jsFunc.push(name);
	}
}

function runFunc() {
	for(i = 0; i < jsFunc.length; i++) {
		eval(jsFunc[i]);
	}
}