void FillElementItems(ItemList.ElementItem[] elementItems, SynesisRegionRuleModel model) {
			elementItems.ForEach(x => {
				switch (x.name) {
					case "DirectionAlarm":
						model.DirectionAlarm = x.any.Deserialize<synesis.DirectionAlarm>();
						break;
					case "LoiteringAlarm":
						model.LoiteringAlarm = x.any.Deserialize<synesis.LoiteringAlarm>();
						break;
					case "Points":
						model.Points = x.any.Deserialize<synesis.RegionPoints>();
						ScalePointsInput(model.Points);
						break;
					case "SpeedAlarm":
						model.SpeedAlarm = x.any.Deserialize<synesis.SpeedAlarm>();
						break;
					case "AbandonedItemAlarm":
						model.AbandonedItemAlarm = x.any.Deserialize<synesis.AbandonedItemAlarm>();
						break;
					case "RegionMotionAlarm":
						model.RegionMotionAlarm = x.any.Deserialize<synesis.RegionMotionAlarm>();
						break;
				}
			});
		}
 void FillElementItems(ItemList.ElementItem[] elementItems, SynesisTripWireRuleModel model) {
     elementItems.ForEach(x => {
         switch (x.name) {
             case "Points":
                 model.TripPoints = x.any.Deserialize<synesis.TripWirePoints>();
                 ScalePointsInput(model.TripPoints);
                 break;
             //case "Direction":
             //    int i = 0;
             //    //model.TripDirection = x.Any.Deserialize<synesis.TripWireDirection>();
             //    break;
         }
     });
 }
 void FillSimpleItems(ItemList.SimpleItem[] simpleItems, SynesisTripWireRuleModel model) {
     simpleItems.ForEach(x => {
         switch (x.name) {
             case "Direction":
                 switch (x.value) { 
                     case "FromLeft":
                         model.TripDirection = controls.GraphEditor.TripWireEditor.TripWireDirection.FromLeft;
                         break;
                     case "FromRight":
                         model.TripDirection = controls.GraphEditor.TripWireEditor.TripWireDirection.FromRight;
                         break;
                     case "FromBoth":
                         model.TripDirection = controls.GraphEditor.TripWireEditor.TripWireDirection.FromBoth;
                         break;
                 }
                 //model.ruleId = XmlConvert.ToInt32(x.Value);
                 break;
         }
     });
 }
		elementDescr ParseXmlItem(ItemList.ElementItem elemItem) {
			var element = elemItem.any;
			elementDescr elem = new elementDescr() { Name = element.LocalName, XmlElement = element };

			ParseElementDescr(elem);
			
			return elem;
		}
 void FillData(ItemList.SimpleItem[] simpleItems, SynesisAnalyticsModel model) {
     simpleItems.ForEach(simple => {
         switch (simple.name) {
             case "EnableMovingRects":
                 model.EnableMovingRects = DataConverter.StringToBool(simple.value);
                 break;
             case "EnableSpeed":
                 model.EnableSpeed = DataConverter.StringToBool(simple.value);
                 break;
             case "EnableTimestamp":
                 model.EnableTimestamp = DataConverter.StringToBool(simple.value);
                 break;
             case "EnableSystemInformation":
                 model.EnableSystemInformation = DataConverter.StringToBool(simple.value);
                 break;
             case "EnableChannelName":
                 model.EnableChannelName = DataConverter.StringToBool(simple.value);
                 break;
             case "EnableTracking":
                 model.EnableTracking = DataConverter.StringToBool(simple.value);
                 break;
             case "EnableUserRegion":
                 model.EnableUserRegion = DataConverter.StringToBool(simple.value);
                 break;
             case "EnableRules":
                 model.EnableRules = DataConverter.StringToBool(simple.value); 
                 break;
             case "EnableCalibrationResults":
                 model.EnableCalibrationResults = DataConverter.StringToBool(simple.value);
                 break;
         }
     });
 }
		FrameworkElement GetTypeEditor(XmlSchemaType xtype, ItemList.SimpleItem sitem) {
			FrameworkElement felement = null;
			if (XmlSchemaType.IsDerivedFrom(xtype, XmlSchemaType.GetBuiltInSimpleType(XmlTypeCode.Boolean), XmlSchemaDerivationMethod.All)) {
				try {
					var val = XmlConvert.ToBoolean(sitem.value);
					felement = new CheckBox() {
						IsChecked = val,
						Margin = new Thickness(3)
					};
					felement.SetUpdateTrigger(
						CheckBox.IsCheckedProperty,
						(bool v) => {
							sitem.value = XmlConvert.ToString(v);
						}
					);
				} catch {
					felement = CreateTextEditor(sitem);
				}
			} else if (XmlSchemaType.IsDerivedFrom(xtype, XmlSchemaType.GetBuiltInSimpleType(XmlTypeCode.Integer), XmlSchemaDerivationMethod.All)) {
				try {
					var val = XmlConvert.ToInt32(sitem.value);
					felement = new IntegerUpDown() {
						Value = val,
						Margin = new Thickness(3),
						Increment = 1,
						VerticalAlignment = VerticalAlignment.Center,
						MinWidth = 50
					};
					felement.SetUpdateTrigger(
						IntegerUpDown.ValueProperty,
						(int v) => {
							sitem.value = v.ToString();
						}
					);
				} catch {
					felement = CreateTextEditor(sitem);
				}
			} else if (XmlSchemaType.IsDerivedFrom(xtype, XmlSchemaType.GetBuiltInSimpleType(XmlTypeCode.Float), XmlSchemaDerivationMethod.All)) {
				try {
					var val = XmlConvert.ToDouble(sitem.value);
					felement = new DoubleUpDown() {
						Value = val,
						CultureInfo = System.Globalization.CultureInfo.InvariantCulture,
						Margin = new Thickness(3),
						Increment = 0.1,
						FormatString = "F1",
						VerticalAlignment = VerticalAlignment.Center,
						MinWidth = 50
					};
					felement.SetUpdateTrigger(
						DoubleUpDown.ValueProperty,
						(double v) => {
							sitem.value = v.ToString();
						}
					);
				} catch {
					felement = CreateTextEditor(sitem);
				}
			} else if (XmlSchemaType.IsDerivedFrom(xtype, XmlSchemaType.GetBuiltInSimpleType(XmlTypeCode.Double), XmlSchemaDerivationMethod.All)) {
				try {
					var val = XmlConvert.ToDouble(sitem.value);
					felement = new DoubleUpDown() {
						Value = val,
						CultureInfo = System.Globalization.CultureInfo.InvariantCulture,
						Margin = new Thickness(3),
						Increment = 0.1,
						FormatString = "F2",
						VerticalAlignment = VerticalAlignment.Center,
						MinWidth = 50
					};
					felement.SetUpdateTrigger(
						DoubleUpDown.ValueProperty,
						(double v) => {
							sitem.value = v.ToString();
						}
					);
				} catch {
					felement = CreateTextEditor(sitem);
				}
			} else {
				felement = CreateTextEditor(sitem);
			}

			return felement;
		}
		FrameworkElement CreateTextEditor(ItemList.SimpleItem sitem) {
			var tedit = new TextBox() {
				Text = sitem.value,
				MinWidth = 50,
				VerticalAlignment = VerticalAlignment.Center
			};
			tedit.SetUpdateTrigger(
				TextBox.TextProperty,
				(string v) => {
					sitem.value = v;
				}
			);
			return tedit;
		}
		FrameworkElement GetSimpleEditorCtrl(XmlSchemaType xtype, string name, ItemList.SimpleItem sitem) {
			StackPanel spanel = new StackPanel();
			spanel.Orientation = Orientation.Horizontal;

			TextBlock tblock = new TextBlock();
			tblock.Margin = new Thickness(3);
			tblock.Text = name;
			tblock.MinWidth = 150;
			tblock.Foreground = Brushes.DarkGray;
			tblock.FontWeight = FontWeights.Bold;
			tblock.VerticalAlignment = System.Windows.VerticalAlignment.Center;

			spanel.Children.Add(tblock);

			spanel.Children.Add(GetTypeEditor(xtype, sitem));
			return spanel;
		}
		void FillElementItems(ItemList.ElementItem[] elementItems, SynesisAnalyticsModel model) {
			elementItems.ForEach(x => {
				switch (x.name) {
					case "AntishakerCrop":
						model.AntishakerCrop = x.any.Deserialize<synesis.AntishakerCrop>();
						ScaleAntishakerCropInput(model.AntishakerCrop);
						break;
					case "MarkerCalibration":
						model.Markers = x.any.Deserialize<synesis.MarkerCalibration>();
						ScaleMarkersInput(model.Markers);
						break;
					case "UserRegion":
						model.UserRegion = x.any.Deserialize<synesis.UserRegion>();
						ScaleUserRegionInput(model.UserRegion);
						break;
				}
			});
		}
		void FillSimpleItems(ItemList.SimpleItem[] simpleItems, SynesisAnalyticsModel model) {
			simpleItems.ForEach(x => {
				switch (x.name) {
					case "StabilizationTime":
						model.StabilizationTime = DataConverter.StringToInt(x.value);
						break;
					case "ShiftOutputPicture":
						model.ShiftOutputPicture = DataConverter.StringToBool(x.value);
						break;
					case "UseObjectTracker":
						model.UseObjectTracker = DataConverter.StringToBool(x.value);
						break;
					case "MaxObjectArea":
						model.MaxObjectArea = DataConverter.StringToFloat(x.value);
						break;
					case "MinObjectArea":
						model.MinObjectArea = DataConverter.StringToFloat(x.value);
						break;
					case "MaxObjectSpeed":
						model.MaxObjectSpeed = DataConverter.StringToFloat(x.value);
						break;
					case "DisplacementSensitivity":
						model.DisplacementSensivity = DataConverter.StringToInt(x.value);
						break;
					case "CameraObstructed":
						model.CameraObstructed = DataConverter.StringToBool(x.value);
						break;
					case "UseAntishaker":
						model.UseAntishaker = DataConverter.StringToBool(x.value);
						break;
					case "CameraRedirected":
						model.CameraRedirected = DataConverter.StringToBool(x.value);
						break;
					case "ContrastSensitivity":
						model.ContrastSensivity = DataConverter.StringToInt(x.value);
						break;
					case "ImageTooDark":
						model.ImageTooDark = DataConverter.StringToBool(x.value);
						break;
					case "ImageTooBlurry":
						model.ImageTooBlurry = DataConverter.StringToBool(x.value);
						break;
					case "ImageTooBright":
						model.ImageTooBright = DataConverter.StringToBool(x.value);
						break;
					case "ImageTooNoisy":
						model.ImageTooNoisy = DataConverter.StringToBool(x.value);
						break;
				}
			});
		}