var current_radio = null, current_check = null, actNumber_q = 0, begin_q = 0, answers = new Array(), act_lt;
var npq = false;
var flash_testTime = null;
var flash_questionTime = null;

var test = new TestObject();

// confirm 
function confirmBox(s_cbf,s_text,pte) {
    cbf = s_cbf;
    $.prompt(s_text, {
        callback: cbf,
        buttons: {
            tak:true,
            nie: false
        },
        show: 'fadeIn'
    }).children('#jqi').corner("5px");
    if(pte == 'info') {
        $(".jqicontainer").css("background","#f5f3f0 url(/images/infbg.gif) no-repeat");
    }
    if(pte == 'warn') {
        $(".jqicontainer").css("background","#f5f3f0 url(/images/errbg.gif) no-repeat");
    }
    if(pte == 'help') {
        $(".jqicontainer").css("background","#f5f3f0 url(/images/helpbg.gif) no-repeat");
    }
}

function promptBox(pcbf,ptext,wp) {
    cbf = pcbf;
    $.prompt(ptext, {
        callback: cbf,
        buttons: {
            OK:true
        },
        show: 'fadeIn'
    }).children('#jqi').corner("5px");
    if(wp == 1) {
        $(".jqicontainer").css("background","#f5f3f0 url(/images/infbg.gif) no-repeat");
    }
    if(wp == 2) {
        $(".jqicontainer").css("background","#f5f3f0 url(/images/errbg.gif) no-repeat");
    }
    if(wp == 3) {
        $(".jqicontainer").css("background","#f5f3f0 url(/images/helpbg.gif) no-repeat");
    }
}

// generowanie testu
function test_render(_q, _answers, _first, _last, _count_q, _index_q) {
    showHelpy(0);
    print_lead(_q.type);
    print_timer();
    print_question(_q.question);
    print_answer(_q.type,_answers);
    print_navi(_first,_last,_count_q);
    current_radio = null;
    current_check = null;
    answers = _answers;
    showHelpy(4);
}

