<?php

/**
 * 
 * Copyright (C) Die Randgruppe GmbH
 * 
 * http://www.randshop.com
 * http://www.dierandgruppe.com
 * 
 * Unter der Lizenz von Die Randgruppe GmbH:
 * http://www.randshop.com/Lizenz
 *  
 * $Author$
 * $Date$
 * $Revision$
 * 
 */

include_once(DATEIPFAD . "/includes/functions.shopeinstellung.inc.php");
include_once(DATEIPFAD . "/includes/functions.artikel.inc.php");
include_once(DATEIPFAD . "/includes/functions.varianten.inc.php");

function DeleteMerkmal($MerkmalID) {
	
	// Merkmal einlesen
  	$SQLString = "SELECT * FROM " . TABLE_MERKMAL . " WHERE id = '" . $MerkmalID . "'";
	$MerkmalObject = mysql_fetch_object(errorlogged_mysql_query($SQLString));
	
	// Merkmal löschen
	$SQLString = "DELETE FROM " . TABLE_MERKMAL . " WHERE id = '" . $MerkmalID . "'";
  	$MySQLQueryReference = errorlogged_mysql_query($SQLString);
  	
	$SQLString = "DELETE FROM " . TABLE_MERKMAL_LANGU . " WHERE variante_id = '" . $MerkmalID . "'";
  	$MySQLQueryReference = errorlogged_mysql_query($SQLString);

  	// Merkmalauswahl
  	$SQLString = "DELETE FROM " . TABLE_MERKMALAUSWAHL . " WHERE merkmalid = '" . $MerkmalObject->id . "'";
	$MySQLQueryReference = errorlogged_mysql_query($SQLString);
	
	// Variante bereinigen, wenn es keine Merkmale mehr gibt
  	$SQLString = "SELECT id FROM " . TABLE_MERKMAL . " WHERE parent = '" . $MerkmalObject->parent . "'";
	$TempObject = mysql_fetch_object(errorlogged_mysql_query($SQLString));
	
	// Merkmalkombination der Artikel bereinigen
	$SQLString = "SELECT id FROM " . TABLE_ARTIKEL . " WHERE ";
	$SQLString .= "(" . TABLE_ARTIKEL . ".variante1 = '" . $MerkmalID . "' OR ";
	$SQLString .= TABLE_ARTIKEL . ".variante2 = '" . $MerkmalID . "' OR ";
	$SQLString .= TABLE_ARTIKEL . ".variante3 = '" . $MerkmalID . "' OR ";
	$SQLString .= TABLE_ARTIKEL . ".variante4 = '" . $MerkmalID . "') AND ";
	$SQLString .= TABLE_ARTIKEL . ".merkmalkombinationparentid != '0'";
	
	$MySQLQueryReference = errorlogged_mysql_query($SQLString);
	
	while ($ArtikelRow = mysql_fetch_array($MySQLQueryReference)) {
	
		DeleteArtikel($ArtikelRow["id"]);
		
	}
	
	if (!$TempObject) {
		
		DeleteVariante($MerkmalObject->parent);
	
	}

}

function SaveMerkmal($MerkmalID, $VariantenID, $Name, $Sort, $LanguageID) {
	
	// ********************************************************************************
	// ** Daten speichern
	// ********************************************************************************
	
	// Merkmal schon vorhanden
	if ($MerkmalID) {
		
		$SQLString = "UPDATE " . TABLE_MERKMAL . " SET ";
		$SQLString .= TABLE_MERKMAL . ".parent = '" . $VariantenID . "', ";
		$SQLString .= TABLE_MERKMAL . ".sort = '" . $Sort . "' ";
		$SQLString .= " WHERE " . TABLE_MERKMAL . ".id = '" . $MerkmalID . "'";
		
		$MySQLQueryReference = errorlogged_mysql_query($SQLString);

		$SQLString = "SELECT ";
		$SQLString .= TABLE_MERKMAL_LANGU . ".language_id ";
		$SQLString .= "FROM ";
		$SQLString .= TABLE_MERKMAL_LANGU . " ";
		$SQLString .= "WHERE ";
		$SQLString .= TABLE_MERKMAL_LANGU . ".variante_id = '" . $MerkmalID . "' AND ";
		$SQLString .= TABLE_MERKMAL_LANGU . ".language_id = '" . $LanguageID . "' ";
		
		$LanguageObject = mysql_fetch_object(errorlogged_mysql_query($SQLString));
		
		if ($LanguageObject) {

			$SQLString = "UPDATE " . TABLE_MERKMAL_LANGU . " SET ";
			$SQLString .= TABLE_MERKMAL_LANGU . ".name = '" . $Name . "' ";
			$SQLString .= " WHERE " . TABLE_MERKMAL_LANGU . ".variante_id = '" . $MerkmalID . "'";
			$SQLString .= " AND " . TABLE_MERKMAL_LANGU . ".language_id = " . $LanguageID . " ";
			
			$MySQLQueryReference = errorlogged_mysql_query($SQLString);
			
		} else {
			
			$SQLString = "INSERT INTO  " . TABLE_MERKMAL_LANGU . " SET ";
			$SQLString .= TABLE_MERKMAL_LANGU . ".name = '" . $Name . "', ";
			$SQLString .= TABLE_MERKMAL_LANGU . ".variante_id = '" . $MerkmalID . "', ";
			$SQLString .= TABLE_MERKMAL_LANGU . ".language_id = '" . $LanguageID . "' ";
			
			$MySQLQueryReference = errorlogged_mysql_query($SQLString);

		}
		
	// Variante neu anlegen
	} else {

		$SQLString = "INSERT INTO " . TABLE_MERKMAL . " SET ";
		$SQLString .= TABLE_MERKMAL . ".parent = '" . $VariantenID . "', ";
		$SQLString .= TABLE_MERKMAL . ".sort = '" . $Sort . "' ";
		
		$MySQLQueryReference = errorlogged_mysql_query($SQLString);
		
		$MerkmalID = mysql_insert_id();
		
		$SQLString = "INSERT INTO  " . TABLE_MERKMAL_LANGU . " SET ";
		$SQLString .= TABLE_MERKMAL_LANGU . ".name = '" . $Name . "', ";
		$SQLString .= TABLE_MERKMAL_LANGU . ".variante_id = '" . $MerkmalID . "', ";
		$SQLString .= TABLE_MERKMAL_LANGU . ".language_id = '" . $LanguageID . "' ";
		
		$MySQLQueryReference = errorlogged_mysql_query($SQLString);

		// Merkmalauswahl erweitern
		$SQLString = "SELECT id FROM " . TABLE_ARTIKEL . " WHERE (";
		$SQLString .= TABLE_ARTIKEL . ".variante1 = '" . $VariantenID . "' OR ";
		$SQLString .= TABLE_ARTIKEL . ".variante2 = '" . $VariantenID . "' OR ";
		$SQLString .= TABLE_ARTIKEL . ".variante3 = '" . $VariantenID . "' OR ";
		$SQLString .= TABLE_ARTIKEL . ".variante4 = '" . $VariantenID . "') AND ";
		$SQLString .= TABLE_ARTIKEL . ".merkmalauswahl = 1";
		
		$ArtikelQueryReference = errorlogged_mysql_query($SQLString);
		
		while ($ArtikelRow = mysql_fetch_array($ArtikelQueryReference)) {
			
			$SQLString = "INSERT INTO " . TABLE_MERKMALAUSWAHL . " SET ";
			$SQLString .= TABLE_MERKMALAUSWAHL . ".artikelid = '" . $ArtikelRow["id"] . "', ";
			$SQLString .= TABLE_MERKMALAUSWAHL . ".variantenid = '" . $VariantenID . "', ";
			$SQLString .= TABLE_MERKMALAUSWAHL . ".merkmalid = '" . $MerkmalID . "', ";
			$SQLString .= TABLE_MERKMALAUSWAHL . ".selected = '0' "; // 1, wenn neue Merkmale gleich zugeordnet werden sollen
			
			$MySQLQueryReference = errorlogged_mysql_query($SQLString);
		
		}
		
	}

	return $MerkmalID;
	
}

