﻿// Common helper functions used in AMS
// Assumes jQuery 1.2.6 or up.

var AMS = function() {}

AMS.GetDDLValue = function(ddlName)
{
	var ddl = document.getElementById(ddlName);
	if (ddl.selectedIndex > -1)
		return ddl.options[ddl.selectedIndex].value;
	else
		return "";
}

AMS.GetRadioValue = function(radioName)
{
	var rads = document.getElementsByName(radioName);
	for (var i = 0; i < rads.length; i++)
	{
		if (rads[i].checked == true)
		{
			return rads[i].value;
		}
	}
	return "";
}


// Submits the named form and creates or updates fields:
// Action		receives the named action
// hidScrollTop		is updated with the vertical scroll position of the page, so that it can be restored on reload
AMS.SubmitForm = function(formId, action)
{
	var form = $("#" + formId);

	if (form.find("#hidScrollTop").length == 0)
	{
		$("<input type=\"hidden\" id=\"hidScrollTop\" name=\"hidScrollTop\" value=\"" + this._getScrollTop() + "\"/>").appendTo(form);
	}
	else
	{
		$("#hidScrollTop")[0].value = this._getScrollTop();
	}
	
	if (form.find("#Action").length == 0)
	{
		$("<input type=\"hidden\" id=\"Action\" name=\"Action\" value=\"" + action + "\"/>").appendTo(form);
	}
	else
	{
		$("#Action")[0].value = action;
	}

	form.submit();
}


// Returns an XML dom object given a string of XML. Works in IE6+ and Firefox.
AMS.ParseXML = function( xml ) {
	if( window.ActiveXObject && window.GetObject ) {
		var dom = new ActiveXObject( 'Microsoft.XMLDOM' );
		dom.loadXML( xml );
		return dom;
	}
	if( window.DOMParser )
		return new DOMParser().parseFromString( xml, 'text/xml' );
	throw new Error( 'No XML parser available' );
} 

// Adds a function to an event, e.g. AMS.AddEvent(window, "load", AMS._restoreScrollTop);
AMS.AddEvent = function(obj, evType, fn)
{
    if (obj.addEventListener)
    {
        obj.addEventListener(evType, fn, false);
        return true;
    }
    else if (obj.attachEvent)
    {
        var r = obj.attachEvent("on"+evType, fn);
        return r;
    }
    else
    {
        return false;
    }
}

// Restores the scroll position as held in the hidScrollTop field.
AMS._restoreScrollTop = function()
{
	if ($("#hidScrollTop")[0] != undefined)
	{
		var scrollTop = Number($("#hidScrollTop")[0].value);
	
		scrollTo(0, scrollTop);
	}
}

// Finds how far down the page we've scrolled.
AMS._getScrollTop = function()
{
	var x = 0, y = 0;
    if( typeof( window.pageYOffset ) == 'number' ) {
        // Netscape
        x = window.pageXOffset;
        y = window.pageYOffset;
    } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
        // DOM
        x = document.body.scrollLeft;
        y = document.body.scrollTop;
    } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
        // IE6 standards compliant mode
        x = document.documentElement.scrollLeft;
        y = document.documentElement.scrollTop;
    }
    return y;
}


AMS.FormatCurrency = function(amount) 
{
	if (amount != null && amount != "")
	{
		amount = Number(amount).toFixed(2);

		var pounds = String(amount).split('.')[0];
		var pence = String(amount).split('.')[1]; // we always have this since we did .toFixed earlier

		var rgx = /(\d+)(\d{3})/;
		while (rgx.test(pounds)) 
		{
			pounds = pounds.replace(rgx, '$1' + ',' + '$2');
		}
		
		return pounds + '.' + pence;
	}
	return "";
}

AMS.OnSelectPension = function()
{
	var selected = false;
	var nprTotal = 0;
	var prTotal = 0;
	
	for (var i = 0; i < $('input.chkPension').length; i++)
	{
		if ( $('input.chkPension')[i].checked == true )
		{
			selected = true;
			
			var pensionID = $('input.chkPension')[i].id.replace('chkPension', '');
			var npr = parseFloat($('#tdPension' + pensionID + '_NPR').text().replace('£', '').replace(',', ''));
			var pr  = parseFloat($('#tdPension' + pensionID + '_PR').text().replace('£', '').replace(',', ''));
			
			nprTotal += npr;
			prTotal += pr;
		}
	}
	
	if ($('#btnSubmitQuote').length > 0)
	{
		$('#btnSubmitQuote')[0].style.display = selected ? 'inline' : 'none';
		$('#spnSubmitError')[0].style.display = selected ? 'none' : 'inline';
	}
	
	var nprDisplay = nprTotal > 0 ? "block" : "none";
	$("#divGuaranteePeriodNPR").css("display", nprDisplay);
	$("#divYearlyIncreaseNPR").css("display", nprDisplay);
	
	var prDisplay = prTotal > 0 ? "block" : "none";
	$("#divGuaranteePeriodPR").css("display", prDisplay);
	$("#divYearlyIncreasePR").css("display", prDisplay);
	
}


// Always do this on startup
AMS.AddEvent(window, 'load', AMS._restoreScrollTop);