//   Nemo JS


/* Javascript stylesheet */
document.write("<link rel=\"StyleSheet\" href=\"/principalityAssets/nemoAssets/css/js.css\" type=\"text/css\" media=\"screen\" />");

var ie6 = false;

$(document).ready(function() {
	fnCheckIe();
	fnResize();
	fnFormDefaultText();
	fnSectShowHide();
	fnCalculator();
	fnCorners();
	fnDebtCalc();
	fnBudgetPlanner();
	fnEmailForm();
	fnDps(); 
	
	/* IE6 Functions */
	if(ie6){
		fnBgFlicker();
	}

	
});

/**
* jqEM to detect font size changes
*/
//set the text size that the default body computes to
var fontSize = 13;

$.jqem.bind(function(a,b,c) {
	fnResize();
});
	
function fnResize(){
	if( $.jqem.current() == fontSize) {			
		$('body').addClass('enh');
	}else if($.jqem.current() != fontSize){		
		$('body').removeClass('enh');
	};
};

/**
 * Assign simple hide and show default value for inputs like search box
 */
function fnFormDefaultText() {
	
	$(".formDefault").each(function(){
		var $label = $(this).prev('label');
		var txt = $label.text();
		if($label.has('em').length>0){
			txt = $('em',$label).text();
		}
		
		
		//console.log($(this).val())
		
		 if ($(this).val() == "" || $(this).val() == txt) {
			$(this)[0].defaultValue = txt;
        	$(this).val($(this)[0].defaultValue);
     	}
		
	});
	
	$(".formDefault").unbind("focus,blur").focus(function () {
		if ($(this).val() == $(this)[0].defaultValue) {
        	$(this).val("");
        }
	 }).blur(function() {
        if ($(this).val() == "") {
        	$(this).val($(this)[0].defaultValue);
     	}
	 });
}


//  SIFR Setup

var fsalbertbold = {src: "/principalityAssets/nemoAssets/flash/fsAlbertBold.swf"};
sIFR.useStyleCheck = true;
sIFR.activate();
sIFR.replace(fsalbertbold, {selector: '.bubble h1, .bubble h2', css:['.sIFR-root {color: #ffffff;leading:0.3;font-weight:bold;}','.sIFR-root a{color: #ffffff;text-decoration: none;}','.sIFR-root a:hover{ color: #ffffff; text-decoration: underline; }'], wmode: "transparent" });
sIFR.replace(fsalbertbold, {selector: '.fbList li h3', css:['.sIFR-root {color: #ffffff;leading:0.3;font-weight:bold;}','.sIFR-root a{color: #ffffff;text-decoration: none;}','.sIFR-root a:hover{ color: #ffffff; text-decoration: underline; }'], wmode: "transparent" });		
sIFR.replace(fsalbertbold, {selector: '.fb1 #cats h3, .fb1 #tagCloud h3, .fb1 #archive h3', css:['.sIFR-root {color: #aba099;leading:0.3;font-weight:bold;}','.sIFR-root a{color: #aba099;text-decoration: none;}','.sIFR-root a:hover{ color: #aba099; text-decoration: underline; }'], wmode: "transparent" });
sIFR.replace(fsalbertbold, {selector: '.calc h2', css:['.sIFR-root {color: #af4387;leading:0.3;font-weight:bold;}','.sIFR-root a{color: #af4387;text-decoration: none;}','.sIFR-root a:hover{ color: #af4387; text-decoration: underline; }'], wmode: "transparent" });
sIFR.replace(fsalbertbold, {selector: '.home .fb1 h2', css:['.sIFR-root {color: #aba099;leading:0.3;font-weight:bold;}','.sIFR-root a{color: #2faedc;text-decoration: none;}','.sIFR-root a:hover{ color: #2faedc; text-decoration: underline; }'], wmode: "transparent" });
sIFR.replace(fsalbertbold, {selector: '.fb1 h2', css:['.sIFR-root {color: #2faedc;leading:0.3;font-weight:bold;}','.sIFR-root a{color: #2faedc;text-decoration: none;}','.sIFR-root a:hover{ color: #2faedc; text-decoration: underline; }'], wmode: "transparent" });
sIFR.replace(fsalbertbold, {selector: '.whatNext h2', css:['.sIFR-root {color: #6b6b6b;leading:0.3;font-weight:bold;}','.sIFR-root a{color: #2faedc;text-decoration: none;}','.sIFR-root a:hover{ color: #2faedc; text-decoration: underline; }'], wmode: "transparent" });
sIFR.replace(fsalbertbold, {selector: '.homeFb h2', css:['.sIFR-root {color: #ffffff;leading:0.3;font-weight:bold;}','.sIFR-root a{color: #2faedc;text-decoration: none;}','.sIFR-root a:hover{ color: #2faedc; text-decoration: underline; }'], wmode: "transparent" });
sIFR.replace(fsalbertbold, {selector: '#exHome #row2 h2', css:['.sIFR-root {color: #af4387;leading:0.3;font-weight:bold;}','.sIFR-root a{color: #af4387;text-decoration: none;}','.sIFR-root a:hover{ color: #af4387; text-decoration: underline; }'], wmode: "transparent" });
sIFR.replace(fsalbertbold, {selector: '#contactUs.wideLeft #leftCol h2', css:['.sIFR-root {color: #aba099;leading:0.3;font-weight:bold;}','.sIFR-root a{color: #aba099;text-decoration: none;}','.sIFR-root a:hover{ color: #aba099; text-decoration: underline; }'], wmode: "transparent" });
sIFR.replace(fsalbertbold, {selector: '#contactUs.wideLeft #rightCol h2', css:['.sIFR-root {color: #af4387;leading:0.3;font-weight:bold;}','.sIFR-root a{color: #af4387;text-decoration: none;}','.sIFR-root a:hover{ color: #af4387; text-decoration: underline; }'], wmode: "transparent" });
sIFR.replace(fsalbertbold, {selector: '#contactUs.wideLeft h3', css:['.sIFR-root {color: #aba099;leading:0.3;font-weight:bold;}','.sIFR-root a{color: #aba099;text-decoration: none;}','.sIFR-root a:hover{ color: #aba099; text-decoration: underline; }'], wmode: "transparent" });