function UpdateMerkmalkombination($ArtikelID) {
	
	// ArtikelDaten einlesen
	$ArtikelObject = GetArtikelDetail($ArtikelID);
	
	if ($ArtikelObject->merkmalkombination) {
	
		// Merkmalkombinationen angleichen
		$SQLString = "UPDATE " . TABLE_ARTIKEL . " SET ";
		$SQLString .= TABLE_ARTIKEL . ".preis_alt_netto = '" . $ArtikelObject->preis_alt_netto . "', ";
		$SQLString .= TABLE_ARTIKEL . ".preis_alt_brutto = '" . $ArtikelObject->preis_alt_brutto . "', ";
		$SQLString .= TABLE_ARTIKEL . ".mwst = '" . $ArtikelObject->mwst . "', ";
		$SQLString .= TABLE_ARTIKEL . ".hersteller_id = '" . $ArtikelObject->hersteller_id . "', ";
		$SQLString .= TABLE_ARTIKEL . ".image_language_independent = '" . $ArtikelObject->image_language_independent . "', ";
		$SQLString .= TABLE_ARTIKEL . ".download_language_independent = '" . $ArtikelObject->download_language_independent . "', ";
		$SQLString .= TABLE_ARTIKEL . ".voe_datum = '" . $ArtikelObject->voe_datum . "', ";
		$SQLString .= TABLE_ARTIKEL . ".angebote = '" . $ArtikelObject->angebote . "' ";
        $SQLString .= ", " . TABLE_ARTIKEL . ".spedition_versandart_id = '" . $ArtikelObject->spedition_versandart_id . "' ";
		$SQLString .= "WHERE merkmalkombinationparentid = '" . $ArtikelID . "'";
		
		$MySQLQueryReference = errorlogged_mysql_query($SQLString);
		
		// Kategorien zuordnen
		$MerkmalkombinationenSearchField = "merkmalkombinationparentid";
		$MerkmalkombinationenSearchString = $ArtikelID;
	
		$MerkmalkombinationenDataArray = GetArtikelDataArray($MerkmalkombinationenSearchField, $MerkmalkombinationenSearchString, "", "", "", "", "", "", "", "", "", "", "", "", "", 0, 2);
		
		foreach ($MerkmalkombinationenDataArray as $MerkmalkombinationenData) {
		
			// Kategoriezuweisung l�schen
			$SQLString = "DELETE FROM " . TABLE_KATEGORIERELATION . " WHERE artikelid = '" . $MerkmalkombinationenData["id"] . "'";
			$MySQLQueryReference = errorlogged_mysql_query($SQLString);
			
			// Kategorien neu zuordnen
			foreach ($ArtikelObject->kategorie_array as $KategorieArray) {
				
				$SQLString = "INSERT INTO " . TABLE_KATEGORIERELATION . " SET ";
				$SQLString .= TABLE_KATEGORIERELATION . ".artikelid = '" . $MerkmalkombinationenData["id"] . "', ";
				$SQLString .= TABLE_KATEGORIERELATION . ".kategorieid = '" . $KategorieArray["id"] . "'";
				$MySQLQueryReference = errorlogged_mysql_query($SQLString);
				
			}	
			
			// Crossselling l�schen
			$SQLString = "DELETE FROM " . TABLE_ARTIKEL_AB . " WHERE artikelid = '" . $MerkmalkombinationenData["id"] . "'";
			$MySQLQueryReference = errorlogged_mysql_query($SQLString);
			
			// Artikelabh�ngigkeit neu zuordnen
			$SQLString = "SELECT " . TABLE_ARTIKEL_AB . ".abartikelid FROM " . TABLE_ARTIKEL_AB . " WHERE " . TABLE_ARTIKEL_AB . ".artikelid = '" . $ArtikelID . "'";
			$MySQLAbArtikelQueryReference = errorlogged_mysql_query($SQLString);
			
			while ($AbArtikelRow = mysql_fetch_array($MySQLAbArtikelQueryReference)) {
				
				$SQLString = "INSERT INTO " . TABLE_ARTIKEL_AB . " SET ";
				$SQLString .= TABLE_ARTIKEL_AB . ".artikelid = '" . $MerkmalkombinationenData["id"] . "', ";
				$SQLString .= TABLE_ARTIKEL_AB . ".abartikelid = '" . $AbArtikelRow["abartikelid"] . "'";
				$MySQLQueryReference = errorlogged_mysql_query($SQLString);

			}

		}
		
	}
	
}

function GetMerkmalDetail($MerkmalID, $LanguageID = 0) {
	
	// Sprache ermitteln
	if (!$LanguageID) {
		$LanguageID = GetDefaultLanguageID();
	}

	$StandardLanguageID = GetDefaultLanguageID();

	// SQL-String für das Merkmal zusammensetzen
	$SQLString = "SELECT ";
	$SQLString .= TABLE_MERKMAL . ".id AS merkmalid, ";
	$SQLString .= TABLE_MERKMAL_LANGU . ".name AS merkmalname, ";
	$SQLString .= "table_merkmal_langu_standard.name AS standard_name, ";
	$SQLString .= TABLE_MERKMAL . ".sort, ";
	$SQLString .= "table_variante.id AS varianteid, ";
	$SQLString .= "IFNULL(table_variante_langu.name, table_variante_langu_standard.name) AS variantename ";
	$SQLString .= "FROM " . TABLE_MERKMAL . " ";
	$SQLString .= "LEFT JOIN " . TABLE_MERKMAL_LANGU . " ON ((" . TABLE_MERKMAL . ".id = " . TABLE_MERKMAL_LANGU . ".variante_id) AND (" . TABLE_MERKMAL_LANGU . ".language_id = " . $LanguageID . "))";
	$SQLString .= "LEFT JOIN " . TABLE_MERKMAL_LANGU . " table_merkmal_langu_standard ON ((" . TABLE_MERKMAL . ".id = table_merkmal_langu_standard.variante_id) AND (table_merkmal_langu_standard.language_id = " . $StandardLanguageID . "))";
	$SQLString .= "LEFT JOIN " . TABLE_VARIANTE . " table_variante ON  " . TABLE_MERKMAL . ".parent = table_variante.id ";
	$SQLString .= "LEFT JOIN " . TABLE_VARIANTE_LANGU . " AS table_variante_langu ON ((table_variante.id = table_variante_langu.variante_id) AND (table_variante_langu.language_id = " . $LanguageID . "))";
	$SQLString .= "LEFT JOIN " . TABLE_VARIANTE_LANGU . " AS table_variante_langu_standard ON ((table_variante.id = table_variante_langu_standard.variante_id) AND (table_variante_langu_standard.language_id = " . $StandardLanguageID . "))";
	$SQLString .= "WHERE " . TABLE_MERKMAL . ".id = '" . $MerkmalID . "'";
	
//	echo '$SQLString: ' . $SQLString . '<br>';
	
	// Merkmal abfragen
    $MerkmalObject = mysql_fetch_object(errorlogged_mysql_query($SQLString));

	if($MerkmalObject && $MerkmalObject->merkmalname == ""){
		$MerkmalObject->merkmalname = $MerkmalObject->standard_name;
	}
		
	return $MerkmalObject;

}

