var clickedEl = null;
var clickEv = null;
var ieb = null;
var notWin = false;
var slideBlock = false;

var imagePath = host + '/files';
var tb_url = {
	admin: 'https://toolbox.peer.biz/',
	confixx: 'https://confixx.peer.biz/login.php'
}

$(function() {
	ieb = (jQuery.browser.msie && parseFloat(jQuery.browser.version) >= 6 && parseFloat(jQuery.browser.version) < 7) ? true : false;
	notWin = navigator.platform.substr(0, 5).toLowerCase() == 'linux' ? true : false;

	hideLink();
	setInvisibleEl();
	setClickEv(true);

	//show toolbox login?
	if (show_login) {
		setTBLogin();
	}

	//register toolbox click
	$('#tb-link').click(function() {
		document.location.href = tb_url.admin;
	});

	setTriggerEv();
	startGallery();
	setCarousel();
	setLightBox();

});



var hideLink = function() {
	$('.hlink').removeAttr('href');
}

var setInvisibleEl = function() {
	//get admin langs
	var langs = $('#tb-lang-sel');
	var login_lang = null;
	var lang_id = null;
	if(ADMIN_LANG) {
		for(var i in ADMIN_LANG) {
			if(login_lang === null) {
				lang_id = i;
				login_lang = ADMIN_LANG[i];
			}
			if(ADMIN_LANG[i].toLowerCase() == siteLang) {
				var on = 'on';
				lang_id = i;
				login_lang = siteLang.charAt(0).toUpperCase() + siteLang.substr(1);
			}
			else var on = '';
			langs.append('<div class="click setChoosenLang '+ on +'" rel="'+ i +'">'+ ADMIN_LANG[i] +'</div>')
		}
	}

	//get browser information
	var os = 'unknown';
	if (navigator.appVersion.indexOf('Win')!=-1) os='Windows';
	if (navigator.appVersion.indexOf('Mac')!=-1) os='MacOS';
	if (navigator.appVersion.indexOf('X11')!=-1) os='UNIX';
	if (navigator.appVersion.indexOf('Linux')!=-1) os='Linux';

	// set the toolbox login
	$('#tb-lang span').html(login_lang);
	$('input[name=lang]').val(lang_id);

	$('input[name=os]').val(os);
	$('input[name=agent]').val(navigator.userAgent);
	$('input[name=browser]').val(navigator.appName);
	$('input[name=version]').val(navigator.appVersion);
	$('input[name=w]').val(screen.width);
	$('input[name=h]').val(screen.height);

	$('.setChoosenLang').bind('mouseover', function() {
		$('.setChoosenLang').removeClass('on');
	});
}

var setClickEv = function(firstCall) {
	var cC = firstCall ? '.click' : '.nClick';
	jQuery.each($(cC), function() {
		var clA = $(this).attr('class').split(" ");
		
		if(!firstCall) {
			$(this).attr('class', changeNClickToClick($(this).attr('class')));
		}
		for(var i = 0; i < clA.length; ++i) {
			if(clA[i].substring(0, 3) == 'set' && typeof window[clA[i]] == 'function') {
				$(this).bind('click', function(event) {return doClick($(this), event, clA[i]);});
				return;
			}
		}
	});
}


var changeNClickToClick = function(source) {
	return source.replace(/nclick/g, 'click');
}
var changeClickToNClick = function(source) {
	return source.replace(/click/g, 'nclick');
}

var doClick = function(el, event, func, args) {
	el.blur();
	clickedEl = el;
	clickEv = event;
	var r =  window[func](args);
	clickedEl = null;
	clickEv = null;
	return r;
}

var setTriggerEv = function() {
	jQuery.each($('.trig-c'), function() {
		var clA = $(this).attr('class').split(" ");
		switch(clA[0].substr(clA[0].indexOf('-') + 1, clA[0].length)) {
			case 'c':
				var trigEv = 'click';
				break;
			default:
				return false;
				break;
		}
		if(!document.getElementById(clA[1]) || !$('#' + clA[1]).hasClass(trigEv)) {
			return false;
		}
		triggerEvent($(this), clA[1], trigEv);
	});
}
var triggerEvent = function(clickElem, triggerId, triggerEv) {
	var te = !triggerEv ? 'click' : triggerEv;
	var tel = (typeof triggerId == 'object') ? triggerId : $('#' + triggerId);
	clickElem.bind('click', function() {
		clickElem.blur();
		tel.trigger(te);
		return false;
	});
}

