var dir = 0;
var btn1 = null;
var timer = null;
var parenttext = "";
var lang = '';
var prevLang = null;
var h2Index = 0;
var liIndex = 0;
$(function() {
	$('h2.link').on('click', function(e,newdir) {
		if (btn1) btn1.play();
		$('#dir_' + lang + ' h2.link').removeClass('active');
		$('#dir_' + lang + ' .sub ul li').removeClass('active');
		$(this).addClass('active');
		h2Index = $('#dir_' + lang + ' h2').index($(this));
        
        if (newdir==undefined)
            liIndex = 0;
		dir = $(this).attr('dir');
		$('#dir_' + lang + ' .sub').hide();
		$('#dir_' + lang + ' .sub[parent="' + dir + '"]').show();
		parenttext = $(this).text();
		$('#slideText').text($(this).text());
		loadMonitor(dir);
	});
	$('.sub ul li').on('click', function() {
		$('#dir_' + lang + ' .sub ul li').removeClass('active');
		$(this).addClass('active');
		liIndex = $('#dir_' + lang + ' .sub ul li').index($(this));
		dir = parseInt($(this).attr('dir'));
		$('#slideText').html(parenttext + " &rarr; " + $(this).text());
		loadMonitor(dir);
	});
	$("#monitor").on('click', ".test label", function() {
		if (!testFinish) {
			c = $("input", $(this)).val();
			if (c == sData.tests[qNum].r) {
				score++;
			}
			$("#proc").width(((parseInt(qNum + 1) * 100) / testLen) + "%");
			loadTest(qNum + 1);
		}
	});
	$('#controller img').on('click', function() {
		way = $(this).attr('id');
		if (way == 'prevBtn') {
		  var next = $("[dir='" + dir + "']").prev();
          	if ($("[dir='" + dir + "']").prop('tagName') == "LI" && next.length == 0) {
				$("[dir='" + dir + "']").parents("div.sub").prev().trigger("click");
			}
          tag = $(next).prop("tagName");
          
          if (tag == "H2") {
				$(next).trigger("click");
			} else if (tag == 'DIV') {
			     
                if (!$(next).is(":visible")) {
                    $(next).prev('h2').trigger('click');
                }
				$(next).show().find('li:last').trigger('click');
                
			} else if (tag == 'LI') {
				//nextLi = $(next).next();
				if (next.length > 0) $(next).trigger('click')
				else
				$("[dir='" + dir + "']").parents("div.sub").prev().trigger("click");
			}
          
          
		} else {
			var next = $("[dir='" + dir + "']").next();
			if ($("[dir='" + dir + "']").prop('tagName') == "LI" && next.length == 0) {
				$("[dir='" + dir + "']").parents("div.sub").next().trigger("click");
			}
			tag = $(next).prop("tagName");
			if (tag == "H2") {
				$(next).trigger("click");
			} else if (tag == 'DIV') {
				$(next).find('li:first').trigger('click');
			} else if (tag == 'LI') {
				//nextLi = $(next).next();
				if (next.length > 0) $(next).trigger('click')
				else
				$("[dir='" + dir + "']").parents("div.sub").next().trigger("click");
			}
		}
	})
});

function selLang(lng) {
	lang = lng;
	index = 0;
	li_index = 0;
	if (prevLang == null) { // init 
		$('#langSel').hide();
		$('#mainApp').show();
	}
	$(".header img").attr("src", "media/img/egov" + lang + ".png");
	$('.sub').hide();
	$('#ekran').show();
	if (lang == 'kz') {
		$('#kzBtn').hide();
		$('#ruBtn').show();
		$('#dir_kz').show();
		$('#dir_ru').hide();
	} else {
		$('#ruBtn').hide();
		$('#kzBtn').show();
		$('#dir_kz').hide();
		$('#dir_ru').show();
	}
	if (prevLang != null) {
		$($('#dir_' + lang + ' h2')[h2Index]).trigger('click', {
				newdir: dir
			});
        if ($($('#dir_' + lang + ' h2')[h2Index]).next().prop("tagName")=="DIV" &&  liIndex>0) {
            $($('#dir_' + lang + ' li')[liIndex]).trigger('click', {
				newdir: dir
			});
        }
	} else {
		prevLang = lang;
		$($('#dir_' + lang + ' h2')[0]).trigger('click', {
			newdir: dir
		});
	}
}