function SaveMerkmalkombination($ArtikelID, $MerkmalkombinationID, $Standard, $Sortierung, $Merkmal1, $Merkmal2, $Merkmal3, $Merkmal4, $Artikelnummer, $Preis, $PreisFormat, $Lager, $Gewicht, $Lieferstatus, $Onlinestatus, $einheit_groesse = 0.0, $einheit_masseinheit = '', $ImageSmallArray = false, $ImageSmallLoeschen = false, $ImageBigArray = false, $ImageBigLoeschen = false, $ImageArray = false, $ImageLoeschen = false, $lager_bestellungen, $meldebestand) {

    $LanguageID = GetDefaultLanguageID();

	// Artikeldaten einlesen
	$ArtikelObject = GetArtikelDetail($ArtikelID);
	
	// ********************************************************************************
	// ** Sortierung ermitteln
	// ********************************************************************************
	if (!$Sortierung) {
		
		$SQLString = "SELECT (max(merkmalkombinationsort) + 1) as MaxSort FROM " . TABLE_ARTIKEL . " WHERE " . TABLE_ARTIKEL . ".merkmalkombinationparentid = '" . $ArtikelID . "'";
		$MaxSortObject = mysql_fetch_object(errorlogged_mysql_query($SQLString));
		
		$Sortierung = $MaxSortObject->MaxSort;
		
		if (!$Sortierung) {
			$Sortierung = 1;
		}			
	
	}
	
	// ********************************************************************************
	// ** Standard ermitteln
	// ********************************************************************************
	if (!$Standard) {
		
		$SQLString = "SELECT id FROM " . TABLE_ARTIKEL . " WHERE " . TABLE_ARTIKEL . ".merkmalkombinationparentid = '" . $ArtikelID . "' AND " . TABLE_ARTIKEL . ".merkmalkombinationstandard = 1";
		$StandardObject = mysql_fetch_object(errorlogged_mysql_query($SQLString));
		
		if (!$StandardObject || ($StandardObject->id == $MerkmalkombinationID)) {
			$Standard = 1;	
		}
		
	} else {
		
		$SQLString = "UPDATE " . TABLE_ARTIKEL . " SET " . TABLE_ARTIKEL . ".merkmalkombinationstandard = 0 WHERE " . TABLE_ARTIKEL . ".merkmalkombinationparentid = '" . $ArtikelID . "'";
		$MySQLQueryReference = errorlogged_mysql_query($SQLString);

	}

	// ********************************************************************************
	// ** Preise ermitteln
	// ********************************************************************************
	
	if ($PreisFormat == 1) {
		$PreisBrutto = round(($Preis / 100) * ($ArtikelObject->mwstsatz + 100), 2);
		$PreisNetto = round($Preis, 2);
	} else {
		$PreisBrutto = round($Preis, 2);
		$PreisNetto = round(($Preis / (100 + $ArtikelObject->mwstsatz)) * 100, 2);
	}
	
	// ********************************************************************************
	// ** Daten speichern
	// ********************************************************************************
	
	// Merkmalkombination schon vorhanden
	if ($MerkmalkombinationID) {
		
		$SQLString = "UPDATE " . TABLE_ARTIKEL . " SET ";
		$SQLString .= TABLE_ARTIKEL . ".artikel_nr = '" . $Artikelnummer . "', ";
		$SQLString .= TABLE_ARTIKEL . ".preis_netto = '" . $PreisNetto . "', ";
		$SQLString .= TABLE_ARTIKEL . ".preis_brutto = '" . $PreisBrutto . "', ";
		$SQLString .= TABLE_ARTIKEL . ".variante1 = '" . $Merkmal1 . "', ";
		$SQLString .= TABLE_ARTIKEL . ".variante2 = '" . $Merkmal2 . "', ";
		$SQLString .= TABLE_ARTIKEL . ".variante3 = '" . $Merkmal3 . "', ";
		$SQLString .= TABLE_ARTIKEL . ".variante4 = '" . $Merkmal4 . "', ";
		$SQLString .= TABLE_ARTIKEL . ".lager = '" . $Lager . "', ";
        $SQLString .= TABLE_ARTIKEL . ".lager_bestellungen = '" . $lager_bestellungen . "', ";
        $SQLString .= TABLE_ARTIKEL . ".meldebestand = '" . $meldebestand . "', ";
        $SQLString .= TABLE_ARTIKEL . ".gewicht = '" . $Gewicht . "', ";
		$SQLString .= TABLE_ARTIKEL . ".lieferstatus = '" . $Lieferstatus . "', ";
		$SQLString .= TABLE_ARTIKEL . ".aktiv = '" . $Onlinestatus . "', ";
		$SQLString .= TABLE_ARTIKEL . ".einheit_groesse = '" . $einheit_groesse . "', ";
		$SQLString .= TABLE_ARTIKEL . ".einheit_masseinheit = '" . $einheit_masseinheit . "', ";
		$SQLString .= TABLE_ARTIKEL . ".merkmalkombinationparentid = '" . $ArtikelID . "', ";
		$SQLString .= TABLE_ARTIKEL . ".merkmalkombinationstandard = '" . $Standard . "', ";
		$SQLString .= TABLE_ARTIKEL . ".merkmalkombinationsort = '" . $Sortierung . "' ";
		$SQLString .= " WHERE " . TABLE_ARTIKEL . ".id = '" . $MerkmalkombinationID . "'";
		
		$MySQLQueryReference = errorlogged_mysql_query($SQLString);
		
	// Artikel neu anlegen
	} else {

		$SQLString = "INSERT INTO " . TABLE_ARTIKEL . " SET ";
		$SQLString .= TABLE_ARTIKEL . ".artikel_nr = '" . $Artikelnummer . "', ";
		$SQLString .= TABLE_ARTIKEL . ".preis_netto = '" . $PreisNetto . "', ";
		$SQLString .= TABLE_ARTIKEL . ".preis_brutto = '" . $PreisBrutto . "', ";
		$SQLString .= TABLE_ARTIKEL . ".variante1 = '" . $Merkmal1 . "', ";
		$SQLString .= TABLE_ARTIKEL . ".variante2 = '" . $Merkmal2 . "', ";
		$SQLString .= TABLE_ARTIKEL . ".variante3 = '" . $Merkmal3 . "', ";
		$SQLString .= TABLE_ARTIKEL . ".variante4 = '" . $Merkmal4 . "', ";
		$SQLString .= TABLE_ARTIKEL . ".lager = '" . $Lager . "', ";
        $SQLString .= TABLE_ARTIKEL . ".lager_bestellungen = '" . $lager_bestellungen . "', ";
        $SQLString .= TABLE_ARTIKEL . ".meldebestand = '" . $meldebestand . "', ";
        $SQLString .= TABLE_ARTIKEL . ".gewicht = '" . $Gewicht . "', ";
		$SQLString .= TABLE_ARTIKEL . ".lieferstatus = '" . $Lieferstatus . "', ";
		$SQLString .= TABLE_ARTIKEL . ".aktiv = '" . $Onlinestatus . "', ";
		$SQLString .= TABLE_ARTIKEL . ".einheit_groesse = '" . $einheit_groesse . "', ";
		$SQLString .= TABLE_ARTIKEL . ".einheit_masseinheit = '" . $einheit_masseinheit . "', ";
		$SQLString .= TABLE_ARTIKEL . ".merkmalkombinationparentid = '" . $ArtikelID . "', ";
		$SQLString .= TABLE_ARTIKEL . ".merkmalkombinationstandard = '" . $Standard . "', ";
		$SQLString .= TABLE_ARTIKEL . ".merkmalkombinationsort = '" . $Sortierung . "' ";
		
		$MySQLQueryReference = errorlogged_mysql_query($SQLString);
		
		$MerkmalkombinationID = mysql_insert_id();
		
	}	
	
	// ********************************************************************************
	// ** Artikel updaten
	// ********************************************************************************
	if ($Standard) {
	
		$SQLString = "UPDATE " . TABLE_ARTIKEL . " SET ";
		$SQLString .= TABLE_ARTIKEL . ".merkmalkombination = '" . $MerkmalkombinationID . "', ";
		$SQLString .= TABLE_ARTIKEL . ".artikel_nr = '" . $Artikelnummer . "', ";
		$SQLString .= TABLE_ARTIKEL . ".preis_netto = '" . $PreisNetto . "', ";
		$SQLString .= TABLE_ARTIKEL . ".preis_brutto = '" . $PreisBrutto . "', ";
		$SQLString .= TABLE_ARTIKEL . ".gewicht = '" . $Gewicht . "', ";
		$SQLString .= TABLE_ARTIKEL . ".lieferstatus = '" . $Lieferstatus . "', ";
		$SQLString .= TABLE_ARTIKEL . ".aktiv = '" . $Onlinestatus . "', ";
		$SQLString .= TABLE_ARTIKEL . ".einheit_groesse = '" . $einheit_groesse . "', ";
		$SQLString .= TABLE_ARTIKEL . ".einheit_masseinheit = '" . $einheit_masseinheit . "', ";
        $SQLString .= TABLE_ARTIKEL . ".meldebestand = '" . $meldebestand . "' ";
		$SQLString .= "WHERE " . TABLE_ARTIKEL . ".id = '" . $ArtikelID . "'";
		
		$MySQLQueryReference = errorlogged_mysql_query($SQLString);
		
	}

    // Hauptartikel bekommt Summe der Lagerbestände der Merkmalkombinationen

    UpdateMerkmalkombiParentLagerbestaende($ArtikelID);

    if($ImageLoeschen || $ImageSmallLoeschen || $ImageBigLoeschen){

        if($ImageLoeschen || $ImageSmallLoeschen){
            $ImageName = "artikel_" . sprintf("%07d", $MerkmalkombinationID) . "_s_" . $LanguageID;
            unlink_wc(DATEIPFAD . "images/dbimages/", $ImageName . ".*");
        }
        if($ImageLoeschen || $ImageBigLoeschen){
            $ImageName = "artikel_" . sprintf("%07d", $MerkmalkombinationID) . "_b_" . $LanguageID;
            unlink_wc(DATEIPFAD . "images/dbimages/", $ImageName . ".*");
        }
        $SQLString = "UPDATE " . TABLE_ARTIKEL_LANGU . " SET ";
        if($ImageLoeschen || $ImageSmallLoeschen){
            $SQLString .= TABLE_ARTIKEL_LANGU . ".smallImage  = '' ";
            $komma = true;
        }
        if($ImageLoeschen || $ImageBigLoeschen){
            if($komma)
                $SQLString .= ', ';
            $SQLString .= TABLE_ARTIKEL_LANGU . ".bigImage  = '' ";
        }
        $SQLString .= " WHERE " . TABLE_ARTIKEL_LANGU . ".artikel_id = '" . $MerkmalkombinationID . "'";

        $MySQLQueryReference = errorlogged_mysql_query($SQLString);
    }

    $ShopeinstellungenObject = GetShopeinstellungDetail();
    if($ShopeinstellungenObject->bildupload_aktiv == '1'){
        if($ImageArray["type"] != ""){

            $ImageName = "artikel_" . sprintf("%07d", $MerkmalkombinationID) . "_s_" . $LanguageID;
            unlink_wc(DATEIPFAD . "images/dbimages/", $ImageName . ".*");
            $ImageName = "artikel_" . sprintf("%07d", $MerkmalkombinationID) . "_m";
            unlink_wc(DATEIPFAD . "images/dbimages/", $ImageName . ".*");
            $ImageName = "artikel_" . sprintf("%07d", $MerkmalkombinationID) . "_b_" . $LanguageID;
            unlink_wc(DATEIPFAD . "images/dbimages/", $ImageName . ".*");

            $TempNameArray = explode(".", $ImageArray["name"]);

            $NewImageName = $NewImageName . "." . $TempNameArray[count($TempNameArray) - 1];

            $NewSmallImageName = "artikel_" . sprintf("%07d", $MerkmalkombinationID) . "_s_" . $LanguageID;
            $NewSmallImageName .= "." . $TempNameArray[count($TempNameArray) - 1];

            $NewBigImageName = "artikel_" . sprintf("%07d", $MerkmalkombinationID) . "_b_" . $LanguageID;
            $NewBigImageName .= "." . $TempNameArray[count($TempNameArray) - 1];



            if($ImageArray["type"] == "image/jpeg" || $ImageArray["type"] == "image/pjpeg"){
                $ImageType = 'jpg';
            }elseif($ImageArray["type"] == "image/gif"){
                $ImageType = 'gif';
            }else{
                echo "<font color=\"red\">FEHLER: Bitte laden Sie nur JPG- oder GIF-Dateien hoch.</font><br><a href=\"javascript:history.back()\">zur&uuml;ck</a>";
                die;
            }


            $ImageNameArray = ReziseImage($ImageArray["tmp_name"],$NewSmallImageName,$NewBigImageName,$ImageType);


            $SQLString = 'INSERT INTO ' . TABLE_ARTIKEL_LANGU . ' SET ';
            $SQLString .= TABLE_ARTIKEL_LANGU . ".smallImage  = '" . $ImageNameArray[0] . "', ";
            $SQLString .= TABLE_ARTIKEL_LANGU . ".bigImage  = '" . $ImageNameArray[1] . "', ";
            $SQLString .= TABLE_ARTIKEL_LANGU . ".artikel_id = '" . $MerkmalkombinationID . "', ";
            $SQLString .= TABLE_ARTIKEL_LANGU . ".language_id = '" . $LanguageID . "' ";
            $SQLString .= ' ON DUPLICATE KEY UPDATE ';
            $SQLString .= TABLE_ARTIKEL_LANGU . ".smallImage  = '" . $ImageNameArray[0] . "', ";
            $SQLString .= TABLE_ARTIKEL_LANGU . ".bigImage  = '" . $ImageNameArray[1] . "' ";

            $MySQLQueryReference = errorlogged_mysql_query($SQLString);

        }
    }else{
        // kleines Bild
        if (($ImageSmallArray["size"] > 0) && !$ImageSmallLoeschen) {

            $NewImageName = "artikel_" . sprintf("%07d", $MerkmalkombinationID) . "_s_" . $LanguageID;

            // altes Bild löschen
            unlink_wc(DATEIPFAD . "images/dbimages/", $NewImageName . ".*");

            // temporäre Datei kopieren
            $TempNameArray = explode(".", $ImageSmallArray["name"]);
            $NewImageName = $NewImageName . "." . $TempNameArray[count($TempNameArray) - 1];
            move_uploaded_file($ImageSmallArray["tmp_name"], DATEIPFAD . "images/dbimages/" . $NewImageName);
            chmod(DATEIPFAD . "images/dbimages/" . $NewImageName, 0644);

            // Datenbank updaten
            $SQLString = 'INSERT INTO ' . TABLE_ARTIKEL_LANGU . ' SET ';
            $SQLString .= TABLE_ARTIKEL_LANGU . ".smallImage  = '" . $NewImageName . "', ";
            $SQLString .= TABLE_ARTIKEL_LANGU . ".artikel_id = '" . $MerkmalkombinationID . "', ";
            $SQLString .= TABLE_ARTIKEL_LANGU . ".language_id = '" . $LanguageID . "' ";
            $SQLString .= ' ON DUPLICATE KEY UPDATE ';
            $SQLString .= TABLE_ARTIKEL_LANGU . ".smallImage  = '" . $NewImageName . "' ";

            $MySQLQueryReference = errorlogged_mysql_query($SQLString);

        }

        // großes Bild
        if (($ImageBigArray["size"] > 0) && !$ImageBigLoeschen) {

            $NewImageName = "artikel_" . sprintf("%07d", $MerkmalkombinationID) . "_b_" . $LanguageID;

            // altes Bild löschen
            unlink_wc(DATEIPFAD . "images/dbimages/", $NewImageName . ".*");

            // temporäre Datei kopieren
            $TempNameArray = explode(".", $ImageBigArray["name"]);
            $NewImageName = $NewImageName . "." . $TempNameArray[count($TempNameArray) - 1];
            move_uploaded_file($ImageBigArray["tmp_name"], DATEIPFAD . "images/dbimages/" . $NewImageName);
            chmod(DATEIPFAD . "images/dbimages/" . $NewImageName, 0644);

            // Datenbank updaten
            // Datenbank updaten
            $SQLString = 'INSERT INTO ' . TABLE_ARTIKEL_LANGU . ' SET ';
            $SQLString .= TABLE_ARTIKEL_LANGU . ".bigImage  = '" . $NewImageName . "', ";
            $SQLString .= TABLE_ARTIKEL_LANGU . ".artikel_id = '" . $MerkmalkombinationID . "', ";
            $SQLString .= TABLE_ARTIKEL_LANGU . ".language_id = '" . $LanguageID . "' ";
            $SQLString .= ' ON DUPLICATE KEY UPDATE ';
            $SQLString .= TABLE_ARTIKEL_LANGU . ".bigImage  = '" . $NewImageName . "' ";

            $MySQLQueryReference = errorlogged_mysql_query($SQLString);

        }
    }



    // ********************************************************************************
	// ** Merkmalkombinationen abgleichen
	// ********************************************************************************
	UpdateMerkmalkombination($ArtikelID);
	
	return $MerkmalkombinationID;

}

