
var ajaxUrl = 'ajax_gate_konfigurator.php';

var global_uploadIsImage = 0;
var global_sizeIsSelected = 0;
//gibt an, ob ein Klick auf den upload Button ausgeführ werden soll,
//also ob bild, material und größe ausgewählt ist
var global_upload_allowed = 0;

//Get-Parameter in Javasript abfragen:
HTTP_GET_VARS=new Array();
strGET=document.location.search.substr(1,document.location.search.length);
if(strGET!='') {
	gArr=strGET.split('&');
  for(i=0;i<gArr.length;++i) {
		v='';vArr=gArr[i].split('=');
    if(vArr.length>1){
			v=vArr[1];
		}
    HTTP_GET_VARS[unescape(vArr[0])]=unescape(v);
  }
}


function GET(v) {
	if(!HTTP_GET_VARS[v]){return 'undefined';}
	return HTTP_GET_VARS[v];
}


$(document).ready(function() {	
	//Wenn JS aktiv ist, wird der Zwischenschritt nicht ben?tigt, weil die Formatliste per Ajax geholt wird.
	$('#submit_nextstep_sizeprice').css({"display":"block"});

	// Alle nur f?r JS sichtbaren Elemente einblenden und statische ausblenden
	$('.visibleOnJs').css({"display":"block"});
	$('.hiddenOnJs').css({"display":"none"});
	
	//lightbox-background einblenden
	$('#upload_button').click(function () {
		$('.datamints_image_upload_layer').show();
	});

	//Pr?fen ob material per Get ?bergeben
	if(GET('material') != 'undefined') {
		if(!isNaN(GET('material'))) {
			//Wenn die Upload-Seite mit Material-ID aufgerufen wird, dann auch die entsprechende Prodktinfo einblenden.
			changeSizesAndPrices(GET('material'));
		}
	}
	


});


function checkFreeform(productsId, maxLength, maxHeight, pricePerQm, asStart){
	// Erh?lt die f?r dieses Material notwendigen Werte in mm und ?berpr?ft die Eingabefelder.
	// Check, ob Zahl, ob innerhalb der Maximalwerte und ob innerhalb von 1:5 und ob lange Seite > kurze Seite

	// Es werden generell nur ganze Zahlen akzeptiert.
	var longSide = parseInt($('#id_datamints_free_width').val());
	var shortSide = parseInt($('#id_datamints_free_height').val());
	var warningText = '';
	var maxLengthCm = maxLength / 10;
	var maxHeightCm = maxHeight / 10;

	if (asStart){
		return false;
	}

	isOk = true;

	// ?berpr?fung ob ?berhaupt eine Zahl
	if (isNaN(longSide)){
		$('#id_datamints_free_width').val('');
		warningText += 'Geben Sie für die Breite einen Zahlenwert ein. ';
		isOk = false;
	}
	else{
		$('#id_datamints_free_width').val(longSide);
	}

	if (isNaN(shortSide)){
		$('#id_datamints_free_height').val('');
		warningText += 'Geben Sie für die Länge einen Zahlenwert ein. ';
		isOk = false;
	}
	else{
		$('#id_datamints_free_height').val(shortSide);
	}

	// ?berpr?fung nach Minimalwerten (Hardcoded auf 20cm)
	if (longSide < 20 || shortSide < 20){
		warningText += 'Die Minimalgröße ist 20 x 20cm. ';
		isOk = false;
	}

	// ?berpr?fung der Maximalwerte
	// Erst mal schauen, was die l?ngere Seite ist
	if (longSide > shortSide){
		freeWidth = longSide;
		freeHeight = shortSide;
	}
	else{
		// Wenn H?he gr??er Breite, ist die Zuordnung umgekehrt
		freeWidth = shortSide;
		freeHeight = longSide;
	}

	if (freeWidth > maxLengthCm) {
		warningText += 'Der Wert der längeren Seite darf maximal ' + maxLengthCm + ' cm betragen. ';
		isOk = false;
	}

	if (freeHeight > maxHeightCm) {
		warningText += 'Der Wert der kürzeren Seite darf maximal ' + maxHeightCm + ' cm betragen. ';
		isOk = false;
	}

	// ?berpr?fung, ob die lange Seite l?nger ist als die Kurze.
	if ($('#id_datamints_free_height').val() > 0 && longSide / shortSide < 1) {
		// DEAKTIVIERT, ist jetzt flexibel!
		//warningText += 'Die L?nge der kurzen Seite darf die lange Seite nicht ?berschreiten.';
		//isOk = false;
	}

	// ?berpr?fung, ob das Seitenverh?ltnis in Ordnung ist.
	if (shortSide > 0){
		lengthRatio =  longSide / shortSide;
	}
	else {
		lengthRatio = 0;
	}	

	if (lengthRatio > 5 || lengthRatio < 0.2){
		warningText += 'Das Seitenverhältnis darf maximal 5:1 betragen. ';
		isOk = false;
	}

	$('#id_info_freeform').html(warningText);
	
	if (isOk == true) {
		$('#id_info_freeform').css('color', 'green');

		// Per Ajax checken, ob es das Format auch von der Stange gibt und wenn ja,
		// diesen Preis anzeigen.
		var url = ajaxUrl + '?mode=getPriceFreeForm&material=' + productsId + '&long=' + longSide + '&short=' + shortSide;
		
		$.get(url, function(data) {
			// In data steckt der per Ajax ermittelte Brutto-Preis
			var curPrice = new Number(data);
			// Preis f?r das gew?hlte Format anzeigen:
			//curPrice = (longSide * shortSide) / 10000 * pricePerQm;
			strCurPrice = curPrice.toFixed(2).replace('.', ',');
			strCurPrice = '<div style="color:#555555;"><b>Preis: ' + strCurPrice + ' &euro;</b></div>';
			$('#id_info_freeform').html('Dieses Format kann der Fuchs liefern!' + strCurPrice);
			// Das Maximum-Info ausblenden, braucht man jetzt nicht mehr
			$("#id_maximuminfo_freeform").css('display', 'none');
		});
		
		// Die Werte in die versteckten Felder eintragen, damit der Konfigurator reagiert
		$('#id_cur_width').val(longSide * 10); //  *10 weil der Konfigurator mm erwartet
		$('#id_cur_height').val(shortSide * 10);
		if (asStart == false){
			// Soll aus dieser Funktion nur bei ?nderung aufgerufen werden.
			configurator();
			// Damit bei jeder ?nderung wieder das Optimal-Format verwendet wird.
			optFormat();
		}

		return true;
	}
	else{
		$('#id_info_freeform').css('color', 'red');
		// Maximum-Info einblenden
		$("#id_maximuminfo_freeform").css('display', 'block');
		return false;
	}
}