function print_lead(type) {
    if(type == "radio") {
        qtype = "jednokrotnego wyboru";
    }
    if(type == "checkbox") {
        qtype = "wielokrotnego wyboru";
    }
    if(type == "text") {
        qtype = "otwarte";
    }
    $(".startAa").append('<div class="sAaTop"></div>');
    $(".sAaTop").append('<div class="sAaLead"><p class="lead">Pytanie nr: '+(actNumber_q+1)+'<span class="qtype">'+qtype+'</span></p></div>');
}
function print_timer() {
    if(test.test.time_left > 0) {
        testTime = test.test.time_left*1000;
        questionTime = null;
        if(act_lt != null) {
            stimeleft = act_lt*1000;
        }
        else {
            stimeleft = testTime;
        }
        showHelpy(5);
    }
    else {
        testTime = null;
        stimeleft = test.test.question_time*1000;
        questionTime = stimeleft;
        showHelpy(6);
    }
    $(".sAaTop").append('<div class="sAaTimer"><div id="sAaTimer"></div></div>');
    var flashvars = {};
    flashvars.flash_questionTime = questionTime;
    flashvars.flash_testTime = testTime;
    flashvars.flash_timeLeft = stimeleft;
    var params = {};
    params.menu = "false";
    params.quality = "high";
    params.scale = "noscale";
    var attributes = {};
    swfobject.embedSWF("/images/flash/flash_timer.swf", "sAaTimer", "470", "51", "9.0.0", "/lib/js/flash/expressInstall.swf", flashvars, params, attributes);
    $(".sAaTop").append('<div class="moderate"><button onclick="self.location=\'/helpdesk/send/notification/'+$('#test_id').val()+'\';" class="moderate btn"></button></div>');
}
function print_question(question) {
    $(".startAa").append('<div class="sAaQuestion"><p class="question">'+question+'</p></div>');
}
// odpowiedzi
function print_answer(type,answers) {
    if(type == "radio") {
        $(".startAa").append('<div class="areaRadio"></div>');
        for(i=0; i<answers.length; i++) {
            if(answers[i].answered == "1") {
                $(".areaRadio").append('<div id="r'+i+'" class="radioS radioS_a"><p class="answer">'+answers[i].answer+'</p></div>');
            }
            else {
                $(".areaRadio").append('<div id="r'+i+'" class="radioS"><p class="answer">'+answers[i].answer+'</p></div>');
            }
        }
        $(".radioS").corner("5px");
        radioAction();
        showHelpy(1);
    }
    if(type == "checkbox") {
        $(".startAa").append('<div class="areaCheckBox"></div>');
        for(i=0; i<answers.length; i++) {
            if(answers[i].answered == "1") {
                $(".areaCheckBox").append('<div id="c'+i+'" class="checkS checkS_a"><p class="answer">'+answers[i].answer+'</p></div>');
            }
            else {
                $(".areaCheckBox").append('<div id="c'+i+'" class="checkS"><p class="answer">'+answers[i].answer+'</p></div>');
            }
        }
        $(".checkS").corner("5px");
        checkAction();
        showHelpy(2);
    }
    if(type == "text") {
        $(".startAa").append('<div class="areaInput"></div>');
        $(".areaInput").append('<div class="divIna"><input id="inAnswer" class="inAnswer" type="text" /></div>');
        $(".divIna").corner("5px");
		
        if(answers[0].answered != "") {
            $("#inAnswer").css("background","#fff");
        }
        else {
            $("#inAnswer").css("background","url(/images/start_test/odpbg.gif) 15px 5px no-repeat");
            $("#inAnswer").focus();
        }
		
        $("#inAnswer").click(function(){
            $(this).css("background","#fff");
        });
        $("#inAnswer").keydown(function(){
            $(this).css("background","#fff");
        });
			
        $("#inAnswer").val(answers[0].answered);
        $("#inAnswer").change(function() {
            answers[0].answered = $(this).val();
        });
        showHelpy(3);
    }
}
function print_navi(first,last,count) {
    $(".startAa").append('<div class="saABottom"></div>');
    $(".saABottom").append('<div class="nprev"></div><div class="naf"></div><div class="nnext"></div>');
    if(test.isTestTimer() == false) {
        if(last == true) {
            $(".naf").append('<div class="btn_answ btn" onclick="finish_q()"></div>');
        }
        else {
            $(".naf").append('<div class="btn_answ btn" onclick="answer_q()"></div>');
        }
        $(".saABottom").append('<div class="nquest"><p id="nquestd" class="nquest">Pytanie nr: </p></div>');
        for(i=0; i<count; i++) {
            if(i == actNumber_q) {
                $("#nquestd").append('<a class="nquest_act btn">'+(i+1)+'</a> ');
            }
            else {
                $("#nquestd").append('<a class="nquest btn">'+(i+1)+'</a> ');
            }
        }
        //alert(test.test.question_time);
        tq = setInterval("timeOut_q("+last+")",test.test.question_time*1000);
    }
    else {
        if(first != true) {
            $(".nprev").append('<div class="btn_prev btn" onclick="prev_q()"></div>');
        }
        else {
            $(".nprev").append('<div class="btn_prev_dis"></div>');
        }
        $(".naf").append('<div class="btn_fin btn" onclick="finish_q(false)"></div>');
        if(last != true) {
            $(".nnext").append('<div class="btn_next btn" onclick="next_q()"></div>');
        }
        else {
            $(".nnext").append('<div class="btn_next_dis"></div>');
        }
        $(".saABottom").append('<div class="nquest"><p id="nquestd" class="nquest">Przejdź do pytania nr: </p></div>');
        for(i=0; i<count; i++) {
            if(i == actNumber_q) {
                $("#nquestd").append('<a class="nquest_act btn">'+(i+1)+'</a> ');
            }
            else {
                $("#nquestd").append('<a class="nquest btn" onclick="chng_q('+(i)+')">'+(i+1)+'</a> ');
            }
        }
    }
}
function timeOut_q(lastq) {
    clearInterval(tq);
    if(lastq != true) {
        answer_q();
    }
    else {
        finish_q(true);
    }
}
function chng_q(anq) {
    actNumber_q = anq;
    test.answerQuestion(answers);
    $(".startAa").empty();
    test.gotoQuestion(anq);
}
function next_q() {
    npq = true;
    actNumber_q++;
    test.answerQuestion(answers);
    $(".startAa").empty();
    test.nextQuestion();
}
function prev_q() {
    npq =true;
    actNumber_q--;
    test.answerQuestion(answers);
    $(".startAa").empty();
    test.prevQuestion();
}
function answer_q() {
    clearInterval(tq);
    actNumber_q++;
    test.answerQuestion(answers);
    $(".startAa").empty();
    test.nextQuestion();
}
function finish_q(dl) {
    test.answerQuestion(answers);
    if(dl == true) {
        if(begin_q == 1) {
            clearInterval(tq);
        }
        test.finishTest(true);
    }
    else {
        test.finishTest();
    }
}
function radioAction() {
    $(".radioS")
    .hover(function(){
        if(current_radio != this.id) {
            $(this).addClass("radioS_h");
        }
    },function(){
        if(current_radio != this.id) {
            $(this).removeClass("radioS_h");
        }
    })
    .click(function(){
        k = this.id.substring(1);
        for(i=0; i<answers.length; i++)
            answers[i].answered = "0";
        answers[k].answered = "1";
        $(".radioS").removeClass("radioS_a");
        $(this).removeClass("radioS_h");
        $(this).addClass("radioS_a");
        current_radio = this.id;
    });
}