function UpdateMerkmalkombiParentLagerbestaende($ArtikelID) {

    $SQLString = "SELECT merkmalkombinationparentid FROM " . TABLE_ARTIKEL . " WHERE id ='" . $ArtikelID . "'";
    $row = mysql_fetch_row(errorlogged_mysql_query($SQLString));
    if($row[0] > 0) {
        $ArtikelID = $row[0];
    }

    // für nicht Merkmalkombinationparent Artikel darf der Lagerbestand nicht geupdated werden
    $SQLString = 'SELECT merkmalkombination FROM ' . TABLE_ARTIKEL . ' WHERE id = \'' . $ArtikelID . '\'';
    $row = mysql_fetch_row(errorlogged_mysql_query($SQLString));
    if($row[0] == 0) {
        return;
    }

    $SQLString = "UPDATE " . TABLE_ARTIKEL . ", ";
    $SQLString .= "(SELECT SUM(lager_bestellungen) as sum_lager_bestellungen, SUM(lager) as sum_lager FROM " . TABLE_ARTIKEL . " WHERE merkmalkombinationparentid = '" . $ArtikelID . "') sum_query ";
    $SQLString .= " SET ";
    $SQLString .= TABLE_ARTIKEL . ".lager_bestellungen = sum_query.sum_lager_bestellungen, ";
    $SQLString .= TABLE_ARTIKEL . ".lager = sum_query.sum_lager ";
    $SQLString .= " WHERE " . TABLE_ARTIKEL . ".id = '" . $ArtikelID . "'";

    errorlogged_mysql_query($SQLString);

}


