/**
 * @author cashbit
 */
var WorkFlowState = {
		basketitemcount : 0,
		loggedin: false,
		goodstodeliver : false,
		tobepayed : false,
		onlinepayment_selected : false,
		onlinepayment_ok : false
	}

var shopping = new WorkFlowStep('shopping') ;
var checkout = new WorkFlowStep('checkout') ; 
var login = new WorkFlowStep('login') ;
var delivery_address = new WorkFlowStep('delivery_address') ;
var delivery_selection = new WorkFlowStep('delivery_selection') ;
var payment_selection = new WorkFlowStep('payment_selection') ;
var pay_online = new WorkFlowStep('pay_online') ;
var purchase_done = new WorkFlowStep('purchase_done') ;


shopping.NextSteps = [{
	step: checkout,
	condition: WorkFlowState.basketitemcount > 0,
	message: 'You have to put something in the basket'
}] ;
shopping.onStart = function(){
	if (WorkFlowState.loggedin){
		WorkFlowState.loggedin = false ;
		
	}
	OnMxLogout() ;
}

checkout.NextSteps = [{step: delivery_address, condition: WorkFlowState.loggedin && WorkFlowState.goodstodeliver},
					  {step: login, condition: !WorkFlowState.loggedin},
					  {step: payment_selection, condition: WorkFlowState.loggedin && !WorkFlowState.goodstodeliver}] ;

login.NextSteps = [{step: delivery_address, condition: WorkFlowState.goodstodeliver},
				   {step: payment_selection, condition: !WorkFlowState.goodstodeliver && WorkFlowState.tobepayed },
				   {step: purchase_done, condition: !WorkFlowState.goodstodeliver && !WorkFlowState.tobepayed }] ;
login.onStart = function(){
	WorkFlowState.loggedin = true ;
	OnMxLogin();
}

delivery_address.NextSteps = [{step: delivery_selection, condition: true}] ;

delivery_selection.NextSteps = [{step: payment_selection, condition: WorkFlowState.tobepayed},
								{step: purchase_done, condition: !WorkFlowState.tobepayed}] ;

payment_selection.NextSteps = [{step: pay_online, condition: WorkFlowState.onlinepayment_selected},
							   {step: purchase_done, condition: !WorkFlowState.onlinepayment_selected}] ;

pay_online.NextSteps = [{step: purchase_done, condition: WorkFlowState.onlinepayment_ok},
						{step: payment_selection, condition: !WorkFlowState.onlinepayment_ok}] ;

function onStepStart(){
	//alert(this.ActualStep.Name + ' started') ;
	/*
	if (this.ActualStep.Name ==  'delivery_address') {
		return false ;
	}*/
	//return true ;
}

function onStepCannot(Step,message){
	if (Step){
		alert('You are now in ' + Step.Name + ' you cannot go over because ' + message) ;
	} else {
		alert('You are now in ' + this.ActualStep.Name + ' and cannot go over because ' + message)
	}
	
	/*
	if (this.ActualStep.Name ==  'delivery_address') {
		return false ;
	}*/
	//return true ;
}

var mxKartWorkFlow = WorkFlow('mxKartWorkFlow') ;
mxKartWorkFlow.Targets = [purchase_done] ;
mxKartWorkFlow.onStep = onStepStart ;
mxKartWorkFlow.onCannotStep = onStepCannot ;

// just to try if ok
//mxKartWorkFlow.Step();
//alert(mxKartWorkFlow.ActualStep.Name) ;
