/**
 * Load scripts for page "Power for SEM"
 * 
 * @author   Timo Gnambs <timo@gnambs.at>
 * @lastmod  2008-09-25
 */


$(function () { 
    
    $('.powerforsem li div').hide();
    $('.powerforsem h2').click(function() {
    
        //clear all forms
        var nextDiv = $(this).next();
        var nextSiblings = $('.powerforsem li div:visible');
        if(nextSiblings.length) {
            nextSiblings.slideUp('fast', function() {
                nextDiv.slideDown('fast');
            });
        } else {
            nextDiv.slideDown('fast');
        }
        $('.powerforsem li div').empty();
        
        //generate current form
        var form = '<table style="width:100%;"><tr><td style="width:60%;">';
        var mode = $(this).parent('li').attr('id');
        if(jQuery.inArray(mode, ['n-for-rmsea1', 'n-for-rmsea2', 'n-for-gfi', 'n-for-agfi','power-for-rmsea', 'n-for-steiger', 'n-for-mcdonald', 'power-for-rmsea1', 'power-for-gfi', 'power-for-agfi'])>=0) {
            form += '<p><label for="ps_df">Degrees of freedom (df):</label><input type="text" size="30" id="ps_df" /></p>';
        }
        if(jQuery.inArray(mode, ['n-for-test-of-no-difference', 'n-for-test-of-small-difference', 'power-for-test-of-no-difference', 'power-for-test-of-small-difference'])>=0) {
            form += '<p><label for="ps_dfa" title="Degrees of freedom (df) for model A">Df for model A:</label><input type="text" size="30" id="ps_dfa" /></p>';
            form += '<p><label for="ps_dfb" title="Degrees of freedom (df) for model B">Df for model B:</label><input type="text" size="30" id="ps_dfb" /></p>';
        }
        form += '<p><label for="ps_alpha">Significance level (&alpha;):</label><input type="text" size="30" id="ps_alpha" /></p>';
        if(jQuery.inArray(mode, ['n-for-rmsea1', 'n-for-rmsea2', 'n-for-test-of-no-difference', 'n-for-test-of-small-difference', 'n-for-gfi', 'n-for-agfi', 'n-for-steiger', 'n-for-mcdonald'])>=0) {
            form += '<p><label for="ps_power">Desired power:</label><input type="text" size="30" id="ps_power" /></p>';
        }
        if(jQuery.inArray(mode, ['power-for-rmsea1', 'power-for-test-of-no-difference', 'power-for-test-of-small-difference', 'power-for-gfi', 'power-for-agfi'])>=0) {
            form += '<p><label for="ps_n">Sample size (N):</label><input type="text" size="30" id="ps_n" /></p>';
        }
        if(jQuery.inArray(mode, ['n-for-steiger'])>=0) {
            form += '<p><label for="ps_gamma" title="Steigers Gamma">&gamma; (H<sub>1</sub>):</label></label><input type="text" size="30" id="ps_gamma" /></p>';
        }
        if(jQuery.inArray(mode, ['n-for-mcdonald'])>=0) {
            form += '<p><label for="ps_mc" title="McDonalds fit index">McDonalds Fit Index (H<sub>1</sub>):</label></label><input type="text" size="30" id="ps_mc" /></p>';
        }
        if(jQuery.inArray(mode, ['n-for-gfi', 'n-for-agfi', 'n-for-steiger', 'n-for-mcdonald', 'power-for-gfi', 'power-for-agfi'])>=0) {
            form += '<p><label for="ps_num" title="Number of variables in model">Number of variables:</label></label><input type="text" size="30" id="ps_num" /></p>';
        }
        if(jQuery.inArray(mode, ['n-for-rmsea1', 'power-for-rmsea1'])>=0) {
            form += '<p><label for="ps_rmsea_null">RMSEA (H<sub>0</sub>):</label><input type="text" size="30" id="ps_rmsea_null" /></p>';
            form += '<p><label for="ps_rmsea_alt">RMSEA (H<sub>1</sub>):</label><input type="text" size="30" id="ps_rmsea_alt" /></p>';
        }
        if(jQuery.inArray(mode, ['n-for-test-of-no-difference', 'power-for-test-of-no-difference'])>=0) {
            form += '<p><label for="ps_rmsea_alt_a">RMSEA of model A (H<sub>1</sub>):</label><input type="text" size="30" id="ps_rmsea_alt_a" /></p>';
            form += '<p><label for="ps_rmsea_alt_b">RMSEA of model B (H<sub>1</sub>):</label><input type="text" size="30" id="ps_rmsea_alt_b" /></p>';
        }
        if(jQuery.inArray(mode, ['n-for-test-of-small-difference', 'power-for-test-of-small-difference'])>=0) {
            form += '<p><label for="ps_rmsea_null_a">RMSEA of model A (H<sub>0</sub>):</label><input type="text" size="30" id="ps_rmsea_null_a" /></p>';
            form += '<p><label for="ps_rmsea_alt_a2">RMSEA of model A (H<sub>1</sub>):</label><input type="text" size="30" id="ps_rmsea_alt_a2" /></p>';
            form += '<p><label for="ps_rmsea_null_b">RMSEA of model B (H<sub>0</sub>):</label><input type="text" size="30" id="ps_rmsea_null_b" /></p>';
            form += '<p><label for="ps_rmsea_alt_b2">RMSEA of model B (H<sub>1</sub>):</label><input type="text" size="30" id="ps_rmsea_alt_b2" /></p>';
        }
        if(jQuery.inArray(mode, ['n-for-gfi', 'power-for-gfi'])>=0) {
            form += '<p><label for="ps_gfi_null">GFI (H<sub>0</sub>):</label><input type="text" size="30" id="ps_gfi_null" /></p>';
            form += '<p><label for="ps_gfi_alt">GFI (H<sub>1</sub>):</label><input type="text" size="30" id="ps_gfi_alt" /></p>';
        }
        if(jQuery.inArray(mode, ['n-for-agfi', 'power-for-agfi'])>=0) {
            form += '<p><label for="ps_agfi_null">AGFI (H<sub>0</sub>):</label><input type="text" size="30" id="ps_agfi_null" /></p>';
            form += '<p><label for="ps_agfi_alt">AGFI (H<sub>1</sub>):</label><input type="text" size="30" id="ps_agfi_alt" /></p>';
        }
        form += '<p><label>Code:</label><table class="code"><tr><td><input type="radio" id="ps_codetype" name="ps_code" value="1" checked="checked" />R</td></tr><tr><td><input type="radio" name="ps_code" value="spss" /> SPSS</td></tr></table></p>';
        form += '</td><td style="vertical-align:middle;text-align:center;"><a href="#" id="ps_generate"><img src="/sites/all/themes/gnambs/images/kget.png" alt="Generate code" title="Generate code" width="100" height="100" /></a></td></tr></table>';
        form += '<p style="text-align:center;margin-top:2em;" id="ps_code"><textarea></textarea></p>';
        form += '<p class="loader" style="display:none;">Loading...</p>';
        $(this).parent('li').find('div:first').append(form);
        
        //set default values
        $('#ps_code').hide();
        $('#ps_alpha').val('0.05');
        $('#ps_power').val('0.80');
        
        //set action
        $('#ps_generate').click(function() {
            $('#ps_code').slideUp();
            $('.powerforsem li .loader').show();
            var type = $('#ps_codetype').attr('checked') ? 'r' : 'sps';
            $.get('/sites/default/files/powerforsem/calculate-'+mode+'.'+type, function(data) {
                $('.powerforsem li .loader').hide();
                
                //replace user settings
                if(type=='r') {
                    if($('#ps_alpha').val()) data = data.replace(/alpha <- [.0-9]+/, 'alpha <- ' + $('#ps_alpha').val());
                    if($('#ps_df').val()) data = data.replace(/df <- [.0-9]+/, 'df <- ' + $('#ps_df').val());
                    if($('#ps_dfa').val()) data = data.replace(/dfa <- [.0-9]+/, 'dfa <- ' + $('#ps_dfa').val());
                    if($('#ps_dfb').val()) data = data.replace(/dfb <- [.0-9]+/, 'dfb <- ' + $('#ps_dfb').val());
                    if($('#ps_power').val()) data = data.replace(/power <- [.0-9]+/, 'power <- ' + $('#ps_power').val());
                    if($('#ps_n').val()) data = data.replace(/n <- [.0-9]+/, 'n <- ' + $('#ps_n').val());
                    if($('#ps_num').val()) data = data.replace(/p <- [.0-9]+/, 'p <- ' + $('#ps_num').val());
                    if($('#ps_rmsea_null').val()) data = data.replace(/rmsea0 <- [.0-9]+/, 'rmsea0 <- ' + $('#ps_rmsea_null').val());
                    if($('#ps_rmsea_alt').val()) data = data.replace(/rmseaa <- [.0-9]+/, 'rmseaa <- ' + $('#ps_rmsea_alt').val());
                    if($('#ps_rmsea_alt_a').val()) data = data.replace(/rmseaa <- [.0-9]+/, 'rmseaa <- ' + $('#ps_rmsea_alt_a').val());
                    if($('#ps_rmsea_alt_b').val()) data = data.replace(/rmseab <- [.0-9]+/, 'rmseab <- ' + $('#ps_rmsea_alt_b').val());
                    if($('#ps_rmsea_null_a').val()) data = data.replace(/rmsea0a <- [.0-9]+/, 'rmsea0a <- ' + $('#ps_rmsea_null_a').val());
                    if($('#ps_rmsea_null_b').val()) data = data.replace(/rmsea0b <- [.0-9]+/, 'rmsea0b <- ' + $('#ps_rmsea_null_b').val());
                    if($('#ps_rmsea_alt_a2').val()) data = data.replace(/rmsea1a <- [.0-9]+/, 'rmsea1a <- ' + $('#ps_rmsea_alt_a2').val());
                    if($('#ps_rmsea_alt_b2').val()) data = data.replace(/rmsea1b <- [.0-9]+/, 'rmsea1b <- ' + $('#ps_rmsea_alt_b2').val());
                    if($('#ps_gfi_null').val()) data = data.replace(/gfi0 <- [.0-9]+/, 'gfi0 <- ' + $('#ps_gfi_null').val());
                    if($('#ps_gfi_alt').val()) data = data.replace(/gfia <- [.0-9]+/, 'gfia <- ' + $('#ps_gfi_alt').val());
                    if($('#ps_agfi_null').val()) data = data.replace(/agfi0 <- [.0-9]+/, 'agfi0 <- ' + $('#ps_agfi_null').val());
                    if($('#ps_agfi_alt').val()) data = data.replace(/agfia <- [.0-9]+/, 'agfia <- ' + $('#ps_agfi_alt').val());
                    if($('#ps_gamma').val()) data = data.replace(/gamma <- [.0-9]+/, 'gamma <- ' + $('#ps_gamma').val());
                    if($('#ps_mc').val()) data = data.replace(/mc <- [.0-9]+/, 'mc <- ' + $('#ps_mc').val());
                } else {
                    if($('#ps_alpha').val()) data = data.replace(/compute #alpha = [.0-9]+/, 'compute #alpha = ' + $('#ps_alpha').val() + '.');
                    if($('#ps_df').val()) data = data.replace(/compute #df = [.0-9]+/, 'compute #df = ' + $('#ps_df').val() + '.');
                    if($('#ps_dfa').val()) data = data.replace(/compute #dfa = [.0-9]+/, 'compute #dfa = ' + $('#ps_dfa').val() + '.');
                    if($('#ps_dfb').val()) data = data.replace(/compute #dfb = [.0-9]+/, 'compute #dfb = ' + $('#ps_dfb').val() + '.');
                    if($('#ps_power').val()) data = data.replace(/compute #power = [.0-9]+/, 'compute #power = ' + $('#ps_power').val() + '.');
                    if($('#ps_n').val()) data = data.replace(/compute #n = [.0-9]+/, 'compute #n = ' + $('#ps_n').val() + '.');
                    if($('#ps_num').val()) data = data.replace(/compute #p = [.0-9]+/, 'compute #p = ' + $('#ps_num').val() + '.');
                    if($('#ps_rmsea_null').val()) data = data.replace(/compute #rmsea0 = [.0-9]+/, 'compute #rmsea0 = ' + $('#ps_rmsea_null').val() + '.');
                    if($('#ps_rmsea_alt').val()) data = data.replace(/compute #rmseaa = [.0-9]+/, 'compute #rmseaa = ' + $('#ps_rmsea_alt').val() + '.');
                    if($('#ps_rmsea_alt_a').val()) data = data.replace(/compute #rmseaa = [.0-9]+/, 'compute #rmseaa = ' + $('#ps_rmsea_alt_a').val() + '.');
                    if($('#ps_rmsea_alt_b').val()) data = data.replace(/compute #rmseab = [.0-9]+/, 'compute #rmseab = ' + $('#ps_rmsea_alt_b').val() + '.');
                    if($('#ps_rmsea_null_a').val()) data = data.replace(/compute #rmsea0a = [.0-9]+/, 'compute #rmsea0a = ' + $('#ps_rmsea_null_a').val() + '.');
                    if($('#ps_rmsea_null_b').val()) data = data.replace(/compute #rmsea0b = [.0-9]+/, 'compute #rmsea0b = ' + $('#ps_rmsea_null_b').val() + '.');
                    if($('#ps_rmsea_alt_a2').val()) data = data.replace(/compute #rmsea1a = [.0-9]+/, 'compute #rmsea1a = ' + $('#ps_rmsea_alt_a2').val() + '.');
                    if($('#ps_rmsea_alt_b2').val()) data = data.replace(/compute #rmsea1b = [.0-9]+/, 'compute #rmsea1b = ' + $('#ps_rmsea_alt_b2').val() + '.');
                    if($('#ps_gfi_null').val()) data = data.replace(/compute #gfi0 = [.0-9]+/, 'compute #gfi0 = ' + $('#ps_gfi_null').val() + '.');
                    if($('#ps_gfi_alt').val()) data = data.replace(/compute #gfia = [.0-9]+/, 'compute #gfia = ' + $('#ps_gfi_alt').val() + '.');
                    if($('#ps_agfi_null').val()) data = data.replace(/compute #agfi0 = [.0-9]+/, 'compute #agfi0 = ' + $('#ps_agfi_null').val() + '.');
                    if($('#ps_agfi_alt').val()) data = data.replace(/compute #agfia = [.0-9]+/, 'compute #agfia = ' + $('#ps_agfi_alt').val() + '.');
                    if($('#ps_gamma').val()) data = data.replace(/compute #gamma = [.0-9]+/, 'compute #gamma = ' + $('#ps_gamma').val() + '.');
                    if($('#ps_mc').val()) data = data.replace(/compute #mc = [.0-9]+/, 'compute #mc = ' + $('#ps_mc').val() + '.');
                }
                $('#ps_code textarea').val(data);
                $('#ps_code').slideDown();
            });
            return false;
        });
    });

});