function loadMonitor(id) {
	clearTimeout(timer);
	if (id == 45) {
		$('#monitor').html($('#fizServices_ru').html()).addClass('text');
	} else if (id == 46) {
		$('#monitor').html($('#urServices_ru').html()).addClass('text');
	} else if (id == 49) {
		$('#monitor').html($('#fizServices_kz').html()).addClass('text');
	} else if (id == 50) {
		$('#monitor').html($('#urServices_kz').html()).addClass('text');
	} else {
		data = slideData[lang][id];
		if (data.html) {
			$('#controller img').show();
			$('#monitor').html(data.html.html).addClass('text');
		}
		if (data.slide) {
			$('#controller img').show();
			sData = slideData[lang][id];
			$('#cells ul').html('');
			var s = 0;
			$.each(sData, function(i, item) {
				$('#cells ul').append('<li slide="' + i + '">' + (i + 1) + '</li>');
			});
			$('#cells li').on('click', function() {
				var i = $(this).attr('slide');
				showFrame(i);
			})
			showFrame(0);
		}
		if (data.tests) {
			sData = slideData[lang][id];
			testLen = sData.tests.length;
			score = 0;
			$('#testResult').hide();
			testFinish = false;
			loadTest(0);
		}
	}
}
var testLen = 0;
var sData;
var slideNum;
var qNum = 0;
var step = 0;

function addProc11() {
	$("#proc").width(parseInt(step) + "%");
	step = parseInt(step) + 1;
}
var score = 0;
var testFinish = false;

