var timevalue;
var remainingvalue;
var cookieName1;
var cookieName2;

var questionsAnswers = null;

var active_lang = (GetCookie("lang")==null)?"en":GetCookie("lang");  // default=en
var active_test = (GetCookie("mcode")==null)?1:parseInt(GetCookie("mcode")); 		// default 1 - Basic IT skills

// =============================================================
var moduleName = new Array();

moduleName["en"] = new Array(
	"Basic IT skills", // 
	"Text processing", // 
	"Spreadsheets", // 
	"Presentation skills", // 
	"", // 
	"", // 
	""  // 
);

moduleName["lv"] = new Array(
	"IT pamatprasmes", // 
	"Tekstapstrāde", // 
	"Elektroniskās tabulas", // 
	"Prezentāciju veidošana", // 
	"", // 
	"", // 
	""  // 
);

// =============================================================
var moduleList = new Array();

moduleList["en"] = new Array(
	new Array(  // Basic IT skills
		"General", // M1
		"Security", // M2
		"Internet", // M3
		"", // M4
		"", // M5
		"", // M6
		""  // M7
	), 
	new Array(  // Text processing
	),
	new Array(  // Spreadsheets
	),
	new Array(  // Presentation skills
	)
);

moduleList["lv"] = new Array(
new Array(  // Basic IT skills
	"Vispārīgs", // M1
	"Drošība", // M2
	"Web", // M3
	"", // M4
	"", // M5
	"", // M6
	""  // M7
), 
new Array(  // Text processing
),
new Array(  // Spreadsheets
),
new Array(  // Presentation skills
)
);

// =============================================================
var questionsList = new Array();
questionsList["en"] = new Array(
new Array( // Basic IT skills
	new Array( // M1
		"8e1011744d894883c2257678005572cc", // 01  
	  "c5e828d3bb734a80c2257678005572cd", // 02  
	  "7b16072534dd7426c2257678005572ce", // 03  
	  "23d5d09fe1d68850c2257678005572cf", // 06  
	  "7edca827c3eff0dcc2257678005572d0", // 07  
	  "f548ec08587e32efc2257678005572d1", // 08  
	  "d4d0a1e0737e404dc2257678005572d2", // 09  
	  "63d79689c8b93cc6c2257678005572d3", // 10  
	  "71a02d5344983bdfc2257678005572d4", // 12  
	  "bf99aa6304c47d2fc2257678005572d5", // 13  
	  "786b5e081a89135bc2257678005572d6" // 15  
	), 
	new Array( // M2
	  "1becafbcce114e22c2257678005572d7", // 04  
	  "2f7b1043d99ce2ddc2257678005572d8", // 05  
	  "c3abfd877b87c4e6c2257678005572d9", // 11  
	  "0b3bc3633586c389c2257678005572da", // 14  
	  "f9aebec3dc9fb0a9c2257678005572db", // 16  
	  "6c44d1687b890149c2257678005572dc", // 17  
	  "34bc9ca965fd4384c2257678005572dd", // 18  
	  "1d44644b8e86df33c2257678005572de", // 19  
	  "a55e122e85d3c991c2257678005572df", // 20  
	  "f8b4e3d9571c44f5c2257678005572e0", // 21  
	  "137a22acab5c9061c2257678005572e1", // 22  
	  "c8207021bc1b28e7c2257678005572e2" // 23  
	), 
	new Array( // M3
		"e40daa17c7478b61c2257678005572e3", // 24  
	  "1fbe6bdc0d77347cc2257678005572e4", // 25  
	  "57b22e4030e6e88ac2257678005572e5", // 26  
	  "e413d4e9dec7848ec2257678005572e6", // 27  
	  "a6ed3ed8f57f099dc2257678005572e7", // 28  
	  "5ec439cfb1ffd31cc2257678005572e8", // 29  
	  "07818e488f58488cc2257678005572e9", // 30  
	  "a05310f6c9fc5b15c2257678005572ea", // 31  
	  "0a06d31f11a667d0c2257678005572eb" // 32 
	),
	new Array( // M4
	),
	new Array( // M5
	),
	new Array( // M6
	),
	new Array( // M7
	)
), 
new Array(  // Text processing
),
new Array(  // Spreadsheets
),
new Array(  // Presentation skills
)
);

