Index: /controller/wpsg_ProduktController.class.php
===================================================================
--- /controller/wpsg_ProduktController.class.php	(revision 6135)
+++ /controller/wpsg_ProduktController.class.php	(revision 6136)
@@ -730,8 +730,8 @@
 					$bVariante = false;					
 					
-					if ($this->shop->hasMod('wpsg_mod_varianten'))
+					if ($this->shop->hasMod('wpsg_mod_productvariants'))
 					{
 				
-						$arVarianten = $this->shop->callMod('wpsg_mod_varianten', 'loadVarianten', array($p_id));
+						$arVarianten = $this->shop->callMod('wpsg_mod_productvariants', 'loadVarianten', array($p_id));
 				
 						if (wpsg_isSizedArray($arVarianten))
Index: /controller/wpsg_ShopController.class.php
===================================================================
--- /controller/wpsg_ShopController.class.php	(revision 6135)
+++ /controller/wpsg_ShopController.class.php	(revision 6136)
@@ -1217,5 +1217,5 @@
 				
 			/* Varianten=true -> ï¿œffnet Lightbox mit Variantenauswahl */
-			$strReturn .= (($this->callMod('wpsg_mod_varianten', 'isVariantProduct', array($product_id)))?'wpsg_variantProduct':'');
+			$strReturn .= (($this->callMod('wpsg_mod_productvariants', 'isVariantProduct', array($product_id)))?'wpsg_variantProduct':'');
 				
 			$strReturn .= '" ';
Index: /lib/functions.inc.php
===================================================================
--- /lib/functions.inc.php	(revision 6135)
+++ /lib/functions.inc.php	(revision 6136)
@@ -1056,5 +1056,5 @@
 	{
 	
-		if (!isset($value) || !is_array($value)) return '';
+		if (!isset($value) || !is_array($value)) return Array();
 	
 		return $value;
Index: /lib/wpsg_basket.class.php
===================================================================
--- /lib/wpsg_basket.class.php	(revision 6135)
+++ /lib/wpsg_basket.class.php	(revision 6136)
@@ -890,4 +890,12 @@
 				}
 				$data['adress_id'] = $re_adress_id;
+				unset($data['shipping_title']);
+				unset($data['shipping_vname']);
+				unset($data['shipping_name']);
+				unset($data['shipping_strasse']);
+				unset($data['shipping_plz']);
+				unset($data['shipping_ort']);
+				unset($data['shipping_firma']);
+				unset($data['shipping_land']);
 				
 				$data['custom_data']['basket']['oOrder'] = Array();
Index: /mods/wpsg_mod_deliverynote.class.php
===================================================================
--- /mods/wpsg_mod_deliverynote.class.php	(revision 6135)
+++ /mods/wpsg_mod_deliverynote.class.php	(revision 6136)
@@ -196,5 +196,5 @@
 			
 			echo wpsg_drawForm_Checkbox('wpsg_mod_deliverynote_pdf_beschreibung', __('Produktbeschreibung auf Lieferschein anzeigen', 'wpsg'), $this->shop->get_option('wpsg_mod_deliverynote_pdf_beschreibung'));
-			if ($this->shop->hasMod('wpsg_mod_varianten')) echo wpsg_drawForm_Checkbox('wpsg_mod_deliverynote_pdf_varianten', __('Varianten auf Lieferschein anzeigen', 'wpsg'), $this->shop->get_option('wpsg_mod_deliverynote_pdf_varianten'));
+			if ($this->shop->hasMod('wpsg_mod_productvariants')) echo wpsg_drawForm_Checkbox('wpsg_mod_deliverynote_pdf_varianten', __('Varianten auf Lieferschein anzeigen', 'wpsg'), $this->shop->get_option('wpsg_mod_deliverynote_pdf_varianten'));
 			
 		} // public function admin_presentation()
@@ -204,5 +204,5 @@
 			
 			$this->shop->update_option('wpsg_mod_deliverynote_pdf_beschreibung', $_REQUEST['wpsg_mod_deliverynote_pdf_beschreibung']);
