
  var numQ = 15;    //This is the number of questions on the test 
  //BE WARNED, changing numQ might not be the only thing needed to change the # of questions on the test
  
  

  var bikky = document.cookie;
  function getCookie(name) {
  	var index = bikky.indexOf(name + "=");
    	if (index == -1) return null;
    	index = bikky.indexOf("=", index) + 1;
	var endstr = bikky.indexOf(";", index);
    	if (endstr == -1) endstr = bikky.length;
    	return unescape(bikky.substring(index, endstr));  
	}


  function random(max, amount) {     //this function generates a random number between 0 and max
	var x;
	var y;
	var ran;
	var okflag=0;
	var randArrayCtr = 0;
	var randArray = new Array(amount);
	for (x = 0; x < amount; x++)
	{
		ran = Math.random()*(max-1);
		ran = Math.round(ran);
		if ( x == 0 )
			randArray[ randArrayCtr++ ] = ran;
		else
		{
			for ( y = 0; y < randArrayCtr; y++ )
			{
				if ( ran == randArray[y] )
				{
					okflag = 0;
					x--;
					break;
				}
				else
					okflag = 1;
			}
			if ( okflag )
				randArray[ randArrayCtr++ ] = ran;
		}	
	}
	return randArray;
	}


  function woohah(alg, trig, explog, geo, probsolv, graphs) {
	//get the highest possible question number for each catagory
	var theArray = new Array(numQ);
	var arrayindex = 0;
	var tempalg = new Array(alg);
	var temptrig = new Array(trig);
	var tempexplog = new Array(explog);
	var tempgeo = new Array(geo);
	var tempprobsolv = new Array(probsolv);
	var tempgraphs = new Array(graphs);
	tempalg = random(max_alg, alg);
	temptrig = random(max_trig, trig);
	tempexplog = random(max_explog, explog);
	tempgeo = random(max_geo, geo);
	tempprobsolv = random(max_prob, probsolv);
	tempgraphs = random(max_graphs, graphs);
	for ( var x=0; x < alg; x++)
		theArray[ arrayindex++ ] = tempalg[x]
	for ( var x=0; x < trig; x++)
                theArray[ arrayindex++ ] = temptrig[x]
        for ( var x=0; x < explog; x++)
                theArray[ arrayindex++ ] = tempexplog[x]
        for ( var x=0; x < geo; x++)
                theArray[ arrayindex++ ] = tempgeo[x]
        for ( var x=0; x < probsolv; x++)
                theArray[ arrayindex++ ] = tempprobsolv[x]
        for ( var x=0; x < graphs; x++)
                theArray[ arrayindex++ ] = tempgraphs[x]
	return theArray;
	}


  function setCookie(name) {
	document.cookie = eval('"' + name + '=" + escape(' + name + ')');
   	bikky = document.cookie;  
	}

  function defineCookie(newData) {
	userData = newData[0];
    	for (var i=1; i < newData.length; i++)
      		userData += "!" + newData[i];
	setCookie("userData");
	}

        