questionsList["lv"] = new Array(
new Array( // Basic IT skills
	new Array( // M1
	  "8b606b4daff4346bc2257678005572ad", // 01  
	  "415e8ca6ddb85d8cc2257678005572ae", // 02  
	  "242f8a1da81ab3dac2257678005572af", // 03  
	  "7fb86a5b7301f684c2257678005572b0", // 06  
	  "75be22ce80103866c2257678005572b1", // 07  
	  "5b09f286892d1bf3c2257678005572b2", // 08  
	  "f874e8909f5acb6ac2257678005572b3", // 09  
	  "7521c3ade8937144c2257678005572b4", // 10  
	  "4f790360bc4bb84bc2257678005572b5", // 12  
	  "dcbe283dcd315058c2257678005572b6", // 13  
	  "8844d31ff68ea1dbc2257678005572b7" // 15 
	), 
	new Array( // M2
	  "1a848e77291cdfabc2257678005572b8", // 04  
	  "c9b5f56456399b36c2257678005572b9", // 05  
	  "3385a043624b303bc2257678005572ba", // 11  
	  "3588964d45647c3cc2257678005572bb", // 14  
	  "2425828d1f0f367bc2257678005572bc", // 16  
	  "8c36415993a0b66dc2257678005572bd", // 17  
	  "52da313640085590c2257678005572be", // 18  
	  "b9641a4b15878a80c2257678005572bf", // 19  
	  "015bf1f60dd998b9c2257678005572c0", // 20  
	  "a31826e70472cae7c2257678005572c1", // 21  
	  "2011b131a2d02c0dc2257678005572c2", // 22  
	  "8fd273f57dc8297dc2257678005572c3" // 23 
	), 
	new Array( // M3
	  "8b5c0c87240fc01ec2257678005572c4", // 24  
	  "2ffbbd94cafb1f10c2257678005572c5", // 25  
	  "c13d12b648a0e87cc2257678005572c6", // 26  
	  "378072ec6c030228c2257678005572c7", // 27  
	  "40661d4db5f44c82c2257678005572c8", // 28  
	  "160961ef4291bf40c2257678005572c9", // 29  
	  "ede426106e0e415ac2257678005572ca", // 30  
	  "8d360f47fd5a5460c2257678005572ec", // 31  
	  "5289813deec87297c2257678005572cb" // 32    
	),
	new Array( // M4
	),
	new Array( // M5
	),
	new Array( // M6
	),
	new Array( // M7
	)
), 
new Array(  // Text processing
	new Array( // M1
	  "68b197e752a00f14c225767800557310", // 01  
	  "32ef1879f9879419c225767800557311", // 02  
	  "eae4967753213149c225767800557314", // 03  
	  "635205b49e93dc91c225767800557312", // 04  
	  "3ba5cfe94940a539c225767800557313", // 05  
	  "c12b058b02924cfac225767800557315", // 06  
	  "c02f789402b76b97c225767800557316", // 07  
	  "b603ae4af59a6adac225767800557317", // 08  
	  "d9d0c9b6eea6e437c225767800557318", // 09  
	  "ff9bb645b22feaf4c22576780055731a", // 10  
	  "b91fd1d1e6914af9c225767800557319", // 11  
	  "401fcdfd9983e5afc22576780055731b", // 12  
	  "c9ae64b2a968b8a5c22576780055731c", // 13  
	  "7c732d33d6735f65c22576780055731d", // 14  
	  "426d5fce6ba773c8c22576780055731e" // 15 
	), 
	new Array( // M2
	  "583c1e8603aec388c22576780055731f", // 16  
	  "44a6c592bf8aaadcc225767800557320", // 17  
	  "55f9036c11973923c225767800557321", // 18  
	  "f1880106fe6f361fc225767800557322", // 19  
	  "e53a15d594cdabb6c225767800557323", // 20  
	  "94b5fb5b5148dc9dc225767800557324", // 21  
	  "8bb219c064e92bc4c225767800557325", // 22  
	  "f64fd46d7b615458c225767800557326", // 23  
	  "198f74da8cb41c70c225767800557327", // 24  
	  "1f0f57022d13dd8cc225767800557328", // 25  
	  "4c34eca85bd3f8f4c225767800557329" // 26 
	), 
	new Array( // M3
		"d46043a186a9f630c22576780055732a", // 27  
	  "3adff35613b669eec22576780055732b", // 28  
	  "0ea10d87ff5cd818c22576780055732c", // 29  
	  "eb5b64d9502ed90fc22576780055732d", // 30  
	  "1dc2a004ff23d191c22576780055732e", // 31  
	  "4739792fd2fa23b1c22576780055732f" // 32 
	),
	new Array( // M4
	),
	new Array( // M5
	),
	new Array( // M6
	),
	new Array( // M7
	)
),
new Array(  // Spreadsheets
	new Array( // M1
		"0cf78d15102455ddc2257678005572ed", // 01  
	  "749a74d377eaa5e0c2257678005572ee", // 02  
	  "af3eac815ca1264bc2257678005572ef", // 03  
	  "2ddddcf255c46049c2257678005572f0", // 04  
	  "3a046fe2a362902cc2257678005572f1", // 05  
	  "fb59e894d7d1c9f8c225767800557330", // 06  
	  "c93bf0d4e8486108c2257678005572f2", // 07  
	  "b411ebfe552f2ec5c2257678005572f3", // 08  
	  "d3c234f6cf2ee2ebc2257678005572f4", // 09  
	  "dd94e2711b3417eac2257678005572f5" // 10  
	), 
	new Array( // M2
	  "c186d4fa00cd7e05c2257678005572f6", // 11  
	  "a270ccf35910cf04c2257678005572f7", // 12  
	  "371a852b6d64c1edc2257678005572f8", // 13  
	  "b134b8e4ecb85414c2257678005572f9", // 14  
	  "421907d421582425c2257678005572fa", // 15  
	  "8ebdb454c95cb94dc2257678005572fb", // 16  
	  "4b5eb41c4a8bba26c2257678005572fc", // 17  
	  "53cbf787b6cc8d29c2257678005572fd", // 18  
	  "1b10d274423d6dd0c2257678005572fe", // 19  
	  "0affa03e88a427f1c2257678005572ff", // 20  
	  "96b40d92edc598ffc225767800557300" // 21 
	), 
	new Array( // M3
	  "c3216a3445c93d8fc225767800557301", // 22  
	  "665e1b2779e87d4ac225767800557302", // 23  
	  "26909ca2df887bcec225767800557303", // 24  
	  "94a5f3a090b857b3c225767800557304", // 25  
	  "93113d087b0a3daec225767800557305", // 26  
	  "31beccc06f19297dc225767800557306", // 27  
	  "67221a2785e04707c225767800557307", // 28  
	  "5b6fbf26572db01ec225767800557308", // 29  
	  "efb8a97aa8a0be2bc225767800557309", // 30  
	  "a6a3bb5b3f3e6d49c22576780055730a", // 31  
	  "d8a322ab206f7824c22576780055730b", // 32  
	  "2abb3a5557584b2cc22576780055730c", // 33  
	  "4b0daea0b07c408ec22576780055730d", // 34  
	  "696c347fad0fb3ddc22576780055730e", // 35  
	  "30d2a30114a46d66c22576780055730f" // 36  
	),
	new Array( // M4
	),
	new Array( // M5
	),
	new Array( // M6
	),
	new Array( // M7
	)
),
new Array(  // Presentation skills
)
);

