
function redirectToLink(link)
{
	location.href = link;
}

function positionFooter() {
	
	var footer = document.getElementById('footerSpalteUnten');
	if(footer) {
		
		height = footer.offsetHeight;
		footer.style.bottom = '-' + height + 'px';
		
	}
	
}

function doNothing() {}

function trim (str) {
  // erst fuehrende, dann folgende whitespaces entfernen
  return str.replace (/^\s+/, '').replace (/\s+$/, '');
} // function trim (str)


function window_open ( p_url ) {
  var popup_win = window.open(p_url, 'popup_win', 'width=1100, height=500, scrollbars=yes');
  popup_win.focus();
}


function radioelement_aktivieren( rb_id ) {
  var rb = document.getElementById( rb_id );
  if (rb) {
    rb.checked = true;
  } // if (rb)
} // function radioelement_aktivieren( rb_id )


function get_div( div_id ) {
 return document.getElementById( div_id );
}

function div_einblenden( div_id ) {
  mmc = get_div( div_id );
  if (!mmc) {
    return;
  } // if (!mmc)
  mmc.style.display='block';
}

function div_ausblenden( div_id ) {
  mmc = get_div( div_id );
  if (!mmc) {
    return;
  } // if (!mmc)
  mmc.style.display='none';
}

function div_sichtbarkeit_umkehren( div_id ) {
  mmc = get_div( div_id );
  if (!mmc) {
    return;
  } // if (!mmc)
  if (mmc.style.display=='none') {
    mmc.style.display='inline';
  } else { // if (mmc.style.display=='none')
    mmc.style.display='none';
  } // if (mmc.style.display=='none')
} // function div_sichtbarkeit_umkehren( div_id )


function setze_cookie(key, val, duration) {
  val = val.replace(';','');
  if(key=="bestellzettel"){
  	//val = encode64(val);
	val=encode64(RawDeflate.deflate(val));
  }
  // val = 'foooooooo';
  jetzt=new Date();
// alert( 'dauer: '+ duration )
  endzeitpunkt=new Date(jetzt.getTime()+86400000);

  // var ablauf = new Date();
  // var infuenfTagen = ablauf.getTime() + (5 * 24 * 60 * 60 * 1000);
  // ablauf.setTime(infuenfTagen);


// alert('setze_cookie.1:\n'+ key +': '+ val + '\n##############################################################################\n'+ document.cookie);
  document.cookie=key+'='+val+';path=/;expires='+endzeitpunkt.toGMTString();
  // document.cookie=key+'='+val+';path=/';
// alert('setze_cookie.2:\n'+ document.cookie);
} // function setze_cookie(key,val,duration)

function lese_cookie( cookie_schluessel ) {

// alert('lese_cookie.cookie_schluessel:\n'+ cookie_schluessel);

  cookie_wert = '';
  if(document.cookie) {
// alert('lese_cookie.cookies:\n'+ document.cookie);
    cookies = document.cookie.split(';');
    for (i=0; i<cookies.length; i++) {
      cookies[i] = trim( cookies[i] );
      key = cookies[i].substring( 0, cookies[i].indexOf('=') );
      if (key==cookie_schluessel) {
        cookie_wert = unescape(trim( cookies[i].substring( cookies[i].indexOf('=')+1, cookies[i].length ) ) );
		//alert(cookie_wert);
      } // if (key==cookie_schluessel)
    } // for (i=0; i<cookies.length; i++)
  } else { // if(document.cookie)
    // alert('lese_cookie: !document.cookie');
  } // if(document.cookie)
  
  if(cookie_schluessel=='bestellzettel' && cookie_wert.length>0){
  	cookie_wert=RawDeflate.inflate(decode64(cookie_wert));
	
  	//cookie_wert = decode64(cookie_wert);
  }
  return cookie_wert;
} // function lese_cookie( key )





function bestellzettel_anzeige_aktualisieren(anfahrtsKosten, minBestellwert, freieLieferung, waehrung, gewaehlte_zahlungsart) {
  bestellzettel_shopdaten_anzeigen();
  bestellzettel_alle_produkte_einblenden(anfahrtsKosten, minBestellwert, freieLieferung, waehrung, gewaehlte_zahlungsart);
  
  var bestell_list = document.getElementById('bestellzettel_liste');
  if(bestell_list != null) {
	  var bestellzettel_upper_button = document.getElementById('bestellzettel_upper_button');
	  if(bestellzettel_upper_button != null) {
		  if(bestell_list.offsetHeight > '250') {
			  bestellzettel_upper_button.style.display = 'block';
		  } else {
			  bestellzettel_upper_button.style.display = 'none';
		  }
	  }
  }
  
} // function bestellzettel_anzeige_aktualisieren()


/**
 * returns the selected payment art
 * 
 * @return
 */