function shuffle(o) { //v1.0
	for (var j, x, i = o.length; i; j = Math.floor(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x);
	return o;
};

function loadTest(i) {
	$('#controller img').hide();
	if (i < testLen) {
		data = sData.tests[i];
		//data = shuffle(data);
		qNum = i;
		var tmp = '<h3>' + data.q + '</h3>' + '<p>';
		var t = 0;
		var tempData = new Array();
		for (t = 0; t < 4; t++) {
			tempData[t] = {
				'id': t + 1,
				'title': data['a' + (t + 1)]
			};
		}
		tempData = shuffle(tempData);
		for (t = 0; t < 4; t++) {
			tmp += '<label> <input type="radio" name="a" value="' + tempData[t]['id'] + '" id="a1" /> ' + tempData[t]['title'] + '</label><br />';
		}
		//' + '<p><label> <input type="radio" name="a" value="2" id="a2" /> ' + data.a2 + '</label><br />' + '<p><label> <input type="radio" name="a" value="3" id="a3" /> ' + data.a3 + '</label><br />' + '<p><label> <input type="radio" name="a" value="4" id="a4" /> ' + data.a4 + '</label><br /></p>';
		if (i == 0) {
			$('#monitor ').html("<div class=test>" + tmp + "</div>");
			$('#monitor').append("<div id='pbar'><div id='proc'></div></div><div id='testResult' style='display:none'></div>");
		} else {
			$('#monitor .test').html(tmp);
		}
	} else {
		testFinish = true;
		if (score > 20) {
			if (lang == 'ru') $('#testResult').attr('class', '').addClass('green').html("<h2>Правильно " + score + " из " + testLen + "</h2>" + '<h3>Поздравляем, Вы успешно прошли тест. Успехов Вам, новый пользователь портала "электронного правительства"</h3>');
			else
			$('#testResult').attr('class', '').addClass('green').html("<h2>" + testLen + " сұрақтан " + testLen + " дұрыс</h2>" + '<h3>Құттықтаймыз, Сіз тестілеуді сәтті аяқтадыңыз. "Электрондық үкіметтің" жаңа пайдаланушысы, Сізге сәтттілік тілейміз.</h3>');
		} else
		if (lang == 'ru') $('#testResult').attr('class', '').addClass('red').html("<h2>Правильно " + score + " из " + testLen + "</h2><h3>Для достижения лучших результатов, рекомендуем Вам заново просмотреть нашу обучающую программу.</h3>");
		else
		$('#testResult').attr('class', '').addClass('red').html("<h2>" + testLen + " сұрақтан " + testLen + " дұрыс</h2><h3>Жақсы нәтижелерге қол жеткізу үшін оқыту бағдарламасын қайта қарауға кеңес береміз.</h3>");
		$('#testResult').show();
	}
}

function showFrame(i) {
	if (btn1 != null) btn1.play();
	i = parseInt(i);
	clearTimeout(timer);
	slideNum = i;
	if (i < sData.slide.length) {
		data = sData.slide[i];
		src = data.img_x+"."+data.img_y+"."+data.img_w+"."+data.img;
		var img = $("<img>").attr('src', 'data/' + src).attr('id', 'slideImg').css("left", "0px").css("top",  "0px");
		
		var ramka = $('<div id="aaa" style="width:100px; height:100px;" class="redDiv" slide="' + (i + 1) + '"></div>').css("left", data.informer_x + "px").css("top", data.informer_y + "px").css("width", data.informer_w + "px").css("height", data.informer_h + "px");
		var txt = $('<div id="info" class="tip ' + data.arrow + '" style="width:100px; height:100px;"><div class="content">' + data.info + '</div></div>').css("left", data.text_x + "px").css("top", data.text_y + "px").css("width", data.text_w + "px").css("height", data.text_h + "px");
		$('#monitor').html(txt).append(ramka).append(img);
		$("#aaa").effect("pulsate", {}, 5000);
		if (data.timer > 0) {
			timer = setTimeout(function() {
				showFrame(slideNum + 1)
			}, parseInt(data.timer) * 1000);
		}
		$('.redDiv').on('click', function() {
			var i = $(this).attr('slide');
			showFrame(i);
		});
	} else {
		tag = $("[dir='" + dir + "']").prop("tagName");
		if (tag == "H2") {
			$("[dir='" + dir + "']").next('h2').trigger("click");
		} else {
			var next = $("[dir='" + dir + "']").next();
			if (next.length > 0) $(next).trigger('click')
			else
			$("[dir='" + dir + "']").parents("div.sub").next().trigger("click");
		}
	}
}(function(factory) {
	if (typeof define === 'function' && define.amd) {
		// AMD. Register as anonymous module.
		define(['jquery'], factory);
	} else {
		// Browser globals.
		factory(jQuery);
	}
}(function($) {
	var pluses = /\+/g;

	function raw(s) {
		return s;
	}

	function decoded(s) {
		return decodeURIComponent(s.replace(pluses, ' '));
	}

	function converted(s) {
		if (s.indexOf('"') === 0) {
			// This is a quoted cookie as according to RFC2068, unescape
			s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\');
		}
		try {
			return config.json ? JSON.parse(s) : s;
		} catch (er) {}
	}
	var config = $.cookie = function(key, value, options) {
		// write
		if (value !== undefined) {
			options = $.extend({}, config.defaults, options);
			if (typeof options.expires === 'number') {
				var days = options.expires,
					t = options.expires = new Date();
				t.setDate(t.getDate() + days);
			}
			value = config.json ? JSON.stringify(value) : String(value);
			return (document.cookie = [
			config.raw ? key : encodeURIComponent(key), '=', config.raw ? value : encodeURIComponent(value), options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
			options.path ? '; path=' + options.path : '', options.domain ? '; domain=' + options.domain : '', options.secure ? '; secure' : ''].join(''));
		}
		// read
		var decode = config.raw ? raw : decoded;
		var cookies = document.cookie.split('; ');
		var result = key ? undefined : {};
		for (var i = 0, l = cookies.length; i < l; i++) {
			var parts = cookies[i].split('=');
			var name = decode(parts.shift());
			var cookie = decode(parts.join('='));
			if (key && key === name) {
				result = converted(cookie);
				break;
			}
			if (!key) {
				result[name] = converted(cookie);
			}
		}
		return result;
	};
	config.defaults = {};
	$.removeCookie = function(key, options) {
		if ($.cookie(key) !== undefined) {
			// Must not alter options, thus extending a fresh object...
			$.cookie(key, '', $.extend({}, options, {
				expires: -1
			}));
			return true;
		}
		return false;
	};
}));