var OneTouch = {
	
	init: function(){
		
		$('select[class*="unitSelect"]').selectbox({
			inputClass: 'selectboxUnits',
			containerClass: 'selectboxUnitsWrapper',
			scrollBar: true,
			chainTitle: false,
			onChange: OneTouch.changeUnitsNumber
		});
		//simulate click on units select. Propose of this is to show correct profit
		$('div.selectboxUnitsWrapper ul li.selected').click();
		
		

		//events
		$('li.oneTouch input.buy').click(OneTouch.onBuy);
		$('input'.backBtn).click(OneTouch.onBack);
		$('input.showGraph').click(OneTouch.showGraph);
		$('input.oneTouchApply').click(OneTouch.newPositionMade);
		$('input.buyMore').click(OneTouch.onBuyMore);
		$('input.popupClose').click(OneTouch.closePopup);
		$('input#closePromotion').click(OneTouch.onClosePromotion)
			//login fields
		General.container.find('div.popup input[name="email"]').focus(General.onFocusEmail).blur(General.onBlurEmail);
		General.container.find('div.popup input[name="passwordFake"]').bind('focus', {container: 'div.popup '}, General.onFocusPassword);
		General.container.find('div.popup  input[name="password"]').bind('blur', {container: 'div.popup '}, General.onBlurPassword);
		
		Graphs.loadOneTouchGraphs(204, 133);
	},
	
	onBuy: function(event){
		var mainBox = $(event.target).parent().parent();
		OneTouch.show('applyPositions', mainBox.attr('boxid'));
	},
	
	onBack: function(event){
		var mainBoxId = $(event.target).attr('boxid');
		OneTouch.show('mainBox', mainBoxId);
	},
	
	changeUnitsNumber: function(numberOfUnits, name, element){
		numberOfUnits = parseInt(numberOfUnits);
		var applyBox = element.parents('li');
		var mainBox = $('li[class*="mainBox"][boxid="' + applyBox.attr('boxid') + '"]')
		var profit = parseInt(mainBox.find('div.profit').text());
		var unitPrice = parseInt(applyBox.find('span.unitPrice').text());
		
		var payout = parseInt(OneTouch.calculatePayout(profit, unitPrice, numberOfUnits));
		applyBox.find('td.oneTouchPayout').text(payout +  AppData.accountCurrency)
		   .end()
		   .find('span.numberOfUnits').text(numberOfUnits)
		   .end()
		   .find('span.unitPriceTotal').text((unitPrice * numberOfUnits) + AppData.accountCurrency);
	},
	
	calculatePayout: function(profit, unitPrice,  numberOfUnits){
		return Math.round(numberOfUnits * unitPrice * (profit/100 + 1));
	},
	
	showGraph: function(event){
		var mainBoxId = $(event.target).parent().parent().attr('boxid');
		OneTouch.show('graph', mainBoxId);
		
	},
	/**
		listClassName - li with this class name will be shown
	**/
	show: function(listClassName, mainBoxId){
		$('li[boxid="' + mainBoxId + '"]').addClass('hidden');
		$('li[boxid="' + mainBoxId + '"][class*="' + listClassName + '"]').removeClass('hidden')
			
	},
	
	newPositionMade: function(event){
		var applyBox = $(event.target).parents('li');
		var mainBoxId = applyBox.attr('boxid');
		var numberUnits = applyBox.find('div.selectboxUnitsWrapper ul li.selected').text();
		var optionId = applyBox.find('input[name="oneTouchOptionId"]').val()
		$.post(AppData.url + AppData.pageId + '/insertOneTouchPosition',{numberUnits: numberUnits, optionId: optionId}, function(data){
			if (typeof data == 'number') {//data is a number of units that left fo current option
				//Update balance
				var currentBalance = parseInt($('#currentBalance').text());
				var amount = parseInt(applyBox.find('span.unitPriceTotal').text());
				$('#currentBalance').text(currentBalance - amount);
				if(data > 0){
					var indexes = data - 1;
					applyBox.find('div.selectboxUnitsWrapper ul li:gt(' + indexes + ')').remove()
					   .end()
					   .find('input.buyMore').removeClass('hidden')
					   .end()
					   .find('div.selectboxUnitsWrapper  ul li:eq(0)').click();	  
				}
				else{//data ==0
					$('li[class*="thankYou"][boxid="' + mainBoxId + '"]').find('input.buyMore').addClass('hidden');
					
				}
				OneTouch.show('thankYou', mainBoxId);
			}
			else {//Error accurd
				var errorBox = $('li[class*="errors"][boxid="' + mainBoxId + '"]'); 
				switch(data){//data is an error key
					case 'notLoggedIn':
						errorBox.find('div.popup').removeClass('hidden')
											 .find('div.popupTitle span')
											 	.text(AppData.langHome.loginPopupTitle)
											 	.end()
											 .end()
										 	.find('div#notLoggedIn')
										 		.removeClass('hidden');
								  		break;
					case 'optionIsClosed':
							
						OneTouch.showPopup(errorBox, AppData.langHome.optionIsClosedErrorPopupTitle,  AppData.langHome.optionIsClosedErrorPopupMessage, '', false);
						break;
					case 'insufficientFunds':
						OneTouch.showPopup(errorBox, AppData.langHome.insufficientFundsErrorPopupTitle,  AppData.langHome.insufficientFundsIsErrorPopupMessage, '', true);
						break;
					case 'allUnitsWasted':
						OneTouch.showPopup(errorBox, AppData.langHome.allUnitsWastedTitle,  AppData.langHome.allUnitsWasted, '', false);
						break;
					case 'suspended':
						 OneTouch.showPopup(errorBox, AppData.langHome.optionSuspendedPopupTitle,  AppData.langHome.optionSuspendedPopupMessage, '', false);
						 break;
				}
				OneTouch.show('errors', mainBoxId);			
			}
							
		}, 'json')
						
	},
	
	onBuyMore: function(event){
		var mainBoxId = $(event.target).parents('li').attr('boxId');
		OneTouch.show('applyPositions', mainBoxId);
	},
	
	onUpdateTime: function(){
		$('li.mainBox div.time').each(function(){
			var endSaleTimeMs = parseInt($(this).attr('timeleft')) * 1000;
			var deferenceTime = (endSaleTimeMs  + AppData.timeZoneOffset - General.dateTime.getTime());
            var timeLeft = OneTouch.convertMsToTime(deferenceTime);
           	timeLeft = timeLeft.split(':');
            $(this).text(timeLeft[1] + ' h ' + timeLeft[2] + ' min ' + timeLeft[3] + ' sec');
		});      
	}, 
	/**
     * Close pop up window
     */
    closePopup: function(event){
    	var errorBox = $(event.target).parents('li');
       	errorBox.find('div.popupMessageContainer, div#notLoggedIn, a#depositLink').addClass('hidden');
        OneTouch.show('mainBox', errorBox.attr('boxid'));	
    },
       
    showPopup: function(errorBox, popupTitle, popupFirstLine, popupSecondLine, showDeposit){
    	
       	if(showDeposit) errorBox.find('div.popup a#depositLink').removeClass('hidden');
       	errorBox.find('div.popup').find('div.popupTitle span')
       							 .text(popupTitle)
       							 .end()
       							 .find('span.popupWarning').text(popupFirstLine)
       							 .end()
       							 .find('span.popupSum span').text(popupSecondLine)
       							 .end()
       							 .removeClass('hidden')
       							 .find('div.popupMessageContainer')
       							 .removeClass('hidden');
       							
       	
    },
    
    onClosePromotion: function(event){
		var promotionElem = $(event.target).parent();
		promotionElem.animate({
				height:'0px'
	    }, 1500, function(){$(this).css('display', 'none')});
	},
	
	convertMsToTime: function(ms){
		
		
		var sec = Math.floor(ms/1000)
		ms = ms % 1000
		t = OneTouch.three(ms)
		
		var min = Math.floor(sec/60)
		sec = sec % 60
		t = OneTouch.two(sec) + ":" + t
		
		var hr = Math.floor(min/60)
		min = min % 60
		t = OneTouch.two(min) + ":" + t
		
		var day = Math.floor(hr/60)
		hr = hr % 60
		t = OneTouch.two(hr) + ":" + t
		t = day + ":" + t
		
		return t;
	},
	 
	two: function(x){
		return ((x > 9) ? "" : "0") + x
	},
	
	three: function(x){
		return (( x > 99) ? "" : "0") + (( x > 9) ? "" : "0" ) + x

	}
	
	
}
$(OneTouch.init);