// not in jquery onload as it conflicts with sifr's onload


function fnSectShowHide(init){
	
	var toggleAll = false;
	
	var delay = 1000; //miliseconds
	
	var $first = $('.sectList .sect:first');
	
	$('.sectList .sect').each(
		function(){
			$(this).addClass('closed');
			$(this).find('.cont').hide();
			$(this).find('.title h2').wrapInner('<a href="#"></a>');
			
			$(this).find('.title h2 a').click(
				function(){
					
					$first.find('.cont').clearQueue();
							
					$(this).parents('.title').next('.cont').slideToggle('normal');
					if(toggleAll){
					$('.sect.open').not($(this).parents('.sect')).toggleClass('closed open')
						.find('.cont').slideToggle('normal');
						}
					$(this).parents('.sect').toggleClass('closed open');
					
					return false;
				});
		});
	
	function showFirst(){
		/*$first.addClass('first').find('.cont').delay(delay).slideDown('slow', function(){
			$(this).parents('.sect').toggleClass('closed open');
		});*/
		/*
		$first.addClass('first').find('.cont').show(0, function(){
			$(this).parents('.sect').toggleClass('closed open');
		});
		*/
		
		$first.addClass('first').find('.cont').show().parents('.sect').toggleClass('closed open');
		
		
	}
	
	if(init){
		$(window).load(function(){
			showFirst();
		});
	}else{
		showFirst();
	}

}