function DeleteMerkmalauswahl($ArtikelID) {

	// alle Eintragungen in der Tabelle shop_merkmalauswahl l�schen
	$SQLString = "DELETE FROM " . TABLE_MERKMALAUSWAHL . " WHERE " . TABLE_MERKMALAUSWAHL . ".artikelid = '" . $ArtikelID . "'";
	$MySQLQueryReference = errorlogged_mysql_query($SQLString);

	// Artikeldaten updaten
	$SQLString = "UPDATE " . TABLE_ARTIKEL . " SET " . TABLE_ARTIKEL . ".merkmalauswahl = 0 WHERE " . TABLE_ARTIKEL . ".id = '" . $ArtikelID . "'";
	$MySQLQueryReference = errorlogged_mysql_query($SQLString);

}

function DeleteMerkmalkombinationen($ArtikelID) {

	
	// Merkmalkombinationen l�schen
	$SQLString = "SELECT * FROM " . TABLE_ARTIKEL . " WHERE merkmalkombinationparentid = '" . $ArtikelID . "'";
	$MySQLQueryReference = errorlogged_mysql_query($SQLString);
	
	while ($MerkmalkombinationRow = mysql_fetch_array($MySQLQueryReference)) {

		if($MerkmalkombinationRow["merkmalkombinationstandard"])
			MoveArtikelPreisstaffel($MerkmalkombinationRow["id"], $ArtikelID);
		
		DeleteArtikel($MerkmalkombinationRow["id"]);
		
	}

	// Artikeldaten updaten
	$SQLString = "UPDATE " . TABLE_ARTIKEL . " SET " . TABLE_ARTIKEL . ".merkmalkombination = 0 WHERE " . TABLE_ARTIKEL . ".id = '" . $ArtikelID . "'";
	$MySQLQueryReference = errorlogged_mysql_query($SQLString);

}

