var cbConfirmOptions = 
{
    delay:  2000,
    position: 
    {
        my: 'left center',
        at: 'right center',
        offset: '10 0'
    }, 
    zindex: 2000,
    className: 'cbConfirm'
}

var deepCloneJSON = function(object)
{
    
    var outpurArr = new Array();
    for (var i in object) {
        outpurArr[i] = typeof (object[i]) == 'object' ? deepCloneJSON(object[i]) : object[i];
    } 
    return outpurArr;
    
}

var cbConfirm = function(jbutton)
{
    var options = deepCloneJSON(cbConfirmOptions);
    
    //todo, also allow object to be directly referenced.
    var confirmOptions = cbForm.confirmOptions;
       
    if (confirmOptions != undefined && confirmOptions.length > 0 && window[confirmOptions] != undefined)
    {
        confirmOptions = window[confirmOptions];
    
        for (var item in confirmOptions)
        {
          
            options[item] = confirmOptions[item];            
        }
    }
        
    confirmOptions = jbutton.attr('confirmOptions');
       
    if (confirmOptions != undefined && confirmOptions.length > 0 && window[confirmOptions] != undefined)
    {
        confirmOptions = window[confirmOptions];
        for (var item in confirmOptions)
        {
            options[item] = confirmOptions[item];
            
        }
    }
        
    
    
    
    lastTimeout = jbutton.attr('cbConfirmLastTimeout');
        
    if (lastTimeout != undefined && lastTimeout.length > 0)
    {
        clearTimeout(lastTimeout);
    }
    var className = 'cbConfirm';
    if (options.className != undefined)
        className = options.className;
    $('.'+className).remove();
    
  
    if (options.content != undefined)
        var confirm = $('<div>' + options.content + '</div>');
    else
        var confirm = $('<div>' + cbForm.messages.form_confirm + '</div>');
    confirm.attr('class',className);
    
    confirm.css('position','absolute');
    zindex = 2000;
    if (options.zindex != undefined)
        zindex = options.zindex; 
    
    confirm.css('z-index', zindex);
 
    
    $(jbutton.parent()).append(confirm);
    var delay = 2000;
    if (options.delay != undefined)
        delay = options.delay;
    
    
    lastTimeout = setTimeout('removeCBConfirm("'+className+'")', delay);
    jbutton.attr('cbConfirmLastTimeout',lastTimeout);

    var formElement = jbutton.attr('form');
    var form;
    if (formElement==undefined)
    {
        form = jbutton.parents('form:first');
    }
    else
    {
        form = $(formElement);
    }
   

    confirm.click(function(){
        clearTimeout(lastTimeout);
        form.submit();
        $('.' + className).remove();
    });
    
    
    var my = 'right center';
    var at = 'left center';
    var offset = '0';
    if (options.position != undefined)
    {
        if (options.position.my != undefined)
            my = options.position.my;
        if (options.position.at != undefined)
            at = options.position.at;
        if (options.position.offset != undefined)
            offset = options.position.offset;
    }
    
    confirm.position({
        my: my,
        at: at, 
        offset: offset, 
        of: jbutton
    })
 
}


function removeCBConfirm(className)
{
    $('.'+className).remove();
}