var modLength = new Array(); // number of available questions in each module , calculated in start test.

// -----------------------------------------------------------------

function SetCookie(sName, sValue)
{
    document.cookie = sName + "=" + escape(sValue);
}

// -----------------------------------------------------------------

function AppendCookie(sName, sValue)
{
    var value = GetCookie(sName);
    
    if (value != null)
        document.cookie = sName + "=" + escape(value+"|"+sValue);
    else
        document.cookie = sName + "=" + escape(sValue);
    return true;
}

// -----------------------------------------------------------------

function GetCookie(sName)
{
    // cookies are separated by semicolons
    var arrCookies = document.cookie.split("; ");

    for (var i=0; i < arrCookies.length; i++)
    {
        // a name/value pair (a crumb) is separated by an equal sign
        var aCrumb = arrCookies[i].split("=");
        
        if (aCrumb[0] == sName) 
            return unescape(aCrumb[1]);
    }

    // a cookie with the requested name does not exist
    return null;
}

// -----------------------------------------------------------------

function DelCookie(sName)
{
    // deleting cookie is setting it's expiration to the past
    document.cookie = sName + "=expired; expires=Fri, 31 Dec 1999 23:59:59 GMT;";
}

// -----------------------------------------------------------------

function ViewCookie(sName)
{
    alert(GetCookie(sName));
}

// -----------------------------------------------------------------

function RadioValue(object)
{
    for (var i=0; i < object.length; i++)
    {
        if (object[i].checked)
            return object[i].value;
    }
    
    return 0;
}

// -----------------------------------------------------------------

function GetTestLength()
{
    var cookieQuestions = GetCookie("tquestions");
    var questions = cookieQuestions.split("|");
    return questions.length;
}

// -----------------------------------------------------------------

function CompareAnswers(answer)
{  
	var arr1=answer[1].split(',');
	var arr2=answer[2].split(',');
	var rez=true;
	var tmp=false;
	for (var i=0; i < arr1.length; i++)
    {
		tmp=false;
		for (var j=0; j < arr2.length; j++)
	    {
	        if (arr1[i]==arr2[j])
	            tmp=true;
	    }
	    if (!tmp)
	    	rez=false;
    }
    return rez;
}

// -----------------------------------------------------------------

