var mouseX        = 0;
var mouseY        = 0;
var sliderTimer   = null;
var akt           = 0;
var uploadstarted = 0;

function debug(msg) {
    if (window.console && window.console.debug)
        window.console.debug(msg)
}

function addOnLoad(func) {
	var old = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = func;
	} else {
		window.onload = function() {
			old();
			func();
		}
	}
}

function gallerySlide() {
	if (slideSpeed!=0) {
		var leftPos = parseInt(imageGalleryObj.offsetLeft);
		leftPos += slideSpeed;
		if (leftPos<maxGalleryXPos) {
			leftPos = maxGalleryXPos;
			slideSpeed = 0;
		}
		if (leftPos>minGalleryXPos) {
			leftPos = minGalleryXPos;
			slideSpeed=0;
		}
		imageGalleryObj.style.left = leftPos + 'px';
	}
}

function startSlide(e) {
	if (document.all) e = event;
	direction = this.id;
	if (this.id == 'arrow_right') {
		slideSpeed = -10;
	} else {
		slideSpeed = 10;
	}
	if (!sliderTimer) sliderTimer = setInterval('gallerySlide();',25);
}

function releaseSlide() {
	slideSpeed = 0;
	clearInterval(sliderTimer);
	sliderTimer = null;
}

function showImage(id) {
	document.getElementById(id).style.opacity='0.8';
	document.getElementById(id).style.filter='alpha(opacity=80)';
}
function fadeImage(id) {
	document.getElementById(id).style.opacity='1.0';
	document.getElementById(id).style.filter='alpha(opacity=100)';
}

function showRezept(id) {
	if (akt == id) {
		closeRezept();
		akt = 0;
	} else {
		if ((akt > 0)) {
			closeRezept();
		}
		displayRezept(id);
	}
}

function displayRezept(id) {
	if (id > 26) id = 1;
	else if (id < 1) id = 26;
	show('div_' + id);
	akt = parseInt(id);
}

function closeRezept() {
	unshow('div_' + akt);
}

function prevSlide() {
	unshow('div_' + akt);
	displayRezept(akt - 1);
}

function nextSlide() {
	unshow('div_' + akt);
	displayRezept(akt + 1);
}

function show(pic) {
	$('#' + pic).fadeIn(500);
}

function unshow(pic) {
	$('#' + pic).fadeOut(500);
}

function initSlideShow() {
	document.getElementById('arrow_left').onmousemove = startSlide;
	document.getElementById('arrow_left').onmouseout = releaseSlide;
	document.getElementById('arrow_right').onmousemove = startSlide;
	document.getElementById('arrow_right').onmouseout = releaseSlide;
	
	imageGalleryObj = document.getElementById('theImages');
	imageGalleryLeftPos = imageGalleryObj.offsetLeft;
	imageGalleryWidth = document.getElementById('galleryContainer').offsetWidth - 30;
	minGalleryXPos = imageGalleryObj.offsetLeft;
	maxGalleryXPos = imageGalleryWidth - document.getElementById('endSlide').offsetLeft + minGalleryXPos;
}

function showMe(id) {
	$('#box'+id+'text').slideToggle('slow');
	if ($('#box'+id+'pfeil').attr('src') == '/shared/pics/pfeil_rechts.gif') {
		$('#box'+id+'pfeil').attr('src', '/shared/pics/pfeil_unten.gif')
	} else {
		$('#box'+id+'pfeil').attr('src', '/shared/pics/pfeil_rechts.gif')
	}
}

function tooltip_show(id) {
	$('#box'+id+'text').show();	
	$('#box'+id+'text').css('z-index', '1000');
}

function tooltip_hide(id) {
	$('#box'+id+'text').hide();
	$('#box'+id+'text').css('z-index', '1');
}

function change_zutaten(id) {
	$('zutat_'+id).toggle();
	$('zutat_'+id+'a').toggle();
}

