﻿//-----------------------------------------------------------------------------
// NAME: PopupCalendar
//-----------------------------------------------------------------------------
// DESCRIPTION:
//		Displays a popup calendar for events
//-----------------------------------------------------------------------------
function DisplayPopUpCalendar(resourceID, eventTypeID, controlID)
{
	window.open('CalendarPopup.aspx?EventTypeID=' + eventTypeID + '&ResourceID=' + resourceID + '&CtrlID=' + controlID, 'Calendar', 'width=310,height=275');
}

//-----------------------------------------------------------------------------
// NAME: ToggleVisibility
//-----------------------------------------------------------------------------
// DESCRIPTION:
//		Toggles the visibility of an element.
//-----------------------------------------------------------------------------
function ToggleVisibility(elementName)
{  
    var element;
    var elementStyle;  
    
    if (document.getElementById) 
    {
		element = document.getElementById(elementName);
	}
    else if (document.all)
    {
		element = document.all[elementName];
	}
    else if (document.layers)
    {
		element = document.layers[elementName];
	}
    
    elementStyle = element.style;  
    
    if (elementStyle.display == '' && element.offsetWidth != undefined && element.offsetHeight != undefined)
    {
		elementStyle.display = (element.offsetWidth != 0 && element.offsetHeight != 0) ? 'block' : 'none';
	}
	
	elementStyle.display = (elementStyle.display == '' || elementStyle.display == 'block') ? 'none' : 'block';
}

//-----------------------------------------------------------------------------
// NAME: SetCreateAccountControls
//-----------------------------------------------------------------------------
// DESCRIPTION:
//		Sets the controls used for create account based on the state of
//		the CreateAccountCheckBox checked value.
//-----------------------------------------------------------------------------
// NOTES:
//		The global vars (prefixed with an underscore) are set by the
//		BillingInfo.
//-----------------------------------------------------------------------------
function SetCreateAccountControls() {

    if (document.getElementById('ctl00_ContentPlaceHolder_showLoginForm').innerHTML == 'true') {
        var createAccoutCtrl = document.getElementById(_createAccountCheckBoxClientID);
        var checked = createAccoutCtrl.checked;

        var userNameEl = document.getElementById(_userNameTextBoxClientID);
        var passwordEl = document.getElementById(_passwordTextBoxClientID);
        var confirmPasswordEl = document.getElementById(_confirmPasswordTextBoxClientID);

        userNameEl.disabled = !checked;
        passwordEl.disabled = !checked;
        confirmPasswordEl.disabled = !checked;

        if (!checked) {
            userNameEl.value = "";
            passwordEl.value = "";
            confirmPasswordEl.value = "";

            userNameEl.className = "fieldDisabled";
            passwordEl.className = "fieldDisabled";
            confirmPasswordEl.className = "fieldDisabled";
        }
        else {
            userNameEl.className = "";
            passwordEl.className = "";
            confirmPasswordEl.className = "";
        }
    }
}

//-----------------------------------------------------------------------------
// NAME: SetPaymentControls
//-----------------------------------------------------------------------------
// DESCRIPTION:
//		Sets the controls used for payment information based on the
//		state of the StorePaymentCheckBox checked value.
//-----------------------------------------------------------------------------
// NOTES:
//		The global vars (prefixed with an underscore) are set by the
//		FOPsForm.
//-----------------------------------------------------------------------------
function SetPaymentControls()
{
	var storePaymentEl = document.getElementById(_storePaymentCheckBoxClientID);
	var checked = storePaymentEl.checked;
	
	var endorsementEl = document.getElementById(_endorsementTextBoxClientID);
	var cardExpMonthEl = document.getElementById(_cardExpirationMonthDropDownListClientID);
	var cardExpYearEl = document.getElementById(_cardExpirationYearDropDownListClientID);
				
	endorsementEl.disabled = !checked;
	cardExpMonthEl.disabled = !checked;
	cardExpYearEl.disabled = !checked;
	
	if (!checked)
	{
		endorsementEl.value = "";
		cardExpMonthEl.selectedIndex = 0;
		cardExpYearEl.selectedIndex = 0;
	
		endorsementEl.className = "fieldDisabled";
		cardExpMonthEl.className = "fieldDisabled";
		cardExpYearEl.className = "fieldDisabled";
	}
	else
	{
		endorsementEl.className = "";
		cardExpMonthEl.className = "";
		cardExpYearEl.className = "";
	}
}

