/**
 * MMI Core Functions
 */
 
 /**
  * Submits a comment 
  */
  
function addComment(subject, comment, parent, page_item, external_id, external_id_type, container)
    {
        var request = new MMI_AJAX('index.php', null, 'post', false); 
        request.resetParams();
        request.wait.container = container; 
        request.success.container = container; 
        var name = 'item[new_comment]';
        request.setParam(name + '[item_parent]', parent);
        request.setParam(name + '[item_name]', subject); 
        request.setParam(name + '[message_body]', comment);
        request.setParam(name + '[message_external_id]', external_id);
        request.setParam(name + '[message_external_type]', external_id_type);
        request.setParam('message_external_type', external_id_type);
        request.setParam('mode','edit');
        request.setParam('next_mode', 'display');
        request.setParam('view', 'comment');
        request.setParam('id', page_item);
        request.setParam('type','message');
        request.setParam('fieldName', external_id);
        request.setParam('replace', container);
        request.send();
        return;
    }
    
    
    
 /**
  * Submits a comment 
  */
  
function addMessage(subject, body, parent, page_item, external_id, external_id_type, container, view)
    {
        var request = new MMI_AJAX('index.php', null, 'post', false); 
        request.resetParams();
        request.wait.container = container; 
        request.success.container = container; 
        var name = 'item[new_comment]';
        request.setParam(name + '[item_parent]', parent);
        request.setParam(name + '[item_name]', subject); 
        request.setParam(name + '[message_body]', body);
        request.setParam(name + '[message_external_id]', external_id);
        request.setParam(name + '[message_external_type]', external_id_type);
        request.setParam('message_external_type', external_id_type);
        request.setParam('mode','edit');
        request.setParam('next_mode', 'display');
        request.setParam('view', view);
        request.setParam('id', page_item);
        request.setParam('type','message');
        request.setParam('replace', container);
        request.send();
        return;
    }
    
/**
 * Unhides every question on the form that has its dependencies met.
 * Hides every question that does not have its dependencies met.
 */
function updateQuestions(transport)
{
    var container;
    var response = transport.responseJSON.dependencies;
    
    for(var question in response)
    {
        container = $(response[question].name + '_container');
        if(container == false || container == null)
        {
            //nothing
        }else{
            if(response[question].status == true && container.visible() == false)
            {
                Effect.SlideDown(container);
            }
            if(response[question].status == false && container.visible() == true)
            {
                Effect.SlideUp(container);
            }
        }
    }
}   

/** 
 * Submit the answer to a question.
 */
function answerQuestion(fieldName, item_id, uniqueid, user_id, form_data_id, container, view)
{
    if(container == undefined){
        container = fieldName + '_container';
    }
    var request = new MMI_AJAX('index.php', null, 'post', false); 
    request.resetParams();
    request.wait.container = container; 
    request.success.container = container; 
    var name = 'formdata[' + item_id + ']';
    
    //Get the field value
    var fieldInputField = $('formdata['+item_id+']['+fieldName+']');
    if(fieldInputField == undefined){
        //see if its a group
        var checkboxes = $$('input[type=checkbox][name*='+'"formdata['+item_id+']['+fieldName+']"'+']');
        checkboxes.each(function(o){
            var v = o.getValue();
            if(v!=null){
                 request.setParam(o.id, v);
            }
           request.setParam('checkbox_list_' + o.id, 1);
        });
    }else{
        var value = getFormFieldValue(fieldInputField);
        request.setParam(name + '[' + fieldName + ']', value);
    }    
    //default view
    if(view == undefined){
        view = 'question';
    }
    request.setParam(name + '[user_id]', user_id);
    request.setParam(name + '[form_data_id]', form_data_id);
    request.setParam(name + '[form_unique_id]', uniqueid);
    request.setParam('mode','form');
    request.setParam('next_mode', 'display');
    request.setParam('view', view);
    request.setParam('id', item_id);
    request.setParam('questionnum', $(fieldName + '_questionnum').value);
    request.setParam('groupnum', $(fieldName + '_groupnum').value);
    request.setParam('numberQuestions', $(fieldName + '_numberQuestions').value);
    request.setParam('fieldName', fieldName);
    request.setParam('form_unique_id', uniqueid);
    request.setParam('uniqueid', uniqueid);
    request.setParam('userid', user_id);
    request.success.action = 'replace';
    request.setSuccessCallback('dep',updateQuestions);
    //request.setSuccessCallback('replace',updateQuestions);
    //request.setSuccessCallback('update_container_on_success', request.utils.updateSuccessContainer, []);
    request.send();
     
    
    return;
}  

function getFormFieldValue( field)
{
    var field_obj = $(field);
    var field_value;
    if(field_obj.type == 'radio')
    {
        field_value = $$('input:checked[type="radio"][name="' + field_obj.id + '"]').pluck('value')[0];
    } else
    {
        field_value = field_obj.getValue();
    }
    return field_value;
}

function FCKeditor_OnComplete( editorInstance )
{
    editorInstance.Events.AttachEvent( 'OnSelectionChange', fckValueUpdated ) ;    
}

function fckValueUpdated(e){
    //get the field
    var f = $(e.Name);
    //get the content
    var content = e.GetHTML();
    //set the hidden one
    f.value=content;
  
}
function fckForceUpdate(fieldName){
    //get the instance
    var iEditor = FCKeditorAPI.GetInstance(fieldName);
    //container
    var iContainer = $(fieldName);
    if(iContainer != undefined && iEditor != undefined){
        iContainer.value = iEditor.GetHTML();
    }
}

function disableForm(vFormId){
    var iForm = $(vFormId);
    if(iForm != undefined){
        var elements = iForm.getElements();
        elements.each(function(e){
            if(e.type=='submit'){
                e.disable();
            }
        });
    }
}

var console;
function consoleDebug(msg){
    if(console != undefined){
        console.log(msg);
    }
}