/**
 * Sollte der User JS aktiviert haben, werden die Contoller für den HTML-Betrieb
 * ausgeblendet.
 */
function disableAntiJS() {
	// Wird zun?chst nicht mehr ben?tigt
	return false;
	
	$("#submit_nextstep_sizeprice").css('display', 'none');
	$("#bildkonfigurator").css('display', 'block');
	$("#bildkonfigurator_nojs").css('display', 'none');
	//document.forms["upload_picture_form"].action = 'konfigurator.php?coID=11&upload=1&javascript=1';
}


/** 
 * stellt mit einem der imageoverlays was an. was kann über den parameter
 * modus gesetzt werden.
 */
function image_overlay(param, modus) {
	image_overlay_close_all();
	image_overlay_action(param, modus);
}


/**
 * setzt den wert display für das aktuelle objekt.
 */
function image_overlay_action(param, modus) {
	$("#image_overlay_" + param).css("display", modus);
}


/**
 * Schließt alle bilderoverlays.
 */
function image_overlay_close_all() {
	image_overlay_action('format', 'none');
	image_overlay_action('effekte', 'none');
	image_overlay_action('material', 'none');
	image_overlay_action('konfiguration', 'none');
}

 
/**
 * Zeigt das bild an. Wird öfter aufgerufen da es parameter an ein phpscript
 * sendet und dieses ein neues bild dann erzeugt.
 */
function show_picture() {
	//	url = ajaxUrl + '?mode=getimage';
	// alert(url);
	//	$.get(url, function(data) {
			//data = '<img src="' + data + '" border="0" alt="" title="" id="org_image" />'
			//$("#image_frame").replaceWith(data);
			//$("#image_frame").empty();
			//$("#image_frame").append(data);
	//	$("#org_image").attr("src", data);
	//	});
}


/**
 * Prueft, ob der User eine richtige Datei ausgewaelt hat. Wird mit Regex gemacht.
 */
function check_upload(value){
	regex = /(gif|jpg|jpeg|png|bmp|tif|tiff)$/i;
	result = regex.test(value);
	if(result == 0){
		alert("Es können nur Bilddateien mit den Endungen jpg, jpeg, png, tif, tiff, bmp hochgeladen werden.");
		return false;
	}
	return true;
}



