| Optional: Class | |
|---|---|
| Number of Students | |
| First usable locker number | |
| Last usable locker number | |
| Optional: Set range of lockers that are not to be used. ↓ |
|
| First unusable locker number | |
| Last unusable locker number | |
var randomizeb = false; var spreadb = false;
//SELECTION OF SPREAD & RANDOMIZATION OPTIONS function CBCR(){ var rob = document.getElementById("randomizeOption"); var robc = rob.style.backgroundColor;
if(robc == "" || robc == "white"){ rob.style.backgroundColor = "rgb(110,140,255)";
rob.style.color = "white";
randomizeb = true; } else{ rob.style.backgroundColor = "white";
rob.style.color = "black";
randomizeb = false; }
} function CBCS(){ var sob = document.getElementById("spreadOption"); var sobc = sob.style.backgroundColor;
if(sobc == "" || sobc == "white"){ sob.style.backgroundColor = "rgb(110,140,255)";
sob.style.color = "white";
spreadb = true; } else{ sob.style.backgroundColor = "white";
sob.style.color = "black";
spreadb = false; } }
////ASSIGN//// //Code Clocks = Lockers Stars = students cluster = group of students
function Assign(){
//Group Name var GroupNm = (document.getElementById("Name").value).toUpperCase();
//Imporatant locker numbers var First = Number(document.getElementById("firstclock").value);
var Last = Number(document.getElementById("lastclock").value) + 1;
var Firstu = Number(document.getElementById("firstuclock").value);
var Lastu = Number(document.getElementById("lastuclock").value);
//Amount of clocks var clocksam = (Last - First);
//If the insuable locker range is used take it out of clocksam if(Firstu != 0 && Lastu != 0){ if(Lastu > First && Firstu < Last){ clocksam -= (1+(Lastu-Firstu)); } } //Amount of Students var staram = Number(document.getElementById("nuOfSt").value); //Make sure inputs make sense if(First >= (Last-1)){
document.getElementById("Result").innerHTML = "Make sure the first locker number is less than the last locker number."; } else if(Firstu == 0 && Lastu != 0){ document.getElementById("Result").innerHTML = "If the unusable locker range is to be used, both the first and last unusable locker numbers must have a value." } else if(Lastu == 0 && Firstu != 0){ document.getElementById("Result").innerHTML = "If the unusable locker range is to be used, both the first and last unusable locker numbers must have a value." } else if((Lastu <= First || Firstu >= Last ) && (Firstu != 0)){ document.getElementById("Result").innerHTML = "Make sure the range of the unusable lockers is within the usable locker range." } else if(isNaN(Firstu) || isNaN(Lastu)){ document.getElementById("Result").innerHTML = "Make sure both the first and last unusable locker numbers are numbers."; } else if(staram > clocksam){
document.getElementById("Result").innerHTML = "THERE ARE TO MANY STUDENTS. Suggestion: Expand the range of lockers " + GroupNm + " are allowed to use.";
} else if(isNaN(First) || First <= 0 || First%1 != 0){ document.getElementById("Result").innerHTML = "The first locker number must be a number."; } else if(isNaN(clocksam) || clocksam <= 0 || clocksam%1 != 0){ document.getElementById("Result").innerHTML = "The last locker number must be a number."; } else if(isNaN(staram) || staram <= 0 || staram%1 != 0){ document.getElementById("Result").innerHTML = "The number of students must be a number."; } else{ //Reset Error Message document.getElementById("Result").innerHTML = ""; //Leftover clocks var Leftover = clocksam - staram; //Empty Occupied Clocks array var OccuClocks = []; //Empty Empty clocks Array var EmptyClocks = []; //Fills clock Array with clock numbers for(u = First; u < Last; u++){ //Keeps unusable lockers from being added to the list of lockers if(u >= Firstu && u <= Lastu && Firstu != 0 && Lastu != 0){ EmptyClocks.push(u); continue; } OccuClocks.push(u); } //SOME MATH STUFF var jump = Math.floor(clocksam/Leftover); var totjump = (2 * Math.floor(clocksam/Leftover)) + 1 ; var emptied = 0; //FREQUENCY var decimal = ((clocksam/Leftover).toFixed(1)) - jump; var upperfreq = (10*(1-decimal)).toFixed(0); var lowerfreq = (10 * decimal).toFixed(0); if(upperfreq != 0){upperfreq -= 1;} if(lowerfreq != 0){lowerfreq -= 1;} var freq = lowerfreq; var check = 0; /////////SPREAD/////////// if(spreadb){ for(w = 0; emptied < Leftover; w += jump){ if(OccuClocks.length == staram){break;} EmptyClocks.push(OccuClocks[w]) OccuClocks.splice(w,1); emptied += 1; w-=1; check +=1 if(check = freq){ jump = totjump - jump; if(freq == upperfreq){freq=lowerfreq;} if(freq == lowerfreq){freq=upperfreq;} } } } /////////////////////////*/ ////PREP ARRAYS FOR DISPLAY var EmptyClocksString = ""; var OccuClockString = ""; //If the Occupied locker array is too long it takes some off and makes them empty like they should be. for(r = 0; r < OccuClocks.length; r++){ if(staram-1 < r){ EmptyClocks[EmptyClocks.length] = OccuClocks[r]; OccuClocks.splice(r,1); r-=1; } } //Randomize if(randomizeb){ OccuClocks.sort(function(a, b){return 0.5 - Math.random()}); } //Makes array into string for(g = 0; g < OccuClocks.length; g++){ OccuClockString += OccuClocks[g] + "n"; } //Makes sure there is no random "undefined" in the array for(b = 0; b < EmptyClocks.length; b++){ if(EmptyClocks[b] == undefined){ EmptyClocks.splice(b,1); b-=1; } } //Makes sure the for loop below makes Emptyclocks the right lenght if the unusable locker range is used. if(Firstu!=0){Leftover += (Lastu-Firstu+1);} //Emptylockers array to Emptylockers string for(q = 0; q < Leftover; q++){ EmptyClocksString += "n" + EmptyClocks[q] } ///CREATE EDITABLE TEXTBOX OF ASSIGNED LIST//// { //TABLE var tbl = document.createElement("TABLE"); var trt = document.createElement("TR"); var trb = document.createElement("TR"); trt.style.display = "block"; trb.style.display = "block"; tbl.style.border = "none"; tbl.style.float = "left"; tbl.appendChild(trt); tbl.appendChild(trb); //TEXTBOX var txbx = document.createElement("TEXTAREA"); txbx.setAttribute("rows","100"); txbx.setAttribute("cols","23"); txbx.style.fontSize = "20px"; txbx.style.border = "3px solid rgb(0,50,205)"; var assignedList = document.createTextNode( GroupNm + "n" + "Occupied Lockers" + "n" + "(Copy and Paste into the locker column in excel)" + "n" + "n" + OccuClockString + "n" + "Empty Lockers" + EmptyClocksString); txbx.appendChild(assignedList); //Add textbox to bottom row of the table trb.parentNode.insertBefore(txbx,trb); //DELETE BUTTONS var btn = document.createElement("BUTTON"); var btntx = document.createTextNode("Delete List"); btn.appendChild(btntx); btn.setAttribute("class", "fancybutton fancybutton1"); btn.setAttribute("title", "This list cannot be retrieved if deleted.") btn.style.width = "252px"; //Add Button to top row of table trt.parentNode.insertBefore(btn, trt); //Add Table to the screen document.body.appendChild(tbl); btn.onclick = function (){ window.document.body.removeChild(tbl); } } } }