function getZahlungsArt() {
	
	if(document.bestellform && document.bestellform.eingabe_zahlungsart) {
	
		for (var i=0; i < document.bestellform.eingabe_zahlungsart.length; i++)  {
		   if (document.bestellform.eingabe_zahlungsart[i].checked) {
			   	  return document.bestellform.eingabe_zahlungsart[i].value;
		   }
		}
		
	} else {
		return '';
	}
		
}

function bestellzettel_shopdaten_anzeigen() {
  var shop_daten_str = lese_cookie('bestellzettel_shop');
// alert('sd: '+ shop_daten_str);
  var shop_daten = [];
  if (shop_daten_str.length>0) {
    shop_daten = JSON.parse( shop_daten_str );
  } // if (shop_daten_str.length>0)
// debug_text = '';
  for ( var info_id in shop_daten ) {
// debug_text += info_id +': '+ shop_daten[ info_id ] +'\n';
    var div_handler = get_div( 'bestellzettel_'+info_id );
    if (div_handler) {
      div_handler.innerHTML = shop_daten[ info_id ];
    } // if (div_handler)
  } // for ( var info_id in shop_daten )
// alert(debug_text);
} // function bestellzettel_shopdaten_anzeigen()


function bestellzettel_alle_produkte_einblenden(anfahrtsKosten, minBestellwert, freieLieferung, waehrung, gewaehlte_zahlungsart) {
  vorhandene_produkte = lese_cookie('bestellzettel');  
  var produkte_arr = [];
  if (vorhandene_produkte.length>0) {
    var produkte_arr = JSON.parse( vorhandene_produkte );
  } // if (vorhandene_produkte.length>0)

  bestellzettel_alle_produkte_ausblenden();
  var waehrung_str = '';
  var summe = 0;
  for (var i=0; i<produkte_arr.length; i++) {
    waehrung_str = produkte_arr[i]['waehrung'];
	switch(waehrung_str)
	{	
		case '&euro':
			waehrung_str = produkte_arr[i]['waehrung'] += ';';
			break;
		default:
			break;
	}
    summe += Number( produkte_arr[i]['summe'] );
	
    bestellzettel_produkt_anzeigen( produkte_arr[i] );
  } // for (var i=0; i<produkte_arr.length; i++)

  summe = Math.round(summe*100)/100;
  if (typeof(gewaehlte_zahlungsart)!='string') {
    gewaehlte_zahlungsart = '';
  } // if (typeof(gewaehlte_zahlungsart)!='string')

  switch (gewaehlte_zahlungsart) {
    case 'kartenzahlung':
      kosten_zahlungsart = 1.00;
      break;
    case 'paypal':
      kosten_zahlungsart = 1.00;
      break;
    case 'direct_payment':
        kosten_zahlungsart = 1.00;
        break;
    default:
      kosten_zahlungsart = 0;
      break;
  } // switch (gewaehlte_zahlungsart)
  
  if(waehrung_str == '') {
	  waehrung_str = waehrung;
  }
  
  freieLieferung = Number(freieLieferung);
  
  var div_handler = get_div( 'bestellzettel_anfahrts_kosten' );
  var div_wrapper_handler = get_div( 'bestellzettel_anfahrts_kosten_wrapper' );
  if(anfahrtsKosten != '?') {
	  
	  
	  freieLieferung = Number(freieLieferung);
	  if(summe >= freieLieferung && freieLieferung > 0.00) {
		  anfahrtsKosten = 0.00;
	  } else {
		  anfahrtsKosten = Number(anfahrtsKosten);		  
	  }	  
	  
	  if(anfahrtsKosten == 0.00) {
		  div_wrapper_handler.style.display = 'none';
	  } else {		  
		  if (div_handler) {
		    div_handler.innerHTML = String(anfahrtsKosten.toFixed(2)) +'&nbsp;'+ waehrung  + '&nbsp;';
		    
		    if(summe > 0.00) {
			  summe += Number(anfahrtsKosten);
			}
		    
		  }// if (div_handler)
	  }
	  
  } else {
	  if (div_wrapper_handler) {
	    //div_handler.innerHTML = '? '+ waehrung  + '&nbsp;';
		  div_wrapper_handler.style.display = 'none';
	  } // if (div_handler)
  }
  
  summe += Number(kosten_zahlungsart);
  // bestellzettel_kosten_zahlungsart
  var div_handler = get_div( 'bestellzettel_kosten_zahlungsart' );
  if (div_handler) {
    div_handler.innerHTML = String(kosten_zahlungsart.toFixed(2)) +'&nbsp;'+ waehrung_str + '&nbsp;';
  } // if (div_handler)
  //{"voucher_id":"4","voucher_name":"testyy","original_value":"5.00","valid_from_ts":"1294700400","valid_to_ts":"1296428400","is_cumulative":"0","is_absolute":"1","is_internal":"1","is_for_all_shops":"1","is_for_all_users":"0","valid_from_value":"0.00","status":"active","times_used":"0","max_usages":"60","valid_shops":null,"valid_users":null,"value":"5.00"}

  var old_sum = summe;
  
  var voucher = lese_cookie('bestellzettel_gutschein');
  if(voucher != "")
  {
	  var new_sum = -1;
	  
	  var voucher_arr 	= JSON.parse( voucher );
	  var voucher_value_str = 0;
	  if(voucher_arr.is_absolute == 1)
	  {
		  if(voucher_arr.valid_from_value < summe)
		  {
			  new_sum  = summe - voucher_arr.value;
			  if(new_sum  < 0)
			  {
				  new_sum = 0;
			  }
		  }
		  else
		  {
			  new_sum = summe;
		  }

		  voucher_value_str -= Number(voucher_arr.value);
		  voucher_value_str = voucher_value_str.toFixed(2) + "&nbsp;" + waehrung_str;
	  }
	  else
	  {
		  if(voucher_arr.valid_from_value < summe)
		  {
			  new_sum  = summe * (1 - voucher_arr.value/100);
		  }
		  else
		  {
			  new_sum = summe;
		  }
		  
		  voucher_value_str -= Number(voucher_arr.value);
		  voucher_value_str = voucher_value_str.toFixed(2) + "&nbsp;%";
	  }
	  
	  if(new_sum >= 0)
	  {
		  var voucher_abs_val = summe - new_sum;
		  $("#voucher_input_wrapper").hide();
		  $("#voucher_value_wrapper").show();
		  if(voucher_abs_val > 0)
		  {
			  $("#voucher_value").html("-" + String(voucher_abs_val.toFixed(2)) + "&nbsp;" + waehrung_str);
		  }
		  else
		  {
			  $("#voucher_value").html(voucher_value_str);
		  }
		  summe = new_sum;
	  }
	  else
	  {
		  $("#voucher_input_wrapper").show();
		  $("#voucher_value_wrapper").hide();
	  }
	  
  }
  
  var div_handler = get_div( 'bestellzettel_summe' );
  if (div_handler) {
    div_handler.innerHTML = String(summe.toFixed(2)) +'&nbsp;'+ waehrung_str;
  }
  
  $("#order_value").val(String(old_sum.toFixed(2)));
  $("#ogone_amount").val(String(Math.round(summe*100)));
  
} // function bestellzettel_alle_produkte_einblenden()