function SetMerkmalkombinationen($ArtikelID) {

	// Shopeinstellungen einlesen
	$ShopeinstellungenObject = GetShopeinstellungDetail();

	// alte Eintr�ge l�schen
	DeleteMerkmalkombinationen($ArtikelID);
	
	// Artikeldaten updaten
	$SQLString = "UPDATE " . TABLE_ARTIKEL . " SET " . TABLE_ARTIKEL . ".merkmalkombination = 1 WHERE " . TABLE_ARTIKEL . ".id = '" . $ArtikelID . "'";
	$MySQLQueryReference = errorlogged_mysql_query($SQLString);
	
	// Standardmerkmalkombination anlegen
	$ArtikelObject = GetArtikelDetail($ArtikelID);
	
	for ($VariantenCounter = 1; $VariantenCounter <= 4; $VariantenCounter++) {
	
		if ($ArtikelObject->{"variante" . $VariantenCounter}) {
			
			$MerkmalDataArray = GetMerkmalDataArray($ArtikelObject->{"variante" . $VariantenCounter}, $ArtikelObject->id, $ArtikelObject->merkmalauswahl);
		
			foreach ($MerkmalDataArray as $MerkmalData) {

				if ($MerkmalData["selected"] && !$MerkmalArray[$VariantenCounter]) {
					$MerkmalArray[$VariantenCounter] = $MerkmalData["id"];
				}
				
			}
			
		}

	}
	
	// Preis
	if ($ShopeinstellungenObject->preisformat == 1) {
		$Preis = $ArtikelObject->preis_netto;
	} else {
		$Preis = $ArtikelObject->preis_brutto;
	}
	
	$MerkmalkombinationID = SaveMerkmalkombination($ArtikelID, "", 1, 1, $MerkmalArray[1], $MerkmalArray[2], $MerkmalArray[3], $MerkmalArray[4], $ArtikelObject->artikel_nr, $Preis, $ShopeinstellungenObject->preisformat, $ArtikelObject->lager, $ArtikelObject->gewicht, $ArtikelObject->lieferstatus, $ArtikelObject->aktiv, $ArtikelObject->einheit_groesse, $ArtikelObject->einheit_masseinheit, false, false, false, false, false, false, $ArtikelObject->lager_bestellungen);
	MoveArtikelPreisstaffel($ArtikelID, $MerkmalkombinationID);

}

function SetMerkmalauswahl($ArtikelID) {
	
	// Alle Merkmale einlesen und vordefinieren
	$SQLString = "SELECT ";
	$SQLString .= TABLE_ARTIKEL . ".variante1, ";
	$SQLString .= TABLE_ARTIKEL . ".variante2, ";
	$SQLString .= TABLE_ARTIKEL . ".variante3, ";
	$SQLString .= TABLE_ARTIKEL . ".variante4, ";
	$SQLString .= TABLE_ARTIKEL . ".merkmalauswahl ";
	$SQLString .= "FROM " . TABLE_ARTIKEL . " ";
	$SQLString .= "WHERE " . TABLE_ARTIKEL . ".id = '" . $ArtikelID . "' ";
	
	$ArtikelObject = mysql_fetch_object(errorlogged_mysql_query($SQLString));

	// ********************************************************************************
	// ** die einzelnen Varianten �berpr�fen, ob sie gesetz sind und einlesen
	// ********************************************************************************

	for ($VariantenCounter = 1; $VariantenCounter <= 4; $VariantenCounter++) {
	
		if ($ArtikelObject->{"variante" . $VariantenCounter}) {

			$MerkmalDataArray = GetMerkmalDataArray($ArtikelObject->{"variante" . $VariantenCounter});
			
			foreach ($MerkmalDataArray as $MerkmalData) {
				
				$SQLString = "INSERT INTO " . TABLE_MERKMALAUSWAHL . " SET ";
				$SQLString .= TABLE_MERKMALAUSWAHL . ".artikelid = '" . $ArtikelID . "', ";
				$SQLString .= TABLE_MERKMALAUSWAHL . ".variantenid = '" . $ArtikelObject->{"variante" . $VariantenCounter} . "', ";
				$SQLString .= TABLE_MERKMALAUSWAHL . ".merkmalid = '" . $MerkmalData["id"] . "', ";
				$SQLString .= TABLE_MERKMALAUSWAHL . ".selected = '1' ";

				$MySQLQueryReference = errorlogged_mysql_query($SQLString);
				
			}
			
		}
				
	}

	// Artikeldaten updaten
	$SQLString = "UPDATE " . TABLE_ARTIKEL . " SET " . TABLE_ARTIKEL . ".merkmalauswahl = 1 WHERE " . TABLE_ARTIKEL . ".id = '" . $ArtikelID . "'";
	$MySQLQueryReference = errorlogged_mysql_query($SQLString);

	$MySQLQueryReference = errorlogged_mysql_query($SQLString);

}

function UpdateMerkmalauswahl($ArtikelID, $Variante1, $Variante1Original, $Variante2, $Variante2Original, $Variante3, $Variante3Original, $Variante4, $Variante4Original) {
	
	// Hat sich was an den Varianten ge�ndert
	if ($Variante1 != $Variante1Original) {

		$VariantenAenderungsArray[1]["id"] = $Variante1;
		$VariantenAenderungsArray[1]["idoriginal"] = $Variante1Original;

		if (!$Variante1Original) {
			$VariantenAenderungsArray[1]["status"] = 1;
		} else {
			$VariantenAenderungsArray[1]["status"] = 2;
		}

	}
	
	if ($Variante2 != $Variante2Original) {

		$VariantenAenderungsArray[2]["id"] = $Variante2;
		$VariantenAenderungsArray[2]["idoriginal"] = $Variante2Original;

		if (!$Variante2Original) {
			$VariantenAenderungsArray[2]["status"] = 1;
		} else {
			$VariantenAenderungsArray[2]["status"] = 2;
		}

	}
	
	if ($Variante3 != $Variante3Original) {

		$VariantenAenderungsArray[3]["id"] = $Variante3;
		$VariantenAenderungsArray[3]["idoriginal"] = $Variante3Original;

		if (!$Variante3Original) {
			$VariantenAenderungsArray[3]["status"] = 1;
		} else {
			$VariantenAenderungsArray[3]["status"] = 2;
		}

	}
	
	
	if ($Variante4 != $Variante4Original) {

		$VariantenAenderungsArray[4]["id"] = $Variante4;
		$VariantenAenderungsArray[4]["idoriginal"] = $Variante4Original;

		if (!$Variante4Original) {
			$VariantenAenderungsArray[4]["status"] = 1;
		} else {
			$VariantenAenderungsArray[4]["status"] = 2;
		}

	}
	
	// die Merkmalauswahl erneuern
	if ($VariantenAenderungsArray) {

		$ArtikelObject = GetArtikelDetail($ArtikelID);
				
		if ($ArtikelObject->merkmalauswahl) {

			foreach ($VariantenAenderungsArray as $VariantenAenderung) {
			
				// eine schon vorhandene hat sich ge�ndert
				if ($VariantenAenderung["status"] == 1) {
					
					$SQLString = "DELETE FROM " . TABLE_MERKMALAUSWAHL . " WHERE ";
					$SQLString .= TABLE_MERKMALAUSWAHL . ".artikelid = '" . $ArtikelID . "' AND ";
					$SQLString .= TABLE_MERKMALAUSWAHL . ".variantenid = '" . $VariantenAenderung["idoriginal"] . "'";
					
					$MerkmalDataArray = GetMerkmalDataArray($VariantenAenderung["id"]);
					
					foreach ($MerkmalDataArray as $MerkmalData) {
						
						$SQLString = "INSERT INTO " . TABLE_MERKMALAUSWAHL . " SET ";
						$SQLString .= TABLE_MERKMALAUSWAHL . ".artikelid = '" . $ArtikelID . "', ";
						$SQLString .= TABLE_MERKMALAUSWAHL . ".variantenid = '" . $VariantenAenderung["id"] . "', ";
						$SQLString .= TABLE_MERKMALAUSWAHL . ".merkmalid = '" . $MerkmalData["id"] . "', ";
						$SQLString .= TABLE_MERKMALAUSWAHL . ".selected = '1' ";
						$MySQLQueryReference = errorlogged_mysql_query($SQLString);
						
					}		

				// neue Varianten hinzugekommen
				} elseif ($VariantenAenderung["status"] == 2) {
					
					$MerkmalDataArray = GetMerkmalDataArray($VariantenAenderung["id"]);
					
					foreach ($MerkmalDataArray as $MerkmalData) {
						
						$SQLString = "INSERT INTO " . TABLE_MERKMALAUSWAHL . " SET ";
						$SQLString .= TABLE_MERKMALAUSWAHL . ".artikelid = '" . $ArtikelID . "', ";
						$SQLString .= TABLE_MERKMALAUSWAHL . ".variantenid = '" . $VariantenAenderung["id"] . "', ";
						$SQLString .= TABLE_MERKMALAUSWAHL . ".merkmalid = '" . $MerkmalData["id"] . "', ";
						$SQLString .= TABLE_MERKMALAUSWAHL . ".selected = '1' ";
						$MySQLQueryReference = errorlogged_mysql_query($SQLString);
						
					}		
					
				}
				
			}
			
		}
		
	}

}

