//detect version of jquery from url param, e.g. 'jquery=1.7.2' 
var jqver = decodeURIComponent((new RegExp('[?|&]' + 'jquery' + '=' + '([^&;]+?)(&|#|;|$)').exec(location.search)||[,""])[1].replace(/\+/g, '%20'))||null;
    jqurl = jqver ? "http://ajax.googleapis.com/ajax/libs/jquery/"+jqver+"/jquery.min.js" : "libs/jquery/jquery-1.8.2.min.js";
    
require(["loader", jqurl], function(loader) {

    var config = loader.getConfig("../src"),
        params = loader.getParams();
    
    //add test specific dependencies
    config.shim['test/mocks'] = ['element/editable-element', 'test/libs/mockjax/jquery.mockjax'];
        
    //as we need to keep order of tests, create shim dependencies automatically
    addTests(config);
    
    requirejs.config(config);
   
    require(['test/unit/api'], 
    function() {
        //disable effects
        $.fx.off = true;
        $.support.transition = false;
        $.fn.editable.defaults.mode = params.c === 'inline' ? 'inline' : 'popup';           
        
        QUnit.load();
        QUnit.start();
    });
    
    function addTests(config) {
        var date;
        
        switch(params.f) {
            case 'bootstrap':
              date = ['test/unit/datefield', 'test/unit/date'];
              break;
               
            default:  
              date = ['test/unit/dateuifield', 'test/unit/dateui'];
        }
        
        var tests = [
            'test/mocks',
            'test/unit/common',
            'test/unit/text',
            'test/unit/textarea',
            'test/unit/select',
            'test/unit/checklist'
       ];
       tests = tests.concat(date);
       tests.push('test/unit/api');
       
       for(var i=0; i<tests.length-1; i++) {
          config.shim[tests[i+1]] = [tests[i]]; 
       }
    }
});