-			if ($this->shop->hasMod('wpsg_mod_varianten')) $this->shop->update_option('wpsg_mod_deliverynote_pdf_varianten', $_REQUEST['wpsg_mod_deliverynote_pdf_varianten']);
+			if ($this->shop->hasMod('wpsg_mod_productvariants')) $this->shop->update_option('wpsg_mod_deliverynote_pdf_varianten', $_REQUEST['wpsg_mod_deliverynote_pdf_varianten']);
 			
 		} // public function admin_presentation_submit()
Index: /mods/wpsg_mod_discount.class.php
===================================================================
--- /mods/wpsg_mod_discount.class.php	(revision 6135)
+++ /mods/wpsg_mod_discount.class.php	(revision 6136)
@@ -411,5 +411,5 @@
 			}
 			
-		} // public function wpsg_mod_varianten_loadVarianten(&$varianten_data)
+		} // public function addDiscountToVari(&$product_id, &$varianten_data)
 		
 		public function basket_top() 
@@ -787,6 +787,6 @@
 			$product_data['discount'][$discount_type] = $discount_value;
 			
-			$discount_min_price = false; if ($this->shop->hasMod('wpsg_mod_varianten') && isset($product_data['min_preis'])) $discount_min_price = &$product_data['min_preis']; 
-			$discount_max_price = false; if ($this->shop->hasMod('wpsg_mod_varianten') && isset($product_data['max_preis'])) $discount_max_price = &$product_data['max_preis']; 
+			$discount_min_price = false; if ($this->shop->hasMod('wpsg_mod_productvariants') && isset($product_data['min_preis'])) $discount_min_price = &$product_data['min_preis']; 
+			$discount_max_price = false; if ($this->shop->hasMod('wpsg_mod_productvariants') && isset($product_data['max_preis'])) $discount_max_price = &$product_data['max_preis']; 
 
 			if (!isset($product_data['preis_prediscount'])) $product_data['preis_prediscount'] = $product_data['preis'];
Index: /mods/wpsg_mod_productvariants.class.php
===================================================================
--- /mods/wpsg_mod_productvariants.class.php	(revision 6135)
+++ /mods/wpsg_mod_productvariants.class.php	(revision 6136)
@@ -744,12 +744,9 @@
         {
         
-			/*
-			 * Alter Quatsch
         	$vp_data = $this->clearArrayForSerialization($vp_data);
         		
-        	$this->db->UpdateQuery(WPSG_TBL_PRODUCTS, array(
-        		"mod_varianten" => wpsg_q(serialize($vp_data))
-        	), "`id` = '".wpsg_q($produkt_id)."'");
-        	*/
+        	$this->db->UpdateQuery(WPSG_TBL_PRODUCTS_VARIATION, array(
+        		"images" => wpsg_q(serialize($vp_data))
+        	), "`id` = '".wpsg_q($_REQUEST['vari_id'])."'");
 			
         } // public function saveVarianten($produkt_id, $vp_data)