function SaveMerkmalauswahl($ArtikelID, $VariantenArray, $MerkmalArray) {

	if (!is_array($MerkmalArray)) {
		$MerkmalArray = array();
	}

	// alle Eintragungen in der Tabelle shop_merkmalauswahl l�schen
	$SQLString = "DELETE FROM " . TABLE_MERKMALAUSWAHL . " WHERE " . TABLE_MERKMALAUSWAHL . ".artikelid = '" . $ArtikelID . "'";
	$MySQLQueryReference = errorlogged_mysql_query($SQLString);
		
	$Merkmalauswahl = 0;
	
	// alle Merkmale, die es gibt in die Tabell eintragen
	foreach ($VariantenArray as $Variante) {
		
		if ($Variante) {
		
			$MerkmalDataArray = GetMerkmalDataArray($Variante);
			
			foreach ($MerkmalDataArray as $MerkmalData) {
				
				// �berpr�fen, ob ausgew�hlt
				if (in_array($MerkmalData["id"], $MerkmalArray)) {
					$MerkmalSelected = 1;
				} else {
					$MerkmalSelected = 0;
					$Merkmalauswahl = 1;
				}
				
				$SQLString = "INSERT INTO " . TABLE_MERKMALAUSWAHL . " SET ";
				$SQLString .= TABLE_MERKMALAUSWAHL . ".artikelid = '" . $ArtikelID . "', ";
				$SQLString .= TABLE_MERKMALAUSWAHL . ".variantenid = '" . $Variante . "', ";
				$SQLString .= TABLE_MERKMALAUSWAHL . ".merkmalid = '" . $MerkmalData["id"] . "', ";
				$SQLString .= TABLE_MERKMALAUSWAHL . ".selected = '" . $MerkmalSelected . "' ";
				$MySQLQueryReference = errorlogged_mysql_query($SQLString);
				
			}		
			
		}
		
	}
	
}

function GetMerkmalauswahlDataArray($ArtikelID, $LanguageID = 0) {

	if(!$LanguageID){
		$LanguageID = getDefaultLanguageID();
	}
	// ********************************************************************************
	// ** SQL-String zum einlesen des Artikels zusammensetzen
	// ********************************************************************************

	$SQLString = "SELECT ";
	$SQLString .= TABLE_ARTIKEL . ".variante1, ";
	$SQLString .= TABLE_ARTIKEL . ".variante2, ";
	$SQLString .= TABLE_ARTIKEL . ".variante3, ";
	$SQLString .= TABLE_ARTIKEL . ".variante4, ";
	$SQLString .= TABLE_ARTIKEL . ".merkmalauswahl ";
	$SQLString .= "FROM " . TABLE_ARTIKEL . " ";
	$SQLString .= "WHERE " . TABLE_ARTIKEL . ".id = '" . $ArtikelID . "' ";
	
	$ArtikelObject = mysql_fetch_object(errorlogged_mysql_query($SQLString));

	// ********************************************************************************
	// ** die einzelnen Varianten �berpr�fen, ob sie gesetz sind und einlesen
	// ********************************************************************************

	for ($VariantenCounter = 1; $VariantenCounter <= 4; $VariantenCounter++) {
	
		if ($ArtikelObject->{"variante" . $VariantenCounter}) {
			
			$VariantenID = $ArtikelObject->{"variante" . $VariantenCounter};
			
			if (!$ArtikelObject->merkmalauswahl) {

				$MerkmalDataArray = GetMerkmalDataArray($VariantenID, "", "", "", "", TABLE_MERKMAL . ".sort", "ASC", $LanguageID);

			} else {
				
				$SQLString = "SELECT ";
				$SQLString .= TABLE_MERKMALAUSWAHL . ".selected, ";
				$SQLString .= TABLE_VARIANTE . ".id, ";
				$SQLString .= TABLE_VARIANTE_LANGU . ".name ";
				$SQLString .= "FROM " . TABLE_MERKMALAUSWAHL . " ";
				$SQLString .= "LEFT JOIN " . TABLE_VARIANTE . " ON " . TABLE_MERKMALAUSWAHL . ".merkmalid = " . TABLE_VARIANTE . ".id ";
				$SQLString .= "LEFT JOIN " . TABLE_VARIANTE_LANGU . " ON " . TABLE_VARIANTE . ".id = " . TABLE_VARIANTE_LANGU . ".variante_id AND ".TABLE_VARIANTE_LANGU . ".language_id = ".$LanguageID." ";
				$SQLString .= "WHERE " . TABLE_MERKMALAUSWAHL . ".artikelid = '" . $ArtikelID . "' ";
				$SQLString .= "AND " . TABLE_MERKMALAUSWAHL . ".variantenid = '" . $VariantenID . "' ";
				$SQLString .= "ORDER BY " . TABLE_VARIANTE . ".sort ASC"; 
				
				//echo $SQLString;
				
				$MySQLQueryReferenz = errorlogged_mysql_query($SQLString);

				$MerkmalCounter = 0;
				$MerkmalDataArray = array();
			
				while ($MerkmalRowArray = mysql_fetch_array($MySQLQueryReferenz, MYSQL_ASSOC)) {
			
					$MerkmalDataArray[$MerkmalCounter]["id"] = $MerkmalRowArray["id"];
					$MerkmalDataArray[$MerkmalCounter]["name"] = $MerkmalRowArray["name"];
					$MerkmalDataArray[$MerkmalCounter]["selected"] = $MerkmalRowArray["selected"];
					$MerkmalCounter++;
			
				}
				
			}
			
			$MerkmalauswahlDataArray[$VariantenCounter] = $MerkmalDataArray;
			
		}
				
	}

	return $MerkmalauswahlDataArray;

}

