function SetRadioButtonCheck(groupName, curRadioBtn) {
    //Utility function to make sure only one radio button gets
    //checked that belong to the same group name,
    //Group names can be altered by .NET if 
    //they reside in seperate user controls with same group names
    var radioBtns = document.getElementsByTagName("input");
    for (i = 0; i < radioBtns.length; i++) {
        var radioBtn = radioBtns[i];
        if (radioBtn.type == 'radio') {
            if (radioBtn.name.indexOf(groupName) >= 0) {
                radioBtn.checked = false;
                SetUnselectedBorder(radioBtn);
            }
        }
    }
    curRadioBtn.checked = true;
    SetSelectedBorder(curRadioBtn);
    if (typeof (useValidator) != "undefined" && useValidator) {
        ValidatorValidate(imgValidator);
        ValidatorValidate(txtValidator);
    }
}

function SetUnselectedBorder(radioBtn) {
    //Sets the "unselected" classnames for the borders
    var strClientID = GetCommonClientID(radioBtn);
    SetUnselectedBorderByClientId(strClientID);

}

function SetSelectedBorder(radioBtn) {
    //Sets the "Selected" classnames for the borders
    var strClientID = GetCommonClientID(radioBtn);
    SetSelectedBorderByClientId(strClientID);
}

function SetUnselectedBorderByClientId(strClientID) {

    var stackedTemplateIdx = strClientID.indexOf("uctlStackedControl");
    var DetailedTemplateIdx = strClientID.indexOf("uctlDetailControl");

    var itemIndex = "";
    if (stackedTemplateIdx != -1 || DetailedTemplateIdx != -1) {
        itemIndex = "_" + strClientID.substr(strClientID.lastIndexOf("_") - 1, 1);
    }

    SetUnselectedElement(strClientID + "tdPricing" + itemIndex);
    SetUnselectedElement(strClientID + "tdBestOffer" + itemIndex);
    SetUnselectedElement(strClientID + "divPriceInner" + itemIndex);
    SetUnselectedElement(strClientID + "tdBottomLeft" + itemIndex);
    SetUnselectedElement(strClientID + "tdBottomRight" + itemIndex);
    SetUnselectedElement(strClientID + "gridDetailBox" + itemIndex);
    SetUnselectedElement(strClientID + "divBannerOffer" + itemIndex);
    SetUnselectedElement(strClientID + "hlnkViewDetails" + itemIndex);
    SetUnselectedElement(strClientID + "spanSaveText" + itemIndex);
    SetUnselectedElement(strClientID + "spanSaveValue" + itemIndex);
    SetUnselectedElement(strClientID + "div_gridDetailBox" + itemIndex);
    SetUnselectedElement(strClientID + "spanSpecialOffer" + itemIndex);
    SetUnselectedElement(strClientID + "divOfferTxt" + itemIndex);
    SetUnselectedElement(strClientID + "spanSavePercent" + itemIndex);
    SetUnselectedElement(strClientID + "spanSignupFeeLabel" + itemIndex);
    SetUnselectedElement(strClientID + "spanSignupFee" + itemIndex);
}

function SetSelectedBorderByClientId(strClientID) {

    var stackedTemplateIdx = strClientID.indexOf("uctlStackedControl");
    var DetailedTemplateIdx = strClientID.indexOf("uctlDetailControl");

    var itemIndex = "";
    if (stackedTemplateIdx != -1 || DetailedTemplateIdx != -1) {
        itemIndex = "_" + strClientID.substr(strClientID.lastIndexOf("_") - 1, 1);
    }

    SetSelectedElement(strClientID + "tdPricing" + itemIndex);
    SetSelectedElement(strClientID + "tdBestOffer" + itemIndex);
    SetSelectedElement(strClientID + "divPriceInner" + itemIndex);
    SetSelectedElement(strClientID + "tdBottomLeft" + itemIndex);
    SetSelectedElement(strClientID + "tdBottomRight" + itemIndex);
    SetSelectedElement(strClientID + "gridDetailBox" + itemIndex);
    SetSelectedElement(strClientID + "divBannerOffer" + itemIndex);
    SetSelectedElement(strClientID + "hlnkViewDetails" + itemIndex);
    SetSelectedElement(strClientID + "spanSaveText" + itemIndex);
    SetSelectedElement(strClientID + "spanSaveValue" + itemIndex);
    SetSelectedElement(strClientID + "div_gridDetailBox" + itemIndex);
    SetSelectedElement(strClientID + "spanSpecialOffer" + itemIndex);
    SetSelectedElement(strClientID + "divOfferTxt" + itemIndex);
    SetSelectedElement(strClientID + "spanSavePercent" + itemIndex);
    SetSelectedElement(strClientID + "spanSignupFeeLabel" + itemIndex);
    SetSelectedElement(strClientID + "spanSignupFee" + itemIndex);
}


function SetUnselectedElement(elementName) {
    //Remove "-g" from className
    var elementID = document.getElementById(elementName);
    if (elementID != null) {
        var idx = elementID.className.indexOf("-g");
        if (idx != -1)
            elementID.className = elementID.className.substring(0, idx);
    }
}

