Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/examples/Conozco-Uruguay/js/lesson.js
blob: b0735cc68df93e921cb6bc27238d67c47becacc1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
$(document).ready(function(){

	//Program constants
	var SVG_MAP = document.getElementById('mysvg');
	var MAX_SCREEN_X = 1200, MAX_SCREEN_Y = 900;
	var CAPITALS = [{dept:'artigas', capital:'artigas', deptName:'Artigas', capitalName:'Artigas'}, 
	    {dept:'rivera', capital:'rivera', deptName:'Rivera', capitalName:'Rivera'}, 
	    {dept:'salto', capital:'salto', deptName:'Salto', capitalName:'Salto'},
	    {dept:'paysandu', capital:'paysandu', deptName:'Paysandu', capitalName:'Paysandu'},
	    {dept:'rioNegro', capital:'frayBentos', deptName:'Rio Negro', capitalName:'Fray Bentos'},
	    {dept:'tacuarembo', capital:'tacuarembo', deptName:'Tacuarembo', capitalName:'Tacuarembo'},
	    {dept:'cerroLargo', capital:'melo', deptName:'Cerro Largo', capitalName:'Melo'},
	    {dept:'durazno', capital:'durazno', deptName:'Durazno', capitalName:'Durazno'},
	    {dept:'treintaYTres', capital:'treintaYTres', deptName:'Treinta Y Tres', capitalName:'Treinta Y Tres'},
	    {dept:'soriano', capital:'mercedes', deptName:'Soriano', capitalName:'Mercedes'},
	    {dept:'flores', capital:'trinidad', deptName:'Flores', capitalName:'Trinidad'},
	    {dept:'colonia', capital:'colonia', deptName:'Colonia', capitalName:'Colonia'},
	    {dept:'sanJose', capital:'sanJose', deptName:'San Jose', capitalName:'San Jose de Mayo'},
	    {dept:'montevideo', capital:'montevideo', deptName:'Montevideo', capitalName:'Montevideo'},
	    {dept:'lavalleja', capital:'minas', deptName:'Lavalleja', capitalName:'Minas'},
	    {dept:'rocha', capital:'rocha', deptName:'Rocha', capitalName:'Rocha'},		       
	    {dept:'canelones', capital:'canelones', deptName:'Canelones', capitalName:'Canelones'},		      
	    {dept:'maldonado', capital:'maldonado', deptName:'Maldonado', capitalName:'Maldonado'},		      
		       ];

	//Game Control
	var isActive = true;
	var question = [];
	var answeredCorrect = false;

	var questions = CAPITALS;


	// You can't access any properties of the svg document 
	// until it has loaded
	$('#mysvg').bind('load', function() {
	    var svgMapDoc = SVG_MAP.getSVGDocument();

	    //utility functions
	    var scaleView = function (svgElem, width, height) {
		var newRatio = 1;
		var xRatio = width/MAX_SCREEN_X;
		var yRatio = height/MAX_SCREEN_Y;

		//get the smallest ratio
		newRatio = xRatio > yRatio ? yRatio : xRatio;

		if (newRatio < 1) {
		    svgElem.currentScale = newRatio - 0.05;
		    return newRatio;	
		} else {
		    //do nothing
		    return newRatio;
		}
	    };

	    var hideAnswers = function (svgRoot) {
		$('.text', svgRoot).attr('display', 'none');
	    };

	    scaleView(svgMapDoc.documentElement, window.innerWidth, 
		      window.innerHeight);

	    hideAnswers(svgMapDoc);

	    //gameplay functions
	    var changeQuestion = function (questions){
		var index = Math.round(Math.random() * (questions.length - 1));
		var question = questions[index];
		
		//drop the city used from the list of answers
		if (index === 0 ){
		    questions.shift();
		} else {
		    questions.splice(index, 1)
		}
		
		return question;
	    };

	    var askQuestion = function (questions) {
		question = changeQuestion(questions);		
		
		$('#question').text("Where is the capital of " + 
				    question.deptName + "?");

	    };


	    var checkAnswer = function (mapElem) {
		if(isActive){
		    if ( ("cap" + question.capital).toLowerCase() === mapElem.id.toLowerCase()){
			$('#answer').text("Correct! " + question.capitalName +
				  " is the capital of " + question.deptName);
			$('.text.' + question.dept, svgMapDoc).attr('display',
								'');
			var timerID = setTimeout(function() {
			    $('#answer').text('');
			    askQuestion(questions);
			}, 3000);
		    } else {
			$('#answer').text("Incorrect. Please try again.");
		    }
		} else {
		    //do nothing
		}
		

	    };

  	    $.map($('.capital.city', svgMapDoc), function(elem){
		$(elem, svgMapDoc).bind('click', function(event) {
		    checkAnswer(event.target);
		})
	    });
	    
	    askQuestion(questions);

	    
	    

	});

});