function fnCalculator(){
    var minAmount = $(".hdMinAmount").val();
    var maxAmount = $(".hdMaxAmount").val();
    var minTerm = $(".hdMinTerm").val();
    var maxTerm = $(".hdMaxTerm").val();
    var defaultAmount = $(".hdDefaultAmount").val();
    var defaultTerm = $(".hdDefaultTerm").val();

	var $calc = $('.calc');
	var $borrow = $('#borrow');
	var $years = $('#repayPeriod');
	var def = { "amt": parseInt(defaultAmount), "yrs": parseInt(defaultTerm) };
	var min = { "amt": parseInt(minAmount), "yrs": parseInt(minTerm) };
	var max = { "amt": parseInt(maxAmount), "yrs": parseInt(maxTerm) };
	var pSign = unescape('%A3');
	
	if($calc.length >0){
		if($borrow.val() != ""){
			var bVal = $borrow.val();
			bVal = fnGetNumber(bVal);
			if(bVal<min.amt){bVal=min.amt;}
			if(bVal>max.amt){bVal=max.amt;}
			def.amt = bVal;
		}
		
		if($years.val() != ""){
			var yVal = $years.val();
			yVal = yVal.replace(/ yrs/g, "");
			yVal = parseFloat(yVal);
			if(yVal<min.yrs){yVal=min.yrs;}
			if(yVal>max.yrs){yVal=max.yrs;}
			def.yrs = yVal;
		}
		
		$borrow.val(pSign + fnCurrency(def.amt));
		$years.val(def.yrs + " yrs");
		
		$('.slider.borrow div').slider({
				value:def.amt,
				min: min.amt,
				max: max.amt,
				step: 500,
				slide: function(event, ui) {
					var amt = fnCurrency(ui.value);
					$('a.ui-slider-handle',this).html("&pound;" + amt);
					$borrow.val(pSign + amt);
				},
				change : function(event, ui){
					var amt = fnCurrency(ui.value);
					$('a.ui-slider-handle',this).html("&pound;" + amt);
					//$borrow.val(pSign + amt);
				}
			}).find('a.ui-slider-handle').html('&pound;'+fnCurrency(def.amt));
			
		$('.slider.years div').slider({
				value:def.yrs,
				min: min.yrs,
				max: max.yrs,
				step: 1,
				slide: function(event, ui) {
					var amt =  parseInt(ui.value) + " yrs";
					$('a.ui-slider-handle',this).html(amt);
					$years.val(parseInt(ui.value) + " yrs");
				},
				change: function(event, ui){
					var amt =  parseInt(ui.value) + " yrs";
					$('a.ui-slider-handle',this).html(amt);
					//$years.val(parseInt(ui.value) + " yrs");
				}
			}).find('a.ui-slider-handle').html(def.yrs+" yrs");
			
			//key press functions
			$borrow.bind('keyup', function(){
				var val = $(this).val();
				val= val.replace(/[^\d.]/g, "");
				//if the value is within the bounds then move the slider
				if(val>=min.amt && val<=max.amt){
					$('.slider.borrow div').slider('value', val);
				}
			});
			
			$years.bind('keyup', function(){
				var val = $(this).val();
				val= val.replace(/[^\d.]/g, "");
				//if the value is within the bounds then move the slider
				if(val>=min.yrs && val<=max.yrs){
					$('.slider.years div').slider('value', val);
				}
			});
			
			//focus blur functions
			$borrow.bind('focus blur', function(){
				var val = $(this).val();
				val= val.replace(/[^\d.]/g, "");
				if(val<min.amt){val=min.amt;}
				if(val>max.amt){val=max.amt;}
				$('.slider.borrow div').slider('value', val);
				$borrow.val(pSign + fnCurrency(val));
			});
			
			$years.bind('focus blur', function(){
				var val = $(this).val();
				val= val.replace(/[^\d.]/g, "");
				if(val<min.yrs){val=min.yrs;}
				if(val>max.yrs){val=max.yrs;}
				$('.slider.years div').slider('value', val);
				$years.val(parseInt(val) + " yrs");
			});
		
	}
}


function fnCurrency(amt){
	return amt.toString().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,");
}


function fnGetNumber(value){
	num = 0;
	num = escape(value.replace(",", "")).replace("%A3","");
	num = Number(num);
	return num;
}

function fnCorners(){
	
	$('img.rounded').each(
		function(){
			if($(this).parent('a').length >0){
				$(this).parent('a').addClass('corners');
			}else{
				$(this).wrap('<span class="corners"></span>');
			}
			$(this).parent().append('<b class="tl"></b><b class="tr"></b><b class="bl"></b><b class="br"></b>');
		}
	);
	
	$('a.btn').each(function(){
		$(this).append('<span class="tl"></span><span class="tr"></span><span class="bl"></span><span class="br"></span>');
	});
	
	$('#c input.btn').filter(function(){return $(this).parents('#budgetTabContent').length==0;}).each(function(){
		$(this).before('<a href="#" class="input '+$(this).attr('class')+'"><span class="tl"></span><span class="tr"></span><span class="bl"></span><span class="br"></span>'+$(this).attr('value')+'</a>').addClass('hide');
	});
	
	$('a.input').click(function(){
			$(this).next('input').click();
			return false;
		});
	
	
}


function fnDebtCalc(){
	var $dc = $('.debtCalcForm');
	
	if($dc.length>0){
		
		$payment = $('.col1 input:text:not(.total)', $dc);
		$debt = $('.col2 input:text:not(.total)', $dc);
		
		var totalD = 0;
		var totalP = 0;
		
		$payment.bind('focus blur keyup', function(){
			totalP = fnTotalise($payment);
			
			$('.col1 input.total').val(totalP);
		}).numeric();
		
		
		$debt.bind('focus blur keyup', function(){
			totalD = fnTotalise($debt);
			
			$('.col2 input.total').val(totalD);
		}).numeric();
	}
}


