/* 
calcCurrency.js  version 1.0.1

		require: 
		dbcore.js.
		calculatortoolbox.js
		dbtoolboxes.js

*/

calcCurrency = {
	jsversion: '1.0.1',
  	init: function() {
  		var Toolbox = CalculatorToolbox;
    	var CoreCompliance=DBcore.getJSversion(DBcore,'1.6.0');
  		var ToolCompliant=DBcore.getJSversion(CalculatorToolbox,'1.11.0');
  		var ErrorCompliant=DBcore.getJSversion(ErrorHandler,'1.1.0');
    		if (CoreCompliance.compliant && ToolCompliant.compliant && ErrorCompliant.compliant) {
  			 Toolbox.calculatorObj=calcCurrency;
  			 Toolbox.listOfTriggers=['required','fromcurrency','calculatefrom','calculateto'];
			 Toolbox.setJShides();
  			 Toolbox.setClickListeners();
  			 Toolbox.setChangeListeners();
  			 Toolbox.setButtonActivation();
  			 Toolbox.setKeydownListeners();
  			 Toolbox.miscInitiations();
			 Toolbox.overwritePrintIcon();
  			}
    },
	
dispLocalValidators: function(field, classFunction, classParams, eventType) {
		var self = calcCurrency;
		var ok = true;
				
		switch (classFunction) {
			case 'required' :
				self._handleRequired(field,classParams);
				break;
			case 'fromcurrency' :
				self._handleFromCurrency(field,classParams);
				break;
			case 'calculatefrom':
				ok=self.handleCalculateFrom(field);
				break;
			case 'calculateto':
				ok=self.handleCalculateTo(field);
				break;
			}
		return ok;
		
	},
	
	_handleFromCurrency: function(field,classParams){
		if (field.value != "") {
			selectedcurrencytextspan = document.getElementById("selectedfromcurrencytext");
			selectedcurrencyspan = document.getElementById("selectedfromcurrency");
			selectedcurrencytextspan.className="show";
			selectedcurrencyspan.innerHTML = CurrencyValues[field.value]['abbreviation'];
		}
	},

	_handleRequired: function(field,classParams){				
		var ok=true;
		if (field.value==""){
			ok = false;
		}
			
		return ok;
	},
	
	handleCalculateFrom: function(button) {
		var self=calcCurrency;
		var Toolbox=CalculatorToolbox;
		
		currencyfromfield = document.getElementById('currencyFromAmount');
		selectedcurrencyfield = document.getElementById('currencyToDropDown');
		fromratefield = document.getElementById('fromrate');
		fromresultfield = document.getElementById('fromresult');
		fromresultdiv = document.getElementById('fromresultSection');
		
		// if currency is selected, show the result
		if (selectedcurrencyfield.value!=""){
			//set result fields, round to 2 decimal places
			ratevalue = Math.round(CurrencyValues[selectedcurrencyfield.value]['buy']*100)/100;
			resultvalue = (currencyfromfield.value / (CurrencyValues[selectedcurrencyfield.value]['buy']) * 100);
			resultvalue = Math.round(resultvalue*100)/100;
			
			
			fromratefield.value = formatCurrency(ratevalue);
			fromresultfield.value = formatCurrency(resultvalue) + " " + CurrencyValues[selectedcurrencyfield.value]['abbreviation'];
	
			//display result section
			fromresultdiv.style.display="inline";
		}
		

	},
	
	handleCalculateTo: function(button) {
		var self=calcCurrency;
		var Toolbox=CalculatorToolbox;
		
		currencytofield = document.getElementById('currencyToAmount');
		selectedcurrencyfield = document.getElementById('currencyFromDropDown');
		toratefield = document.getElementById('torate');
		toresultfield = document.getElementById('toresult');
		toresultdiv = document.getElementById('toresultSection');
		
		if (selectedcurrencyfield.value!=""){
			//set result fields, round to 2 decimal places
			ratevalue = Math.round(CurrencyValues[selectedcurrencyfield.value]['sale']*100)/100;
			resultvalue = ((CurrencyValues[selectedcurrencyfield.value]['sale'] * currencytofield.value) / 100);
			resultvalue = Math.round(resultvalue*100)/100;

			toratefield.value = formatCurrency(ratevalue);
			toresultfield.value = formatCurrency(resultvalue) + " " + currencyabbreviation;

			//display result section
			toresultdiv.style.display="inline";
		}
	}		
}


function roundNumber(num, dec) {
	var result = Math.round( Math.round( num * Math.pow( 10, dec + 1 ) ) / Math.pow( 10, 1 ) ) / Math.pow(10,dec);
	return result;
}

function formatCurrency(nStr)
{
	nStr += '';
	x = nStr.split('.');
	x1 = x[0];
	x2 = x.length > 1 ? '.' + x[1] : '';
	var rgx1 = /(\d+)(\d{3})/;
	while (rgx1.test(x1)) {
		x1 = x1.replace(rgx1, '$1' + '.' + '$2');
	}
	if (x2.length == 2){
		x2 += "0";
	}
	x2 = x2.replace('.',',');
	return x1 + x2;
}



DBcore.start(calcCurrency);