/**
 * Checks if the order has reached the minimal amount
 * 
 * @param minBestellwert
 * @return
 */
function bestellzettel_check_min_bestellwert(minBestellwert) {
	
	vorhandene_produkte = lese_cookie('bestellzettel');
	var produkte_arr = [];
	if (vorhandene_produkte.length>0) {
		var produkte_arr = JSON.parse( vorhandene_produkte );
	} // if (vorhandene_produkte.length>0)
	
	var waehrung_str = '';
	var summe = 0;
	for (var i=0; i<produkte_arr.length; i++) {
		waehrung_str = produkte_arr[i]['waehrung'];
		switch(waehrung_str) {	
			case '&euro':
				waehrung_str = produkte_arr[i]['waehrung'] += ';';
				break;
			default:
				break;
		}
		summe += Number( produkte_arr[i]['summe'] );
	} // for (var i=0; i<produkte_arr.length; i++)
	
	if(summe >= minBestellwert) {
		return true;
	} else {
		return false;
	}
	 
} // function bestellzettel_check_min_bestellwert(minBestellwert) {


function bestellzettel_alle_produkte_ausblenden() {
  var div_handler = get_div( 'bestellzettel_liste' );
  if (div_handler) {
    div_handler.innerHTML = '';
  } // if (div_handler)
} // function bestellzettel_alle_produkte_ausblenden()

function bestellzettel_produkt_anzeigen( produkt ) {
  var bestellzettel_element_str = '';
  if (typeof( bestellzettel_element )=='function') {
    bestellzettel_element_str = bestellzettel_element( produkt );
  } // if (typeof( bestellzettel_element )=='function')
  var div_handler = get_div( 'bestellzettel_liste' );
  if (div_handler) {
    div_handler.innerHTML += bestellzettel_element_str;
  } // if (div_handler)
} // function bestellzettel_produkt_anzeigen( produkt )


function parse_bestellzettel_cookie() {
  var vorhandene_produkte = lese_cookie('bestellzettel');
  //alert(vorhandene_produkte);
  var produkte_arr = [];
  if (vorhandene_produkte.length>0) {
  	//alert(vorhandene_produkte);
    produkte_arr = JSON.parse( vorhandene_produkte );
  } // if (vorhandene_produkte.length>0)
  return produkte_arr;
} // function parse_bestellzettel_cookie()