var setTBLogin = function() {

	$('#tb-login').css({top: ($('body').height() / 3.3 + $('html').scrollTop()) + 'px'});

	if(!document.getElementById('login-layer')) {
		$('body').prepend('<div id="login-layer"></div>');
	}

	if (user_info.length > 0) {
		$('#tb-errors')
			.html(user_info)
			.removeClass('hide');
	}

	$('#login-layer')
		.css({
			backgroundColor: '#000',
			opacity: '0.7',
			height: $(document.html).height() + 'px',
			width: $(document.html).width() + 'px'
		})
		.show();

	if(ieb) $('#tb-login').show();
	else $('#tb-login').fadeIn();

	selectLang();
	return false;
}

var setClearInput = function(el) {
	jQuery.each($('.login-i'), function() {
		if($(this).val() == LANG_CONF.username) $(this).val('');
	})
	return true;
}

var setConApp = function() {
	var src = clickedEl.attr('src');
	var doi = src.lastIndexOf('.');
	var src1 = src.substring(0, doi);
	var src2 = src.substring(doi, src.length);
	var margin2 = 0;
	var index = 0;
	var csh = 'block';

	if(src1.substring(src1.length - 3, src1.length) == '_on') {
		src1 = src1.substring(0, src1.length - 3);
		clickedEl.attr('src', src1 + src2);
	}
	else {
		clickedEl.attr('src', src1 + '_on' + src2);
		margin2 = 127;
		index = 10;
		csh = 'none';
	}
	if(ieb) {
		$('#con-box').css({
			marginRight: '-' + margin2 / 2 + 'px',
			zIndex: index
		});
	}
	else {
		$('#con-box').animate({marginRight: '-198px'}, 300, null, function() {
			$(this).css({zIndex: index});
		});
		$('#con-box').animate({marginRight: '-' + margin2 + 'px'}, 300);
	}
}

var clickCount = 0;
var startGallery = function() {
	if($('.gallery-slider').get() == '') return false;

	resetNoClick();
	jQuery.each($('.gallery-slider'), function() {
		var count = $(this).attr('lang');
		var prev = $('<div></div>');
		var next = $('<div></div>');
		var gallCon = $(this).find('.gallery-con');

		$(this).prepend(next.addClass('gall-next')).prepend(prev.addClass('gall-prev'))
		if(count > 4) {
			next.addClass('on').bind('click', function() {
				nextImg(gallCon, prev, next, count);
			});

			prev.bind('click', function() {
				prevImg(gallCon, prev, next, count);
			});
		}
		gallCon.find('a').addClass('lightbox');
	});
}
var nextImg = function(gallCon, prev, next, count) {
	if(startGallery.noClick) return false;
	startGallery.noClick = true;

	clickCount++;
	var wrapper = gallCon.find('.gallery-wrapper');
	var left = wrapper.css('left');
	left = parseInt(left.substr(0, left.length - 2)) - 112;

	if(!prev.hasClass('on')) prev.addClass('on').bind('click', function() {prevImg(gallCon, prev, next, count);});
	if(clickCount >= (count - 4)) {
		next.removeClass('on').unbind('click');
	}
	wrapper.animate({left: left + 'px'}, 300, null, resetNoClick);
}
var prevImg = function(gallCon, prev, next, count) {
	if(!prev.hasClass('on') || startGallery.noClick) return false;
	startGallery.noClick = true; 

	clickCount--;
	if(!next.hasClass('on')) next.addClass('on').bind('click', function() {nextImg(gallCon, prev, next, count);});

	var wrapper = gallCon.find('.gallery-wrapper');
	var right = wrapper.css('left');
	right = parseInt(right.substr(0, right.length - 2)) + 112;
	if(right >= 0) prev.removeClass('on').unbind('click');
	wrapper.animate({left: right + 'px'}, 300, null, resetNoClick);
}
var resetNoClick = function() {
	startGallery.noClick = false;
}

var startShow = function(args) {
	args[0].show();
	return false;
}