//cookie stuff (this is necessary):
  var userData = getCookie("userData");
  if (userData == null)
        userData = "0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0";
        
  var numVars = 1;
  var start = userData.indexOf("!") + 1;
  while (start != 0) {
        numVars++;
        start = userData.indexOf("!", start) + 1;  }
   var data = new Array(numVars);
  for (var i=0; i < data.length; i++) {
        var end = userData.indexOf("!", start);
        if (end == -1) end = userData.length;
        data[i] = userData.substring(start, end);
        start = end + 1;  }



  function get_n_pop( someform, option) {
	// write cookie data
        var alg, trig, explog, geo, probsolv, graphs;
	var i=0;                                  //counter variable
	var x=0;					//counter variable
	var numArray = new Array(numQ);
	var q_addies = new Array(numQ);
	var ans = new Array(numQ);
	 with (someform) {
		if (option == 1){			// 1 = default option
			 alg = 3;
		         trig = 3;
			 explog = 3;
		 	 geo = 2;
		 	 probsolv = 2;
		 	 graphs = 2;
			}
	
		else {					// 0 = customized option
			alg = eval( algebra.value ); 
			trig = eval( trigonometry.value );
			explog = eval( explogarithm.value );
			geo = eval( geometry.value );
			probsolv = eval( probsolve.value );
			graphs = eval( prettygraphs.value );
			if ( algebra.value == "")
				alg = 0;
			if (trigonometry.value == "")
				trig = 0;
			if (explogarithm.value == "")
				explog = 0;
			if (geometry.value == "" )
				geo = 0;
			if (probsolve.value == "" )
				probsolv = 0;
			if (prettygraphs.value == "")
				graphs = 0;
			var sumofit = alg + trig + explog + geo + probsolv + graphs;
			if ( sumofit != 15 )
			{
				alert("You selected " +sumofit+ " questions.  Please select a total of 15.")
				return;
			}	
		     }
	



        numArray = woohah(alg, trig, explog, geo, probsolv, graphs);
	for (x = 0; x < alg; x++){
        	q_addies[i] = "http://bama.ua.edu/~fcmath/exam/algebra/"+numArray[i]+"/index.html";
		ans[i] = alga[numArray[i++]];
	}

        for (x = 0; x < trig; x++){
       	        q_addies[i] = "http://bama.ua.edu/~fcmath/exam/trig/"+numArray[i]+"/index.html";
		ans[i] = triga[numArray[i++]];
	
	}
	for (x = 0; x < explog; x++){
		q_addies[i] = "http://bama.ua.edu/~fcmath/exam/explog/"+numArray[i]+"/index.html";
		ans[i] = exploga[numArray[i++]];
	}

        for (x = 0; x < geo; x++){
		q_addies[i] = "http://bama.ua.edu/~fcmath/exam/geometry/"+numArray[i]+"/index.html";
		ans[i] = geoa[numArray[i++]];
	}

        for (x = 0; x < probsolv; x++){
		q_addies[i] = "http://bama.ua.edu/~fcmath/exam/probsolv/"+numArray[i]+"/index.html";
		ans[i] = proba[numArray[i++]];
	}
	
        for (x = 0; x < graphs; x++){
		q_addies[i] = "http://bama.ua.edu/~fcmath/exam/graphs/"+numArray[i]+"/index.html";
		ans[i] = graphsa[numArray[i++]];
	}
		
	

	data[0] = data0.value; 		// name field
        data[1] = q_addies[0]; 		// question1
        data[2] = q_addies[1]; 		// question2
        data[3] = q_addies[2]; 		// question3
	data[4] = q_addies[3];   	// question4
        data[5] = q_addies[4];          // question5
        data[6] = q_addies[5];          // question6
        data[7] = q_addies[6];          // question7
        data[8] = q_addies[7];          // question8
        data[9] = q_addies[8];          // question9
        data[10] = q_addies[9];         // question10
        data[11] = q_addies[10];        // question11    
        data[12] = q_addies[11];        // question12
        data[13] = q_addies[12];        // question13
        data[14] = q_addies[13];        // question14
        data[15] = q_addies[14];        // question15
        data[16] = ans[0];         // answer1
        data[17] = ans[1];        // answer2  
        data[18] = ans[2];        // answer3  
        data[19] = ans[3];        // answer4
        data[20] = ans[4];        // answer5  
        data[21] = ans[5];        // answer6
        data[22] = ans[6];        // answer7
        data[23] = ans[7];        // answer8  
        data[24] = ans[8];        // answer9
        data[25] = ans[9];        // answer10
        data[26] = ans[10];        // answer11
        data[27] = ans[11];        // answer12
        data[28] = ans[12];        // answer13
        data[29] = ans[13];        // answer14  
	data[30] = ans[14];        // answer15   
	  }
	defineCookie(data);

	// define window options
	options = " toolbar=no,location=no,directories=no,status=no,menubar=no," +
		  "resizable=yes,copyhistory=no,scrollbars=no,width=800,height=600";
	// open the window
	window.open("http://bama.ua.edu/~fcmath/exam/frames.html","testwindow", options );

  }
	