function checkAction() {
    $(".checkS")
    .hover(function(){
        var i = this.id.substring(1);
        if (answers[i].answered != "1") {
            $(this).addClass("checkS_h");
        }
    },function(){
        $(this).removeClass("checkS_h");
    })
    .click(function(){
        var i = this.id.substring(1);
        if (answers[i].answered == "1")
        {
            $(this).removeClass("checkS_a");
            $(this).addClass("checkS");
        }
        else
        {
            $(this).removeClass("checkS_h");
            $(this).addClass("checkS_a");
        }
		
        answers[i].answered = (answers[i].answered == "1") ? "0" : "1";
    });
}

function print_checkb() {
	
}

//koniec generowania testu

function check_confirm(v,m){
    //tmz(0);
    if(v == true) {
        test.finishTest(true);
    }
    else {
        $(".areaCheckBox,.areaRadio,.areaInput,.sAaQuestion").css("visibility","visible");
        $("#sAaTimer").css("visibility","visible");
    }
}

// inicjalizacja testu
function initTest() {
    var ai = 1;
    $("#runTest")
    .hover(function(){
        $(this).stop().animate({
            opacity: 0
        }, 500 );
    },
    function(){
        $(this).stop().animate({
            opacity: 1
        }, 200 );
    })
    .click(function(){
        var testf = $('object').attr('id');
        if(testf == 'flash_start') {
            $(this).unbind();
            document.flash_start.Play();
            rt = setInterval("runTest()",2200);
        }
        $.getJSON('/payment/updateuserstate', {id: $('#test_id').val(), after:0});
    });
	
    test.testId = $("#test_id").val();
    //test.testStateId = $("#test_state_id").val();
    test.service = new rpc.ServiceProxy("/services/rpc-json.php", {
        asynchronous:false
    });
    test.onDisplayQuestion = function(q, answers, first, last, count_q, index_q)
    {
        test_render(q, answers, first, last, count_q, index_q);
    }
    test.onDisplayFinishConfirmation = function() {
        $(".areaCheckBox,.areaRadio,.areaInput,.sAaQuestion").css("visibility","hidden");
        $("#sAaTimer").css("visibility","hidden");
        var ptxt = "<p class='attn'>Uwaga</p>Czy napewno chesz zakończyć test?";
        confirmBox(check_confirm, ptxt, "warn");
    //tmz(act_lt);
    }
    test.onDisplaySummation = function() {
        window.location = '/test/finish/id/'+test.testId+'/state/'+test.testStateId;
    }
    test.initialize();
}

function loadFinish(v) {
    if(v == true)
        finish_q(true);
}

function timeLeft() {
    $("#jqi,#jqibox,#jqifade").remove();
    $(".areaCheckBox,.areaRadio,.areaInput,.sAaQuestion").css("visibility","hidden");
    $("#sAaTimer").css("visibility","hidden");
    var text = "<p class='attn'>Uwaga</p>Twój czas na rozwiązanie testu upłynął";
    promptBox(loadFinish,text,2);
}

// uruchomenie testu
function runTest() {
    clearInterval(rt);
    $(".startAa").css("border","1px solid #d9d5ce")
    $("#startA").css("height",step_h+"px").css("background","url(/images/loader.gif) center no-repeat");
    $(".startAa").css("opacity","0");
    $("#step1").fadeOut(250).queue(function(){
        $(".startAa").slideDown(0).queue(function() {
            test_start();
            $(".startAa").fadeTo(200,1).queue(function() {
                $("#startA").css("background","");
                $(".startAb").slideDown(500).queue(function() {
                    $(".startC").animate({
                        height:"0px"
                    },400).queue(function() {
                        $(this).hide();
                        $(".startB").fadeTo("normal",0.3).hover(function(){
                            $(this).fadeTo("normal",1)
                            },function(){
                            $(this).fadeTo("normal",0.3)
                            });
                        $("#startTop").fadeTo("normal",0.3).hover(function(){
                            $(this).fadeTo("normal",1)
                            },function(){
                            $(this).fadeTo("normal",0.3)
                            });
                        $("#startTitle").fadeTo("normal",0.3).hover(function(){
                            $(this).fadeTo("normal",1)
                            },function(){
                            $(this).fadeTo("normal",0.3)
                            });
                        $(this).dequeue();
                    });
                    $(this).dequeue();
                });
                $(this).dequeue();
            });
            $(this).dequeue();
        });
        $(this).dequeue();
    });
}