var setLogin = function() {
	var submit = true;
	$('.error').removeClass('error');
	jQuery.each($('input.login-i'), function() {
		if($(this).val() == '' || $(this).val() == LANG_CONF.username || $(this).val() == LANG_CONF.password) {
			submit = false;
			$(this).prev().addClass('error');
			return false;
		}
	});
	if(submit) {
		switch($('input[name=username]').val().substr(0, 3)) {
			case 'web':
				var url = tb_url.confixx;
				break;
			default:
				var url = tb_url.admin + 'login.php';
				break;
		}
		$('#tb-login-form').attr('target', '_top');
		$('#tb-login-form').attr('action', url);
		$('input[name=fv]').val(checkFlashVersion());

		var d = new Date();
		d.setDate(d.getDate() + 14);
		document.cookie = 'login_lang='+ $('input[name=lang]').val() +';path=/;expires=' + d.toGMTString();
		return true;
	}
	return false;
}
var setHideLogin = function() {
	clickedEl.parent().parent().hide();
	$('#login-layer').hide();
}
var setTBLang = function() {
	$('#tb-lang-sel').toggleClass('hide');
}
var setChoosenLang = function() {

	var lang_id = $(clickedEl).attr('rel');

	if($('#tb-lang > input').val() != lang_id)
		$('.l-change').toggleClass('hide');

	$('.setTBLang span').html(clickedEl.html());
	setTBLang();
	$('#tb-lang > input').val(lang_id);
	clickedEl.addClass('on');
}

var setCarousel = function() {
	if($('.news-item').get().length <= 2) return false;

	$('.setCaroRight').addClass('on');
}
var setCaroLeft = function() {
	if(slideBlock || !clickedEl.hasClass('on')) return false;
	$('.setCaroRight').addClass('on');
	setCaroRight.clickCount--;
	slide('left');
}
var setCaroRight = function() {
	if(slideBlock || !clickedEl.hasClass('on'))
		return false;

	if(!setCaroRight.clickCount)
		setCaroRight.clickCount = 3;
	else
		setCaroRight.clickCount++;

	if(!setCaroRight.loadNewsIndex) 
		setCaroRight.loadNewsIndex = 5;

	var loaded_ids = '';
	$.each($('#news-slider > .news-item'), function() {
		loaded_ids += $(this).attr('id').substr(1) + ',';
	});
	var lang = $('#news-slider > .news-item:first').attr('rel').substr(1);

	jsonReq('action=news_slide&news_index=' + setCaroRight.loadNewsIndex + '&lang=' + lang + '&loaded_ids=' + loaded_ids, r_setCaroRight);

	$('.setCaroLeft').addClass('on');
	slide('right');
	$('.setCaroRight').removeClass('on');

}
var r_setCaroRight = function(data) {
	if(parseInt(data.news_index) != 0) {
		setCaroRight.loadNewsIndex = data.news_index;

		var newItem = $('.news-item:first').clone();

		newItem
			.find('h3 > a')
				.attr('href', data.url)
				.html(unescape(data.name))
			.end()
			.find('.desc > a')
				.attr('href', data.url)
				.html(unescape(data.description))
			.end()
			.attr('id', 'n' + data.id);

		$('#news-slider')
			.append(newItem)
			.width($('#news-slider').width() + 241);
	}
	if(setCaroRight.clickCount < $('.news-item').length) {
		$('.setCaroRight').addClass('on');
	}
}
var slide = function(type) {
	slideBlock = true;

	var slide = $('#news-slider').css('marginLeft');
	slide = parseInt(slide.substr(0, slide.length - 2));

	if(type == 'right') slide -= 241;
	else slide += 241

	if(slide >= 0) {
		slide = 0;
		$('.setCaroLeft').removeClass('on');
	}
	$('#news-slider-box').css({borderRight: 'none', paddingRight: '1px'});
	$('#news-slider').animate({marginLeft: slide + "px"}, 800, null, r_slide);
}
var r_slide = function() {
	$('#news-slider-box').css({borderRight: '1px dotted #fff', paddingRight: '0px'});
	slideBlock = false;
}

var setLightBox = function() {
	var settings = {
		imageLoading: host + '/files/addons/lightbox/loading.gif',
		imageBtnClose: host + '/files/addons/lightbox/close.gif',
		imageBtnPrev: host + '/files/addons/lightbox/prev.gif',
		imageBtnNext: host + '/files/addons/lightbox/next.gif',
		imageBlank : host + '/files/addons/lightbox/blank.gif',
		keyToClose: '',
		txtImage: 'Bild',
		txtOf: 'von'
	}

	//start the lightbox/group
	$('a.lightbox').lightBox(settings);
}

