<?php

class mcPUIX_DOM {
	private static $double = array();
	private static function checkDouble($param_key) {
		if(false===array_search($param_key, self::$double)) {
			self::$double[] = $param_key;
			return false;
		} else {
//			D::cf('dobule key: '.$param_key);
			return true;
		}
	}
	
	/**
	 *	copy the param_ConfigArray into the value param_ValueArray
	 *		examples @see mcPUIX_PHPTest::testPrepareArrayForDOMElement()
	 *		function prepare Array for @see mcPUIX_DOM::getDOMElement_DBUIArray
	 *
	 * @param string $param_tablename
	 * @param array $param_ConfigArray	-- $param_ConfigArray[mcPUIX::PUIXArray][mcPUIX::DBUIConfig][$param_tablename] = array()
	 *									-- return from mcPUIX_CONFIG::getTableConfig
	 * @param array $param_ValueArray	-- $param_ValueArray[mcPUIX::PUIXArray][mcPUIX::PDOValues] = array(0=>val1, 1=>val2)
	 * @param array $param_SetDefault	-- array( columnName1 => array( type=>, value=>, edit=>, show=>, ...), ... )
	 * @return array -- array(
	 *			mcPUIX::PUIXArray => array(
	 *				mcPUIX::DOMValues => array()
	 *			)
	 *		);
	 *
	 * @since 20120307
	 * @author f
	 */
	public static function prepareArrayForDOMElement($param_tablename, array $param_ConfigArray, array $param_ValueArray=null, $param_formpath=null, array $param_SetDefault=null) {
//		D::show(array($param_ConfigArray, $param_ValueArray ) ,$param_tablename);
		
		$copy_ValueArray = $param_ValueArray;
		
		if(mcArray::checkKeyHasFullArray($param_ConfigArray, mcPUIX::PUIXArray, mcPUIX::DBUIConfig, $param_tablename)) {
			if(mcArray::checkKeyHasFullArray($param_ValueArray, mcPUIX::PUIXArray, mcPUIX::PDOValues)) {
				/**
				 * condition: check if there is a reference table as list
				 */
				if(mcArray::checkKeyHasFullArray($param_ConfigArray[mcPUIX::PUIXArray][mcPUIX::DBUIConfig][$param_tablename], 'TABLE', mcPUIX::PUIX_SUB_REFERENCELIST)
						&& $param_ConfigArray[mcPUIX::PUIXArray][mcPUIX::DBUIConfig][$param_tablename]['TABLE'][mcPUIX::PUIX_SUB_REFERENCELIST]['TABLENAME']
						&& $param_ConfigArray[mcPUIX::PUIXArray][mcPUIX::DBUIConfig][$param_tablename]['TABLE'][mcPUIX::PUIX_SUB_REFERENCELIST]['REFERENCE_KEY']
						&& $param_ConfigArray[mcPUIX::PUIXArray][mcPUIX::DBUIConfig][$param_tablename]['TABLE']['ELEMENTID']
						&& mcArray::checkKeyHasFullArray($param_ConfigArray[mcPUIX::PUIXArray][mcPUIX::DBUIConfig], $param_ConfigArray[mcPUIX::PUIXArray][mcPUIX::DBUIConfig][$param_tablename]['TABLE'][mcPUIX::PUIX_SUB_REFERENCELIST]['TABLENAME'])
				) {
					$Reference_Config = $param_ConfigArray[mcPUIX::PUIXArray][mcPUIX::DBUIConfig][$param_ConfigArray[mcPUIX::PUIXArray][mcPUIX::DBUIConfig][$param_tablename]['TABLE'][mcPUIX::PUIX_SUB_REFERENCELIST]['TABLENAME']];
					$Reference_TableName = $param_ConfigArray[mcPUIX::PUIXArray][mcPUIX::DBUIConfig][$param_tablename]['TABLE'][mcPUIX::PUIX_SUB_REFERENCELIST]['TABLENAME'];
					$Reference_Config = array( mcPUIX::PUIXArray => array( mcPUIX::DBUIConfig => array( $Reference_TableName => $Reference_Config) ) );
					$Reference_ElementID = $param_ConfigArray[mcPUIX::PUIXArray][mcPUIX::DBUIConfig][$param_tablename]['TABLE']['ELEMENTID'];
					$Reference_REFERENCE_KEY = $param_ConfigArray[mcPUIX::PUIXArray][mcPUIX::DBUIConfig][$param_tablename]['TABLE'][mcPUIX::PUIX_SUB_REFERENCELIST]['REFERENCE_KEY'];

					$Reference = true;
				}  else {
					$Reference = false;
				}

				

				$formpath_index = 0 ;
				/**
				 * Datenbankzeile vorbereiten
				 */
				foreach($param_ValueArray[mcPUIX::PUIXArray][mcPUIX::PDOValues] as  &$value_row) {

					$copy_ConfigArray = $param_ConfigArray[mcPUIX::PUIXArray][mcPUIX::DBUIConfig][$param_tablename];
					$formpath = $param_formpath.'['.$formpath_index.']';

					$formpath_index++;
					/**
					 * einzelne Spalten Elemente vorbereiten
					 */
					foreach($value_row as $row_key => &$row_val) {

						/**
						 * reference
						 */
						if($row_key === mcPUIX::PUIXArray) {
						} 
						/**
						 * Reference List
						 */
						else if($row_val === mcPUIX::PUIXArray) {
							if($Reference) {
								$Reference_formpath=$formpath.'['.mcPUIX::PUIX_SUB_REFERENCELIST.']['.mcPUIX::PUIXArray.']'; 

								$Reference_SetDefault = array( 
									$Reference_REFERENCE_KEY => array(
										'value' => $value_row[$Reference_REFERENCE_KEY]['value']
									) 
								);

								if(mcArray::checkKeyHasFullArray($value_row, mcPUIX::PUIXArray, mcPUIX::PDOValues)) {
									$ReferenceValues = array(
										mcPUIX::PUIXArray => array(
											mcPUIX::PDOValues => $value_row[mcPUIX::PUIXArray][mcPUIX::PDOValues]
										)
									);
									if(mcArray::checkKeyHasFullArray($value_row[mcPUIX::PUIXArray], mcPUIX::PDO_Special)) {
										$ReferenceValues[mcPUIX::PUIXArray][mcPUIX::PDO_Special] = $value_row[mcPUIX::PUIXArray][mcPUIX::PDO_Special];
									}

									$Reference_DOMValues = mcPUIX_DOM::prepareArrayForDOMElement($Reference_TableName, $Reference_Config, $ReferenceValues, $Reference_formpath, $Reference_SetDefault);

		//							$value_row[mcPUIX::PUIXArray][mcPUIX::DOMValues] = $Reference_DOMValues[mcPUIX::PUIXArray][mcPUIX::DOMValues];
									unset($value_row[mcPUIX::PUIXArray]);
								} else {
									if(mcArray::checkKeyHasFullArray($value_row, mcPUIX::PUIXArray, mcPUIX::PDO_Special)) {
										$ReferenceValues = array(
											mcPUIX::PUIXArray => array(
												mcPUIX::PDO_Special => $value_row[mcPUIX::PUIXArray][mcPUIX::PDO_Special]
											)
										);
									} else {
										$ReferenceValues = null;
									}				
									$Reference_DOMValues = mcPUIX_DOM::prepareArrayForDOMElement($Reference_TableName, $Reference_Config, $ReferenceValues, $Reference_formpath, $Reference_SetDefault);
								}
								if(array_key_exists($row_key, $param_ConfigArray[mcPUIX::PUIXArray][mcPUIX::DBUIConfig][$param_tablename])) {
									$row_val = $param_ConfigArray[mcPUIX::PUIXArray][mcPUIX::DBUIConfig][$param_tablename][$row_key];

									unset($copy_ConfigArray[$row_key]);
								} else {
									$row_val = array();
								}									
								$row_val['value'] = $Reference_DOMValues;						
							}

						} 
						/**
						 * normal
						 */
						else {	
							$value = $row_val;

							if(array_key_exists($row_key, $param_ConfigArray[mcPUIX::PUIXArray][mcPUIX::DBUIConfig][$param_tablename])) {
								$row_val = $param_ConfigArray[mcPUIX::PUIXArray][mcPUIX::DBUIConfig][$param_tablename][$row_key];

								unset($copy_ConfigArray[$row_key]);
							} else {
								$row_val = array();
							}
							if(!is_null($param_SetDefault)) {
								foreach($param_SetDefault as $default_rowkey => $default_rowvalues) {
									if($default_rowkey=='*' || $default_rowkey==$row_key) {
										foreach($default_rowvalues as $default_key => $default_value) {
											$row_val[$default_key] = $default_value;
											if($default_key==='value') {
												$value = $default_value;
											}
										}
									}
								}

							}

							$row_val['value'] = $value;						
							if(array_key_exists('edit', $row_val) && $row_val['edit']) {
								$row_val['formpath'] = $formpath.'['.$row_key.']';
								self::checkDouble($row_val['formpath']);
							}
						}
					}

					/**
					 * @todo Performance muss theoretisch nur einmal ausgeführt werden @f 100722
					 */
					if(!is_null($param_SetDefault) && is_array($copy_ConfigArray)) {
						foreach($copy_ConfigArray as $copy_ConfigDataKey =>  &$copy_ConfigDataArray) {
							foreach($param_SetDefault as $default_rowkey => &$default_rowvalues) {
								if($default_rowkey=='*' || $default_rowkey==$copy_ConfigDataKey) {
									foreach($default_rowvalues as $default_key => $default_value) {
										$copy_ConfigDataArray[$default_key] = $default_value;
									}
								}
							}
						}
					}
					/**
					 * mcPUIX::FORM_DO_ROW -- Bestätigungs dropdown
					 * alle Datensätze sollen erstmal makiert sein -- da sie sonst gelöscht werden 
					 */
					if(array_key_exists(mcPUIX::FORM_DO_ROW, $copy_ConfigArray)) {
						$copy_ConfigArray[mcPUIX::FORM_DO_ROW]['value'] = mcPUIX::FORM_DO_SAVE;
						$copy_ConfigArray[mcPUIX::FORM_DO_ROW]['formpath'] = $formpath.'['.mcPUIX::FORM_DO_ROW.']';
						self::checkDouble($copy_ConfigArray[mcPUIX::FORM_DO_ROW]['formpath']);												
					}
					$value_row= array_merge($value_row, $copy_ConfigArray);
				}

				$return = array(
					mcPUIX::PUIXArray => array(
						mcPUIX::DOMValues => $param_ValueArray[mcPUIX::PUIXArray][mcPUIX::PDOValues]
					)
				);


				
			} else {
				$return = array(
					mcPUIX::PUIXArray => array(
						mcPUIX::DOMValues => array()
					)
				);				
			}

			if(mcArray::checkKeyHasFullArray($param_ConfigArray[mcPUIX::PUIXArray][mcPUIX::DBUIConfig][$param_tablename], 'TABLE') 
					&& array_key_exists(mcPUIX::FORM_NEW_ROW, $param_ConfigArray[mcPUIX::PUIXArray][mcPUIX::DBUIConfig][$param_tablename]['TABLE']) 
					&& $param_ConfigArray[mcPUIX::PUIXArray][mcPUIX::DBUIConfig][$param_tablename]['TABLE'][mcPUIX::FORM_NEW_ROW]
			) {
				$BOOL_NEW_ROW=true;
				if(mcArray::checkKeyHasFullArray($copy_ValueArray, mcPUIX::PUIXArray, mcPUIX::PDO_Special)) {
					if(mcArray::checkKeyHasFullArray($copy_ValueArray[mcPUIX::PUIXArray][mcPUIX::PDO_Special], mcPUIX::PDO_NEW)) {
						if($copy_ValueArray[mcPUIX::PUIXArray][mcPUIX::PDO_Special][mcPUIX::PDO_NEW][mcPUIX::PDO_Operator] === mcPUIX::PDO_XOR) {
							if(mcArray::checkKeyHasFullArray($return, mcPUIX::PUIXArray, mcPUIX::DOMValues)) {
								$BOOL_NEW_ROW = false;
							}
							
						} else if($copy_ValueArray[mcPUIX::PUIXArray][mcPUIX::PDO_Special][mcPUIX::PDO_NEW][mcPUIX::PDO_Operator] === mcPUIX::PDO_OR) {
							
						} else if($copy_ValueArray[mcPUIX::PUIXArray][mcPUIX::PDO_Special][mcPUIX::PDO_NEW][mcPUIX::PDO_Operator] === mcPUIX::PDO_AND) {
							if(!mcArray::checkKeyHasFullArray($return, mcPUIX::PUIXArray, mcPUIX::DOMValues)) {
								$BOOL_NEW_ROW = false;
							}
						}
					}
				}
				
				
				
				if($BOOL_NEW_ROW) {
					$return_NEW_ROW = mcPUIX_DOM::prepareArrayNEWROWForDOMElement($param_tablename, $param_ConfigArray, $param_formpath, $param_SetDefault);
					$return[mcPUIX::PUIXArray][mcPUIX::DOMValues][mcPUIX::FORM_NEW_ROW] = $return_NEW_ROW[mcPUIX::PUIXArray][mcPUIX::DOMValues][mcPUIX::FORM_NEW_ROW];					
				}
				
			}

			return $return;							
		}
		return false;
	}	
	