@@ -762,8 +759,7 @@
         {
         
-			/*
         	if (is_admin()) $noCache = true;
         		
-        	if (!$noCache && array_key_exists($produkt_id.$noTrans, $this->cache_variData)) return $this->cache_variData[$produkt_id.$noTrans];
+        	if (!$noCache && array_key_exists($produkt_id.$noTrans, wpsg_getArray($this->cache_variData))) return $this->cache_variData[$produkt_id.$noTrans];
         		
         	// Ãbersetzung verarbeiten
@@ -771,5 +767,6 @@
         	{
         
-        		$vp_data = @unserialize($this->db->fetchOne("SELECT `mod_varianten` FROM `".WPSG_TBL_PRODUCTS."` WHERE `id` = '".wpsg_q($produkt_id)."'"));
+        		//$vp_data = @unserialize($this->db->fetchOne("SELECT `images` FROM `".WPSG_TBL_PRODUCTS_VARIATION."` WHERE `id` = '".wpsg_q($produkt_id)."'"));
+        		$vp_data = @unserialize($this->db->fetchOne("SELECT `images` FROM `".WPSG_TBL_PRODUCTS_VARIATION."` WHERE `id` = '".wpsg_q($_REQUEST['vari_id'])."'"));
         		if (!is_array($vp_data)) $vp_data = array();
 			         
@@ -785,5 +782,5 @@
         			if (!wpsg_isSizedInt($parent_lang_id)) $parent_lang_id = $produkt_id;
         				
-        			$vp_data = @unserialize($this->db->fetchOne("SELECT `mod_varianten` FROM `".WPSG_TBL_PRODUCTS."` WHERE `id` = '".wpsg_q($parent_lang_id)."'"));
+        			$vp_data = @unserialize($this->db->fetchOne("SELECT `images` FROM `".WPSG_TBL_PRODUCTS_VARIATION."` WHERE `id` = '".wpsg_q($parent_lang_id)."'"));
         			if (!is_array($vp_data)) $vp_data = array();
         				
@@ -812,8 +809,30 @@
         		else
         		{
-        				
-        			$vp_data = @unserialize($this->db->fetchOne("SELECT `mod_varianten` FROM `".WPSG_TBL_PRODUCTS."` WHERE `id` = '".wpsg_q($produkt_id)."'"));
-        			if (!is_array($vp_data)) $vp_data = array();
-        				
+
+        			if (isset($_REQUEST['vari_id'])) {
+        				$vp_data = @unserialize($this->db->fetchOne("SELECT `images` FROM `".WPSG_TBL_PRODUCTS_VARIATION."` WHERE `id` = '".wpsg_q($_REQUEST['vari_id'])."'"));
+        				if (!is_array($vp_data)) $vp_data = array();
+        				
+        			}
+        			else
+        			{
+        				
+        				$strQuery = 
+        				"SELECT PVV.`id`, PVV.`variation_id`, PVV.`product_id`, PVV.`anr`, PVV.`price`, PVV.`stock`, PVV.`images`, PVV.`active`,
+        				 VV.`variant_id`, VV.`name` AS VVname, VV.`shortname`, PV.`pos` AS PVpos, VV.`pos` AS VVpos,
+        				 V.`name` AS Vname, V.`type`
+        				 FROM ".WPSG_TBL_VARIANTS." AS V, ".WPSG_TBL_VARIANTS_VARI." AS VV,
+        				 ".WPSG_TBL_PRODUCTS_VARIATION." AS PVV, ".WPSG_TBL_PRODUCTS_VARIANT." AS PV
+        				 WHERE V.`id` = VV.`variant_id` AND VV.`id` = PVV.`variation_id` AND PV.`variant_id` = VV.`variant_id` AND 
+        				 PVV.`product_id` = '".wpsg_q($produkt_id)."' AND VV.`deleted` != 1 AND V.`deleted` != 1 
+        				 ORDER BY PV.`pos`, VV.`pos`";
+        				
+        				//$vp_data = $this->db->fetchAssoc("SELECT * FROM `".WPSG_TBL_PRODUCTS_VARIATION."` WHERE `product_id` = '".wpsg_q($produkt_id)."'");
+        				$vp_data = $this->db->fetchAssoc($strQuery);
+        				if (!is_array($vp_data)) $vp_data = array();
+        				$this->unserializeVariation($vp_data);
+        				
+        			}
+        			
         		}
         
@@ -823,5 +842,4 @@
         		
         	return $vp_data;
-			*/
         		
         } // public function loadVarianten($produkt_id)
