var finished = false;

var retries = 0;

function demo_start_request(){

    // checks if url is entered

    var reg_url = /(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)/;

    var str = $('#site').val();

    // checking for retries count

    $.ajax({

        async: false,

        dataType: 'script',

        type: 'POST',

        global: false,

        data: { 'url': url },

        url: base_path + '/ajax/demo/get_count',

        success: function (data){

            if (10 < retries){

                $('#demo_rank').html('<tr><td>Sorry only 10 queries permitted. Want to get all the features? <a href="'+base_path+'/register">Join now!</a></td><tr>');

                finished = true;

            }

        }

    });



    if (!reg_url.test(str)){

        $('#error_url').html('Incorrect URL.<br/>');

        return;

    }



    if (!finished){

        finished = true;

        $('#error_url').html('');

        $('#go').val('Analyzing...');

        $('#go').attr('disabled', true);

        var url = $('#site').val();

        $.ajaxSetup({

            global: true

        });



        $(document).ajaxStop(function(){

            $('#go').val('Done');

            $(".digit:contains('NaN')").html('---');

            setTimeout(function(){

                finished = false;

                $('#go').val('Done');

                $('#go').removeAttr('disabled');

                $(".digit:contains('NaN')").html('---');

            }, 1000);

        });

        // PR

        $.ajax({

            success: function(data){

                $('#google_pr').html((false !== data.value.value ? data.value.value+'' : 'N/A'));

                $("#google_pr").format({format:"#,###", locale:"us"});

                $(".digit:contains('NaN')").html('---');

            },

            url: base_path +'/ajax/demo/pr',

            type: 'POST',

            data : { 'url': url },

            dataType: 'jsonp',

            global: true

        });

        // Alexa

        $.ajax({

            success: function(data){

                $('#alexa_rank').html((false !== data.value.value ? data.value.value+'' : 'N/A'));

                $("#alexa_rank").format({format:"#,###", locale:"us"});

                $('#inbound_links').html((false !== data.value.links ? data.value.links+'' : 'N/A'));

                $("#inbound_links").format({format:"#,###", locale:"us"});

                $('#power_rank').html(powerrank(data.value.value));

                $(".digit:contains('NaN')").html('---');

            },

            url: base_path +'/ajax/demo/alexa',

            type: 'POST',

            data : { 'url': url },

            dataType: 'jsonp',

            global: true

        });

        // Google pages

        $.ajax({

            success: function(data){

                $('#google_pages').html(data.responseData.cursor.estimatedResultCount);

                $("#google_pages").format({format:"#,###", locale:"us"});

                $(".digit:contains('NaN')").html('---');

            },

            url: 'http://ajax.googleapis.com/ajax/services/search/web?v=1.0&callback=?',

            type: 'GET',

            global: true,

            data : { 'q': 'site:'+url },

            dataType: 'jsonp'

        });

    }

}



function powerrank(value){

    var val = format_num(value);

    var pr = 0;

    if (val==0){

        pr = '---';

    } else if (val==1){

        pr = 100;

    } else if (val <= 100){

        pr = 99;

    } else if (val <= 8000){

        pr = 98-(val*0.002911);

    } else if (val <= 100000){

        pr = 75-((val-8000)*0.000543);

    } else if (val < 200000){

        pr= 25-((val-100000)*0.00025);

    } else if (val < 600000){

        pr= 2-((val-200000)*0.0);

	

	} else if(val > 600000){

        pr = 1;

    } else {

        pr = '---';

    }

    return Math.round(pr);

}



function format_num(value){

    if (isNaN(parseInt(value))) return 0;

    value = '' + value;

    value = value.replace(/(\d+\.\d{2}).*?$/, "$1");

    return value;

}



function gnv(id){

    var value = $('#'+id).html();

    value = (isNaN(parseInt(value)) ? '0' : value);

    value = parseFloat(value.replace(/[^\d\.]+/, ''));

    return (isNaN(value) ? 0 : value);

}



function strpos( haystack, needle, offset){

    var i = (haystack+'').indexOf(needle, (offset ? offset : 0));

    return i === -1 ? false : i;

}
