var mixObject = {
    createPreview:function(containingDiv, labelText, callback){
		require([ "dojo/dom-construct", "dojo/dom-class" ], this.lang.hitch(this, function(domConstruct, domClass){
			domClass.add(containingDiv, "BPMWYSIWYG");
			buttonDiv = domConstruct.create("div");
			domConstruct.place(buttonDiv, containingDiv);
			domClass.add(buttonDiv, "Button");
			this.button = domConstruct.create("button");
        	
			domConstruct.place(this.button, buttonDiv);
			domClass.add(this.button, "BPMButton");
			domClass.add(this.button, "BPMButtonBorder");
			this.context.coachViewData.labelTextDom = document.createTextNode(labelText);
			this.button.appendChild(this.context.coachViewData.labelTextDom);

			callback();
		}));	
    },
	
    propertyChanged:function(propertyName, propertyValue){
		var configHelperUri = this.context.getManagedAssetUrl("ConfigHelper.js",this.context.assetType_WEB);
		require(["dojo/dom-style", "dojo/dom-class", configHelperUri], this.lang.hitch(this, function(domStyle, domClass, configHelper){
			if(propertyName == "@label") {
				this.context.coachViewData.labelTextDom.data = !!propertyValue ? propertyValue : this.context.coachViewData.label;
			} else if(propertyName == "@style"){
				var width = configHelper.getResponsiveConfigOptionValue(this, "@width");
				var minWidth = configHelper.getResponsiveConfigOptionValue(this, "@minWidth");
				if(!!width || !!minWidth) {
					this.button.style.width = "100%";
				} else {
					this.button.style.width = "";
				}
			}
		}));	
    },
	
	modelChanged: function(propertyName, propertyValue) {
		if(propertyName == "@label") {
			this.context.coachViewData.label = propertyValue;
		}
	}
};