	/**
	 *
	 * @param string $param_tablename
	 * @param array $param_ConfigArray
	 * @param string $param_formpath
	 * @param array $param_SetDefault	-- array( columnName1 => array( type=>, value=>, edit=>, show=>, ...), ... )
	 * @return type 
	 */
	public static function prepareArrayNEWROWForDOMElement($param_tablename, array $param_ConfigArray, $param_formpath=null, array $param_SetDefault=null) {
		
		
		if(mcArray::checkKeyHasFullArray($param_ConfigArray,mcPUIX::PUIXArray,mcPUIX::DBUIConfig,$param_tablename))  {
			
			$return = array(mcPUIX::PUIXArray => array(mcPUIX::DOMValues => array()));
			
			$return[mcPUIX::PUIXArray][mcPUIX::DOMValues][mcPUIX::FORM_NEW_ROW] = $param_ConfigArray[mcPUIX::PUIXArray][mcPUIX::DBUIConfig][$param_tablename];
			$formpath = $param_formpath.'['.mcPUIX::FORM_NEW_ROW.'][0]';
			foreach($return[mcPUIX::PUIXArray][mcPUIX::DOMValues][mcPUIX::FORM_NEW_ROW] as $NEW_key => &$NEW_values) {
				if(array_key_exists('type', $NEW_values) && $NEW_values['type'] === mcPUIX::PUIXArray) {
					unset($return[mcPUIX::PUIXArray][mcPUIX::DOMValues][mcPUIX::FORM_NEW_ROW][$NEW_key]);
				}

				if(array_key_exists('edit', $NEW_values) && $NEW_values['edit']) {
					$NEW_values['formpath'] = $formpath.'['.$NEW_key.']';
					if(self::checkDouble($NEW_values['formpath'])) {
//						D::show($NEW_values, 'self::checkDouble $NEW_values');
//						D::cf('self::checkDouble $NEW_values');
					}
				}
				/**
				 * copy default values into mcPUIX::FORM_NEW_ROW
				 */
				if(is_array($param_SetDefault)) {
					if(mcArray::checkKeyHasFullArray($param_SetDefault, $NEW_key)) {
						 $NEW_values = array_merge ($NEW_values, $param_SetDefault[$NEW_key]);
					}
				}
			}
			if($param_ConfigArray[mcPUIX::PUIXArray][mcPUIX::DBUIConfig][$param_tablename]['TABLE']['ELEMENTID']) {
				if($param_ConfigArray[mcPUIX::PUIXArray][mcPUIX::DBUIConfig][$param_tablename]['TABLE']['KINDOF'] === 'LIST') {
					unset($return[mcPUIX::PUIXArray][mcPUIX::DOMValues][mcPUIX::FORM_NEW_ROW][$param_ConfigArray[mcPUIX::PUIXArray][mcPUIX::DBUIConfig][$param_tablename]['TABLE']['ELEMENTID']]);

				} else if($param_ConfigArray[mcPUIX::PUIXArray][mcPUIX::DBUIConfig][$param_tablename]['TABLE']['KINDOF'] === 'RELATION') {

				}

			}

			unset($return[mcPUIX::PUIXArray][mcPUIX::DOMValues][mcPUIX::FORM_NEW_ROW][mcPUIX::FORM_DO_ROW]['values']);
			$return[mcPUIX::PUIXArray][mcPUIX::DOMValues][mcPUIX::FORM_NEW_ROW][mcPUIX::FORM_DO_ROW]['values'] = array(
				mcPUIX::FORM_DO_NEW => mcPUIX::FORM_DO_NEW
			);
			$return[mcPUIX::PUIXArray][mcPUIX::DOMValues][mcPUIX::FORM_NEW_ROW][mcPUIX::FORM_DO_ROW]['value'] = mcPUIX::FORM_DO_NEW;		
//D::show($return, '$return');
			return $return;			
		}
			
	}

