//--- request parameters
var params = new Array();
var params_asarray = window.location.href.match(/([\?&][^=]+=[^&#]*)/gi);
if (params_asarray) {
	for (var i=0; i<params_asarray.length; i++) {
		var insidehits = params_asarray[i].match(/[\?&]([^=]+)=([^&#]*)/i);
		if (insidehits) {
			params[insidehits[1]] = insidehits[2];
		}
	}
}

var addthis_config = { 
	services_exclude: 'print',
	data_track_clickback: false
}

var webroot = '/';


//--- are we in a frame (e.g. in a popup)
var isiniframe = (window.location.href != parent.location.href) ? true : false;

//--- popup but not in a popup? close the popup and reload in bottom
if (isiniframe && params['popup']) {
	var newurl= window.location.href;
	newurl = newurl.replace(/\?popup=1/i, '?');
	newurl = newurl.replace(/&popup=1/, '');
	newurl = newurl.replace(/\?$/, '');
	window.location = newurl;
}

//--- document ready!
$(document).ready(function() {
	//--- popup uid discovery
	if (isiniframe) {
		myframe_uid = window.top.lastpopupopened_uid;
	}

	//--- click anywhere closes the admin controls
	$(document).click(function () { 
		hideAllAdminControls();
		$('#suggest').hideSuggest();
	} );


	$(".fade50onhover").mouseover(function () { $(this).animate({opacity: 0.5}, 'fast'); }).mouseout(function () { $(this).animate({opacity: 1}, 'fast'); });

	//--- sortable lists triggers
	$("ul.slideshow[id*='cmssl']").sortable({
		update: function(event, ui) { 
			$.get("./?action=serializeupdate&" + ui.item.parent().sortable('serialize'), function(data) {
				if (data) {
					alert(data);
				}
			});
		}
	});

	//--- suggest link
	$('#suggestlink').click(function(event) { event.stopPropagation(); $('#suggest').toggleSuggest($(this)); return false; });

	//--- login form needs opening?
	if (params['dologin']) { openpopup('loginform', './?form=login', 500, 120, 'Login', '', ''); }


	$("#autowebroot").each (function () { webroot = $(this).html(); } );


	//--- newsletterseting needed?
	$("#newsletterprogress").each(function () {	init_newslettersending(this.className);	});
	$("input.uidatepicker").datepicker({ dateFormat: 'yy-mm-dd', changeMonth: true,	changeYear: true, yearRange: '-50:+5'  });
	$(".focusmefirst").focus();

	//--- sizes
	checksizes();
	$(window).resize(function () { checksizes(); });

	$('#social').find('img')
		.mouseover(function() { $(this).css({'opacity': 0.01}).attr('src', $(this).attr('rel')).animate({'opacity': 1}) })
		.mouseout(function() { $(this).animate({'opacity': 0.01}, 'slow') });

	postinit($(document));

	//--- news loader
	$('#rssloader').each(function () {
		var me = $(this);
		$.ajax({
			url				: './?load=rssnews',
			type			: 'GET',
			data			: { },
			success			: function(content) { me.html(content).removeClass('loading'); checksizes(); },
			error			: function() { me.html('').removeClass('loading'); me.hide(); }
		});
	});

	$('a.youtube').click(function(event) {
		var res = $(this).attr('href').match(/v=(.+)$/i);
		if (res && res[1]) {
			$('<div></div>').addClass('youtubeplayercontainer').css({'width': 560, 'height': 315}).html('<iframe width="560" height="315" src="http://www.youtube.com/embed/' + res[1] + '" frameborder="0" allowfullscreen></iframe>').dialog({
				'width': 590, 'height': 'auto', 'modal': true, 'title': $(this).attr('title'),
				close: function(event, ui) { 
					$('.youtubeplayercontainer').find('iframe').remove().end().remove();
				}
			});
			event.stopPropagation(); return false;
		}
	});

	if (params['showslide']) {
		$('#ppv_' + params['showslide']).click();
	}
	// check for addthis inside
	addthis.init();
	//addthis.toolbox('#mainaddthis', { data_track_clickback: false }, {});
});


//--- init things that have to be redone after an ajax load for example
function postinit(parent) {
	//--- form labels, animation, validation
	parent.find('form.inlineform input.textinput').add('form.inlineform textarea.textinput')
		.focus(function () { $(this).removeClass('inputerror').animate({ 'border-color': '#F7B023', 'background-color': '#FEF0D3' }).inlineformRemoveErrorHint(); })
		.blur(function () { $(this).animate({ 'border-color': '#DDDDDD', 'background-color': '#F7F7F7' }).inlineformValidate();	});

	//--- colorbox related stuff
	parent.find("a.picturepreview").lightBox({
		txtImage : "Bild",
		txtOf  : "von",
		imageLoading:			'/images/layout/lightbox/lightbox-ico-loading.gif',		// (string) Path and the name of the loading icon
		imageBtnPrev:			'/images/layout/lightbox/lightbox-btn-prev.gif',			// (string) Path and the name of the prev button image
		imageBtnNext:			'/images/layout/lightbox/lightbox-btn-next.gif',			// (string) Path and the name of the next button image
		imageBtnClose:			'/images/layout/lightbox/lightbox-btn-close.gif',		// (string) Path and the name of the close btn
		imageBlank:				'/images/layout/lightbox/lightbox-blank.gif',			// (string) Path and the name of a blank image (one pixel)
		containerResizeSpeed: 200
	});

	//--- some captchas?
	parent.find(".captchaplayer").each(function() {
		jwplayer($(this).attr('id')).setup({
			flashplayer: "/js/jwplayer.swf",
			file: "./?audiocaptcha=" + $(this).attr('title') + "&rand=" + Math.random(),
			provider: 'sound',
			height: 1,
			width: 1
		});
	});


	//--- overlay animation over some buttons
	parent.find("a.nextprevious").mouseover(function () { $(this).find('img').animate({opacity: 0.5}, 'fast'); });
	parent.find("a.nextprevious").mouseout(function () { $(this).find('img').animate({opacity: 1}, 'fast'); });

	//--- inlineforms submit handlers and focus
	$('form.inlineform').find('input:visible').first().focus().end().end().submit(function(event) { $(this).inlineformSubmit(); event.stopPropagation(); return false } );
}

function checksizes() {
	//--- do we have a page at all, or its a popup maybe
	if ($('#bodyoverlay1').length) { 
		//--- set prper height
		if ($('#footer').position().top + $('#footer').height() < $(window).height()) {
			$('#bodyoverlay1').css('height', '100%');
			$('#bodyoverlay2').css('height', '100%');
			$('#surround').css('height', '100%');
		}
	}

	var heading_topstories = $('#heading_topstories');
	var heading_partners = $('#heading_partners');
	if (heading_topstories.length && heading_partners.length) {
		var t_topstories = heading_topstories.position().top;
		var t_partners = heading_partners.position().top;
		if (t_topstories > t_partners) {
			heading_partners.css({'margin-top' : t_topstories - t_partners});
		}
		if (t_topstories < t_partners) {
			heading_partners.css({'margin-top' : t_partners - t_topstories});
		}
	}
}

var myframe_uid = false;
var lastpopupopened_uid = false;
var disableclosingpopup = false;

var nextpopupid = 1;
var popupsopener = [];
var popupimagespreloaded = false;
//--- open interface popup function
function openpopup(uid, url, width, height, title, icon, helplink, openeruid) {
	//--- already inside a popup?
	if (isiniframe) {
		window.top.openpopup(uid, url, width, height, title, icon, helplink, myframe_uid);
		return false;
	}
	if (!openeruid) openeruid = lastpopupopened_uid;
	popupsopener[uid] = openeruid;

	if ($('#popup_'+uid)) {	$('#popup_'+uid).remove(); }
	if ($('#popupbox_'+uid)) { $('#popupbox_'+uid).remove(); }
	
	//--- 1. create the overlay container div
	var mainoverlaydiv = $(document.createElement('div'));
	mainoverlaydiv.attr('id', 'popup_' + uid);
	mainoverlaydiv.css({
		'display': 'none',
		'position': 'fixed',
		'left': '0',
		'top': '0',
		'width': '100%',
		'height': '100%',
		'opacity': 0.8,
		'background-color': '#CCCCCC',
		'z-index': 9999 + nextpopupid++,
		'cursor': 'pointer'
	});
	mainoverlaydiv.click(function () { closepopup(uid); });
	$('body').append(mainoverlaydiv);

	if (!height) height = $('body').height() - 34 - 14 - 5;

	var totalwidth = width + 2 * 14;
	var totalheight = height + 34 + 14;

	var boxleft = parseInt( (mainoverlaydiv.width() / 2) - (totalwidth / 2) );
	var boxtop = parseInt( (mainoverlaydiv.height() / 2) - (totalheight / 2) );

	//--- 2. create the box itself as a second div
	var boxcontainerdiv = $(document.createElement('div'));
	boxcontainerdiv.attr('id', 'popupbox_' + uid);
	boxcontainerdiv.css({
		'display': 'none',
		'position': 'fixed',
		'left': boxleft,
		'top': boxtop,
		'width': totalwidth,
		'height': totalheight,
		'z-index': 9999 + nextpopupid++
	});
	$('body').append(boxcontainerdiv);

	//--- borders of the box
	boxcontainerdiv.append($(document.createElement('div')).addClass('popup_tl').css({ 'position': 'absolute', 'top': 0, 'left': 0, 'width': 14, 'height': 34, 'background-image': 'url('+webroot+'images/admin/popup/border_tl.png)'}));
	boxcontainerdiv.append($(document.createElement('div')).addClass('popup_t').css({ 'position': 'absolute', 'top': 0, 'left': 0 + 14, 'width': width, 'height': 34, 'background-image': 'url('+webroot+'images/admin/popup/border_t.png)'}));
	boxcontainerdiv.append($(document.createElement('div')).addClass('popup_tr').css({ 'position': 'absolute', 'top': 0, 'left': 0 + 14 + width, 'width': 14, 'height': 34, 'background-image': 'url('+webroot+'images/admin/popup/border_tr.png)'}));

	boxcontainerdiv.append($(document.createElement('div')).addClass('popup_l').css({ 'position': 'absolute', 'top': 0 + 34, 'left': 0, 'width': 14, 'height': height, 'background-image': 'url('+webroot+'images/admin/popup/border_l.png)'}));
	boxcontainerdiv.append($(document.createElement('div')).addClass('popup_r').css({ 'position': 'absolute', 'top': 0 + 34, 'left': 0 + 14 + width, 'width': 14, 'height': height, 'background-image': 'url('+webroot+'images/admin/popup/border_r.png)'}));

	boxcontainerdiv.append($(document.createElement('div')).addClass('popup_bl').css({ 'position': 'absolute', 'top': 0 + 34 + height, 'left': 0, 'width': 14, 'height': 15, 'background-image': 'url('+webroot+'images/admin/popup/border_bl.png)'}));
	boxcontainerdiv.append($(document.createElement('div')).addClass('popup_b').css({ 'position': 'absolute', 'top': 0 + 34 + height, 'left': 0 + 14, 'width': width, 'height': 15, 'background-image': 'url('+webroot+'images/admin/popup/border_b.png)'}));
	boxcontainerdiv.append($(document.createElement('div')).addClass('popup_br').css({ 'position': 'absolute', 'top': 0 + 34 + height, 'left': 0 + 14 + width, 'width': 14, 'height': 15, 'background-image': 'url('+webroot+'images/admin/popup/border_br.png)'}));

	//--- close link
	boxcontainerdiv.append($(document.createElement('a')).addClass('popup_close').css({ 'position': 'absolute', 'display': 'block', 'top': 0 + 11, 'left': 0 + 14 + width + 3 - 16, 'width': 16, 'height': 16, 'text-decoration': 'none'}).attr('href', 'javascript: closepopup(\''+uid+'\')').append($(document.createElement('img')).css({'width': 16, 'height': 16, 'border': 0}).attr('src', webroot+'images/admin/popup/close.png')));

	//--- icon
	icon = icon ? webroot+'images/admin/popup/icons/'+icon : webroot+'images/admin/popup/icons/default.png';
	boxcontainerdiv.append($(document.createElement('img')).addClass('popup_icon').css({ 'position': 'absolute', 'display': 'block', 'top': 0 + 11, 'left': 0 + 11, 'width': 16, 'height': 16, 'border': 0}).attr('src', icon));

	//--- help link
	if (helplink) {
		boxcontainerdiv.append($(document.createElement('a')).addClass('popup_icon').css({ 'position': 'absolute', 'display': 'block', 'top': 0 + 11, 'left': 0 + 14 + width + 3 - 16 - 3 - 16, 'width': 16, 'height': 16, 'text-decoration': 'none'}).attr('href', helplink).append($(document.createElement('img')).css({'width': 16, 'height': 16, 'border': 0}).attr('src', webroot+'images/admin/popup/help.png')));
	}

	//--- title row
	boxcontainerdiv.append($(document.createElement('div')).addClass('popup_title').css({ 'position': 'absolute', 'display': 'block', 'top': 0 + 11, 'left': 0 + 11 + 3 + 16, 'width': width - 50, 'height': 16, 'overflow': 'hidden', 'text-align': 'left', 'font-size': 12, 'color': '#333333', 'font-family': 'Arial, sans-serif'}).html(title));

	//--- container
	var containerdrame = $(document.createElement('iframe'));
	containerdrame.addClass('popup_container');
	containerdrame.attr('frameborder',  0);
	containerdrame.attr('marginwidth',  0);
	containerdrame.attr('marginheight',  0);
	containerdrame.attr('scrolling',  'auto');
	containerdrame.css({ 'position': 'absolute', 'top': 0 + 34, 'left': 0 + 14, 'width': width, 'height': height, 'background-color': '#FFFFFF', 'border': 0});
	boxcontainerdiv.append(containerdrame);

	mainoverlaydiv.fadeIn(300, function() {
		lastpopupopened_uid = uid;
		if (popupimagespreloaded) {
			boxcontainerdiv.show();
			popup_loadcontents(uid, url);
		} else {
			$.loadImages([
				webroot+'images/admin/popup/border_tl.png',
				webroot+'images/admin/popup/border_t.png',
				webroot+'images/admin/popup/border_tr.png',
				webroot+'images/admin/popup/border_l.png',
				webroot+'images/admin/popup/border_r.png',
				webroot+'images/admin/popup/border_bl.png',
				webroot+'images/admin/popup/border_b.png',
				webroot+'images/admin/popup/border_br.png',
				webroot+'images/admin/popup/close.png'
			], function() { popupimagespreloaded = true; boxcontainerdiv.show(); popup_loadcontents(uid, url); } )
		}
	});

	return false;
}

function popup_resize(uid, width, height) {
	//--- already inside a popup?
	if (isiniframe) {
		window.top.popup_resize(uid, width, height);
		return;
	}

	var mainoverlaydiv = $('#popup_' + uid);
	var maincontainer = $('#popupbox_' + uid);
	if (!maincontainer || !mainoverlaydiv) return;

	var totalwidth = width + 2 * 14;
	var totalheight = height + 34 + 14;

	var boxleft = parseInt( (mainoverlaydiv.width() / 2) - (totalwidth / 2) );
	var boxtop = parseInt( (mainoverlaydiv.height() / 2) - (totalheight / 2) );

	maincontainer.css({'top': boxtop, 'left': boxleft, 'width': totalwidth, 'height': totalheight});
	maincontainer.find('.popup_t').css({'width': width});
	maincontainer.find('.popup_tr').css({'left': 0 + 14 + width});

	maincontainer.find('.popup_l').css({'height': height});
	maincontainer.find('.popup_r').css({'left': 0 + 14 + width ,'height': height});

	maincontainer.find('.popup_bl').css({'top': 0 + 34 + height});
	maincontainer.find('.popup_b').css({'top': 0 + 34 + height, 'width': width});
	maincontainer.find('.popup_br').css({'left': 0 + 14 + width, 'top': 0 + 34 + height});

	maincontainer.find('.popup_close').css({'left': 0 + 14 + width + 3 - 16});
	maincontainer.find('.popup_help').css({'left': 0 + 14 + width + 3 - 16 - 3 - 16});

	maincontainer.find('.popup_container').css({'width': width, 'height': height});
}

function popup_reload(uid) {
	//--- already inside a popup?
	if (isiniframe) {
		window.top.popup_reload(uid);
		return;
	}

	lastpopupopened_uid = uid;

	var maincontainer = $('#popupbox_' + uid);
	if (!maincontainer.size()) return;

	var datacontainer = maincontainer.find('.popup_container');
	datacontainer[0].contentWindow.location.reload(true);
}

function popup_loadcontents(uid, newurl, newwidth, newheight, newtitle, newicon, newhelplink) {
	//--- already inside a popup?
	if (isiniframe) {
		window.top.popup_loadcontents(uid, newurl, newwidth, newheight, newtitle, newicon, newhelplink);
		return;
	}

	var maincontainer = $('#popupbox_' + uid);
	if (!maincontainer) return;

	var datacontainer = maincontainer.find('.popup_container');
	datacontainer.contents().find('html body').html('&nbsp;');

	//--- resize needed?
	if ((newwidth && datacontainer.width() != newwidth) || (newheight && datacontainer.height() != newheight)) {
		popup_resize(uid, newwidth, newheight);
	}

	//--- new title?
	if (newtitle) {
		maincontainer.find('.popup_title').html(newtitle);
	}

	//--- new icon?
	if (newicon) {
		maincontainer.find('.popup_icon').attr('src', webroot+'images/admin/popup/icons/'+icon);
	}

	//--- put loading image
	var loadingimage = $(document.createElement('img'));
	loadingimage.attr('src', webroot+'images/layout/loading_new.gif');
	loadingimage.css({ 'position': 'absolute', 'display': 'block', 'top': maincontainer.height() / 2 - 8, 'left': maincontainer.width() / 2 - 52, 'width': 105, 'height': 16, 'border': 0, 'opacity': 0.7});
	maincontainer.append(loadingimage);

	//--- load the iframe
	datacontainer.attr('src', newurl);

	datacontainer.load(function () {
		loadingimage.remove();
		datacontainer.show();
	});
}


function closepopup(uid, reloadme) {
	//--- closing popups disabled?
	if (window.top.disableclosingpopup) {
		return;
	}
	//--- called from inside a popup?
	if (isiniframe) {
		window.top.closepopup(uid, reloadme);
		return;
	}

	if (uid) {
		if ($('#popupbox_'+uid)) {
			$('#popupbox_'+uid).hide();
			//--- remove tinymce editor here!!
		}
		if ($('#popup_'+uid)) {
			$('#popup_'+uid).fadeOut();
		}

		if (popupsopener[uid]) {
			if (reloadme) popup_reload(popupsopener[uid]);
		} else {
			if (reloadme) window.location.reload();
		}
	} else {
		if (lastpopupopened_uid) {
			closepopup(lastpopupopened_uid, reloadme);
		}
	}
}

//--- admin control layers
function showAdminControl(controlid) {
	hideAllAdminControls(controlid);
	$('#'+controlid).show();
}

function hideAdminControl(controlid) {
	$('#'+controlid).hide();
}

function hideAllAdminControls(except) {
	$('div.admincontrol').each(function () {
		if (this.id != except) {
			$(this).hide();
		}
	});
	$('div._admincontrol').each(function () {
		if (this.id != except) {
			$(this).hide();
		}
	});
}


function slideshow_move(plsorminus) {
	var wemove = $('#slides');
	if (wemove.width() <= 290) {
		return;
	}

	var howmuch = 200;
	var remainderright = wemove.width() + wemove.position().left - 290;
	if (plsorminus == -1 && howmuch > remainderright) {
		howmuch = remainderright;
	}
	if (plsorminus == 1 && howmuch > - wemove.position().left) {
		howmuch = - wemove.position().left;
	}
	if (howmuch == 0) {
		return;
	}

	var movestring = '' + (plsorminus == -1 ? '-' : '+') + '=' + howmuch;
	wemove.animate({
		left: movestring
	}, 500, function() {});
}
function slideshw_showslide(picid) {
	$('#slides > a > img').each(function(index) {
		$(this).css({opacity: 1});
	});
	$('#picture_'+picid).css({opacity: 0.25});
	$('#previewimage').attr('src', './?showmediimage=' + picid);
}

function etoggle(whoid) {
	$('#'+whoid).toggle();
}
function formSubmit(f) { 
	var form = $('body');

	var formoverlay = $(document.createElement('div'));
	formoverlay.css({ 'position': 'absolute', 'display': 'none', 'top':0, 'left': 0, 'width': form.width(), 'height': $(document).height(), 'background-color': '#FFFFFF', 'opacity': 0.8});
	form.append(formoverlay);

	var loadingimage = $(document.createElement('img'));
	loadingimage.attr('src', webroot+'images/layout/loading_new.gif');
	loadingimage.css({ 'position': 'absolute', 'display': 'block', 'top': $(document).height() / 2 - 8, 'left': form.width() / 2 - 52, 'width': 105, 'height': 16, 'border': 0, 'opacity': 0.7});
	formoverlay.append(loadingimage);

	formoverlay.fadeIn('fast');

	return false;
}
function popup(url, name, w, h) {
	window.open(url, name, 'width='+w+',height='+h+',menubar=no,scrollbars=no,toolbars=no');
}

function mcvrt(f) {
	var i = f.innerHTML;
	if (!i)	{
		return;
	}

	i = i.replace(/ at /i, '@');
	i = i.replace(/ dot /i, '.');

	f.innerHTML = i;
}


function init_newslettersending(newsletter) {
	window.top.disableclosingpopup = true;
	newslettersending_nextstep(newsletter);
}
function newslettersending_error(error) {
	window.top.disableclosingpopup = false;
	$('#newsletterprogress').hide();
	$('#newslettererrormessage').html(error + '<br><br>');
	$('#newslettererror').show();
}
function newslettersending_nextstep(newsletter) {
	var url = './?action=sendnewsletter&sub=send&newsletter=' + newsletter;
	$.ajax({
		url				: url,
		type			: 'GET',
		data:		{ },

		success			: function(content) {
			var result = null, sent = 0, total = 0;

			result = /<error>(.+?)<\/error>/.exec(content);
			if (result && result[1]) {
				newslettersending_error(result[1]);
				return;
			}


			result = /<sent>(.+?)<\/sent>/.exec(content);
			if (result && result[1]) sent = parseInt(result[1]);
			result = /<total>(.+?)<\/total>/.exec(content);
			if (result && result[1]) total = parseInt(result[1]);

			if (sent > 0 && total > 0) {
				if (sent >= total) {
					$('#newsletterprogress').hide();
					$('#newsletterdone').show();
					window.top.disableclosingpopup = false;
				} else {
					$('#sent').html(sent);
					$('#total').html(total);
					newslettersending_nextstep(newsletter)
				}
			} else {
				newslettersending_error('Invalid reponse from server.');
			}
		},
		error			: function() { 
			newslettersending_error('Conneciton to the server was not possible.');
		}
	});
}


//--- inline forms plugin
(function($){
	$.fn.inlineformSubmit = function( ) {  
		var form = $(this);
		form.attr('disabled', true).find('input.button').attr('disabled', true).addClass('loadingbutton');
		$.post(form.attr('action'), form.serialize() + '&a=1', function(data, textStatus, jqXHR) {
			if (data['errors'])	{
				$.each(data['errors'], function(index, value) {
					form.find('input[name=' + value['field'] + '], textarea[name=' + value['field'] + ']').addClass('inputerror').inlineformErrorHint(value['error']);
				});
				form.find('img.captcha').click().end().find('input.vld_captcha').val('').end()
					.attr('disabled', false).find('input.button').attr('disabled', false).removeClass('loadingbutton');
			} else {
				form.attr('disabled', false).html(data['done']);
			}
		}, 'json').error(function () { form.inlineformSeterror('Could not complete ajax request...') });
	},

	$.fn.inlineformSeterror = function( errors ) {  
		alert(errors);
		$(this).find('img.captcha').click().end().find('input.vld_captcha').val('').end()
			.attr('disabled', false).find('input.button').attr('disabled', false).removeClass('loadingbutton');
	},

	$.fn.inlineformValidate = function( ) { 
		var f = $(this);
		if (
			(f.hasClass('vld_required') && !f.val()) ||
			(f.hasClass('vld_email') && !f.val().match(/^.+@.+\..+$/)) ||
			(f.hasClass('vld_captcha') && !f.val().match(/^\d{4}$/))
		) { 
			f.addClass('inputerror');
			return false;
		}
		return true;
	},

	$.fn.inlineformErrorHint = function( message ) {
		var f = $(this);
		if (f.data('inlineformErrorHint')) return;
		var hint = $('<div><div class="ifh_top"></div><div class="ifh_bottom"><div class="ifh_content">' + message + '</div></div></div>').addClass('inlineformhint').hide();
		f.after(hint);
		hint.css({'top': f.position().top - hint.height() + 9, 'left': f.position().left + f.width() - parseInt(f.width() / 2) - 40}).fadeIn('slow');
		f.data('inlineformErrorHint', hint);
	},

	$.fn.inlineformRemoveErrorHint = function( message ) {
		if ($(this).data('inlineformErrorHint')) {
			$(this).data('inlineformErrorHint').fadeOut('slow', function() {
				$(this).remove();
			});
			$(this).data('inlineformErrorHint', false);
		}
	}

})( jQuery );


//--- suggest layer plugin
(function($){
	$.fn.toggleSuggest = function( linkfield ) {  
		return this.each(function() {
			if ($(this).is(":visible")) {
				$(this).hideSuggest();
			} else {
				if (linkfield) {
					$(this).css({'top': linkfield.position().top - 280});
				}
				$(this).showSuggest();
			}
		});
	},

	$.fn.showSuggest = function( ) {  
		return this.each(function() { 
			var d = $(this);
			if (d.data('loopcms_animating')) return false;
			d.data('loopcms_animating', 1);
			d.empty().addClass('loading').click(function(event) { event.stopPropagation(); }).show('drop', { direction: "down" }, 'slow', function() {
				$(this).load('./?ajax=suggestform' , { 'title': document.title, 'link': '' + window.location }, function() {
					$(this).removeClass('loading').data('loopcms_animating', 0);
					var h1 = $(this).find('div.left').height();
					var h2 = $(this).find('div.right').height();
					if (h2 > h1 || h1 > h2) {
						var area = $(this).find('textarea');
						area.height(area.height() - (h2 - h1));
					}
					postinit(d);
				});
			});
		});
	},

	$.fn.hideSuggest = function( ) {  
		return this.each(function() {
			var d = $(this);
			if (d.data('loopcms_animating')) return false;
			if (d.is(":visible")) {
				d.data('loopcms_animating', 1);
				d.hide('drop', { direction: "down" }, 'slow', function() {
					$(this).empty();
					d.data('loopcms_animating', 0);
				});
			}
		});
	}
})( jQuery );


(function($){
    //cache needed for overagressive garbage collectors.
    var cache = [];
    //images can either be an array of paths to images or a  single image. 
    $.loadImages = function(images, callback){
    
        //convert to array if needed so rest of script works
        if (!(images instanceof Array)) {
            images = [images];
        }
        
        var imagesLength = images.length;
        var loadedCounter = 0;
        
        for (var i = imagesLength; i--;) {
			var cacheImage = document.createElement('img');
			//set the onload method before the src is called otherwise will fail to be called in IE
            cacheImage.onload = function(){
                loadedCounter++;
                if (loadedCounter >= imagesLength) {
                    if ($.isFunction(callback)) {
                        callback();
                    }
                }
            }
            cacheImage.src = images[i];
            cache.push(cacheImage);
        }
    }
})(jQuery);

