diff --git a/fhem/www/pgm2/MSwitch_Web.js b/fhem/www/pgm2/MSwitch_Web.js
index c5a5b84f8..4b817a553 100644
--- a/fhem/www/pgm2/MSwitch_Web.js
+++ b/fhem/www/pgm2/MSwitch_Web.js
@@ -2,7 +2,7 @@
 // Autor:Byte09
 // #########################
 
-	var version = '0.1';
+	var version = '1.0';
 	var info = '';
 	var debug ='off';
 	
@@ -10,6 +10,15 @@
 
 	var globaldetails2 = 'start';
 	var globallock='';
+	var t=$("#MSwitchWebTR"), ip=$(t).attr("ip"), ts=$(t).attr("ts");
+	FW_replaceWidget("[name=aw_ts]", "aw_ts", ["time"], "12:00");
+	$("[name=aw_ts] input[type=text]").attr("id", "aw_ts");  
+	
+	var randomdev=[];
+	
+	
+	var globalaffected;
+	var auswfirst=document.getElementById('devices');
 
 function teststart(){
 // alle startfunktionen ausführen 
@@ -96,19 +105,13 @@ if (debug == 'on'){ alert(devicename+' Debug MSwitchweb an') };
 	return;
 	})
 	
-	
-	
-	
-	
-	
-	
-	var randomdev=[];
+
 	var x = document.getElementsByClassName('randomidclass');
     for (var i = 0; i < x.length; i++) 
 		{
 		var t  = x[i].id;
 		randomdev.push(t);
-		}
+		} 
 	
 	
 	// --------------------
@@ -258,6 +261,7 @@ if (document.getElementById('trigcmdon'))
 		}
 	}
 
+
 // next   ##################################################
 
 
@@ -292,22 +296,25 @@ if (document.getElementById('trigcmdon'))
 	$( "#log2" ).text( "" );
 	$( "#log1" ).text( "eingehende events:" );
 	$( "#log3" ).text( "" );
-	 /* 
+	 
 	var field = $('<select style="width: 30em;" size="5" id ="lf" multiple="multiple" name="lf" size="6"  ></select>');
+	
 	$(field).appendTo('#log2');
-	var field = $('<input id ="editevent" type="button" value="$EDITEVENT"/>');   // !!!!! #######
+	
+	var field = $('<input id ="editevent" type="button" value="'+editevent+'"/>');   // !!!!! #######
+	
 	$(field).appendTo('#log3');
 	$("#editevent").click(function(){
 	transferevent();
 	return;
 	});
- 
+
 	// umwandlung des objekts in standartarray
 	var a3 = Object.keys(o).map(function (k) { return o[k];})
  
 	// array umdrehen
 	a3.reverse();
- 
+  
 	// eintrag in dropdown
 	if (atriwaaray[test] != 1)
 		{
@@ -321,7 +328,7 @@ if (document.getElementById('trigcmdon'))
 		var newselect = $('<option value="'+test+'">'+test+'</option>');
 		$(newselect).appendTo('#trigoff');
 		}
- 
+  
 	// aktualisierung der divx max 5
 	var i;
 	for (i = 0; i < 10; i++) 
@@ -332,30 +339,70 @@ if (document.getElementById('trigcmdon'))
 			$(newselect).appendTo('#lf'); 
 			}
 		}  
- 
-  */
- 
- 
+
 });
 
-
-
 // next   ##################################################
 	
 	
 	
 	