function showTable(name) {	
	$('#' + name + '_text').slideToggle('slow');
	if ($('#' + name + '_pfeil').attr('src') == '/shared/pics/pfeil_rechts.gif') {
		$('#' + name + '_pfeil').attr('src', '/shared/pics/pfeil_unten.gif');
		document.getElementById(name + '_naehrwerte_bottom').style.display = "none";
	} else if ($('#' + name + '_pfeil').attr('src') == '/shared/pics/pfeil_rechts_schoko.gif') {
		$('#' + name + '_pfeil').attr('src', '/shared/pics/pfeil_unten_schoko.gif');
		document.getElementById(name + '_naehrwerte_bottom').style.display = "none";
	} else if ($('#' + name + '_pfeil').attr('src') == '/shared/pics/pfeil_unten_schoko.gif') {
		$('#' + name + '_pfeil').attr('src', '/shared/pics/pfeil_rechts_schoko.gif');
		document.getElementById(name + '_naehrwerte_bottom').style.display = "";
	} else {
		$('#' + name + '_pfeil').attr('src', '/shared/pics/pfeil_rechts.gif');
		document.getElementById(name + '_naehrwerte_bottom').style.display = "";
	}
}

function showData(name) {
	if (name == 'schoko') {
		document.getElementById('verkehrsbezeichnung').innerHTML = "Schokoladen-Geschmack und ";
		document.getElementById('zutaten_extra').innerHTML = "Zucker, fettarmes Kakaopulver (1,2%), Traubenzucker, Calciumcarbonat, Kakaopulver (0,2%), Meersalz, nat&uuml;rliches Aroma, Stabilisatoren: Gellan, Carrageen";
		$('#ueberschrift_zusatz').attr('src', '/shared/pics/schoko_zusatz.gif');
		$('#ueberschrift_zusatz').attr('width', '331');
		document.getElementById('ueberschrift_zusatz').style.display = "";
	} else if (name == 'vanille') {
		document.getElementById('verkehrsbezeichnung').innerHTML = "Vanille-Geschmack und ";
		document.getElementById('zutaten_extra').innerHTML = "Zucker, Sonnenblumen&ouml;l, Calciumcarbonat, Aroma, Meersalz, Farbstoff Beta-Carotin";
		$('#ueberschrift_zusatz').attr('src', '/shared/pics/vanille_zusatz.gif');
		$('#ueberschrift_zusatz').attr('width', '252');
		document.getElementById('ueberschrift_zusatz').style.display = "";
	} else {
		document.getElementById('verkehrsbezeichnung').innerHTML = "";
		document.getElementById('zutaten_extra').innerHTML = "Sonnenblumen&ouml;l, Calciumcarbonat, Meersalz, Aroma";
		document.getElementById('ueberschrift_zusatz').style.display = "none";
	}
	document.getElementById('natur').style.display = "none";
	document.getElementById('vanille').style.display = "none";
	document.getElementById('schoko').style.display = "none";
	document.getElementById('natur_top').style.display = "none";
	document.getElementById('vanille_top').style.display = "none";
	document.getElementById('schoko_top').style.display = "none";
	document.getElementById(name).style.display = "";
	document.getElementById(name + '_top').style.display = "";
	
}

function showGewinnForm() {
	if (document.getElementsByName('antwort')[2].checked) {
		document.getElementById('gewinn_smelk').style.display = "none";
		document.getElementById('porzellan_set').style.display = "none";
		document.getElementById('gewinn_frage').style.display = "none";
		document.getElementById('gewinn_formular').style.display = "block";
//		loadCookies();
	} else {
		alert('Diese Antwort ist leider nicht richtig. Bitte versuchen Sie es erneut.')
	}
}

