/***********************************************
Rad Window Functions
************************************************/
function CloseRadWindow()
{
	GetRadWindow().Close();
}

function GetRadWindow()
{
	var oWindow = null;
	if (window.radWindow) oWindow = window.radWindow;//Will work in Moz in all cases, including clasic dialog
	else if (window.frameElement.radWindow) oWindow = window.frameElement.radWindow;//IE (and Moz az well)
	return oWindow;
}

// Prefer to phone window.
function OpenPtpWindow(url)
{
    var winUrl = url;
    var radWin = radopen(winUrl, "radPtpWindow");
    radWin.center();
}

// Renewal window.
function OpenRenewalWindow(url)
{
    var winUrl = url;
    var radWin = radopen(winUrl, "radRenewalWindow");
    radWin.center();
}


// Adjusts the height of the prefer to phone window to fit content. 
function AdjustPtpWindowHeight()
{
    var windowHeight = document.getElementById('msfg-ptp-wrapper').scrollHeight + 100;
    // Issue with RadWindow in Chrome: second open shrinks the window to 150px vs. 100%.
    GetRadWindow().set_height(windowHeight - 1);
    GetRadWindow().set_height(windowHeight);
}

// Set the initial properties of the prefer to phone window. 
function SetupPreferToPhoneWindow()
{
   // Adjust the height of the window to fit around the content.
   setTimeout("AdjustPtpWindowHeight()", 100);

   // Find the provider deeplink url.
   var deeplinkUrl = document.getElementById('hidDeeplinkUrl').value;   
   
   // If the deeplink url is set, post the deeplink in the hidden iframe. 
   if(deeplinkUrl != "")  
   {    
        document.getElementById('ifrmDeepLink').src = deeplinkUrl;               
   } 
}

function SetupPreferToPhoneFailedWindow()
{
   // Adjust the height of the window to fit around the content.
   setTimeout("AdjustPtpWindowHeight()", 100);
}

/***********************************************
End Rad Window Functions
************************************************/

function WindowConfirmBox(confirmMsg)
{
    // Provides a window confirm message box.
    if (window.confirm(confirmMsg))
    {
        return true;
    }
    return false;
}

function toggleAlcoholReading()
{
    var txtAlcoholReading = document.getElementById('txtAlcoholReading');
    var convictionCode = document.getElementById('ddlOffenceCode').value.toUpperCase();
    
    switch(convictionCode)
    {
        case "CD40":
        case "CD60":
        case "DR10":
        case "DR20":
        case "DR40":
        case "DR50":
        {
            Msfg$callFunction('deciAlcoholReading', 'Hidden', false);
            break;
        }
        
        default:
        {
            Msfg$callFunction('deciAlcoholReading', 'Hidden', true);
            txtAlcoholReading.value = '';  
                      
            break;
        }       
    }
}

function hasUnsavedClaimData()
{
    var dateOfClaimDay = document.getElementById('dbfClaimDate_ddlDay');
    var dateOfClaimMonth = document.getElementById('dbfClaimDate_ddlMonth');
    var dateOfClaimYear = document.getElementById('dbfClaimDate_txtYear');
    
    var claimCost = document.getElementById('txtClaimCost');
    var claimDescription = document.getElementById('ddlClaimDescription');
    var noClaimsAffectedYes = document.getElementById('rdoDiscountAffected_0');
    var noClaimsAffectedNo = document.getElementById('rdoDiscountAffected_1');
    
    var hasUnsavedData = false;
        
    if (dateOfClaimDay.value != '' || dateOfClaimMonth.value != '' || (dateOfClaimYear.value != '' && dateOfClaimYear.value != 'Year'))
    {
        hasUnsavedData = true;
    }
    
    if (claimCost.value != 0)
    {
        hasUnsavedData = true;
    }
    
    if (claimDescription.value != '')
    {
        hasUnsavedData = true;
    }
    
    if (noClaimsAffectedYes.checked != false || noClaimsAffectedNo.checked != false)
    {
        hasUnsavedData = true;
    }
    
    if (hasUnsavedData)
    {
        return WindowConfirmBox('You have not finished entering the claim details:\n - Click OK to discard the entry \n - Click cancel to complete the entry.');
    }
    
    return true;
}

function hasUnsavedConvictionData()
{
    var offenceCode = document.getElementById('ddlOffenceCode');
    
    var dateOfOffenceDay = document.getElementById('dbfConvictionDate_ddlDay');
    var dateOfOffenceMonth = document.getElementById('dbfConvictionDate_ddlMonth');
    var dateOfOffenceYear = document.getElementById('dbfConvictionDate_txtYear');
    
    var alcoholReading = document.getElementById('txtAlcoholReading'); 
    var fineAmount = document.getElementById('txtFineAmount'); 
    var penaltyPoints = document.getElementById('txtPenaltyPoints');
    var monthsBanned = document.getElementById('txtMonthsBanned');
        
    var hasUnsavedData = false;
    
    if (offenceCode.value != '')
    {
        hasUnsavedData = true;
    }
    if (dateOfOffenceDay.value != '' || dateOfOffenceMonth.value != '' || (dateOfOffenceYear.value != '' && dateOfOffenceYear.value != 'Year'))
    {
        hasUnsavedData = true;
    }
    if (alcoholReading.value != '')
    {
        hasUnsavedData = true;
    }
    if (fineAmount.value != 0)
    {
        hasUnsavedData = true;
    }
    
    if (penaltyPoints.value != 0)
    {
        hasUnsavedData = true;
    }
  
    if (monthsBanned.value != '' && monthsBanned.value != '0')
    {
        hasUnsavedData = true;
    }
  
    if (hasUnsavedData)
    {
        return WindowConfirmBox('You have not finished entering the conviction details:\n - Click OK to discard the entry\n - Click cancel to complete the entry.');
    }
    
    return true;
}