/**
 * Hier holen wir uns die Attribute und die Preise aus
 * der Datenbank zu dem entsprechenden Produkt (Material).
 * Wird bei einem onClick auf radiobuttons Ereigniss ausgelöst.
 */
function changeSizesAndPrices(productsId) {
	//alert("TEST:" + productsId);
	// ?nderungsflag f?r Aussermittig zur?cksetzen, weil ein ge?ndertes Format immer mittig ist.
	$('#id_not_centered').val('0');

	var url = ajaxUrl + '?mode=getSizesPrices&material=' + productsId;
	$.get(url, function(data) {
		//alert(data);
		//$("#ups_replace").replaceWith(data);
		$("#ups_replace").empty();
		$("#ups_replace").append(data);
	});
	matsdesc(productsId);
	//alert('matsdesc (id) : ' + productsId);

	getCrossSelling(productsId);
	
	// den "upload-Button" zun?chst "verstecken", bis der n?chste Schritt (Bildgr??e) gew?hlt wird:
	// (Bei initial - Upload)
	setUploadButtonDisabled();

	//Und auch im Konfigurator
	$("#save_button").attr("src", "/templates/posterfuchs/buttons/german/button_selectimgfirst.gif");
}



function toggleFormat() {
	if ($("#konfigurator_format").css('display','none')) {
		$("#konfigurator_format").css('display','block');
		$("#konfigurator_format_button").css('opacity','0.5');
		$("#konfigurator_format_button").css('filter','Alpha(opacity=50)');
		$("#konfigurator_material_button").css('opacity','1');
		$("#konfigurator_material_button").css('filter','Alpha(opacity=100)');
		$("#konfigurator_material").css('display','none');
		//$("#matsdesc").css('display','none');
	}
}



function toggleMaterial() {
	if ($("#konfigurator_material").css('display','none')) {
		$("#konfigurator_material").css('display','block');
		$("#konfigurator_material_button").css('opacity','0.5');
		$("#konfigurator_material_button").css('filter','Alpha(opacity=50)');
		$("#konfigurator_format_button").css('opacity','1');
		$("#konfigurator_format_button").css('filter','Alpha(opacity=100)');
		$("#konfigurator_format").css('display','none');
		$("#matsdesc").css('display','block');
	}
}



function getCrossSelling(productsId) {
	var url = ajaxUrl + '?mode=getCrossSells&product=' + productsId;
	$.get(url, function(data){
		//alert(data);
		$("#dm_cross_replace").empty();
		$("#dm_cross_replace").append(data);
	});
}


/**
 * Hier holen wir uns die Beschreibung für das ausgewählte Material. Wird in changeSizesAndPrices() aufgerufen.
 */
function matsdesc(productsId) {	
	var url = ajaxUrl + '?mode=getmd&productsid=' + productsId;

	$.get(url, function(data) {
		//$("#matsdesc").replaceWith(data);
		$("#matsdesc").empty();
		$("#matsdesc").append(data);
	});
}


/**
 * Wenn die gr??e und dadurch auch das material gewählt wurden, soll als nächstes...
 *
 * @datamints Vorkonfigurator so editieren, das es ohne JS geht.
 * @datamints Bilderupload machen, etc...
 */