@@ -861,4 +879,7 @@
         {
         	
+        	$_REQUEST['var_id'] = $var_id;
+        	$_REQUEST['vari_id'] = $vari_id;
+        	 
         	$vp_data = $this->loadVarianten($product_id);
         	
@@ -867,8 +888,13 @@
         	$arReturn = array();
         
+        	if (!isset($vp_data[$var_id])) return $arProductBilder;
+        	if (!wpsg_isSizedArray($vp_data[$var_id]['vari'][$vari_id]['picOrder']) && !wpsg_isSizedArray($vp_data[$var_id]['picOrder'])) return $arProductBilder;
+        	
+        	// Sortierung
         	// Bilder in Reihenfolge
-        	//if ($vp_data[$var_id]['typ'] == 'checkbox' && wpsg_isSizedArray($vp_data[$var_id]['picOrder'])) $arReturn = $vp_data[$var_id]['picOrder'];
-        	//else if (wpsg_isSizedArray($vp_data[$var_id]['vari'][$vari_id]['picOrder'])) $arReturn = $vp_data[$var_id]['vari'][$vari_id]['picOrder'];
+        	if (isset($vp_data[$var_id]['typ']) && ($vp_data[$var_id]['typ'] == 'checkbox') && wpsg_isSizedArray($vp_data[$var_id]['picOrder'])) $arReturn = $vp_data[$var_id]['picOrder'];
+        	else if (wpsg_isSizedArray($vp_data[$var_id]['vari'][$vari_id]['picOrder'])) $arReturn = $vp_data[$var_id]['vari'][$vari_id]['picOrder'];
         	
+        	/*
         	// PrÃŒfen ob die Bilder noch in Produktbilder Array drin sind
         	foreach ($arReturn as $k => $v)
@@ -879,4 +905,14 @@
         
         	}
+        	*/
+        	
+        	$arProductBilderSort = Array();
+        	foreach ($arProductBilder as $v) {
+        		$k = array_search($v['basename'], $arReturn);
+        		if ($k !== false)
+        			$arProductBilderSort[$k] = $v;
+        		
+        	}
+        	sort($arProductBilderSort);
         	
         	// Bilder aus dem ProduktArray noch hinzufÃŒgen, die eventuell nicht im sortierten Array enthalten sind
@@ -906,5 +942,6 @@
         	}
         
-        	return $arReturn;
+        	//return $arReturn;
+        	return $arProductBilderSort;
         	
         } // public function getVariImages($product_id, $var_id, $vari_id)
@@ -938,4 +975,140 @@
 
 		} // public function productTemplate($product_key)