function formatiere_preis(preis) {
  return preis.toFixed(2) +'&nbsp;'+ waehrung_str;
} // function formatiere_preis( preis )

function searchByZip(thisForm)
{
	
	var url = thisForm.getAttribute('action');

	$("#hiddenSearchForm").attr("action", url + '/' + thisForm.plz_ort.value);
	$("#hiddenSearchForm").submit();
	
	
//	$.post(url + '/' + thisForm.plz_ort.value, 
//			{
//	        	location_id: thisForm.location_id.value
//			},
//			async: false);

//	window.location.href = url + '/' + thisForm.plz_ort.value;
	
}

function getGivenZip(standard_such_str)
{
	$(".plz_ort_field").each(function(index) {
		
		if($(this).val() != standard_such_str && $(this).val() != $("#old_search").val())
		{
			$(".plz_ort_field").val($(this).val());
			$("#old_search").val($(this).val());
			return;
		}
		
	});
}

function suchformular_einblenden( div_id , standard_such_str) {
  div_ausblenden('reiter1');
  div_ausblenden('reiter2');
  div_ausblenden('reiter3');
  div_ausblenden('reiter4');
  getGivenZip(standard_such_str);
  div_einblenden( div_id );
  
} // function suchformular_einblenden( div_id )

function leere_textfeld_wenn_noetig( el_id, standard_such_str ) {
  // alert ( el_id );
  inel = document.getElementById( el_id );
  if (!inel) {
    return;
  } // if (!inel)
  if (inel.value == standard_such_str) {
    inel.value = '';
  } // if (inel.value == standard_such_str)

} // function leere_textfeld_wenn_noetig( el_id )

function selektiere_textfeld( el_id ) {
// alert(el_id);
  inel = document.getElementById( el_id );
  if (!inel) {
    return;
  } // if (!inel)
// alert(inel);
  inel.select();
} // function selektiere_textfeld( el_id )

//--------------------------- BASE64 ENCODING

 var keyStr = "ABCDEFGHIJKLMNOP" +
               "QRSTUVWXYZabcdef" +
                "ghijklmnopqrstuv" +
                "wxyz0123456789+/" +
                "=";

  function encode64(input) {
       input = escape(input);
       var output = "";
       var chr1, chr2, chr3 = "";
       var enc1, enc2, enc3, enc4 = "";
       var i = 0;
   
       do {
          chr1 = input.charCodeAt(i++);
          chr2 = input.charCodeAt(i++);
          chr3 = input.charCodeAt(i++);
   
          enc1 = chr1 >> 2;
          enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
          enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
          enc4 = chr3 & 63;
   
          if (isNaN(chr2)) {
             enc3 = enc4 = 64;
          } else if (isNaN(chr3)) {
             enc4 = 64;
          }
   
          output = output +
             keyStr.charAt(enc1) +
             keyStr.charAt(enc2) +
             keyStr.charAt(enc3) +
             keyStr.charAt(enc4);
          chr1 = chr2 = chr3 = "";
          enc1 = enc2 = enc3 = enc4 = "";
       } while (i < input.length);
   
       return output;
    }
   
    function decode64(input) {
       var output = "";
       var chr1, chr2, chr3 = "";
       var enc1, enc2, enc3, enc4 = "";
       var i = 0;
   
       // remove all characters that are not A-Z, a-z, 0-9, +, /, or =
       var base64test = /[^A-Za-z0-9\+\/\=]/g;
       if (base64test.exec(input)) {
          alert("There were invalid base64 characters in the input text.\n" +
                "Valid base64 characters are A-Z, a-z, 0-9, '+', '/',and '='\n" +
                "Expect errors in decoding.");
       }
       input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
   
       do {
          enc1 = keyStr.indexOf(input.charAt(i++));
          enc2 = keyStr.indexOf(input.charAt(i++));
          enc3 = keyStr.indexOf(input.charAt(i++));
          enc4 = keyStr.indexOf(input.charAt(i++));
   
          chr1 = (enc1 << 2) | (enc2 >> 4);
          chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
          chr3 = ((enc3 & 3) << 6) | enc4;
   
          output = output + String.fromCharCode(chr1);
   
          if (enc3 != 64) {
             output = output + String.fromCharCode(chr2);
          }
          if (enc4 != 64) {
             output = output + String.fromCharCode(chr3);
          }
   
          chr1 = chr2 = chr3 = "";
          enc1 = enc2 = enc3 = enc4 = "";
   
       } while (i < input.length);
   
       return unescape(output);
    }
    
    /**
     * Returns true if checkbox is checked
     * 
     * @param checkBoxEl
     * @return
     */
    function onSubmitCheckbox(checkBoxEl, message) {
    	
    	if(checkBoxEl.checked) {
    		return true;
    	} else {
    		if(message!='') {
    			alert(message);
    		}
    		return false;
    	}
    	
    }