function fnBudgetPlanner(){
	
	var $bp = $('#budgetPlanner');
	
	if($bp.length>0){
		
		// modify HTML required by dev (input instead of links) so that it looks like designs (with links not inputs)
		// tabs
	    $('#budgetTabNav li input', $bp).each(function(index) {
			$(this).hide().before('<a href="#" class="budgetTabLink"><span></span></a>').parent('li').find('span').text($(this).val());
			if($(this).hasClass('selected')){
			    $('a', $bp).addClass('selected');
			}			
		});
		// click the tab button when the link is clicked
		$('#budgetTabNav a.budgetTabLink').click(function() {
			$(this).parent('li:first').find('input:first').click();
			return false;
		});
		
		// email me and save links
		$('#budgetTabContent div.rowSubmit input.email,#budgetTabContent div.rowSubmit input.save',$bp).each(function(index) {
			$(this).hide().before('<a href="#" class="'+this.className+'"><span>'+$(this).val()+'</span></a>');
			
			if($(this).hasClass('selected')){
				$('a').addClass('selected');
			}		
		});
		// click the sav/email button when the link is clicked
		$('#budgetTabContent div.rowSubmit a.email,#budgetTabContent div.rowSubmit a.save').click(function() {
			$(this).parent('span:first').find('input[class='+this.className+']').click();
			return false;
		});
		
		
		// MAIN FUNCTIONALITY
		//$('input.num').numeric();

		//section 2 (income) total all sections
		$('#step2 input.num').bind('focus blur keyup', function() {
		    var par = $(this).parents('.sectList');
		    var obj = $('input.num', par);
		    var total = fnTotalise(obj);

		    $('#totalIncome span').html(total);
		});
		
		//do this on initial load of the page so that items are calculated
		function fnSectTotal(){
			
			if($('#totalExpenditure span').length){
			
			$('.sect', $bp).each(function(){
				// Section total
			    var par = $(this);
			    var obj = $('input.num:not(.multi)', par);
			    var total = fnTotalise(obj);
	
			    $('.sectTotal', par).html(total);
		    });
            // Grand total
		    par = $('.sectList');
		    obj = $('input.num:not(.multi)', par);
		    total = fnTotalise(obj);
			
		    	$('#totalExpenditure span').html(total);
	    	}
		};
		
		fnSectTotal();
		
		//section 3 (expenditure) total each section and grand total
		$('#step3 input.num').bind('focus blur keyup', function(){
		    
		    // Section total
		    var par = $(this).parents('.sect');
		    var obj = $('input.num:not(.multi)', par);
		    var total = fnTotalise(obj);

		    $('.sectTotal', par).html(total);

            // Grand total
		    par = $(this).parents('.sectList');
		    obj = $('input.num:not(.multi)', par);
		    total = fnTotalise(obj);

		    $('#totalExpenditure span').html(total);
		
//		var par = $(this).parents('.sect');
//		var obj = $('input.num:not(.multi)', par);
//		var mul = $('input.multi', par);
//		var total = fnTotalise(obj);

//		//is there a multiplier box?
//		if (mul.length > 0) {
//		    var factor = parseFloat(mul.val());
//		    if (isNaN(factor)) { factor = 1; }
//		    total = total * factor;
//		}

//		total = fnCurrency(total);

//		$('.title h2 em', par).html("= &pound;" + total);
//			
		});
		
		
		
		//section 4 (credit) total monthly repayments column and balance column in each section
		$('#step4 input.num').bind('focus blur keyup', function() {
		    var par = $(this).parents('.sect');

		    var col1 = $('.col3', par);
		    var col2 = $('.col4', par);
		    var obj1 = $('input.num', col1);
		    var obj2 = $('input.num', col2);
		    var total1 = fnTotalise(obj1);
		    var total2 = fnTotalise(obj2);
		    
		    $('.sectTotalRepay', par).html(total1);
		    $('.sectTotalBalance', par).html(total2);
		});
		
	}
}

function fnTotalise(obj){
	var total = new Number(0);
	obj.each(function(){
		var val = new Number(0);
		val = $(this).val();
		val = val.replace(/,/gi,'');
		val = parseFloat(val);
		if(isNaN(val)){val = 0;}		
		total = total+val;		
		//total = Math.round(total * 100) / 100;		
	});
	
	// parseFloat trims trailing 0, put it back in if needed
	if(total != null && total != ''){
		if(total.toString().split('.')[1]){		
			if(total.toString().split('.')[1].length < 2){		
				total+='0';
			}		
		}
	}
	
	total = parseFloat(total).toFixed(2);
	/*
	if(total.toString().split('.')[1] == "00"){
		return parseFloat(total.toString().split('.')[0]);
	}
	else{
		return total;
	}*/
	
	total = numberFormat(total);
	
	return total;
	
	
}