+		
+		/**
+		 * Ãbernimmt die Auswahl der Variante im Produkttemplate
+		 */
+		public function renderTemplate($product_key)
+		{
+		
+			$produkt_id = $this->shop->getProduktId($product_key);
+			$produkt_data = $this->shop->cache->loadProduct($produkt_id);
+			$tax_value = $this->shop->getCalcTaxValue($produkt_data['mwst_key']);
+		
+			if ($this->shop->isOtherLang())
+			{
+			
+				$produkt_trans_id = $this->db->fetchOne("SELECT `id` FROM `".WPSG_TBL_PRODUCTS."` WHERE `lang_parent` = '".wpsg_q($produkt_id)."' AND `lang_locale` = '".wpsg_q($this->shop->getCurrentLanguage())."'");
+			
+				if (wpsg_isSizedInt($produkt_trans_id)) $produkt_id = $produkt_trans_id;
+		
+			}
+		
+			$vp_data = $this->loadVarianten($produkt_id);
+
+			if (is_array($vp_data) && sizeof($vp_data) > 0)
+			{
+		
+				$arpb = $this->shop->callMod('wpsg_mod_produktbilder', 'getProduktBilder_MT', array(&$produkt_id));
+				
+				//$this->shop->view['data']['vp_data'] = $vp_data;
+				$this->shop->view['wpsg_mod_productvariants']['set'] = $this->getSetVariArray($product_key);
+		
+				// Rabattpreise vorkalkulieren
+				//$this->shop->callMod('wpsg_mod_discount', 'addDiscountToVari', array(&$produkt_id, &$this->shop->view['data']['vp_data']));
+				
+				// Bilddaten ergÃ€nzen
+				foreach ($vp_data as $k1 => &$v1) {
+					$arpic = explode(',', $v1['pic']);
+					$v1['showpic'] = '';
+					if (wpsg_isSizedArray($v1['picOrder'])) {
+						// Bilder umsortiert, Reihenfolge checken
+						$k = 5000;
+						foreach ($arpic as $ap)
+							foreach ($v1['picOrder'] as $kp => $vp) {
+								if ($ap == $vp)
+									if ($kp < $k) $k = $kp; 
+								
+							}
+						$v1['showpic'] = $v1['picOrder'][$k];
+					}
+					else
+					{
+						$max = sizeof($arpic);
+						if (isset($arpic[$max - 1]))
+							$v1['showpic'] = $arpic[$max - 1];		// 1 wegen Komma am Anfang
+					}
+					$found = -1;
+					foreach ($arpb as $k2 => $v2) {
+						if ($v1['showpic'] === $v2['basename']) $found = $k2;
+					}
+					if ($found != -1) {
+						$v1['guid'] = $arpb[$found]['guid'];
+						$v1['post_id'] = $arpb[$found]['post_id'];
+					}
+				}
+				$this->shop->view['data']['vp_data'] = $vp_data;
+				
+				foreach ($this->shop->view['data']['vp_data'] as $k => $v)
+				{
+						
+					if ($v['type'] == "0")	// 0 = checkbox
+					{
+		
+						if (get_option("wpsg_vp_showpic") == "1" && wpsg_isSizedString($v['pic']))
+						{
+								
+							//$this->shop->view['data']['vp_data'][$k]['showpic'] = $this->getImageSelectImage($produkt_id, $k, $k2, $product_key);
+		
+						}
+		
+						// Preis an Ausgabe im Frontend anpassen
+						//if ($this->shop->getFrontendTaxview() == WPSG_NETTO && $this->shop->getBackendTaxview() == WPSG_BRUTTO) $this->shop->view['data']['vp_data'][$k]['preis'] = wpsg_calculatePreis($v['preis'], WPSG_NETTO, $tax_value);
+						//else if ($this->shop->getFrontendTaxview() == WPSG_BRUTTO && $this->shop->getBackendTaxview() == WPSG_NETTO) $this->shop->view['data']['vp_data'][$k]['preis'] = wpsg_calculatePreis($v['preis'], WPSG_BRUTTO, $tax_value);
+						if ($this->shop->getFrontendTaxview() == WPSG_NETTO && $this->shop->getBackendTaxview() == WPSG_BRUTTO) $this->shop->view['data']['vp_data'][$k]['vprice'] = wpsg_calculatePreis($v['price'], WPSG_NETTO, $tax_value);
+						else if ($this->shop->getFrontendTaxview() == WPSG_BRUTTO && $this->shop->getBackendTaxview() == WPSG_NETTO) $this->shop->view['data']['vp_data'][$k]['vprice'] = wpsg_calculatePreis($v['price'], WPSG_BRUTTO, $tax_value);
+						
+					}
+					else
+					{
+		
+						//foreach ($v['vari'] as $k2 => $v2)
+						{
+		
+							if (get_option("wpsg_vp_showpic") == "1" && wpsg_isSizedString($v2['pic']))
+							{
+		
+								//$this->shop->view['data']['vp_data'][$k]['vari'][$k2]['showpic'] = $this->getImageSelectImage($produkt_id, $k, $k2, $product_key);
+		
+							}
+								
+							// Preis an Ausgabe im Frontend anpassen
+							//if ($this->shop->getFrontendTaxview() == WPSG_NETTO && $this->shop->getBackendTaxview() == WPSG_BRUTTO) $this->shop->view['data']['vp_data'][$k]['vari'][$k2]['preis'] = wpsg_calculatePreis($v2['preis'], WPSG_NETTO, $tax_value);
+							//else if ($this->shop->getFrontendTaxview() == WPSG_BRUTTO && $this->shop->getBackendTaxview() == WPSG_NETTO) $this->shop->view['data']['vp_data'][$k]['vari'][$k2]['preis'] = wpsg_calculatePreis($v2['preis'], WPSG_BRUTTO, $tax_value);
+							if ($this->shop->getFrontendTaxview() == WPSG_NETTO && $this->shop->getBackendTaxview() == WPSG_BRUTTO) $this->shop->view['data']['vp_data'][$k]['price'] = wpsg_calculatePreis($v['price'], WPSG_NETTO, $tax_value);
+							else if ($this->shop->getFrontendTaxview() == WPSG_BRUTTO && $this->shop->getBackendTaxview() == WPSG_NETTO) $this->shop->view['data']['vp_data'][$k]['price'] = wpsg_calculatePreis($v['price'], WPSG_BRUTTO, $tax_value);
+								
+						}
+		
+					}
+						
+				}
+		
+		
+				//return $this->shop->render(WPSG_PATH_VIEW.'/mods/mod_varianten/produkt.phtml', false);
+				//return $this->shop->render(WPSG_PATH_VIEW.'/mods/mod_productvariants/productTemplate.phtml', false);
+				
+			}
+				
+		} // public function renderTemplate($produkt_id)
+		
+		/**
+		 * Gibt das Bild fÃŒr die Grafikauswahl zurÃŒck
+		 * @param int $product_id
+		 * @param int $var_id
+		 * @param int $vari_id
+		 */
+		public function getImageSelectImage($product_id, $var_id, $vari_id, $vari_key)
+		{
+		
+			$arVariBilder = $this->getVariImages($product_id, $var_id, $vari_id);
+			$arVariPossibleBilder = $this->getKombiVariImages($vari_key, $var_id);
+				
+			$arBilderIntersect = array_intersect($arVariBilder, $arVariPossibleBilder);
+			if (wpsg_isSizedArray($arBilderIntersect)) $arVariBilder = $arBilderIntersect;
+				
+			return array_shift($arVariBilder);
+				
+		} // public function getImageSelectImage($product_id, $var_id, $vari_id)
 		
 		/**
@@ -1201,5 +1374,31 @@
 			
 		} // private function admin_inlineEditAction()
-		   
+		
+		/**
+		 * Gibt einen Array zurÃŒck, bei denen die SchlÃŒssel die Varianten sind und die Werte die gewÃ€hlten Variationen
+		 */
+		private function getSetVariArray($product_key)
+		{
+		
+			if (!$this->isVariantsProductKey($product_key)) return array();
+				
+			$arVariSet = explode(':', preg_replace('/^vp_\d*\//', '', $product_key));
+			$arReturn = array();
+				
+			foreach ($arVariSet as $var_combi)
+			{
+		
+				$var_combi = explode('_', $var_combi);
+				$var = $var_combi[0];
+				$vari = $var_combi[1];
+		
+				$arReturn[$var] = $vari;
+		
+			}
+				
+			return $arReturn;
+				
+		}	// private function getSetVariArray($product_key)
+		
 		/**
 		 * Gibt die Variationen einer Variante zurÃŒck
@@ -1260,4 +1459,5 @@
 			 
 			$arVari = $this->db->fetchAssoc($strQuery);
+			$this->unserializeVariation($arVari);
 			
 			// TODO: Ãbersetzung
@@ -1266,5 +1466,42 @@
 			
 		} // public function getVariationOfVariant($variant_id)
-						
+			
+		private function unserializeVariation(&$arVari) {
+			foreach ($arVari as &$vi) {
+				$ar = @unserialize($vi['images']);
+				$vi['pic'] = '';
+				$vi['picOrder'] = Array();
+				if (wpsg_isSizedArray($ar)) {
+					foreach($ar as $k => $v) {
+						$arr = $ar[$k]['vari'][$vi['id']];
+						foreach ($arr as $kk => $vv)
+							$vi[$kk] = $vv;
+					}
+				}
+			}					
+		}
+		
+		/**
+		 * Gibt true zurÃŒck, wenn der ÃŒbergebene Produktkey ein Varianten Produktkey ist. Sonst false.
+		 * @param \String $productkey
+		 */
+		public function isVariantsProductKey($productkey)
+		{
+				
+			if (preg_match('/^vp_\d+/', $productkey))
+			{
+		
+				return true;
+		
+			}
+			else
+			{
+		
+				return false;
+		
+			}
+				
+		} // public function isVariantsProductKey($productkey)
+		
 		/**
 		 * Gibt eine einzelne Variante zurÃŒck
Index: /views/css/back.css
===================================================================
--- /views/css/back.css	(revision 6135)
+++ /views/css/back.css	(revision 6136)
@@ -468,9 +468,9 @@
 #wpsg_vp_drawVarianten .col_variartnr { width:200px; text-align:left; }
 #wpsg_vp_drawVarianten .col_stock { width:100px; text-align:left; }
-#wpsg_vp_drawVarianten .wpsg_mod_varianten_productimage_row .pic { display:block; float:left; margin-right:5px; padding:5px; height:25px; width:25px; }
-#wpsg_vp_drawVarianten .wpsg_mod_varianten_productimage_row .mark { background-color:rgb(174, 174, 174); }
-#wpsg_vp_drawVarianten .wpsg_mod_varianten_orderwrap_image .wpsg_mod_varianten_productimage_row .mark:first-of-type { background-color:black; }
-#wpsg_vp_drawVarianten .wpsg_mod_varianten_ajaxloading { width:100%; height:100%; position:absolute; left:0px; top:0px; background-color:rgba(125, 125, 125, 0.5); margin-top:-10px; padding-bottom:21px; }
-#wpsg_vp_drawVarianten .wpsg_mod_varianten_ajaxloading img { position:absolute; left:50%; top:50%;  margin-left:-8px; margin-top:-5.5px; }
+#wpsg_vp_drawVarianten .wpsg_mod_productvariants_productimage_row .pic { display:block; float:left; margin-right:5px; padding:5px; height:25px; width:25px; }
+#wpsg_vp_drawVarianten .wpsg_mod_productvariants_productimage_row .mark { background-color:rgb(174, 174, 174); }
+#wpsg_vp_drawVarianten .wpsg_mod_productvariants_orderwrap_image .wpsg_mod_productvariants_productimage_row .mark:first-of-type { background-color:black; }
+#wpsg_vp_drawVarianten .wpsg_mod_productvariants_ajaxloading { width:100%; height:100%; position:absolute; left:0px; top:0px; background-color:rgba(125, 125, 125, 0.5); margin-top:-10px; padding-bottom:21px; }
+#wpsg_vp_drawVarianten .wpsg_mod_productvariants_ajaxloading img { position:absolute; left:50%; top:50%;  margin-left:-8px; margin-top:-5.5px; }
 
 /*
Index: /views/mods/mod_productvariants/admin_edit.phtml
===================================================================
--- /views/mods/mod_productvariants/admin_edit.phtml	(revision 6135)
+++ /views/mods/mod_productvariants/admin_edit.phtml	(revision 6136)
@@ -129,25 +129,62 @@
     		</tr>
     		 
-    		<tr>
+    		<tr class="wpsg_mod_productvariants_productimage_row">
     			<td class="col_id">&nbsp;</td>
-    			<td class="col_image" colspan="<?php echo $colspan; ?>">
-    				TODO: Bilder
-    				<?php 
-					$pbArr = $this->callMod('wpsg_mod_produktbilder', 'getProduktBilder_MT', array($this->view['product_id']));
-					$k = $this->view['variant']['id'];
-					$kv = $vari['id'];
-					$temp = $this->callMod('wpsg_mod_productvariants', 'getVariImages', array($this->view['product_id'], $k, $kv));
-					?>
-					<?php $j = 0; foreach ($pbArr as $b) { $j ++; ?>
+   				<?php 
+				$pbArr = $this->callMod('wpsg_mod_produktbilder', 'getProduktBilder_MT', array($this->view['product_id']));
+				$k = $this->view['variant']['id'];
+				$kv = $vari['id'];
+				$temp = $this->callMod('wpsg_mod_productvariants', 'getVariImages', array($this->view['product_id'], $k, $kv));
+				?>
+    			<td class="ui-sortable" colspan="<?php echo $colspan; ?>"  id="wpsg_mod_productvariants_productimage_<?php echo $k; ?>_<?php echo $kv; ?>" >
+					<?php $j = 0; foreach ($temp as $b) { $j ++; ?>
 							<?php // $this->view['variant']['id']	$vari  $var  $kv  $_REQUEST['pic']
 							$file = $b['basename'];
 							$href = wp_get_attachment_image_src($b['post_id'], Array(25, 25));
 							?>	
-							<a class="<?php //echo ((in_array($file, explode(",", $vari['pic'])))?'mark':''); ?> pic" id="<?php echo $file; ?>" 
-							onclick="return wpsg_vp_vari_setPic(this, <?php echo $k; ?>, <?php echo $kv; ?>, '<?php echo $file; ?>', <?php echo $j; ?>);" href="">
+							<a class="<?php echo ((in_array($file, explode(",", $vari['pic'])))?'mark':''); ?> pic" id="<?php echo $file; ?>" 
+							onclick="return wpsg_vp_vari_setPic(this, <?php echo $k; ?>, <?php echo $kv; ?>, '<?php echo $file; ?>', <?php echo $j; ?>);">
 							<img src="<?php echo $href[0]; ?>" alt="" width="25px" height="25px"/>
 							</a>
         			<?php } ?>
 					
+					<?php if (wpsg_isSizedInt($j)) { ?>
+			   		<script type="text/javascript">/* <![CDATA[ */
+
+			   			jQuery(document).ready(function() {   
+			   				
+					   		jQuery('#wpsg_mod_productvariants_productimage_<?php echo $k; ?>_<?php echo $kv; ?>').sortable( {
+								items: 'a',
+								helper : 'clone',  
+								update: function(event, ui) {
+
+									wpsg_vp_ajaxloading_show();
+									
+									var wpsg_reorder = jQuery(this).sortable('toArray');
+
+									jQuery.ajax( {			
+										url: '<?php echo WPSG_URL_WP; ?>wp-admin/admin.php?page=wpsg-Produkt&action=ajax&mod=wpsg_mod_productvariants&cmd=wpsg_var_setImageOrder&noheader=1&edit_id=<?php echo $this->view['product_id']; ?>',
+										async: false,
+										data: {				
+											'var_id': <?php echo $k; ?>,
+											'vari_id': <?php echo $kv; ?>,
+											'wpsg_reorder': wpsg_reorder
+										},
+										success: function(data) { 
+
+											if (data != '1') alert(data);
+											wpsg_vp_ajaxloading_hide(); 
+
+										}
+									} );
+																				 
+								}			
+							} ).disableSelection();
+
+			   			} );
+			   		
+				   		/* ]]> */</script>
+			   		
+			   		<?php } ?>
     				
     			</td>