function sizesAndPricesSelected(idAttrFormat) {
	// Es wurde ein Format gew?hlt und idAttrFormat ist die Attribut - ID
	//	$('#submit_nextstep_done').replaceWith('<input type="submit" id="submit_nextstep_done" value="Jetzt Hochladen" />');
	//$('#submit_nextstep_done').val('Jetzt Hochladen');
	$('#submit_nextstep_done').css({"display":"block"});

	// ?nderungsflag f?r Aussermittig zur?cksetzen, weil ein ge?ndertes Format immer mittig ist.
	$('#id_not_centered').val('0');	

	// Freiformat - Eingabe sichtbar / unsichtbar machen
	if (idAttrFormat == 112){ // Die options_values_id des Freiform - Attributes ist 112! In PHP: DM_PF_FREEFORMAT_OPTION_ID
		if (jQuery.browser.msie == true){
			// Explorer kennt table-row nicht
			$("#id_freeformline").css('display','block');
		}
		else{
			// richtige Browser brauchen table-row, weil tr nicht als Block geht
			$("#id_freeformline").css('display','table-row');
		}

		// Die Werte in die versteckten Felder eintragen, damit der Konfigurator reagiert
		$('#id_cur_width').val($('#id_datamints_free_width').val() * 10); // mit 10 multiplizieren, weil der Konfig. mm erwartet
		$('#id_cur_height').val($('#id_datamints_free_height').val() * 10);
		// Jetzt die ?nderung dem Konfigurator mitteilen
		if (eval("typeof configurator == 'function'")) { // Pr?fen ob die Funktion configurator() exsits (tuts nicht beim !)			
			configurator();
			optFormat();
		} else {
			 //alert("Funktion configurator() exsitiert nicht!");
		}
	}
	else {
		// Normale Formate => Daten per JSON holen
		$("#id_freeformline").css('display','none');

		// Per Ajax zur ID das korrekte Format holen und in die versteckten Felder schreiben.
		var url = ajaxUrl + '?mode=getFormatMm&attrId=' + idAttrFormat;

		$.getJSON(url, function(jsonFormat) {
			// jsonFormat ist dann ein json, das die Breite und H?he enth?lt
			$("#id_cur_width").val(jsonFormat.datamints_breite_mm);
			$("#id_cur_height").val(jsonFormat.datamints_hoehe_mm);

			// Jetzt (erst!) die ?nderung dem Konfigurator mitteilen
			if (eval("typeof configurator == 'function'")) { // Pr?fen ob die Funktion configurator() exsits
				configurator();
				optFormat();
			} else {
				 //alert("Funktion configurator() exsitiert nicht!");
			}
		});
	}
	
	global_sizeIsSelected = 1;
	
	// wenn ein gueltiges Bild angegeben ist und eine groesse gewaehlt wurde, den "upload-Button" anzeigen:
	if (global_uploadIsImage == 1) {
		// gilt nur beim initialen Bildupload
		setUploadButtonActive();
	}

	// Im Konfigurator den (anderen!) Upload-Button aktivieren:
	$("#save_button").attr("src", "/templates/posterfuchs/buttons/german/big_save_order.jpg");
}

function checkConfigForm(objForm){
	// Filename f?r den Konfigurator im Cookie speichern
	var COOKIE_NAME = 'cookie_configurator';
	var options = { path: '/', expires: 1 };

	//pr?fen ob cookie vorhanden
	if($.cookie(COOKIE_NAME)){
		//pr?fen ob das bild noch nicht im cookie
		if($.cookie(COOKIE_NAME).indexOf($('#cropbox').attr('title')) < 0) {
			//Filename dem Cookie hinzuf?gen
			$.cookie(COOKIE_NAME, $.cookie(COOKIE_NAME) +','+$('#cropbox').attr('title'), options);
		}
	} else {
		//Cookie anlegen
		$.cookie(COOKIE_NAME, $('#cropbox').attr('title'), options);
	}


	//gecroptes bild f?r warenkorb erzeugen
	//Ajax Aufruf getpreview
		if($('#cropbox').attr('title')) {
			pic_width = $("#id_cur_width").val()
			pic_height = $("#id_cur_height").val()
			var url = ajaxUrl + '?mode=getpreview&filename='+ filename +'&imwidth='+ pic_width +'&imheight='+ pic_height +'&imeffect='+ $("#id_config_effekt").val() +'&x_min='+ $("#x_min").val() +'&y_min='+ $("#y_min").val() +'&x_max='+ $("#x_max").val() +'&y_max='+ $("#y_max").val() +'&id_cur_width='+ $("#cropbox").width() +'&id_cur_height='+ $("#cropbox").height() +'&basket=2';
			$.get(url, function(data) {
				// Wird beim Absenden/Speichern vom Konfigurator aufgerufen
					// Wenn kein Format gew?hlt ist, soll das Form nicht abgesendet werden
					str = $("input[name='size']:checked").val();

					if (str > "0"){
						objForm.submit();
					}
					else{
						alert("Bitte wählen Sie ein Format aus der Liste");
					}
			});
		} else {
			alert("Bild nicht vorhanden.");
		}
}

function startJSFunctions() {
	show_picture();
	disableAntiJS();
}

// Funktion, die die Eigenschaften des "Upload-Buttons" aendert
function setUploadButtonActive() {
	global_upload_allowed = 1;
    $("#upload_button").attr("src", "/templates/posterfuchs/buttons/german/big_upload_go.jpg");
}

// Funktion, die die Eigenschaften des "Upload-Buttons" aendert
function setUploadButtonDisabled() {
    global_upload_allowed = 0;
	$("#upload_button").attr("src", "/templates/posterfuchs/buttons/german/button_selectimgfirst.gif");
}

//startet den Upload mittels Uber Upload. Start nur, wenn Bild, Material und größe ausgewählt
function startUberUpload(){
    if(global_upload_allowed == 1){
        linkUpload();
    }
}