function checkGewinnForm() {
	var error_text = "";
	if (document.getElementById('vorname').value == "") {
		error_text = error_text + "Bitte geben Sie Ihren Vornamen ein.\n";
	}
	if (document.getElementById('name').value == "") {
		error_text = error_text + "Bitte geben Sie Ihren Nachnamen ein.\n";
	}
	if (document.getElementById('strasse').value == "") {
		error_text = error_text + "Bitte geben Sie Ihre Stra%DFe ein.\n";
	}
	if (document.getElementById('hausnr').value == "") {
		error_text = error_text + "Bitte geben Sie Ihre Hausnummer ein.\n";
	}
	if (document.getElementById('plz').value == "") {
		error_text = error_text + "Bitte geben Sie Ihre Postleitzahl ein.\n";
	}
	if (document.getElementById('ort').value == "") {
		error_text = error_text + "Bitte geben Sie Ihren Ort ein.\n";
	}
	if (document.getElementById('land').value == "") {
		error_text = error_text + "Bitte geben Sie Ihr Land ein.\n";
	}
	if (document.getElementById('email').value == "") {
		error_text = error_text + "Bitte geben Sie Ihre E-Mail-Adresse ein.\n";
	} else {
		if (!is_mail(document.getElementById('email').value)) {
			error_text += "Dies ist keine g%FCltige E-Mail-Adresse.\n";
		}
	}
	if (!document.getElementById('teilnahme').checked) {
		error_text += "Bitte best%E4tigen Sie die Teilnahmebedingungen.\n";
	}
	if (document.getElementById('zeichen').value == "") {
		error_text = error_text + "Bitte geben Sie das Captcha ein.\n";
	}
	
	if (error_text == "") {
		submitGewinn();
	} else {
		alert(unescape(error_text));
	}
}

function submitGewinn() {
//	loadCookies();
  jQuery.ajax({
    type:    'POST',
    url:     '/index.pl',
    data:    $('#gewinndaten_form').serialize(),
    success: function (response) {
	       $('#gewinn_formular').html(response);
	       if ($('#captcha_pic').length) {
	    	   document.getElementById('captcha_pic').src = '/index.pl?action=captcha&a='+$('#avaktion').val()+'&' + Math.random();
//	    	   loadCookies();
	   	 }
	       if (!$('#gewinndaten_form').length) {
	    	   document.getElementById('ueberschrift').innerHTML ="<img src=\"/shared/pics/vielen_dank.gif\" width=\"269\" height=\"35\" alt=\"Vielen Dank!\">";
	   	 }
    },
    error: function (request, status, error) {
             var msg = 'An error occured while your request was submitted; please retry later: ' + error + ' request: ' + request + ' status: ' + status; 
             //debug(msg);
           }
  });
}

function is_mail(mail) {
	var regex = /^\S+\@\S+\.\S+$/;
	var richtig = regex.test(mail);
	return richtig;
}

function loadCookies() {
	if (document.cookie) {
		var cookie = document.cookie;
		var alle_cookies = cookie.split(";");
		$.each(alle_cookies, function(index, object) {
			var name_werte = object.split("=");
			if (name_werte[0] == 'captcha') {
				//debug(name_werte[1]);
				document.getElementById('captcha_id').value = name_werte[1];
			}
		});
	}
}

function getMousePosition(event) { 
	mouseX = window.event ? window.event.clientX : event.pageX;
	mouseY = window.event ? window.event.clientY : event.pageY;
}

function mouseCoordsInit() { 
	document.onmousemove = getMousePosition;
}

function str2binb(str) { 
  var bin  = Array();
  var mask = (1 << 8) - 1;
  for (var i = 0; i < str.length * 8; i += 8) {
    bin[i >> 5] |= (str.charCodeAt(i / 8) & mask) << (32 - 8 - i % 32);
	}
  return bin;
}

function safeAdd(x, y) { 
  var lsw = (x & 0xFFFF) + (y & 0xFFFF);
  var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
  return (msw << 16) | (lsw & 0xFFFF);
}

function rol(num, cnt) { 
  return (num << cnt) | (num >>> (32 - cnt));
}

function sha1Ft(t, b, c, d) { 
  if (t < 20) return (b & c) | ((~b) & d);
  if (t < 40) return b ^ c ^ d;
  if (t < 60) return (b & c) | (b & d) | (c & d);
  return b ^ c ^ d;
}

function sha1Kt(t) { 
  return (t < 20) ?  1518500249 : (t < 40) ?  1859775393 : (t < 60) ? -1894007588 : -899497514;
}

