/******************************************************************
 *                                         START: Rates quickfinder
 */
(function($){

	var processRatesQuickfinderError = function(objWidget){
		/* an error has occurred in ajax load, throw an error for all HL REP widgets */
		if(objWidget.selector == 'empty'){
			$(".widget-rates-quickfinder").each( function(){ 
				processRatesQuickfinderError($(this)); 
				return; 
			});
			return;
		}

		/* remove loader */
		objWidget.find(".show-on-ajax-load").hide();
		objWidget.find(".ajax-loading").hide();
		objWidget.find(".show-on-ajax-error").fadeIn('slow');
	}
	
	var processRatesQuickfinder = function(xml){
		
		$(".widget-rates-quickfinder").each( function(){
			var objWidget = $(this);
			
			/*** set up home loans ***/
			var hlContainer = $('.widget-hl-table', objWidget);
			var hlRowTemplate = $('.widget-row-template', hlContainer);
			var hlTable = $('table', hlContainer);
			$('*', hlTable).removeClass('last-child').removeClass('first-child');
			var hlRowsToGenerate = $('.widget-rows-to-generate', hlContainer).val();
			var hlTermType = $('.widget-hl-term-type', hlContainer).val();
			var hlRates = xml.find('hero[type="HL"]').children();
			
			if(hlTermType != 'ALL') hlRates = hlRates.filter('rate[id$="-'+hlTermType+'"]');
			/* ensure the list is in order */
			var hlRatesArray = jQuery.makeArray(hlRates);
			hlRatesArray.sort(function(a,b){
				var aPos = $(a).attr('posId');
				var bPos = $(b).attr('posId');
				return (aPos < bPos) ? -1 : 1;
			});
			
			for(i = 0; i < hlRowsToGenerate; i++){
				if(i >= hlRatesArray.length) break;
				var row = hlRowTemplate.clone();
				var rate = $(hlRatesArray[i]);
				$('.widget-interest', row).html(rate.find('interest').text());
				$('.widget-label', row).html(rate.find('label').text());
				$('.widget-term', row).html(rate.find('term').text());
				row.insertBefore(hlRowTemplate);
			}
			hlRowTemplate.remove();
			$(':last-child', hlTable).addClass('last-child');
			$(':first-child', hlTable).addClass('first-child');
			
			/*** set up foreign currency ***/
			var fxContainer = $('.widget-fx-table', objWidget);
			var fxRowTemplate = $('.widget-row-template', fxContainer);
			var fxTable = $('table', fxContainer);
			$('*', fxTable).removeClass('last-child').removeClass('first-child');
			var fxRowsToGenerate = $('.widget-rows-to-generate', fxContainer).val();
			var fxRates = xml.find('hero[type="FX"]').children();
			var fxRatesArray = jQuery.makeArray(fxRates);
			fxRatesArray.sort(function(a,b){
				var aPos = $(a).attr('posId');
				var bPos = $(b).attr('posId');
				return (aPos < bPos) ? -1 : 1;
			});			
			for(i = 0; i < fxRowsToGenerate; i++){
				if(i >= fxRatesArray.length) break;
				var row = fxRowTemplate.clone();
				var rate = $(fxRatesArray[i]);
				row.find('.widget-currency').html(rate.find('country').text());
				row.find('.widget-buy').html(rate.find('ttbuy').text());
				row.find('.widget-sell').html(rate.find('ttsell').text());
				row.insertBefore(fxRowTemplate);
			}
			fxRowTemplate.remove();
			$(':last-child', fxTable).addClass('last-child');
			$(':first-child', fxTable).addClass('first-child');			
			
			/*** set up term deposit ***/
			var tiContainer = $('.widget-ti-table', objWidget);
			var tiRowTemplate = $('.widget-row-template', tiContainer);
			var tiTable = $('table', tiContainer);
			$('*', tiTable).removeClass('last-child').removeClass('first-child');
			var tiRowsToGenerate = $('.widget-rows-to-generate', tiContainer).val();
			var tiRates = xml.find('hero[type="TI"]').children();
			var tiRatesArray = jQuery.makeArray(tiRates);
			var tiLink = objWidget.find('a.ti-link-template').attr('href');
			tiRatesArray.sort(function(a,b){
				var aPos = $(a).attr('posId');
				var bPos = $(b).attr('posId');
				return (aPos < bPos) ? -1 : 1;
			});
			for(i = 0; i < tiRowsToGenerate; i++){
				if(i >= tiRatesArray.length) break;
				var row = tiRowTemplate.clone();
				var rate = $(tiRatesArray[i]);
				var reference = rate.find('reference').text();
				row.find('a.ti-link').attr('href', tiLink + "?termdeposref=" + reference);
				row.find('.widget-interest').html(rate.find('interest').text());
				row.find('.widget-term').html(rate.find('term').text());
				row.find('.widget-investment-type').html(rate.find('label').text());
				row.find('.widget-amount').html(rate.find('amount').text());
				row.insertBefore(tiRowTemplate);
			}
			tiRowTemplate.remove();
			$(':last-child', tiTable).addClass('last-child');
			$(':first-child', tiTable).addClass('first-child');
			
			/* remove loader */
			objWidget.find(".show-on-ajax-error").hide();
			objWidget.find(".ajax-loading").hide();
			objWidget.find(".show-on-ajax-load").fadeIn('slow');
		});

	};

	/* Set up to run when rates are retrieved */
	$.BNZ.feeds.heroRates.registerCallback(processRatesQuickfinder, $('empty'), processRatesQuickfinderError);
})(jQuery);
/**
 *                                           END: Rates quickfinder 
 ******************************************************************/