function CalculateResult(sName, mod)
{  
    var cookieQuestions = GetCookie("tquestions");
    var questions = cookieQuestions.split("|");
    var answers = GetCookie(sName);
    var arrAnswers = answers.split("|");
    var maxNum = GetTestLength();
    var fixedAnswers = new Array();
    var answerData = new Array();
    var calcAnswers = (questionsAnswers == null)?true:false;
    
    if (calcAnswers)
    	questionsAnswers = new Array();

    for (var i=0; i < maxNum; i++)
    {
	    var qData = questions[i].split(":");
	    if (arrAnswers[i] != null)
	    {
				answerData = arrAnswers[i].split(":");
				var weight = (answerData[3]==null)?"1":answerData[3];
				if (mod=='')
				{
					fixedAnswers.push((CompareAnswers(answerData))?"1-"+weight:"0-"+weight);
				}
				else
				{
	    			if (qData[0]==mod)
	    				fixedAnswers.push((CompareAnswers(answerData))?"1-"+weight:"0-"+weight);
	    	}
	    }
	    else 
	    {
	    		if ((qData[0]==mod) ||(mod==''))
	    			fixedAnswers.push("0-0");
	    }
	    if (calcAnswers)	// [mod#]:[questUNID]:[useransw#]:[correctansw#]:[answeredOK?1-0]
			questionsAnswers.push(qData[0]+":"+questionsList[active_lang][active_test-1][qData[0]][qData[1]]+":"+answerData[1]+":"+answerData[2]+":"+fixedAnswers[fixedAnswers.length-1]);

    }

    return fixedAnswers;    
}

// -----------------------------------------------------------------

function GetCorrect(sName, mod)
{
    var answers = CalculateResult(sName, mod);
    var sum = 0;
    
    for (var i=0; i < answers.length; i++)
    {
    		var ansArr = answers[i].split("-");
        if (ansArr[0] == "1")
            sum += 1;
    }

    return sum;

}    
// -----------------------------------------------------------------

function GetCorrectW(sName, mod)
{
    var answers = CalculateResult(sName, mod);
    var sum = 0;
    
    for (var i=0; i < answers.length; i++)
    {
    		var ansArr = answers[i].split("-");
        if (ansArr[0] == "1")
            sum += parseInt(ansArr[1]);
    }

    return sum;

}    

// -----------------------------------------------------------------

function GetWrong(sName, mod)
{
    var answers = CalculateResult(sName, mod);
    var sum = 0;
    
    for (var i=0; i < answers.length; i++)
    {
        if (answers[i] == 0)
            sum += 1;
    }
    return sum;
}    
// -----------------------------------------------------------------

function GetWrongW(sName, mod)
{
    var answers = CalculateResult(sName, mod);
    var sum = 0;
    
    for (var i=0; i < answers.length; i++)
    {
				var ansArr = answers[i].split("-");
        if (ansArr[0] == "0")
            sum += parseInt(ansArr[1]);
    }
    return sum;
}    

// -----------------------------------------------------------------

function GetTotal(sName, mod)
{
    var answers = CalculateResult(sName, mod);
    return answers.length;
}  
  
// -----------------------------------------------------------------

function GetTotalW(sName, mod)
{
    var answers = CalculateResult(sName, mod);
    var sum = 0;
    
    for (var i=0; i < answers.length; i++)
    {
				var ansArr = answers[i].split("-");
        sum += parseInt(ansArr[1]);
    }
    return sum;
}    

// -----------------------------------------------------------------

function GetProc(sName, mod)
{
    var ok = GetCorrect(sName, mod);
    var total = GetTotal(sName, mod);
    if (total==0)
    	rez=-1;
    else
    	rez=Math.round((ok/total)*100);
    return rez;
}    
// -----------------------------------------------------------------

function GetProcW(sName, mod)
{
    var ok = GetCorrectW(sName, mod);
    var total = GetTotalW(sName, mod);
    if (total==0)
    	rez=-1;
    else
    	rez=Math.round((ok/total)*100);
    return rez;
}    

// -----------------------------------------------------------------

function arrContains(arr, elem)
{
	var rez = false;
	for (var i=0; i < arr.length; i++)
	{
		if (arr[i] == elem)
			rez = true;
	}
    	return rez;
    				
}

// -----------------------------------------------------------------

function GenerateTest()
{
	var tests = GetCookie("tests");
	if (tests == null) { alert("ERROR - no tests selected!"); }
	//var tarr = (tests==null)?new Array(1,1,1,0,0,0,0):tests.split(":");
	var tarr = new Array(1,1,1,0,0,0,0);
	
	var genQuestions = new Array();
	for (var i=0; i < tarr.length; i++) {
		if (tarr[i] != 0)
			for (var j=0; j <= modLength[i]; j++) {
			//for (var j=0; j <= 2; j++) {
				genQuestions.push(i+":"+j)	
			}	
	}
	return genQuestions.join("|");
}


