var notif_id = 0;

J.ajaxSetup({
    global: false,
    dataType: 'json',
    type: 'POST',
    error: failureAjax
});

function formSubmitAjax(form, unique_id, successCallback)
{
    successCallback = successCallback || successAjaxDefault;
    upload = false;
    J.each(J('input[type=file]'), function (i, input){
        if (input.form == form)
        {
            upload = true;
            return false;
        }
    });
    if (upload)
    {
        lst_upload[unique_id] = successCallback;
        var id = 'frame_' + unique_id;
        J('<iframe />')
            .attr('id', id)
            .attr('name', id)
            .attr('src', 'javascript:false')
            .hide()
            .appendTo('body');
        var i = J('<input />')
            .attr('type', 'hidden')
            .attr('name', 'upload_unique_id')
            .attr('value', unique_id)
        J(form).append(i);
        form.target = id;
        J('#' + unique_id).show();
        form.submit();
    }
    else
    {
        J.ajax({
            data: J(form).serialize(),
            url: J(form).attr("action"),
            success: successCallback
//            onLoading: $(unique_id).removeClassName('invisible'),
//            onComplete: $(unique_id).addClassName('invisible'),
//            onLoaded: ,
//            onException: ,
//            onInteractive: ,
//            onUninitialized: ,
        });
    }
}

function submitAjax(url, unique_id, params, successCallback)
{
    if(J.isArray(params)) alert('Tableau à passer en objet');//.
    successCallback = successCallback || successAjaxDefault;
    params = params || {};
    params.unique_id = unique_id;
    J.ajax({
        url: url,
        data: params,
        success: successCallback
    });
/*
//        onLoading: $(unique_id).removeClassName('invisible'),
//        onComplete: $(unique_id).addClassName('invisible'),
*/
}

function actionAjax(url, unique_id, params, successCallback)
{
    var action = url.substring(url.indexOf("/",2)+1, url.length);
    switch(action){
        case "delete": return deleteAjax(url, unique_id, params, successCallback);
        case "update": return updateAjax(url, unique_id, params, successCallback); //. inutile?
        case "insert": return insertAjax(url, unique_id, params, successCallback); //. inutile?
        case "select": return selectAjax(url, unique_id, params, successCallback);
    }
}

function selectAjax(url, unique_id, params, successCallback)
{
    params.value = J('#'+params.id).val();
    if (params.blank) clearAffichage(params.blank);
    submitAjax(url, unique_id, params, successCallback);
}

function deleteAjax(url, unique_id, params, successCallback)
{
    var controller = url.substring(1, url.indexOf("/",2));
    if(controller == 'secteur') params = prepareSecteurDelete(params);
    if(!confirm('Voulez vous vraiment supprimer ?')) return ;
    submitAjax(url, unique_id, params, successCallback);
}

//. inutile ?
function insertAjax(url, unique_id, params, successCallback)
{
    if(!confirm(params.information+'\n Est-ce correct ?')) return ;
    if (url="/rappel/insert"){
    }
}

function successAjaxDefault(json)
{
    if (!json)
        return;

    if (json.notifications)
        J.each(json.notifications, function (i, notif) {
            notifie(notif[0], notif[1]);
        });

    if (json.action)
        switch (json.action)
        {
        }
}


function failureAjax(XMLHttpRequest, textStatus, errorThrown)
{
console.log(XMLHttpRequest);
console.log(textStatus);
console.log(errorThrown);
    //. TO DO
    notifie('error', 'Erreur AJAX !<br />');
}
//
///* LINK 2 FORM */
//function link2form(action, params)
//{
//    var form = J('<form />')
//        .attr('method', 'post')
//        .attr('action', action)
//        .hide()
//        .appendTo('body');
//
//    J.each(params, function (key, val) {
//        J('<input />')
//            .attr('type', 'hidden')
//            .attr('name', key)
//            .attr('value', val)
//            .appendTo(form);
//    });
//    form.submit();
//}


/*************CALLBACKS******************/
function searchConventionKBD(e){
    if(e.keyCode == 13)
        searchConvention();
}

function searchConvention(){
    var params = {'search' : J('#search').val()};
    J.ajax({
        url: '/location/search',
        data: params,
        success: callbackSearch
    });
}

function callbackSearch(json){
    if (!json)
        return;

    if (json.notifications)
        J.each(json.notifications, function (i, notif) {
            notifie(notif[0], notif[1]);
        });

    if (json.id) {
        var params = {};
        params.id = json.id
        params.noback = true
        link2form(
            '/location/detail',
            params
        );
    }
}

function callbackPhotoDel(json){
    if (!json)
        return;

    if (json.notifications)
        J.each(json.notifications, function (i, notif) {
            notifie(notif[0], notif[1]);
        });

    if (json.url) {
        $('img[src=' + json.url + ']')
            .parents('div.photo_vente_edit')
            .remove();
    }
}

