/*=================================================================================
	//Onload Handler
===================================================================================*/
$(function(){
	
	//init Language Selection drop down
	initLanguageSelection();
	
	//init calculator form
	initCalculatorForm();
	
	//init Button Hidden Options
	initButtonHiddenOptions();
	
	//live Validation
	liveValidation();
	
});

/*=================================================================================
	//Init Language Selection
===================================================================================*/
function initButtonHiddenOptions(){
	
	//storing trigger anchor
	var trigger = $("#changeLanguage");
	
	//hover handler
	trigger.hover(function(evt){
	
		//slideDown animation
		$(this).children("#accordeonChangeLanguage").animate({ height: 'show' },50,function(){
			$(this).children("#accordeonChangeLanguage").addClass("visible");
		});
		
	},function(){
		
		//slide up animation
		$(this).children("#accordeonChangeLanguage").animate({ height: 'hide' },50,function(){
			$(this).children("#accordeonChangeLanguage").removeClass("visible");
		});
		
	});

}

/*=================================================================================
	//Init Language Selection
===================================================================================*/
function initLanguageSelection(){

	//storing language select
	var dropDown = $("#selectLanguage");
	
	//on change listener
	dropDown.change(function(){
		
		//redirecting
		window.location.replace("index.php?lang="+$(this).val());
	});

}

/*=================================================================================
	//Init calculator Form
===================================================================================*/
function initCalculatorForm(){
	
	//this are the containers that need to be shown after clicking on submit
	var containerOne = $("#rightSide"),
		containerTwo = $("#contentTxt");
	
	
	//results screen
	var response1 = $("#boxesResults #result1 p"),
		response2 = $("#boxesResults #result2 p"),
		response3 = $("#boxesResults #result3 p");
	
	//input fields
	var region = $("#calculatorForm #selectRegion");
	var dispensers = $("#calculatorForm #dispensers");
	var volumeSite = $("#calculatorForm #volumeSite");
	var volumeSiteType = $("#calculatorForm #volumeSiteType");
	var fuelPrice = $("#calculatorForm #fuelPrice");
	var fuelPriceType = $("#calculatorForm #fuelPriceType");
	var xFlo = $("#calculatorForm #Xflo");
	
	$("#sb").focus();
	
	//array with input fields
	var userInputs = new Array(region, dispensers, volumeSite, volumeSiteType, fuelPrice, fuelPriceType, xFlo);
	
	//onsubmit handler
	$("#sb").click(function(){
		
		//
		$(".loadingResult").addClass("loading");
		
		//clearing result fields
		response1.text("");
		response2.text("");
		response3.text("");
		
		//storing volume and currency type in order to be able to use them in the response fields
		var volumeType =  $("#volumeSiteType option:selected").text();
		var currencyType =  $("#fuelPriceType option:selected").text();
		
		// valid form flag
		var valid = validateForm(userInputs);
		
		//if validation successfull
		if(valid){
			
			
			
			//showing hidden containers
			containerOne.removeClass("hideContent");
			containerTwo.removeClass("hideContent");
		
		
			//AJAX
			$.post("calculator.php",{//
				"region": region.val(),
				"dispensers": dispensers.val(),
				"volumeSite": volumeSite.val(),
				"volumeSiteType": volumeSiteType.val(),
				"fuelPrice": fuelPrice.val(),
				"fuelPriceType": fuelPriceType.val(),
				"xFlo": xFlo.val()
			},function(data){
				
				if(data){
					
					$(".loadingResult").removeClass("loading");
					
					//writing response to html
					response1.html(data.potencialSavings +" "+"<br/> <span>"+volumeType+"</span>");
					response2.html(data.potencialTotal +" "+"<br/> <span>"+currencyType+"</span>");
					
					
					switch( $("#wrapper").attr("class")  ){
						case "en":
							if( data.payback == 1 )
								response3.html(data.payback + "<br/> <span>month</span>");
							else
								response3.html(data.payback + "<br/>  <span>months</span>");
						break;
						
						case "ru":
							if( data.payback == 1 )
								response3.html(data.payback + "<br/> <span>Месяц</span>");
							else
								response3.html(data.payback + "<br/> <span>Месяцы</span>");
						break;
						
						case "tr":
							
							if( data.payback == 1 )
								response3.html(data.payback + "<br/> <span>ay</span>");
							else
								response3.html(data.payback + "<br/> <span>aylar</span>");
						break;
					}
					
				}
				
			},'json');
			
			
			
		}
		
		return false;
	});

}