// This function formats numbers by adding commas
function numberFormat(nStr){
  nStr += '';
  x = nStr.split('.');
  x1 = x[0];
  x2 = x.length > 1 ? '.' + x[1] : '';
  var rgx = /(\d+)(\d{3})/;
  while (rgx.test(x1))
    x1 = x1.replace(rgx, '$1' + ',' + '$2');
  return x1 + x2;
}

function fnCheckIe(){
	if($('#ie6').length>0){ie6 = true;}
}

function fnBgFlicker(){
	try {document.execCommand("BackgroundImageCache", false, true);} catch(err){}
}

var inEmailForm = false;

function fnEmailForm(){
	var $form = $('#emailmeform');
	var btn = '<a href="#" class="close">Close</a>';
	if($form.length>0){
		$form.parents('.fb1').hide();
		$form.prepend(btn);		
		
		 $('#emailmelink')
		 		.click(function(e) {
            e.preventDefault();
             $('#emailmeform .formWrap').show();
             $('#emailmeform .thanksMsg').hide();
            $.blockUI({ message: $('#emailmeform'), css: {"top":"30%"}, overlayCSS:  {backgroundColor: '#333', opacity:0.6 } });
           
            inEmailForm = true;
            fnBindEmailCloseEvents();
        }); 
 
      $('#main_0_SendButton').click(function(e) {
            e.preventDefault();
            $.unblockUI({
                fadeOut: 0,
                onUnblock: function() {
                    __doPostBack('main_0$SendButton','');
                    }
                });
            return false; 
        }); 
        
  
	}
	
}

function fnBindEmailCloseEvents(){
	$('#cancelemailme, .close, .blockOverlay').click(function() { 
	    $.unblockUI();
	    inEmailForm = false;
	    return false; 
	}); 
}


function fnReshowEmailForm(postback) {
		//fnBindEmailFormBtns(); // rebind buttons
	if(postback){
		$('#emailmeform .thanksMsg').show();
    	$('#emailmeform .formWrap').hide();
	}
    $.blockUI({ message: $('#emailmeform'), css: {"top":"30%"}, overlayCSS: { backgroundColor: '#333', opacity: 0.6}, fadeIn:0 });
    
    
    inEmailForm = true;
    // rebind close buttons
    fnBindEmailCloseEvents();
}

function fnDps(){
	
	$('a.dps').click(function(){
		var url = $(this).attr('href');
		url += " #c .bdrMid";
		var btn = '<a href="#" class="close">Close</a>';
		
		if($('#dpsLoader').length == 0){
			$('body').append('<div id="dpsLoader"><div class="cont"></div></div>');
			$('#dpsLoader .cont').load(url,null,function(){
				
				$('#dpsLoader').prepend(btn);
				$('#dpsLoader .headingArea').replaceWith($('h1',$(this)));
				
				 $.blockUI({ message: $('#dpsLoader'), css: {"top":"10%", "width":"80%", "left":"10%", "height": "80%"}, overlayCSS:  {backgroundColor: '#333', opacity:0.6 }});
				 
				 var h = ($('#dpsLoader').parent().height()) -40;
				 $('#dpsLoader .cont').height(h);
				 
				  $('.close, .blockOverlay').unbind('click').click(function() { 
			            /*$.unblockUI();
			            
			            if(inEmailForm == true){
			            	fnReshowEmailForm();
			            }*/
			            
			            $.unblockUI({
			                fadeOut: 0,
			                onUnblock: function() {
			                  	if(inEmailForm == true){fnReshowEmailForm();}
			                    }
			                });
			            
			            return false; 
			        }); 
			        
				
				}).parent().hide();
			
			
		}else{
			 $.blockUI({ message: $('#dpsLoader'), css: {"top":"10%", "width":"80%", "left":"10%", "height": "80%"}, overlayCSS:  {backgroundColor: '#333', opacity:0.6 }});
				 
				  $('.close, .blockOverlay').unbind('click').click(function() { 
			             $.unblockUI({
			                fadeOut: 0,
			                onUnblock: function() {
			                   	if(inEmailForm == true){fnReshowEmailForm();}
			                    }
			                });
			            
			            return false; 
			        }); 
		}
		
		
		
		//console.log('do not load this link')
		
		return false;
		
	});
}