/***********************************************
    Hooks up the onload event to a function(s)
***********************************************/
function addLoadEvent(_function)
{
	var _onload = window.onload;
	if (typeof window.onload != 'function')
	{
		if(window.onload)
		{
			window.onload = _function;
		}
		else
		{
			var _addEventListener = window.addEventListener || document.addEventListener;
			var _attachEvent = window.attachEvent || document.attachEvent;
			
			if(_addEventListener)
			{
				_addEventListener('load', _function, true);
				return true;
			}
			else if( _attachEvent)
			{
				var _result = _attachEvent('onload', _function);
				return _result;
			}
			else
			{
				return false;
			}
		}
	}
	else
	{
		window.onload = function()
		{
			_onload();
			_function();
		}
	}
}

/*******************************************************************
    Fixes a routine to the text field's onblur event that trims
    whitespace from the start and end of that fields value.
********************************************************************/
function autoTrimSpaceFromTextFields() 
{
	var textFields = document.getElementsByTagName('input');
    var bypassField = false;
    
	for(var i = 0; i < textFields.length; i++ ) 
	{
	    bypassField = AutoTrimByPassFields(textFields[i].getAttribute("id"));
	
		if(textFields[i].getAttribute("type") == "text" && !bypassField) 
		{
		    textFields[i].onblur = function() { this.value = ValidatorTrim(this.value); return false; }
		}
	}
}

function AutoTrimByPassFields(id)
{
    var bypassField = false;
    
    switch (id)
    {
        case 'ddlDob_txtYear':
            bypassField = true;
            break;
            
        default:
            bypassField = false;
            break;
    }
    
    return bypassField;
}

/***********************************************
    Checks to see whether the value is numeric.
************************************************/
function isNumeric(num)
{
	var chkStr = '0123456789';
	var ok = true;
	
	for (var i = 0; i < num.length; i++)
	{
		if(chkStr.indexOf(num.charAt(i)) == -1)
		{
		    ok = false;
		    break;
		}    
	}
	
	return ok;
}

/**************************************************************
    Only allows numbers to be entered.
***************************************************************/
function NumberOnlyOnKeyPressUp(evt)
{
    evt = (evt) ? evt : ((window.event) ? event : null);
    
    if (evt)
    {   
        var iKeyCode = (evt.charCode) ? evt.charCode : ((evt.which) ? evt.which : evt.keyCode);
        var strKey = String.fromCharCode(iKeyCode);

        // RegEx to check against.
        var reValidChars = /([0-9])/;

        // RegEx of valid key e.g delete button and enter key.
        var reKeyboardChars = /[\x00\x03\x08\x0D\x16\x18\x1A\x09]/;

        // If it doesn't meet expression stop the key been enabled.
        if ((!reValidChars.test(strKey)) && (!reKeyboardChars.test(strKey)))
        {
            return false;
        }
        return true;
    }
    return false;
}

/**************************************************************
    Checks for an empty space or white space.
***************************************************************/
function isNotEmpty(sInput)
{
	var sTrim = sInput.replace(/\s*([^\n])\s*/,"$1");
	
	if (sTrim == '' || sTrim == ' ')
	{
		return false;
	}
	else
	{
		return true;
	}
}

/***********************************************
    Checks to see if the value is decimal
************************************************/
function isDecimalRegEx(valueToCheck)
{
	// regular expession to check against.
	var regEx = /^([\,0-9]+)(\.\d{2})?$/;
	
	// if does not meet expression return false
	if ((!regEx.test(valueToCheck)))
	{
		return false;
	}
	return true;
}

/*************************************************************
    Checks the value entered in the claim amount.
    Checks a decimal has been entered.
    Checks the value is between 1 & 1000000.
*************************************************************/
function CheckClaimCostValidation()
{
    var claimCost = document.getElementById('txtClaimCost');
            
    // Check whether we need to validate claim cost.
    if (isNotEmpty(claimCost.value))
    {
        // Make sure it is a decimal.
        if (isDecimalRegEx(claimCost.value))
        {
            var claimCostValue = parseFloat(claimCost.value.replace(/,/g,''));
    
            if (claimCostValue >= 0 && claimCostValue <= 999999)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        else
        {
            return false;
        }
    }
    else
    {
        return true;
    }
}

/*************************************************************
    Checks the value entered in the claim amount.
    Checks a decimal has been entered.
    Checks the value is between 1 & 1000000.
*************************************************************/
function CheckFineAmountValidation()
{
    var fineAmount = document.getElementById('txtFineAmount');
            
    // Check whether we need to validate fine amount.
    if (isNotEmpty(fineAmount.value))
    {
        // Make sure it is a decimal.
        if (isDecimalRegEx(fineAmount.value))
        {
            var fineAmountValue = parseFloat(fineAmount.value.replace(/,/g,''));
    
            if (fineAmountValue >= 0 && fineAmountValue <= 9999999)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        else
        {
            return false;
        }
    }
    else
    {
        return true;
    }
}

/***********************************************
    Validation highlight error prompt
************************************************/
function ShowPageValidationError()
{
    var genericError = $("GenericErrorDiv");
    var stepIndicator = $("siStepIndicator");
    Page_ClientValidate();
    if(!Page_IsValid)
    {
        genericError.show(); 
        stepIndicator.scrollTo();
    }   
}