	/**
	 *	return DOMElement with PUIXArray
	 * 
	 * @param DOMDocument $param_DOMDocument
	 * @param array $param_Array	-- $param_Array[mcPUIX::PUIXArray][mcPUIX::DOMValues] = array()
	 *								-- return from mcPUIX_DOM::prepareArrayForDOMElement
	 * @return type 
	 */
	public static function getDOMElement_DBUIArray(DOMDocument $param_DOMDocument, array $param_Array, $param_formpath=null) {
//		D::show($param_Array, 'getDOMElement_DBUIArray');
		$DOMElement = $param_DOMDocument->createElement(mcPUIX::PUIXArray);
		
		if(mcArray::checkKeyHasFullArray($param_Array, mcPUIX::PUIXArray, mcPUIX::DOMValues)) {
			$DOMElement->setAttribute('count', count($param_Array));

			foreach($param_Array[mcPUIX::PUIXArray][mcPUIX::DOMValues] as $i => $row) {
				$DOMElement_Row = $DOMElement->appendChild($param_DOMDocument->createElement(mcPUIX::DOMRow));
				$DOMElement_Row->setAttribute('i', $i);
				
				if(is_array($row)) {
//					D::show($row, 'getDOMElement_DBUIArray'.$i);
					foreach($row as $column_name => $column_value) {
//						if(mcArray::checkKeyHasFullArray($column_value, 'value', mcPUIX::PUIXArray)) {
//							$DOM_Reference = mcPUIX_DOM::getDOMElement_DBUIArray($param_DOMDocument, $row);
//							$DOMElement_Row->appendChild($DOM_Reference);
//	//						D::show($row,' JETZT NE NEUE TABELLE');
//						} else 
						if($column_name === 'TABLE') {
						} else if ($column_name === mcPUIX::FORM_DO_ROW) {
						} else {
//							D::show($column_value, '$column_name'.$column_name);
							$DOMElement_Row->appendChild(mcPUIX_DOM::getDOMElement_Element($param_DOMDocument, $column_name, $column_value));
						}
					}
					if(mcArray::checkKeyHasFullArray($row, mcPUIX::FORM_DO_ROW)) {
						$DOMElement_Row->appendChild(mcPUIX_DOM::getDOMElement_Element($param_DOMDocument, mcPUIX::FORM_DO_ROW, $row[mcPUIX::FORM_DO_ROW]));
					}
				}
			}
		}
		return $DOMElement;
	}

	
	