function GenerateTestOLD()
{
	var testName = GetCookie("tsname"); 
	var numQT = (testName=="Start")?new Array( 10,10,10,10,10,10,10 ):new Array( 6,9,9,9,9,9,9 );  // number of quetions to be taken from each module
	//var numQT = (testName=="Start")?new Array( 0,0,10,0,0,0,0 ):new Array( 0,0,10,0,0,0,0 );  // number of quetions to be taken from each module


    var tests = GetCookie("tests");
    var tarr = (tests==null)?new Array(1,1,1,1,1,1,1):tests.split(":");
 
    var numQuestions = new Array( (tarr[0]==1)?numQT[0]:0,
                                  (tarr[1]==1)?numQT[1]:0,
    				  (tarr[2]==1)?numQT[2]:0,
    				  (tarr[3]==1)?numQT[3]:0,
    				  (tarr[4]==1)?numQT[4]:0,
    				  (tarr[5]==1)?numQT[5]:0,
    				  (tarr[6]==1)?numQT[6]:0 );
    var genQuestions = new Array();
    var rn1, rn2, orn1, orn2;		// random numbers and old random numbers
    var tmp;

    for (var i=0; i < numQuestions.length; i++)
    {
        var modCurrent = new Array();  // array to avoid duplcate random numbers
        for (var j=0; j < numQuestions[i]; j++)
        {
		do {
			rn1=Math.floor(Math.random()*(modLength[i] + 1));
		} while (arrContains(modCurrent, rn1));

		modCurrent.push(rn1);
		genQuestions.push(i+":"+rn1);
	}	     
    }

    for (var i=0; i < genQuestions.length; i++)
    {
		do {
			rn1=Math.floor(Math.random()*genQuestions.length);
		} while (rn1 == orn1);
		
		do {
			rn2=Math.floor(Math.random()*genQuestions.length);
		} while ((rn2 == orn2) || (rn2 == rn1)) ;
		
		tmp = genQuestions[rn1];
		genQuestions[rn1] = genQuestions[rn2];
		genQuestions[rn2] = tmp;

		orn1 = rn1;
		orn2 = rn2;
    }

    return genQuestions.join("|");
}    

// -----------------------------------------------------------------

function GetQuestionURL(num)
{
	var cookieQuestions = GetCookie("tquestions");
	var questions = cookieQuestions.split("|");
	var sURL = "result.php";
	if (num < questions.length )
	{
		var qData = questions[num].split(":");
		//alert(cookieQuestions +"     "+active_lang+" "+active_test+" "+qData[0]+" "+qData[1]);
		
		sURL = questionsList[active_lang][active_test-1][qData[0]][qData[1]]+".php";
	}	
	return sURL;
}

// -----------------------------------------------------------------

function GetQuestionNum()
{
	var cookieQuestions = GetCookie("tquestions");
	
	var questions = cookieQuestions.split("|");
	var winLocation = window.location.pathname;
	var re = new RegExp("([a-f0-9]*)[.]+php","ig");
 	var arr = re.exec(winLocation);
	var num = RegExp.$1;
	var rez = -1;
	for (var i=0; i < questions.length; i++)
    	{
    		var qData = questions[i].split(":");
    		if (questionsList[active_lang][active_test-1][qData[0]][qData[1]] == num)
    		{
    			

    			rez = i;
    		}
    	}
	return rez;
}

function ShowNumber()
{
	var urlparam = gup("action");
	if (urlparam != "")
		return;
	var num = GetQuestionNum();
	var maxNum = GetTestLength();
//	alert(num);
	document.write (""+(num+1));	
}
function ShowNumbers()
{
	var urlparam = gup("action");
	if (urlparam != "")
		return;
	var num = GetQuestionNum();
	var maxNum = GetTestLength();
	document.write ("<br><FONT SIZE=1 COLOR='000080'>"+(num+1)+" - "+maxNum+"</FONT>");	
}
// -----------------------------------------------------------------

function gup( name )
{
	name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");  
	var regexS = "[\\?&]"+name+"=([^&#]*)";  
	var regex = new RegExp( regexS );  
	var results = regex.exec( window.location.href );  
	if( results == null )
	    return "";  
	else
	    return results[1];
}

// -----------------------------------------------------------------

function doLoad()
{
    var urlparam = gup("action");
    if (urlparam == "")
    {
	var testID = GetCookie('testID');
	var num = GetQuestionNum();

	//if (history.forward() != null) selflocation.redoLoad();
	if (num == 0)
		DelCookie('test_RU');
	document.forms[0].action = GetQuestionURL(num+1);
	//window.status = GetQuestionURL(num+1);
	//alert(document.forms[0].action);
	remainingvalue = GetCookie('remainingtime'+testID);

	startPage();

    }
   if (urlparam == "view")
   {
     if (document.all||document.getElementById){
	for (i=0;i<document.forms[0].length;i++){
		var tempobj=document.forms[0].elements[i];
		if(tempobj.type.toLowerCase()=="submit"||tempobj.type.toLowerCase()=="reset")
		//disable em
			tempobj.disabled=true;
	}
      }
      
   }
 
}

// -----------------------------------------------------------------