function coreSHA1(x, len) { 
  x[len >> 5] |= 0x80 << (24 - len % 32);
  x[((len + 64 >> 9) << 4) + 15] = len;

  var w = Array(80);
  var a =  1732584193;
  var b = -271733879;
  var c = -1732584194;
  var d =  271733878;
  var e = -1009589776;

  for (var i = 0; i < x.length; i += 16) {
    var olda = a;
    var oldb = b;
    var oldc = c;
    var oldd = d;
    var olde = e;

    for (var j = 0; j < 80; j++) {
      if (j < 16) {
				w[j] = x[i + j];
			} else {
				w[j] = rol(w[j-3] ^ w[j-8] ^ w[j-14] ^ w[j-16], 1);
			}
      var t = safeAdd(safeAdd(rol(a, 5), sha1Ft(j, b, c, d)), safeAdd(safeAdd(e, w[j]), sha1Kt(j)));
      e = d;
      d = c;
      c = rol(b, 30);
      b = a;
      a = t;
    }

    a = safeAdd(a, olda);
    b = safeAdd(b, oldb);
    c = safeAdd(c, oldc);
    d = safeAdd(d, oldd);
    e = safeAdd(e, olde);
  }
  return Array(a, b, c, d, e);
}

function binb2hex(binarray) { 
  var hex_tab = "0123456789abcdef";
  var str     = "";

  for(var i = 0; i < binarray.length * 4; i++) {
    str += hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8+4)) & 0xF) +
           hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8  )) & 0xF);
  }
  return str;
}

function hexSHA1(s) { 
	return binb2hex(coreSHA1(str2binb(s), s.length * 8));
}

function generateNewSerialNumber() { 
	var f = document.getElementById('data');
	if (f) 	{
		var now        	= new Date();
		var time       	= (now.getTime() - now.getMilliseconds()) / 1000;
		var ms         	= now.getMilliseconds();
		var ua         	= navigator.userAgent;
		var sw         	= screen.width;
		var sh        	= screen.height;
		var rand       	= Math.random();
		var text      	= 'time:' + time + ', ms:' + ms + ', rand:' + rand + ', sw:' + sw + ', sh:' + sh + ', ua:' + ua + ', mouseX:' + mouseX + ', mouseY:' + mouseY;
		var new_serial	= hexSHA1(text) + '.tmp';
		f.action      	= '/cgi/upload.pl?serial=' + new_serial;
		onload_happend	= 1;
	}
}

function bytes2kb (b) {
	return parseInt(b/(1024))
}

function startUpload(preview) {
	if (uploadstarted)
		return;

	if (onload_happend && checkFilename()) {
		window.parent.disableBody();
		var f  = document.getElementById('data');
		f.submit();
	
		console.log(f.action + "&action=ajax_get_progress")
		var now = new Date();
		window.setTimeout("doProgressbarUpdate('/cgi/?serial=" + getSerial() + "&action=ajax_get_progress&foo=" + now.getTime() + "')", 1200);
		return true;
	} else {
		return false; 
	}
}