function GetMerkmalLanguageDataArray($MerkmalID) {
	
	// Sprachen Abfragen
	$SQLString = "SELECT ";
	$SQLString .= TABLE_LANGUAGE . ".language_id, ";
	$SQLString .= "IF(ISNULL(" . TABLE_MERKMAL_LANGU . ".name), " . TABLE_LANGUAGE . ".language_image_admintool_inactive, " . TABLE_LANGUAGE . ".language_image_admintool_active) AS language_image_admintool ";
	$SQLString .= "FROM ";
	$SQLString .= TABLE_LANGUAGE . " ";
	$SQLString .= "LEFT JOIN " . TABLE_MERKMAL_LANGU . " ON ((" . TABLE_LANGUAGE . ".language_id = " . TABLE_MERKMAL_LANGU . ".language_id) AND (" . TABLE_MERKMAL_LANGU . ".variante_id = '" . $MerkmalID . "')) ";
	
	$MySQLQueryReference = errorlogged_mysql_query($SQLString);
	
	$LanguageCounter = 0;
	
	while ($MerkmalLanguageRow = mysql_fetch_array($MySQLQueryReference)) {
		$MerkmalLanguageDataArray[$LanguageCounter]["language_image_admintool_imagestring"] = "<img src=\"" . IMAGEPFAD . "dbimages/" . $MerkmalLanguageRow["language_image_admintool"] . "\" border=\"0\">";
		$MerkmalLanguageDataArray[$LanguageCounter]["language_id"] = $MerkmalLanguageRow["language_id"];
		$LanguageCounter++;
	}
	
	return $MerkmalLanguageDataArray;

}

function GetMerkmalDataArray($VariantenID = "", $ArtikelID = "", $Merkmalauswahl = "", $SearchField = "", $SearchString = "", $SortField = "", $SortOrder = "", $LanguageID = 0) {

	global $c_landnichtuebersetzt;
	
	// ********************************************************************************
	// ** SQL-String zum einlesen der Merkmale zusammensetzen
	// ********************************************************************************

	// Sprache ermitteln
	if (!$LanguageID) {
		$LanguageID = GetDefaultLanguageID();
	}

	$StandardLanguageID = GetDefaultLanguageID();

	// Felder
	if ($ArtikelID && $Merkmalauswahl) {

		$SQLString = "SELECT ";
		$SQLString .= TABLE_VARIANTE . ".id, ";
		$SQLString .= TABLE_VARIANTE_LANGU . ".name, ";
		$SQLString .= TABLE_MERKMALAUSWAHL . ".selected ";
		$SQLString .= "FROM " . TABLE_VARIANTE . " ";
		$SQLString .= "LEFT JOIN " . TABLE_MERKMALAUSWAHL . " ON " . TABLE_VARIANTE . ".id = " . TABLE_MERKMALAUSWAHL . ".merkmalid ";
		$SQLString .= "LEFT JOIN " . TABLE_VARIANTE_LANGU . " ON ((" . TABLE_VARIANTE . ".id = " . TABLE_VARIANTE_LANGU . ".variante_id) AND (" . TABLE_VARIANTE_LANGU . ".language_id = " . $LanguageID . "))";
		$SQLString .= "WHERE " . TABLE_VARIANTE . ".parent = '" . $VariantenID . "' ";
		$SQLString .= "ORDER BY " . TABLE_VARIANTE_LANGU . ".name ASC"; 

	// allgemein Auswahl
	} else  {
		
		$SQLString = "SELECT ";
		$SQLString .= TABLE_MERKMAL . ".id, ";
		$SQLString .= "IFNULL(" . TABLE_MERKMAL_LANGU . ".name, table_merkmal_langu_standard.name) AS name, ";
		$SQLString .= "!ISNULL(" . TABLE_MERKMAL_LANGU . ".name) AS translate_name, ";
		$SQLString .= TABLE_MERKMAL . ".sort, ";
		$SQLString .= "IFNULL(table_variante_langu.name, table_variante_langu_standard.name) AS variantenname, ";
		$SQLString .= "!ISNULL(table_variante_langu.name) AS translate_variantenname, ";
		$SQLString .= "table_variante.id AS variantenid ";
		$SQLString .= "FROM " . TABLE_MERKMAL . " ";
		$SQLString .= "LEFT JOIN " . TABLE_VARIANTE . " AS table_variante ON " . TABLE_MERKMAL . ".parent = table_variante.id ";
		$SQLString .= "LEFT JOIN " . TABLE_VARIANTE_LANGU . " AS table_variante_langu ON ((table_variante.id = table_variante_langu.variante_id) AND (table_variante_langu.language_id = " . $LanguageID . "))";
		$SQLString .= "LEFT JOIN " . TABLE_VARIANTE_LANGU . " AS table_variante_langu_standard ON ((table_variante.id = table_variante_langu_standard.variante_id) AND (table_variante_langu_standard.language_id = " . $StandardLanguageID . "))";
		$SQLString .= "LEFT JOIN " . TABLE_MERKMAL_LANGU . " ON ((" . TABLE_MERKMAL . ".id = " . TABLE_MERKMAL_LANGU . ".variante_id) AND (" . TABLE_MERKMAL_LANGU . ".language_id = " . $LanguageID . "))";
		$SQLString .= "LEFT JOIN " . TABLE_MERKMAL_LANGU . " table_merkmal_langu_standard ON ((" . TABLE_VARIANTE . ".id = table_merkmal_langu_standard.variante_id) AND (table_merkmal_langu_standard.language_id = " . $StandardLanguageID . ")) ";
		
		$SQLString .= "WHERE (";
		
		// nur Merkmale
		$SQLString .= "(" . TABLE_MERKMAL . ".root = '0') AND ";

		// Variante
		if ($VariantenID) {
			$SQLString .= "(" . TABLE_MERKMAL . ".parent = '" . $VariantenID . "') AND ";
		}

		// Suche
		if ($SearchField && $SearchString) {
			$SQLString .= "(" . $SearchField . " LIKE '%" . $SearchString . "%') AND "; 
		}

		$SQLString .= " 1) ";

		// Sortierung
		if ($SortField && $SortOrder) {
			$SQLString .= "ORDER BY " . $SortField . " " . $SortOrder . " "; 
		}

	}
	
	$MySQLQueryReferenz = errorlogged_mysql_query($SQLString);

	// ********************************************************************************
	// ** die Merkmaldaten in ein Array ablegen
	// ********************************************************************************

	$MerkmalCounter = 0;
	$MerkmalDataArray = array();

	while ($MerkmalRowArray = mysql_fetch_array($MySQLQueryReferenz, MYSQL_ASSOC)) {

		$MerkmalDataArray[$MerkmalCounter]["id"] = $MerkmalRowArray["id"];
		$MerkmalDataArray[$MerkmalCounter]["name"] = $MerkmalRowArray["name"];
		$MerkmalDataArray[$MerkmalCounter]["translate_name"] = $MerkmalRowArray["translate_name"];
		$MerkmalDataArray[$MerkmalCounter]["sort"] = $MerkmalRowArray["sort"];
		$MerkmalDataArray[$MerkmalCounter]["variantenname"] = $MerkmalRowArray["variantenname"];
		$MerkmalDataArray[$MerkmalCounter]["translate_variantenname"] = $MerkmalRowArray["translate_variantenname"];
		$MerkmalDataArray[$MerkmalCounter]["variantenid"] = $MerkmalRowArray["variantenid"];
		$MerkmalDataArray[$MerkmalCounter]["languagearray"] = GetMerkmalLanguageDataArray($MerkmalRowArray["id"]);
		
		if ($ArtikelID && $Merkmalauswahl) {
			$MerkmalDataArray[$MerkmalCounter]["selected"] = $MerkmalRowArray["selected"];
		} else {
			$MerkmalDataArray[$MerkmalCounter]["selected"] = 1;
		}
		
		$MerkmalCounter++;

	}

	return $MerkmalDataArray;

}
