function ButtonCommit(selector, func ) {
	this.target = document.querySelector(selector);
	this.func = func;
}

ButtonCommit.prototype.start = function () {
	this.target.className = this.target.className +" " + "commitLoading";
	//console.log(this.target.className);
	this.target.disabled=true;

};

ButtonCommit.prototype.end = async function () {
	this.target.classList.remove("commitLoading");
	this.target.disabled=false;
};

ButtonCommit.prototype.dealAddToCart = async function(selector, goodsId, itemType) {
	console.log("23232");
	this.target = document.querySelector(selector);
	if(this.target == null){
		//console.log("asd")
		return;
	}
	if(this.target == true){
		return;
	}
	this.start();

	await Cart.AddToCart(goodsId, itemType);

	this.end();

}

ButtonCommit.prototype.dealClick = async function( params) {

	if(this.target == null){
		return;
	}
	if(this.target.disabled == true){
		return;
	}
	this.start();

	await this.func(params);
		//	console.log("asdend")
	this.end();

}

function setTimeoutDeal(func) {
	//setTimeout(function() {
		//func();
		    try {
                 func();
            } catch (error) {
                //console.error(error);
            }

	//}, 100)
}

const buttonBuyNow = new ButtonCommit("#buy-now-button", async function(params){
	setTimeoutDeal(function(){shopActions.webVisitsAddCartTimeAsync()})
	await cart.quickBuy(params.goodsId, params.type)
});

const buttonAddCart = new ButtonCommit("#add-to-cart-button", async function(params){
	setTimeoutDeal(function(){shopActions.webVisitsAddCartTimeAsync()})
	await cart.addToCart(params.goodsId, params.type)
});

const buttonCheckOut = new ButtonCommit("#btn-checkout", async function(){
	setTimeoutDeal(function(){shopActions.webVisitsAddCheckOutTimeAsync()})
	await cart.checkOut()
});

const btnSignin = new ButtonCommit("#btn-sign-in", async function(params) {
	setTimeoutDeal(function(){shopActions.webVisitsAddSignInTimeAsync()})
	await users.signInAsync(params.username, params.password, params.accountType)
});

const btnSignup = new ButtonCommit("#btn-sign-up", async function(params) {
	setTimeoutDeal(function(){shopActions.webVisitsAddSignUpTimeAsync()})
	await users.signUpAsync(params.identifier, params.credential, params.confirmPassword)
});	

const btnChangePassword = new ButtonCommit("#btn-change-password", async function(params) {
	await users.changePasswordAsync(params.oldPassword, params.newPassword, params.confirmNewPassword)
});		