var CookieMan = Csn.Web.Cookie;

function _getCheckBoxControl(mode) {
    return jQuery(".power ." + mode);
}

function LoadCheckBox() {
    var cookieValue = CookieMan.Get(cookieName);

    var cbList = _getCheckBoxControl(uncheckedClass);
    var totalCb = cbList.length;

    for (var i = 0; i < totalCb; i++) {
        if (cbList[i].id != undefined && cbList[i].id.indexOf(prefixCbName) > -1) {
            var itemId = cbList[i].id.substring(prefixCbName.length);
            if (cookieValue.indexOf(itemId) > -1) {
                jQuery(cbList[i])
                    .removeClass(uncheckedClass)
                    .addClass(checkedClass);
            }
        }
    }

    UpdateCount();
}

function ToggleCheckBox(sender, valueToAdd)
{
    var cookieValue = CookieMan.Get(cookieName);
    if (cookieValue.indexOf(valueToAdd) > -1)
    {
        CookieMan.RemoveValue(cookieName, valueToAdd);
        jQuery(sender)
            .removeClass(checkedClass)
            .addClass(uncheckedClass);
    }
    else
    {
        CookieMan.Append(cookieName, valueToAdd);
        jQuery(sender)
            .removeClass(uncheckedClass)
            .addClass(checkedClass);
    }
    
    UpdateCount();
}

function ClearAllCheckBox()
{
    CookieMan.Remove(cookieName);

    _getCheckBoxControl(checkedClass)
        .removeClass(checkedClass)
        .addClass(uncheckedClass);
    
    UpdateCount();
}

function SelectAllCheckBox()
{   
    var cbList = _getCheckBoxControl(uncheckedClass);
    var totalCb = cbList.length;
    
    for (var i=0; i<totalCb; i++)
    {
        if (cbList[i].id != undefined && cbList[i].id.indexOf(prefixCbName) > -1)
        {
            var itemId = cbList[i].id.substring(prefixCbName.length);
            CookieMan.Append(cookieName, itemId);
            jQuery(cbList[i])
                .removeClass(uncheckedClass)
                .addClass(checkedClass);          
        } 
    }    
    
    UpdateCount();
}

function UpdateCount()
{
    var cookieValue = CookieMan.Get(cookieName);
    var totalItem = 0;
    if (cookieValue.length > 0)
        totalItem = cookieValue.split(Csn.Web.Cookie.GetMultiValueSeparator()).length;
    
    var compareList = Csn.$name("compare", "A");
    if (compareList != null)
    {
        for (var x=0; x<compareList.length; x++)
        {
            var obj = compareList[x];
            obj.innerHTML = String.format(compareTemplate, totalItem);
        }
    }    
}