	public static function getDOMElement_DBUIList(DOMDocument $param_DOMDocument, array $param_Array) {
		$DOMElement = $param_DOMDocument->createElement(mcPUIX::DOMList);
		$DOMElement->setAttribute('count', count($param_Array));
		foreach($param_Array as $key => $value) {
			$DOMElement_Row = $DOMElement->appendChild($param_DOMDocument->createElement('item'));
			$DOMElement_Row->setAttribute('key', $key);
			$DOMElement_Row->setAttribute('value', $value);
			$DOMElement_Row->setAttribute('label', $value);
		}
		return $DOMElement;
	}

	/**
	 *	return a DOMElement like <Element value='' label='' objvar='' ... /> with optional attributes
	 *
	 *	special cases depends from $param_Values['type']
	 *
	 * @since 100713
	 * @author f
	 *
	 * @param DOMDocument $param_DOMDocument
	 * @param string $param_objvar
	 * @param array $param_ValuesAttributes=array() ... attributes for the XML DOMElement
	 * @param string $param_ElementName='Element'
	 * @return DOMElement  
	 */
	public static function getDOMElement_Element(DOMDocument $param_DOMDocument, $param_objvar, array $param_ValuesAttributes=array(), $param_ElementName=mcPUIX::DOMElement) {

		$value = '';
		$values_Select_List_values = null;
		$values_DBUArray = null;
//D::show($param_ValuesAttributes, '$param_ValuesAttributes');
		if(array_key_exists('value', $param_ValuesAttributes)) {
			$value = $param_ValuesAttributes['value'];
			unset($param_ValuesAttributes['value']);
			if(mcArray::checkKeyHasFullArray($value, mcPUIX::PUIXArray, mcPUIX::DOMValues)) {
				$values_DBUArray = $value;
				$value = null;
			}
		}
		if(array_key_exists('values', $param_ValuesAttributes) && is_array($param_ValuesAttributes['values'])) {
			$values_Select_List_values = $param_ValuesAttributes['values'];
			unset ($param_ValuesAttributes['values']);
		}

		if(!array_key_exists('label', $param_ValuesAttributes) || !$param_ValuesAttributes['label']) {
			/**
			 *	@todo schönheitshalber sollte Language hier raus, da es zu sehr spezifisch ist @f 100721
			 */
			$param_ValuesAttributes['label'] = Language::getWord($param_objvar);
		}
		if(!array_key_exists('objvar', $param_ValuesAttributes) || !$param_ValuesAttributes['objvar']) {
			$param_ValuesAttributes['objvar'] = $param_objvar;
		}


		$DOMElement =$param_DOMDocument->createElement($param_ElementName);
		if(is_string($value)) {
			$DOMElement->nodeValue = Converter::encodeString($value);
		}

		if(array_key_exists('type', $param_ValuesAttributes)) {
			if($param_ValuesAttributes['type'] == mcPUIX::PUIXArray) {
				$DOM_Reference = mcPUIX_DOM::getDOMElement_DBUIArray($param_DOMDocument, $values_DBUArray);
				$DOMElement->appendChild($DOM_Reference);		
				
			} else if($param_ValuesAttributes['type'] == mcPUIX::FORM_TYPE_BASISELEMENT_SHORT && is_subclass_of($value, 'BasisElement')) {				
				$DOMBE = $value->getShortObjDOMElement($param_HostAccount, $param_iStorable, $param_DOMDocument, $param_DOMElementName) ;
				$DOMElement->appendChild($DOMBE);				
				
			} else if($param_ValuesAttributes['type'] == mcPUIX::FORM_TYPE_SEOLINK) {
				if(is_array($value)) {
					$DOMSEOLink = DOMElementHelper::getSEOLinkDOMElement($param_DOMDocument, $value['Host'], $value['SEOLink'], $value['Language'],  $value['OptionalValues']);
					$DOMElement->appendChild($DOMSEOLink);									
				}

				
			} else if($param_ValuesAttributes['type'] == 'text') {
				$DOMElement->nodeValue = Converter::encodeString($value);
				
				/**
				 * @todo wenn als value dann alle HTML-tags rauschmeissen!!!
				 */
				//$param_ValuesAttributes['value'] = substr($value, 0, 508).' ...' ;

			} else {
				if($param_ValuesAttributes['type'] == 'url') {
					$DOMElement->nodeValue = Converter::StringToUrl($value);

				} else if($param_ValuesAttributes['type'] == 'time') {
					if(!$value) {
						$value = time();
					}
					$param_ValuesAttributes['day'] = date('d', $value);
					$param_ValuesAttributes['month'] = date('m', $value);
					$param_ValuesAttributes['year'] = date('Y', $value);
					$param_ValuesAttributes['hour'] = date('G', $value);
					$param_ValuesAttributes['minute'] = date('i', $value);
					$param_ValuesAttributes['weekday'] = date('N', $value);

				} else if($param_ValuesAttributes['type'] == 'select') {
					if($values_Select_List_values) {
						$DOMElement->appendChild(mcPUIX_DOM::getDOMElement_DBUIList($param_DOMDocument, $values_Select_List_values));
					}

				}
				$param_ValuesAttributes['value'] = $value;

			}
		} else {
			$param_ValuesAttributes['value'] = $value;
		}



		if(!is_null($param_ValuesAttributes)) {
//			D::show($param_ValuesAttributes,$param_objvar )
			if(array_key_exists('objvar', $param_ValuesAttributes)) {
				$DOMElement->setAttribute('objvar', $param_ValuesAttributes['objvar']);
				unset($param_ValuesAttributes['objvar']);
			}

			/**
			 *	@todo hier ist bei französischen Strings ne WArnung, da kein Utf8 @f 100718
			 */
			foreach($param_ValuesAttributes as $PName => $PValue) {
				if(is_array($PValue)) {
					/**
					 * @todo noch mal checken was, wann hier kommt ... @f 100724
					 */
//					D::show($PValue, $param_objvar.' - '.$PName);
				} else {
					$DOMElement->setAttribute($PName, $PValue);
				}
				
			}
		}
		
		return $DOMElement;
	}
}

?>