@@ -218,5 +255,5 @@
 	{
 
-		jQuery('.wpsg_mod_varianten_ajaxloading').show();
+		jQuery('.wpsg_mod_productvariants_ajaxloading').show();
 		
 	}
@@ -225,5 +262,5 @@
 	{
 
-		jQuery('.wpsg_mod_varianten_ajaxloading').hide();
+		jQuery('.wpsg_mod_productvariants_ajaxloading').hide();
 		
 	} 
Index: /views/mods/mod_productvariants/admin_html.phtml
===================================================================
--- /views/mods/mod_productvariants/admin_html.phtml	(revision 6135)
+++ /views/mods/mod_productvariants/admin_html.phtml	(revision 6136)
@@ -67,5 +67,7 @@
 			}
     	} ); 
-		   
+
+		//setTimeout("saveOrder()", 1000);
+		
         return false;
 		
@@ -184,8 +186,28 @@
 			}
     	} ); 
-		   
+
+		setTimeout("saveOrder()", 3000);
+
         return false;
 		
 	} // function wpsg_mod_productvariants_add()
+
+	function saveOrder() {
+		var wpsg_reorder = jQuery('.wpsg_mod_productvariants_table_variants tbody').sortable('toArray');
+		var product_id = jQuery('#wpsg_mod_productvariants_product_id').val();
+
+		jQuery.ajax( {
+			url: '<?php echo WPSG_URL_WP; ?>wp-admin/admin.php?page=wpsg-Admin&action=module&modul=wpsg_mod_productvariants&subaction=admin_inlineEdit&noheader=1',
+			data: {
+				'field': 'pos',
+				'product_id': product_id,
+				'value': jQuery('.wpsg_mod_productvariants_table_variants tbody').sortable('toArray')
+			},
+			success: function(data) { }
+		} );
+		// jQuery(this).sortable('toArray')
+		// jQuery('.wpsg_mod_productvariants_table_variants tbody').sortable(
+
+	}
 	
 	function wpsg_mod_productvariants_back()
Index: /views/produkttemplates/standard.phtml
===================================================================
--- /views/produkttemplates/standard.phtml	(revision 6135)
+++ /views/produkttemplates/standard.phtml	(revision 6136)
@@ -204,5 +204,5 @@
 					<?php /* Varianten START */ ?>
 					<div class="wpsg_produkt_varianten">
-						<?php echo $this->callMod('wpsg_mod_varianten', 'renderTemplate', array($this->view['data']['product_key'])); ?>
+						<?php echo $this->callMod('wpsg_mod_productvariants', 'renderTemplate', array($this->view['data']['product_key'])); ?>
 					</div>
 					<?php /* Varianten ENDE */ ?>			