function SetSelectedElement(elementName) {
    //Add "-g" to className
    var elementID = document.getElementById(elementName);
    if (elementID != null) {
        var idx = elementID.className.indexOf("-g");
        if (idx == -1)
            elementID.className = elementID.className + "-g";
    }
}

function GetCommonClientID(radioBtn) {
    return radioBtn.id.substring(0, radioBtn.id.indexOf("rBtnPlan"));
}

function ValidKeyDown(e) {
    var keycode = (window.event) ? window.event.keyCode : e.which;
    if (keycode == 13) {
        return true;
    }
}

function ToggleView(divExpColID, detailsDivID, collapseClass, expandClass) {
    //Toggles the class names of html elements
    divExpCollapse = document.getElementById(divExpColID);
    divExpCollapse.className = (divExpCollapse.className == expandClass) ? divExpCollapse.className = collapseClass : divExpCollapse.className = expandClass;
    detailsDiv = document.getElementById(detailsDivID);
    detailsDiv.className = (detailsDiv.className == 'show') ? detailsDiv.className = 'hide' : detailsDiv.className = 'show';
    return true;
}

function ShowRegion(elementIdToShow, elementIdToHide, secondElementToShow, secondElementToHide) {
    elementToShow = document.getElementById(elementIdToShow);
    elementToHide = document.getElementById(elementIdToHide);
    if (elementToShow) elementToShow.style.display = "block";
    if (elementToHide) elementToHide.style.display = "none";

    secondElementToShow = document.getElementById(secondElementToShow);
    secondElementToHide = document.getElementById(secondElementToHide);
    if (secondElementToShow) secondElementToShow.style.display = "block";
    if (secondElementToHide) secondElementToHide.style.display = "none";

    return true;
}

// function for showing/displaying tooltips in signup user controls
function ShowToolTip(spanID) {
    var span = document.getElementById(spanID);
    if (span != null) {
        span.style.display = "inline";
    }
}
function HideToolTip(spanID) {
    var span = document.getElementById(spanID);
    if (span != null) {
        span.style.display = "none";
    }
}

// On IE6 for certain users, we were credit card & billing address 
// onfocus, onblur were behaving weird. This function will use IE specific
//methods instead.
function UpdateIE6Events(elementId, toolTipId) {
    var element = document.getElementById(elementId);
    if (element && element != null) {
        element.onfocusin = function () { ShowToolTip(toolTipId); }
        element.onfocusout = function () { HideToolTip(toolTipId); }
        element.onfocus = function () { };
        element.onblur = function () { };
    }
}

//This method is called for IE6 on page load & left empty intentionally
// so that if we run into issues with more controls once we go live
// we can call UpdateIE6Events() for with hardcoded IDs here.
function UpdateIE6EventsEmpty() {
}

//Template 4 [Detailed-Collapse] functions
var divOpen = '';
var aOpen;
var lastLink;

function isImageLink(a) {
    var obj = a.childNodes[0];
    var imgNode = false;
    for (j = 0; j < document.images.length; j++) {
        if (obj == document.images[j]) {
            imgNode = true;
            break;
        }
    }

    return imgNode;
}

var prevRadioBtn = null;
function SetRadioButtonCheckAndToggle(groupName, radioID, divID, lnkID, seeDetailsText, closeDetailsText, changeToggleStatus) {
    var curRadioBtn = document.getElementById(radioID);
    SetRadioButtonCheck(groupName, curRadioBtn);
    if (prevRadioBtn == null || prevRadioBtn != curRadioBtn) {
        ToggleAndSelect(groupName, radioID, divID, lnkID, seeDetailsText, closeDetailsText, false);
        if (changeToggleStatus == false) {
            //show details link disabled
            //hide details panel
            if (divID != '') {
                document.getElementById(divID).style.display = "none";
            }
        }
        prevRadioBtn = curRadioBtn;
    }
}

function ToggleAndSelect(groupName, radioID, divID, lnkID, seeDetailsText, closeDetailsText, changeSelection) {
    //Utility function to make sure only one radio button gets
    //checked that belong to the same group name,
    //Group names can be altered by .NET if
    //they reside in seperate user controls with same group names
    var a = document.getElementById(lnkID);
    var curRadioBtn = document.getElementById(radioID);
    var radioBtns = document.getElementsByTagName("input");

    if (divOpen != "" && divOpen != divID) {
        document.getElementById(divOpen).style.display = "none";

        if (aOpen != undefined && isImageLink(aOpen) != true)
            aOpen.innerHTML = seeDetailsText;
    }

    var element = document.getElementById(divID);
    if (element.style.display == "none") {
        element.style.display = "block";
        divOpen = divID;

        if (a != undefined && isImageLink(a) != true)
            a.innerHTML = closeDetailsText;
    }
    else {
        element.style.display = "none";
        divOpen = "";

        if (a != undefined && isImageLink(a) != true)
            a.innerHTML = seeDetailsText;
    }

    aOpen = a;
    if (changeSelection) {
        SetRadioButtonCheck(groupName, curRadioBtn);
        prevRadioBtn = curRadioBtn;
    }

} 