function doSubmit()
{
	var frm = document.forms[0];
	var num = GetQuestionNum();
	var testID = GetCookie('testID');
	var remTime = getRemainTime();
	var answ = "";
	
	if (frm.answer.length != null)
	{
		for (var i=0; i < frm.answer.length; i++)
			if (frm.answer[i].checked)
				answ = frm.answer[i].value;
	}
	else
	{
		answ = frm.answer.value;
	} 
	SetCookie('remainingtime'+testID, GetCookie('trem'+testID) );
	DelCookie(cookieName1);
	DelCookie(cookieName2);
	AppendCookie('test_RU', num+':'+answ+':'+frm.correct.value+':'+frm.weight.value ); 
//	alert(num+':'+answ+':'+frm.correct.value);
//alert(GetCookie('test_RU'));

	if (remTime <= 0)
		document.forms[0].action = GetQuestionURL(GetTestLength());
	//alert(document.forms[0].action);
	return true;
}

// -----------------------------------------------------------------

function selectTests(elem)
{

	var elemArr = document.forms[0].testList;
	var obj = new Array();
	var curr = -1;
	var len = 0;
	for (var i=0; i < elemArr.length; i++)
	{
		val = elemArr[i].src.substr(elemArr[i].src.lastIndexOf('/')+1, 2);
		obj.push( (val=='ok')?1:0 ); //.checked
		if (val=='ok')
			len++;
		if (elemArr[i] == elem)
			curr = i;
	}


	if (obj[curr])
	{
		if (GetCookie('tsname')=='Start')
		{
			//elem.checked = true;
			elem.src=='images/no.gif'
			obj[curr] = 0;
		}
	}
	else
	{
		if (len < 4)
		{	
			elem.src=='images/ok.gif'
			obj[curr] = 1;
		}		
	}
	if (obj.length > 0)
		SetCookie('tests', obj.join(":")); 

	if (elem != null)
		window.location.reload();
}

// -----------------------------------------------------------------

function startTest()
{
	var datenow = new Date(); 
	var hours = (datenow.getHours() < 10)?"0"+datenow.getHours():datenow.getHours();
	var minutes = (datenow.getMinutes() < 10)?"0"+datenow.getMinutes():datenow.getMinutes();
	var frm = document.forms[0];
	var tests = GetCookie("tests");
/*
	if ((frm.Username.value == '') || (frm.Username.value == 'Имя Фамилия'))
	{
		alert("Заполните поле 'Имя, Фамилия'!");
		return false;
	}
	else */ if (tests=='0:0:0:0:0:0:0') {
		alert("Выберите тест!");
		return false;
	}
	else
	{
		var arrID = new Array('0','1','2','3','4','5','6','7','8','9',
                                      'A','B','C','D','E','F','G','H',
                                      'I','J','K','L','M','N','O','P',
                                      'Q','R','S','T','U','V','W','X','Z')
		var testID = "";
		for (var i=0; i < 16; i++)
			testID += arrID[Math.floor(Math.random()*arrID.length)];

		
		//alert(testID);
		SetCookie('testID', testID);
//		DelCookie('userfullname');
//		SetCookie('userfullname'+testID, frm.Username.value);

modLength = new Array( questionsList[active_lang][active_test-1][0].length-1,
questionsList[active_lang][active_test-1][1].length-1, questionsList[active_lang][active_test-1][2].length-1, 
questionsList[active_lang][active_test-1][3].length-1, questionsList[active_lang][active_test-1][4].length-1, 
questionsList[active_lang][active_test-1][5].length-1, questionsList[active_lang][active_test-1][6].length-1 );  // number of available questions in each module


		SetCookie('tquestions', GenerateTest()); 
		SetCookie('tstart', hours+':'+minutes);
//alert(GenerateTest());
		if (GetCookie('tests') == null)
			selectTests(null);
		var cookieTests = GetCookie('tests');

		DelCookie('tests');
		SetCookie('tests'+testID, cookieTests);
	
		var cookieQst = GetCookie("tquestions");
	//	alert(cookieQst);
		var arrQst = cookieQst.split("|");
		var len = arrQst.length*60;
		SetCookie('remainingtime'+testID, len);

		frm.action = 'questions/'+GetQuestionURL(0); 
		//frm.URL.value = 'questions/'+GetQuestionURL(0); 
		frm.submit();	
	}	
}

// -----------------------------------------------------------------

function endTest()
{
	SetCookie('userfullname', '');
	DelCookie('tquestions'); 
	DelCookie('tstart');
	DelCookie('tests');
	DelCookie('testID');
	//window.close();
	window.external.endTest();
	return false;
}

// -----------------------------------------------------------------

function getRemainTime()
{
	return 3600;
	
	var frm = document.forms[0];
	var timeNow = new Date();
	var testID = GetCookie('testID');
	var timeDiff = new Date (timeNow - timeStart);
	var timeOnLoad = new Date(parseInt(GetCookie('remainingtime'+testID), 10)*1000);
	var timeRemain = new Date(timeOnLoad - timeDiff + 499);
	var secsRemain = Math.floor(timeRemain.getTime()/1000);

	var secsRemain2 = parseInt(timevalue, 10);
	secsRemain2--;
	SetCookie(cookieName2, timevalue);

	if ((secsRemain2 - secsRemain) > 300){
		timeStart.setSeconds(timeStart.getSeconds()+ (secsRemain2-secsRemain));
		SetCookie(cookieName1, timeStart);
		secsRemain = secsRemain2;
	}

	if (secsRemain < 0)
		secsRemain = 0;
	timeRemain = new Date(secsRemain*1000);
	
	timevalue = secsRemain;
	var mins = timeRemain.getMinutes();
	mins = (mins < 10)?"0"+mins:mins;
	var secs = timeRemain.getSeconds();
	secs = (secs < 10)?"0"+secs:secs;
	window.status =  mins+ ":" + secs;

	return secsRemain;
}