//-----------------------------------------------------------------------------
// NAME: ExtractNumber
//-----------------------------------------------------------------------------
// DESCRIPTION:
//		Used by NumericTextBox control to allow only numeric input.
//-----------------------------------------------------------------------------
function ExtractNumber(obj, decimalPlaces, allowNegative) 
{ 
    var temp = obj.value; 
	 
	//-------------------------------------------------------------------------
    // Avoid changing things if already formatted correctly 
    //-------------------------------------------------------------------------
    var reg0Str = '[0-9]*'; 
    if (decimalPlaces > 0) { reg0Str += '\\.?[0-9]{0,' + decimalPlaces + '}'; } 
    else if (decimalPlaces < 0) { reg0Str += '\\.?[0-9]*';  } 
	
    reg0Str = allowNegative ? '^-?' + reg0Str : '^' + reg0Str; 
    reg0Str = reg0Str + '$'; 
	
    var reg0 = new RegExp(reg0Str); 
	
    if (reg0.test(temp)) return true; 
 
	//-------------------------------------------------------------------------
    // Replace all non-numeric characters
    //-------------------------------------------------------------------------
    var reg1Str = '[^0-9' + (decimalPlaces != 0 ? '.' : '') + (allowNegative ? '-' : '') + ']'; 
    var reg1 = new RegExp(reg1Str, 'g'); 
    temp = temp.replace(reg1, ''); 
  
    if (allowNegative)
	{ 
		//---------------------------------------------------------------------
	    // Replace extra negative
	    //---------------------------------------------------------------------
	    var hasNegative = temp.length > 0 && temp.charAt(0) == '-'; 
	    var reg2 = /-/g; 
	    temp = temp.replace(reg2, ''); 
	    if (hasNegative) temp = '-' + temp; 
    } 
	 
	if (decimalPlaces != 0)
	{ 
		var reg3 = /\./g; 
		var reg3Array = reg3.exec(temp); 
		
		if (reg3Array != null)
		{ 
			//-----------------------------------------------------------------
			// Keep only first occurrence of .  
			// and the number of places specified by decimalPlaces
			//-----------------------------------------------------------------
			var reg3Right = temp.substring(reg3Array.index + reg3Array[0].length); 
			reg3Right = reg3Right.replace(reg3, ''); 
			reg3Right = decimalPlaces > 0 ? reg3Right.substring(0, decimalPlaces) : reg3Right; 
			temp = temp.substring(0,reg3Array.index) + '.' + reg3Right; 
		} 
	} 
	 
    obj.value = temp; 
}
    
//-----------------------------------------------------------------------------
// NAME: BlockNonNumbers
//-----------------------------------------------------------------------------
// DESCRIPTION:
//		Used by NumericTextBox control to allow only numeric input.
//-----------------------------------------------------------------------------
function BlockNonNumbers(obj, e, allowDecimal, allowNegative) 
{ 
	var key; 
	var isCtrl = false; 
	var keychar; 
	var reg; 
	 
	if (window.event)
	{ 
		key = e.keyCode; 
		isCtrl = window.event.ctrlKey 
	} 
	else if(e.which)
	{ 
		key = e.which; 
		isCtrl = e.ctrlKey; 
	} 
	 
	if (isNaN(key)) return true; 
	 
	keychar = String.fromCharCode(key); 
		 
	//-------------------------------------------------------------------------
	// Check for backspace or delete, or if Ctrl was pressed
	//-------------------------------------------------------------------------
	if (key == 8 || isCtrl || key == 13) 
	{ 
		return true; 
	} 
	reg = /\d/; 
	var isFirstN = allowNegative ? keychar == '-' && obj.value.indexOf('-') == -1 : false; 
	var isFirstD = allowDecimal ? keychar == '.' && obj.value.indexOf('.') == -1 : false; 
	 
	return isFirstN || isFirstD || reg.test(keychar); 
}