var act_lt;
function test_start() {
    test.start();
    test.nextQuestion();
    if(begin_q == 0) {
        if(test.isTestTimer() != false) {
            tq = setInterval("timeLeft()",test.test.time_left*1000);
            meter(test.test.time_left);
            begin_q = 1;
        }
    }
}

function meter(sec){
    act_lt = sec;
    if(sec>0)setTimeout(function(){
        meter(--sec)
        },1e3)
}

function tmz(leftime){
    var st = leftime;
    if(leftime>0) {
        var u = setTimeout(function(){
            tmz(--leftime)
            },1e3);
    }
    if(leftime == 0){
        clearTimeout(u);
    }
    $(".jqimessage").text(st);
}

//var getSizew = function(){ 
//	var size = {
//		width: window.innerWidth || (window.document.documentElement.clientWidth || window.document.body.clientWidth),
//		height: window.innerHeight || (window.document.documentElement.clientHeight || window.document.body.clientHeight)
//	};
//	return size;
//};


function showHelpy(opth) {
    if(opth == 0) {
        $("#helpO1,#helpO2,#helpO3,#helpO4,#helpO5").hide();
    }
    if(opth == 1) {
        $("#helpO1").show();
    }
    if(opth == 2) {
        $("#helpO2").show();
    }
    if(opth == 3) {
        $("#helpO3").show();
    }
    if(opth == 4) {
        $("#helpO4").show();
    }
    if(opth == 5) {
        $("#helpO5").show();
    }
    if(opth == 6) {
        $("#helpO6").show();
    }
}

function checkIsPass() {
    var isp = parseInt($("#ispass").val());
    var ispaid = $("#payable_before").val(); // czy platne przed
    
    if(isp == 0 && ispaid == 0) { // bez hasla
        $("#step1").show();
        initTest();
    }
    if(isp == 1) { //haslo
        var rpcService = new rpc.ServiceProxy("/services/rpc-json.php", {
            asynchronous:false
        });
        var idt = parseInt($("#test_id").val());
        $("#step0").show();
        $("div.passok input").click(function() {
            rpcResponse = rpcService.checkPass(idt,$("div.passinput input").val());
            if(rpcResponse == true) {
                $("#step0").fadeOut(400).queue(function(){
                    if(ispaid == 1) {
                        $("#step2").fadeIn(500);
                        $("#step0").remove();
                        $("#step1").remove();
                        $(".startAb").remove();
                    }
                    else {
                        $("#step1").fadeIn(500);
                    }
                    $(this).dequeue();
                });
                initTest();
            }
            else {
                var text = "<p class='attn'>Uwaga</p> Podano błędne hasło";
                promptBox(passFail,text,2);
            }
        });
        $("div.passcancel input").click(function() {
            self.location = "/test";
        });
    }
    if(ispaid == 1 && isp == 0) { // laduj form platnosci gdy test jest bez hasla pokaz go po wpisaniu hasla
        $("#step2").show();
        $("#step0").remove();
        $("#step1").remove();
        $(".startAb").remove();
    }
}

function passFail(v) {
//if(v == true) {
//	return true;
//}
}

$(document).ready(function(){
    step_h = $("#step1").height();
    checkIsPass();

    $('a.sms_dotpay').click(function() {
        $.facebox({ajax: '/payment/sms?plan='+$(this).attr('id')+'&test='+$(this).attr('rel')+'&price='+$('#price_sms').val()});
    });

    $('.do_payment').live('click', function() {
		$.ajax({
			url: '/payment/savetransaction',
			type: 'POST',
			data: $(this).parent().serialize(),
			async: false
		});
		$(this).parent().submit();
    });

    $('#jqibuttontak').live('click', function () {
        $.getJSON('/payment/updateuserstate', {id:test.testId, after:1});
    });
});