// -----------------------------------------------------------------

function getSecs() 
{ 
	if (allowed) {
		var secsRemain = getRemainTime();
		if (secsRemain <= 0) 
			clearInterval(timerID);
	}
}

// -----------------------------------------------------------------

function setUsername(username) 
{ 
	document.forms[0].Username.value=username;
}

// -----------------------------------------------------------------

function startPage()
{
	var frm = document.forms[0];
	var mcode = "all";
	var fname = GetCookie("userfullname");
	var testID = GetCookie("testID");
	var cardno = "RU999";
	allowed = true;

	cookieName1 = "tsta"+testID;
	cookieName2 = "trem"+testID;

	if (GetCookie(cookieName1) != null) {
		timeStart = new Date( GetCookie(cookieName1) );
	}
	else {
		timeStart = new Date();
		SetCookie(cookieName1, timeStart);
	}

	if (GetCookie(cookieName2) != null) {
		timevalue = GetCookie(cookieName2);
	}
	else {
		SetCookie(cookieName2, remainingvalue);
		timevalue = parseInt(remainingvalue, 10) ;
	}

	getRemainTime();

	if (GetCookie(cookieName1) != null) // if cookies allowed
	{   
//		timerID = setInterval('getSecs();', 1000);
	}
	else
	{   // show error
		if (document.all) 
			document.all.errMsgDiv.style.pixelTop = 30;
	        else 
	        	document.layers.errMsgDiv.top = 30;
	}
}

// =================================================================
/*
function setanswer( ans )
{
	if( navigator.appName != "Lotus Notes")
	{
		document.forms[0].answer.value = ans;
	}
}
*/
function addAnswer( ans )
{
	var ansStr = document.forms[0].answer.value;
	if (ansStr == '0')
		ansStr = '';

	if( navigator.appName == "Lotus Notes")
	{
		return;
	}
	if (ansStr.search(ans) == -1)
	{
		// Add value to answer field
				if (ansStr.length > 0)
			document.forms[0].answer.value = ansStr + ',' + ans;
		else
			document.forms[0].answer.value = ans;
	}
}

function removeAnswer( ans )
{
	var ansStr = document.forms[0].answer.value;
	var repStr;
	if( navigator.appName == "Lotus Notes")
	{
		return;
	}
		
	if (ansStr.search(',') == -1)
	{
		// Remove value from answer field
		//repStr = ansStr.replace( ans, '');
		document.forms[0].answer.value = '0'; //repStr;
	}
	else
	{
		var ansarr = ansStr.split(',');
		var newans = new Array();
		for (var i=0; i < ansarr.length; i++)
		{
			if (ansarr[i]!=ans)
				newans.push(ansarr[i]);
		}
		document.forms[0].answer.value = newans.join(',');
	}
}

function changeImage( ans, imgObject, defaultImg, clickImg)
{
	// Change image on mouse click
	var strSrc;
	var strDest;
	if(document.images) 
	{
		strSrc = imgObject.src;
		if (strSrc.search(clickImg) > 0)
		{
			strDest = strSrc.replace(clickImg, defaultImg);
			imgObject.src=strDest;
			removeAnswer(ans);
		}
		else
		{
			strDest = strSrc.replace(defaultImg, clickImg);
			imgObject.src=strDest;
			addAnswer(ans);
		}
	}
}

function getRandomNum() {
        
    // between 0 - 1
    var rndNum = Math.random()

    // rndNum from 0 - 1000    
    rndNum = parseInt(rndNum * 1000);

    // rndNum from 33 - 127        
    rndNum = (rndNum % 94) + 33;
            
    return rndNum;
}

function checkPunc(num) {
    
    if ((num >=33) && (num <=47)) { return true; }
    if ((num >=58) && (num <=64)) { return true; }    
    if ((num >=91) && (num <=96)) { return true; }
    if ((num >=123) && (num <=126)) { return true; }
    
    return false;
}

function MakeUNID()
{
	var UNID="";
	
	for (var i=0; i<20; i++)
	{
		var numI = getRandomNum();
		
		while (checkPunc(numI)) { numI = getRandomNum(); }
		
		UNID= UNID + String.fromCharCode(numI);
		
	}
	
	return UNID;	
}

// ==============================================================

