(function($) {
$.widget ('ui.eurocalc', {
	_init: function(){
		this._renderCalc();
	},
	_validate: function (value) {
		value = (value.replace(/ /g, '')).replace(',','.');
		value = value.replace(/[^0-9^,^.]/, '');
		return value;
	},
	_renderCalc: function() {
		var o = this.options;

		if (o.embedHtml) {
			var embedHtml = '';
			embedHtml += '<div>'+o.strTitle+'</div>';
			if (o.useHTMLFormTag) {
				embedHtml += '<form id="'+o.idForm+'" action="">';
			}
			embedHtml += '<fieldset>'+
			'<input id="'+o.idInputEur+'" value="" /><label for="'+o.idInputEur+'"> '+o.labelInputEur+'</label>'+
			'<input id="'+o.idInputSkk+'" value="" /><label for="'+o.idInputSkk+'"> '+o.labelInputSkk+'</label></fieldset>';
			if (o.useHTMLFormTag) {
				embedHtml += '</form>';
			}
			if (o.strConvRate) {
				embedHtml += '<div class="eurocalc-rate">'+o.strConvRate+'</div>';
			}

			this.element.html(embedHtml).show();
		}
		else {
			this.element.show();
		}

		$('#'+o.idInputSkk+',#'+o.idInputEur).bind('keyup', {o: this }, function(event){
			try {
			var src = $(this);

			var ec = event.data.o;
			var opt = ec.options;
			var toEur = this.id==opt.idInputSkk;

			var targetSelector = toEur ? opt.idInputEur : opt.idInputSkk;
			// locate target object
			var target = $('#'+targetSelector);
			var value = opt.pattern.exec(ec._validate(src.val()));

			value = value ? value : '0';
			value = src.val(value).val();

			value = toEur ? value/opt.convRate : value*opt.convRate;
			target.val(value.toFixed(2));
			}
			catch(e) {
			}
		}).
		bind('blur', {classCurrency: o.classCurrency, classSelected:o.classSelected}, function(event) {
			this.className = event.data.classCurrency + ' ' + event.data.classSelected;
		}).
		bind('focus', {classCurrency: o.classCurrency}, function(event) {
			this.className = event.data.classCurrency;
		});
	}

});

$.extend($.ui.eurocalc, {
	defaults: {
		convRate: '30.126',
		idInputSkk: 'id-skk',
		labelInputSkk: 'SKK',
		idInputEur: 'id-eur',
		labelInputEur: 'EUR',
		classCurrency: 'currency',
		classSelected: 'eurocalc-sel',
		useHTMLFormTag: false,
		embedHtml: true,
		strTitle: 'Eurokalkulačka',
		strConvRate: 'Konverzný kurz: 1 EUR = 30.1260 SKK',
		idForm: 'id-eurocalc-form',
		pattern: /[0-9.,]{1,10}/,
		defaultValue: '0.00'
	}
});

})(jQuery);