-	
-	
-	
-	
-	
-	
-	
-	
-	
-	
-	
+	if (HASHINIT != 'define')
+	{
+		
+		for (i=0; i<auswfirst.options.length; i++)
+			{
+			var pos=auswfirst.options[i];
+				if(pos.selected)
+				{
+				//alert (pos.value);
+				globalaffected +=pos.value;
+				}
+			}
+		//alert (globalaffected);
+		 var sel1 = document.getElementById('devices');
+			
+			if (UNLOCK == '1')
+			{
+				globallock =' this device is locked !';
+				[ "aw_dev","aw_det","aw_trig","aw_md","aw_md1","aw_md2","aw_addevent"].forEach (lock,);
+				randomdev.forEach (lock);
+			}
+			
+			if (UNLOCK == '2')
+			{
+				globallock =' only trigger is changeable';
+				[ "aw_dev","aw_det","aw_md","aw_md1","aw_md2","aw_addevent"].forEach (lock,);
+				randomdev.forEach (lock);
+			}
+			
+		sel1.onchange = function() 
+		{
+			var actaffected;
+			var auswfirst=document.getElementById('devices');
+			for (i=0; i<auswfirst.options.length; i++)
+				{
+				var pos=auswfirst.options[i];
+				if(pos.selected)
+					{
+					//alert (pos.value);
+					actaffected +=pos.value;
+					}
+				}
+
+			if (actaffected != globalaffected)
+				{
+				globallock =' unsaved affected device';
+				[ "aw_det","aw_trig","aw_md","aw_md1","aw_md2","aw_addevent"].forEach (lock,);
+				randomdev.forEach (lock);
+				}
+			else
+				{
+				[ "aw_det","aw_trig","aw_md","aw_md1","aw_md2","aw_addevent"].forEach (unlock,);
+				randomdev.forEach (unlock);
+				}
+		}	 
+	}
 	
 	
 return;
@@ -793,25 +840,6 @@ if (debug == 'on'){ alert('aktvalue') };
 
 
 
-
-/* // unbekannt
-function noarg(target,copytofield){
-if (debug == 'on'){ alert('noarg') };
-	document.getElementById(copytofield).value = '';
-	document.getElementById(target).innerHTML = '';
-	return;
-	}
-	 
-	
-// unbekannt				   
- function noaction(target,copytofield){
-	 document.getElementById(copytofield).value = '';
-	 document.getElementById(target).innerHTML = '';
-	 return;}
-	*/
-	
-
-
 // unbekannt
 function writeattr(){
 if (debug == 'on'){ alert('writeattr') };
@@ -821,7 +849,6 @@ if (debug == 'on'){ alert('writeattr') };
 	location = location.pathname+"?detail="+devicename+"&cmd=set "+addcsrf(def);
 	}
 
-
 // lösche log
 function clearlog(){
 if (debug == 'on'){ alert('clearlog') };
@@ -831,9 +858,6 @@ if (debug == 'on'){ alert('clearlog') };
 	 location = location.pathname+"?detail="+devicename+"&cmd=set "+addcsrf(def);
 	 }
 	 
-	 
-	
-
 // unbekannt	 
 function savesys(conf){
 if (debug == 'on'){ alert('savesys') };
@@ -891,90 +915,7 @@ if (debug == 'on'){ alert('checkcondition') }
 	}
 	
 	