var isNav4, isIE4;
if (parseInt(navigator.appVersion.charAt(0)) >= 4) {
  isNav4 = (navigator.appName == "Netscape") ? true : false;
  isIE4 = (navigator.appName.indexOf("Microsoft") != -1) ? true : false;
}   

var areaObj, markedObj;
var ansVal;
var isOver = false;

function calcLeftPosition(obj) {
	var curleft = 0;
	if(obj.offsetParent) {
		while(1) {
			curleft+=obj.offsetLeft;
			if(!obj.offsetParent) {
			break;
		}
		obj=obj.offsetParent;
		}
	} else if(obj.x) {
		curleft+=obj.x;
	}
	return curleft-1;
}



function calcTopPosition(obj){
	var curtop = 0;
	if (obj.offsetParent) {
		while (1) {
			curtop+=obj.offsetTop;
			if (!obj.offsetParent) {
			break;
		}
		obj=obj.offsetParent;
		}
	} else if (obj.y) {
		curtop+=obj.y;
	}
	return curtop-1;
}

function workOnLayer(e, layerName)
{
   var mark = null; 
    if (document.all)
    {
        mark = document.all[layerName];
    }
    else if (document.layers)
    {
        mark = document.layers[layerName];
    }
    else if (document.getElementById)
    {
        mark = document.getElementById(layerName);
    }
   
   var myImg = document.images.paveikslas;
 if( mark != null && myImg != null) {

//	var ox = myImg.offsetLeft-1 ;  // paveiksliuko x ir y pozicija
//	var oy = myImg.offsetTop-1 ;   // (minus 3 del Border storio)
	var ox = calcLeftPosition(myImg);  // paveiksliuko x ir y pozicija
	var oy = calcTopPosition(myImg);   // (minus 3 del Border storio)
	   
	// is set only over AREA object. Is used in all cases.
	if (layerName == "overLayer") {
		//areaObj = (e.target) ? e.target : e.srcElement;
		areaObj = (e.target) ? e.target : e.srcElement;
	}
	if ((layerName == "markLayer") && (areaObj != null)) {
		markedObj = areaObj;
	}
	//alert(areaObj.coords);
	if ((areaObj != null) | (markedObj != null))
	{
		var coords = (layerName == "overLayer")?areaObj.coords.split(','):markedObj.coords.split(',');
		var c0 = parseInt(coords[0]);
		var c1 = parseInt(coords[1]);
		var c2 = parseInt(coords[2]);
		var c3 = parseInt(coords[3]);
		var rx = (isNav4)?c2-c0-2:c2-c0+2;
		var ry = (isNav4)?c3-c1-2:c3-c1+2;

    if (document.all)
    {
        document.all[layerName].style.left = (ox + c0) + "px";
        document.all[layerName].style.top = (oy + c1) + "px";
    }
    else if (document.layers)
    {
        document.layers[layerName].left = (ox + c0);
        document.layers[layerName].top = (oy + c1);
    }
    else if (document.getElementById)
    {
        elem = document.getElementById(layerName);
        elem.style.left = (ox + c0) +  "px";
        elem.style.top = (oy + c1) + "px";
    }

/*		if (isNav4){
			mark.style.left = (ox + c0)+"pt";
			mark.style.top = (oy + c1)+"pt";
		} else {
			mark.style.pixelLeft = (ox + c0);
			mark.style.pixelTop = oy + c1;
		}*/

		mark.style.width = rx+"px";
		mark.style.height = ry+"px";
	  } 
  }   
}

function showHideLayer(layerName, show)
{
  var mark = document.getElementById(layerName);
  if( mark != null) {
	if (isIE4) {
		mark.style.visibility = (show)?"visible":"hidden";
	} else {
		mark.style.visibility = (show)?"show":"hide";
		mark.style.visibility = (show)?"visible":"hidden";
	}  	
  }
}

function reover(e, ans)
{ 
	var urlparam = gup("action");
	var urlparam1 = gup("answ");

	ansVal = ans;
	showHideLayer("overLayer", true);
	workOnLayer(e, "overLayer");
	setTimeout("timeout()", 50);

	if (urlparam == "view" && urlparam1 == ans)
	{
		workOnLayer(e, "markLayer");
		//return;
	}

}


function timeout()
{
	// isOver is set in maover() and maout()
	if (!isOver) {
		showHideLayer("overLayer", false);
		areaObj = null;
	}	
}

function resized()
{
	var e = (event)?event:Event;
	var frm = document.forms[0];
	if (frm != null)
		if (frm.answer != null)
			if (frm.answer.value != "")
				workOnLayer(e, "markLayer");
}

function maover(e)
{
	isOver = true;
}

function maout(e)
{
	isOver = false;
	showHideLayer("overLayer", false);
	areaObj = null;	
}

function setanswer(e, val)
{
	if (val == '0')
		document.forms[0].answer.value= ansVal;
	else
		document.forms[0].answer.value= val;
	showHideLayer("markLayer", true);
	workOnLayer(e, "markLayer");
	return false;
}

window.onresize = resized;