function createAjaxObject() {
	var myRequest = false;

	if (window.XMLHttpRequest) {
		myRequest = new XMLHttpRequest();
		if (myRequest.overrideMimeType)
		{
			myRequest.overrideMimeType('text/plain');
		}
	} else if (window.ActiveXObject) {
		try
		{
			myRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try
			{
				myRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}

	if (!myRequest)
		alert(message_kein_ajax_object);

	return myRequest;
}

function updateProgress() {
	if (ajax_pgbar && (ajax_pgbar.readyState == 4) && (ajax_pgbar.status == 200)) {
		console.log('update');
		var rawdata 	= ajax_pgbar.responseText;
		tmp 	        = rawdata.split('|');
		status        = tmp[0];
		send          = tmp[1];
		to_send       = tmp[2];

		console.log(ajax_pgbar.responseText);
		if (status == 200) {
				window.frames.uploadframe.location = 'about:blank';
				send    = bytes2kb(send);
				to_send = bytes2kb(to_send);
				fehlermeldung('Die Datei darf max. 2 MB gro&szlig; sein');
				window.parent.resetForm();
				window.parent.enableBody();
				return;
		}
		if (status == 201) {
				window.frames.uploadframe.location = 'about:blank';
				fehlermeldung('Es ist ein allgemeiner Fehler aufgetreten. Bitte versuchen Sie es erneut.');
				window.parent.resetForm();
				window.parent.enableBody();
				return;
		}
	}
}

function doProgressbarUpdate(url_to_get) {
	ajax_pgbar = createAjaxObject();
	if (ajax_pgbar) {
		ajax_pgbar.onreadystatechange = updateProgress;
		ajax_pgbar.open('GET', url_to_get, true);
		ajax_pgbar.send(null);
	}
}

function fehlermeldung(s) {
		obj = window.parent.document.getElementById('errormsg');
		if (!obj) 
			obj = window.parent.parent.document.getElementById('errormsg');
		if (obj) {
			obj.innerHTML=s;
		} else {
			alert(s);
		}
}

function checkFilename() {
	fehlermeldung('');
	var input = document.getElementById('bild');
	if (!input.value)
		return false;
	
	var filename      = input.value;
	var extension_arr = filename.match(/.*(\..+)$/);
	var extension     = extension_arr ? extension_arr[1] : '';

	if (!extension) {
		fehlermeldung('Bitte geben Sie ein Bild im jpg-Format an.');
		return false;
	}

	if (extension.toLowerCase() == '.jpg') {
			return true;
	}

	fehlermeldung('Bitte geben Sie ein Bild im jpg-Format an.');
	return false;
}


function showPreview(src, imageid, src2) {
	hid = window.parent.parent.document.getElementById('image');
	hid.value = imageid;
	
	var	img = window.parent.parent.document.getElementById('img');
	img.src = src;

	var	img = window.parent.parent.document.getElementById('img2');
	img.src = src2;

	window.parent.parent.document.getElementById('fotobg').style.display='';
	window.parent.parent.document.getElementById('foto').style.display='';

	window.parent.resetForm();
	window.parent.parent.enableBody();
};

function enableBody() {
	$('#overlay').remove();
	$('#loading').remove();
	uploadstarted = 0;
}

function disableBody() {
	if (uploadstarted) 
		return;
	uploadstarted = 1;
	$('body').append('<div id="overlay"></div><div id="loading"><img src="/shared/pics/loading.gif"></div>');

	var arrPageSizes = ___getPageSize();
	$('#overlay').css({
			backgroundColor:	'#000000',
			opacity:			0.3,
			width:				arrPageSizes[0],
			height:				arrPageSizes[1]
		}).show();

	addResizeEvent(function() {
		var arrPageSizes = ___getPageSize();
		$('#overlay').css({
			width:		arrPageSizes[0],
			height:		arrPageSizes[1]
		});
	});
}

function ___getPageSize() {
	var xScroll, yScroll;
	if (window.innerHeight && window.scrollMaxY) {	
		xScroll = window.innerWidth + window.scrollMaxX;
		yScroll = window.innerHeight + window.scrollMaxY;
	} else if (document.body.scrollHeight > document.body.offsetHeight) {
		xScroll = document.body.scrollWidth;
		yScroll = document.body.scrollHeight;
	} else {
		xScroll = document.body.offsetWidth;
		yScroll = document.body.offsetHeight;
	}
	var windowWidth, windowHeight;
	if (self.innerHeight) {
		if (document.documentElement.clientWidth){
			windowWidth = document.documentElement.clientWidth; 
		} else {
			windowWidth = self.innerWidth;
		}
		windowHeight = self.innerHeight;
	} else if (document.documentElement && document.documentElement.clientHeight) {
		windowWidth  = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
	} else if (document.body) {
		windowWidth  = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
	}	
	if (yScroll < windowHeight){
		pageHeight = windowHeight;
	} else { 
		pageHeight = yScroll;
	}
	if (xScroll < windowWidth){	
		pageWidth = xScroll;		
	} else {
		pageWidth = windowWidth;
	}
	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight);
	return arrayPageSize;
}

function addResizeEvent(func) {
  var old = window.onresize;
  if (typeof window.onresize != 'function') {
    window.onresize = func;
  } else {
    window.onresize = function(e) {
      old(e);
      func(e);
    }
  }
}

function resetForm() {
	if (document.forms['data'])
		document.forms['data'].reset();
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImgRestore() { //v3.0
  var i, x, a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; 
  document.MM_sr=new Array; 
  for(i=0;i<(a.length-2);i+=3)
  if ((x=MM_findObj(a[i]))!=null){
  	document.MM_sr[j++]=x; 
	if (!x.oSrc) x.oSrc=x.src; 
	x.src=a[i+2];
  }
}

function getSerial() {
	var serial = document.getElementById('data').action;
	return serial.replace(/.+\?serial=/,'');
}