/*==================================================================================================
		LIVE VALIDATION
*===================================================================================================*/
function liveValidation(){
	//input fields
	var region = $("#calculatorForm #selectRegion");
	var dispensers = $("#calculatorForm #dispensers");
	var volumeSite = $("#calculatorForm #volumeSite");
	var volumeSiteType = $("#calculatorForm #volumeSiteType");
	var fuelPrice = $("#calculatorForm #fuelPrice");
	var fuelPriceType = $("#calculatorForm #fuelPriceType");
	var xFlo = $("#calculatorForm #Xflo");
	
	//array with input fields
	var userInputs = new Array(region, dispensers, volumeSite, volumeSiteType, fuelPrice, fuelPriceType, xFlo);

	for (var i=0; i < userInputs.length; i++){
		
		
		
		userInputs[i].keydown(function(event){
			
			//console.log(event.keyCode);
			//only for double number
			if($(this).hasClass("doubleNumber")){
				
				//if dot backspace, enter or tab
				if ( event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 110 || event.keyCode == 190 ||event.keyCode == 9 ) {
					
					//prevent dot at the beggining
					if( ($(this).val().length < 1 && event.keyCode == 110) || ($(this).val().length < 1 && event.keyCode == 190) ){
						event.preventDefault();
					}
					
					//prevent more than 1 dot
					if( ($(this).val().split(".").length - 1 > 0 && event.keyCode == 110) || ($(this).val().split(".").length - 1 > 0 && event.keyCode == 190) ){
						event.preventDefault();
					}
					
				}
				else {//for the rest of the letters
				
					// if not a number
					if ((event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105 )) {
						event.preventDefault(); 
					}   
				}
				
			}else{//for regular numbers
				
				//allow backspace and enter or tab
				if ( event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 9 ) {
				
				}
				else {
					// if not a number
					if ((event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105 )) {
						//console.log("block");
						event.preventDefault(); 
					}   
				}
				
			}

		});
	}
}


/*=================================================================================
	//Form validation method for multiple Inputs
===================================================================================*/
function validateForm(inputs){
	
	//boolean flag
	var valid = true;
	
	
	
	for(var i=0; i < inputs.length; i++){
		
		//validate if fileds are empty
		if(inputs[i].val() == "" || inputs[i].val() == 0 ){
			
			
			if(inputs[i].attr("type") == "text"){
				inputs[i].parent().parent().addClass("invalid");
			}else{
				inputs[i].parent().addClass("invalid");
			}
			
			valid = false;
		}else{
			if(inputs[i].attr("type") == "text"){
				inputs[i].parent().parent().removeClass("invalid");
			}else{
				inputs[i].parent().removeClass("invalid");
			}
		}
		
		
		//validate int fields
		if( inputs[i].hasClass("number") ){
			
			
			if( isNumber(inputs[i].val()) ){
				if(inputs[i].attr("type") == "text"){
					inputs[i].parent().parent().addClass("invalid");
				}else{
					inputs[i].parent().addClass("invalid");
				}
				valid = false;
			}else{
				if(inputs[i].attr("type") == "text"){
					inputs[i].parent().parent().removeClass("invalid");
				}else{
					inputs[i].parent().removeClass("invalid");
				}
			}	
		}
		

		//validate double fields
		if( inputs[i].hasClass("doubleNumber") ){

			if( doubleNumbers(inputs[i].val()) ){
				if(inputs[i].attr("type") == "text"){
					inputs[i].parent().parent().addClass("invalid");
				}else{
					inputs[i].parent().addClass("invalid");
				}
				valid = false;
			}else{
				if(inputs[i].attr("type") == "text"){
					inputs[i].parent().parent().removeClass("invalid");
				}else{
					inputs[i].parent().removeClass("invalid");
				}
			}	
		}
		
	}
	
	
	return valid;
}




/*==================================================================================================
		VALIDATION METHODS
*===================================================================================================*/
/*
	*for double numbers
*/
function doubleNumbers(number) {
    var digits = ("^[0-9]{1,18}(\.[0-9]{1,5})?$");
    if (number.search(digits) == -1)
        return true;
    else
        return false;
}


/*
	*NumbersOnly
*/
function isNumber(number) {
    var digits = /^\s*\d+\s*$/;
    if (number.search(digits) == -1)
        return true;
    else
        return false;
}