var setOpenSB = function() {
	if(ieb) {
		$('#sp-bubble > #sp-b-ct').fadeOut('fast', function() {$('#sp-bubble > #sp-img').css({visibility: 'hidden'});});
		blowUpSB();
	}
	else {
		$('#sp-bubble #sp-b-ct').fadeOut('fast', function() {
			rotateSpeechBubble(0);
		});
	}
}
var rotateSpeechBubble = function(margin, rightRotation) {
	var check = margin > 0;
	var step = 267;
	if(!rightRotation) {
		check = margin <= -4272;
		step *= -1;
	} 
	if(check) {
		if(!rightRotation) blowUpSB();
		else $('#sp-bubble #sp-b-ct').fadeIn('fast');
		return;
	}
	$('#sp-img').css({backgroundPosition: margin + 'px'});
	window.setTimeout(function() {
		rotateSpeechBubble(margin + step, rightRotation);
	}, 30);
}
var blowUpSB = function() {
	if(ieb) {
		$('#sp-imgb > .bg').hide();
		if($('div.imgDiv').length < 1) {
			$('#sp-imgb > .bg').before('<div class="imgDiv"></div>');
		}
		
		$('#sp-imgb').css({left: '75px'});
		$('#sp-imgb').fadeIn();
		$('#sp-imgb-ct').fadeIn();
	}
	else {
		$('#sp-imgb').show();
		$('#sp-img').hide();
		if(notWin) {
			$('embed').width('50px');
		}
		$('#sp-imgb > .bg').animate({width: '630px'}, 900);
		$('#sp-imgb').animate({
			left: '76px'
		}, 1000, null, function() {
			$('#sp-imgb-ct').fadeIn('fast');
		});
	}
}
var setClSB = function() {
	if(ieb) {		
		$('#sp-imgb').fadeOut();
		$('#sp-bubble > #sp-img').css({visibility: 'visible'});
		$('#sp-bubble > #sp-b-ct').fadeIn();
	}
	else {
		$('#sp-imgb-ct').fadeOut('fast', function() {
			$('#sp-imgb > .bg').animate({width: '221px'}, 900);
			$('#sp-imgb').animate({
				left: '41px'
			}, 1000, null, function() {
				if(notWin) {
					$('embed').width('100%');
				}
				$('#sp-img').show();
				$('#sp-imgb').hide();
				rotateSpeechBubble(-4272, true);
			});
		});
	}
}

var jsonReq = function(params, response){
    params += '&isJson=1';
    $.post(
    	'http://' + document.location.host,
        params,
        function(r) {
			//hide error states and highlighting states
			switch(r.status) {
				case 'ok':
					if(typeof response == 'function') response(r);
					break;

				case 'error':
					alert(r.msg);
					break;

				default:
					alert('NO valid status found!');
					break;
			}
		},
        'json'
    );
}


function checkFlashVersion() {
	var installed_vers = 0;
	var max_version    = 15;

	// NS, Mozilla, Firefox and similar
	if(typeof(navigator.plugins["Shockwave Flash"]) == "object") {

		var desc = navigator.plugins["Shockwave Flash"].description.split(' ');
		var key  = null;
		var v    = '';

		for(key in desc) {
			v = desc[key].split('.');
			if(v && v[0] && !isNaN(parseInt(v[0]))) {
				installed_vers = desc[key];
				break;
			}
		}
	}
	// IE and browsers using ActiveX
	else if(typeof(ActiveXObject) == "function") {
		var i = 6;

		//cycle flash versions
		for(i; i < max_version; ++i) {
			try {
				// if instance can be created, flash is installed
				if(typeof(new ActiveXObject("ShockwaveFlash.ShockwaveFlash." + i)) == "object") {
					installed_vers = i;
				}
			}
			catch(e) {}
		}
	}

	return installed_vers;
}


function extractCookieInfo() {
	if (!$('body').data('cookieInfo')) {
		var res = {};

		if (document.cookie.length > 0) {
			var cl = document.cookie.split('; ');
			for (var i in cl) {
				var cv = cl[i].split('=');
				res[cv[0]] = cv[1];
			}
		}
		$('body').data('cookieInfo', res);
	}

	return $('body').data('cookieInfo');
}


function selectLang() {

	var ci = extractCookieInfo();
	if (ci.login_lang) {
		lang_id = ci.login_lang;
	}
	else {
		lang_id = 1;
	}


	if (lang_id != 1) {
		$('.l-change').toggleClass('hide');
		$('#tb-lang-sel > div:eq(1)').trigger('click').trigger('click');
	}

}
