
/**
 * Function for sending ajax requests
 *
 * @param options
 * @param value
 * @return boolean
 */
function sendAjax(options, value)
{
    $.ajax({
        type: options['type'],
        dataType: options['dataType'],
        url: options['url'],
        data: options['data'],
        success: function(returned){
            handleSendAjax(returned, options);
        }
    });

    if(value != null){
        return value;
    }else{
        return true;
    }
}

/**
 * Function for handling after ajax actions
 *
 * @param data
 * @param options
 * @return void
 */
function handleSendAjax(data, options)
{
    switch(options['handle']){
        case 'add-options':
            addOptions(data['option'], options['element']);
            break;
        default:
            break;
    }
}

/**
 * Handle adding options in select element
 * @param data
 * @param element
 * @return void
 */
function addOptions(data, element)
{
    $(element+' > *').remove();
    $.each(data, function(val, text) {
        $(element).append(
            $('<option></option>').val(val).html(text)
        );
    });
}

/**
 * Handle adding form elements
 * @param data
 * @param element
 * @param options
 * @return void
 */
function addElements(data, element, options)
{
    switch(options){
        case 'inside-prepend':
            $(element).prepend(data);
            break;
        case 'inside-append':
            $(element).append(data);
            break;
        case 'outside-before':
            $(element).before(data);
            break;
        case 'outside-after':
            $(element).after(data);
        default:
            break;
    }
}

/**
 * Handle writing content with ajax
 * @param data
 * @param element
 * @param options
 */
function writeXHTML(data, element, options)
{
    $(element).html(data);
    if( options['write'] != null ){
        writeXHTMLSetting(options['writeSettings']);
    }
}

/**
 * Function for setting event actions
 * @param settings
 */
function writeXHTMLSetting(settings)
{
    $(document).ready(function(){
        for( var i = 0; i <= settings.length - 3; i += 3 ){
            if(settings[i]!="noPicker"){
                $(settings[i]).unbind(settings[i+1]);
                $(settings[i]).bind(settings[i+1],settings[i+2]);
            }else{
                switch(settings[i+1]){
                    case 'location':
                        window.location.href = settings[i+2];
                        break;
                    case 'call-ready':
                        $(document).ready(settings[i+2]);
                        break;
                    default:
                        break;
                }
            }
        }
    });
}


function changeSelect(select_1, select_2, url) {
    $('#' + select_1).change(function() {
        $.getJSON(url + '/id/' + $(this).val(), function(data){
            data = eval(data);
            $('#' + select_2).addOption(data.result);
            $('#' + select_2).val('');
        });
    });
}


function checkGeoPosition()
{
    dataForm = $('form').formSerialize();
    $.getJSON('/json/index/addresscoord', dataForm, function(data){
        data = eval(data);
        if (data == null) {
            $('#latitude').val('');
            $('#longitude').val('');
        } else {
            $('#latitude').val(data[1]);
            $('#longitude').val(data[0]);
        }
    });
}


    $(document).ready(function() {
        $("a[rel='externalLink']").addClass('linkExternal');
        $("a[rel='externalLink']").click( function() {
            window.open( $(this).attr('href') );
            return false;
        });
    });