-// doppelt	
-/* function saveconfig(conf){
-	if (debug == 'on'){ alert('saveconfig') }
-	conf = conf.replace(/\n/g,'#[EOL]');  // !!!
-	conf = conf.replace(/:/g,'#c[dp]');
-	conf = conf.replace(/;/g,'#c[se]');
-	conf = conf.replace(/ /g,'#c[sp]');
-	var nm = $(t).attr("nm");
-	var  def = nm+" saveconfig "+encodeURIComponent(conf);
-	location = location.pathname+"?detail="+devicename+"&cmd=set "+addcsrf(def);
-	} */
-	 
-	
-	
-/*
-// unbekannt
-function textfield(copytofield,target){
-	if (debug == 'on'){ alert('textfield') };
-	var selected =document.getElementById(copytofield).value;
-	if (copytofield.indexOf('cmdonopt') != -1) 
-		{
-		var selectfield = "<input type='text' size='30' value='" + selected +"' onchange=\"javascript: showtextfield(this.value,'" + copytofield + "','" + target + "')\">"  ;
-		document.getElementById(target).innerHTML = selectfield + '<br>';	
-		}
-	else
-		{
-		var selectfield = "<input type='text' size='30' value='" + selected +"' onchange=\"javascript: showtextfield(this.value,'" + copytofield + "','" + target + "')\">"  ;
-		document.getElementById(target).innerHTML = selectfield + '<br>';
-		}
-	return;
-	}  
-
-*/
-
-/*
-
-function hilfe(text){
-	
-	test = "ein langer \
-	string";
-	
-if (debug == 'on'){ alert('hilfe') };
-
-
-
-//vonSeite.close();
-
-
-
-
-}
-
-
-
-
-
-//######################################################################################
-
-// nicht in funktion - geht noch nicht
-function selectfield(args,target,copytofield){
-alert('selectfield');
-	var cmdsatz = args.split(",");
-	var selectstart = "<select id=\"" +target +"1\" name=\"" +target +"1\" onchange=\"javascript: aktvalue('" + copytofield + "',document.getElementById('" +target +"1').value)\">"; 
-	var selectend = '<\select>';
-	var option ='<option value="noArg">noArg</option>'; 
-	var i;
-	var len = cmdsatz.length;
-	var selected =document.getElementById(copytofield).value;
-	for (i=0; i<len; i++){
-	if (selected == cmdsatz[i]){
-	option +=  '<option selected value="' + cmdsatz[i] + '">' + cmdsatz[i] + '</option>';
-	}
-	else{
-	option +=  '<option value="' + cmdsatz[i] + '">' + cmdsatz[i] + '</option>';
-	}
-	}
-	var selectfield = selectstart + option + selectend;
-	document.getElementById(target).innerHTML = selectfield + '<br>';	
-	return;
-	}	 */  
-		
-//######################################################################################	
-	
-	
+// next
 	
 	$("#eventmonitor").click(function(){
 	var check = $("[name=eventmonitor]").prop("checked") ? "1":"0";
@@ -997,6 +938,55 @@ alert('selectfield');
 
 // clickfunktions
 
+
+// details speichern
+/* 	$("#aw_det").click(function(){
+	var nm = $(t).attr("nm");
+	devices = '';
+	eval(JAVAFORM);
+	devices = devices.replace(/:/g,'#[dp]');
+	devices = devices.replace(/;/g,'#[se]');
+	devices = devices.replace(/ /g,'#[sp]');
+	devices = devices.replace(/%/g,'#[pr]');
+	devices =  encodeURIComponent(devices);
+	var  def = nm+" details "+devices+" ";
+	location = location.pathname+"?detail="+devicename+"&cmd=set "+addcsrf(def);
+	});
+	 */
+
+// modify trigger aw_save
+	$("#aw_md").click(function(){
+	if (debug == 'on'){ alert('#aw_md') };
+	var nm = $(t).attr("nm");
+	trigon = $("[name=trigon]").val();
+	trigon = trigon.replace(/ /g,'~');
+	trigoff = $("[name=trigoff]").val();
+	trigoff = trigoff.replace(/ /g,'~');
+	trigcmdon = $("[name=trigcmdon]").val();
+	trigcmdon = trigcmdon.replace(/ /g,'~');
+	trigcmdoff = $("[name=trigcmdoff]").val();
+	if(typeof(trigcmdoff)=="undefined"){trigcmdoff="no_trigger"}
+	trigcmdoff = trigcmdoff.replace(/ /g,'~');
+	trigsave = $("[name=aw_save]").prop("checked") ? "ja":"nein";
+	trigwhite = $("[name=triggerwhitelist]").val();
+	if (trigcmdon == trigon  && trigcmdon != 'no_trigger' && trigon != 'no_trigger'){
+	FW_okDialog('on triggers for \'switch Test on + execute on commands\' and \'execute on commands only\' may not be the same !');
+	return;
+	} 
+	if (trigcmdoff == trigoff && trigcmdoff != 'no_trigger' && trigoff != 'no_trigger'){
+	FW_okDialog('off triggers for \'switch Test off + execute on commands\' and \'execute off commands only\' may not be the same !');
+	return;
+	} 
+	if (trigon == trigoff && trigon != 'no_trigger'){
+	FW_okDialog('trigger for \'switch Test on + execute on commands\' and \'switch Test off + execute off commands\' must not both be \'*\'');
+	return;
+	} 
+	var  def = nm+" trigger "+trigon+" "+trigoff+" "+trigsave+" "+trigcmdon+" "+trigcmdoff+" "  ;
+	location = location.pathname+"?detail="+devicename+"&cmd=set "+addcsrf(def);
+	});
+
+
+
 	// unbekannt
 	$("#aw_little").click(function(){
 	if (debug == 'on'){ alert('#aw_little') };