function getElementsByClassName(className, tag, elm){
	var testClass = new RegExp("(^|\\s)" + className + "(\\s|$)");
	var tag = tag || "*";
	var elm = elm || document;
	var elements = (tag == "*" && elm.all)? elm.all : elm.getElementsByTagName(tag);
	var returnElements = [];
	var current;
	var length = elements.length;
	for(var i=0; i<length; i++){
		current = elements[i];
		if(testClass.test(current.className)){
			returnElements.push(current);
		}
	}
	return returnElements;
}


function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}

Array.prototype.remove = function(from, to) {
  var rest = this.slice((to || from) + 1 || this.length);
  this.length = from < 0 ? this.length + from : from;
  return this.push.apply(this, rest);
};

function stripID(string){
	return string.split('.')[2].split(':')[0]
}

function readList(){
	list = document.getElementById('teacherlist');
	checkboxes = list.getElementsByTagName('input');
	var items = []
	
	for (var i=0; i<checkboxes.length; i++){
		if (checkboxes[i].type=='checkbox'){
			item = [stripID(checkboxes[i].name), checkboxes[i].checked];
			items.push(item);
		}
	}
	return items;
}

function setItemCookies(items){
	var value='"['
	for (var i=0; i<items.length;i++){
		value += "u'" + items[i][0]+"'"
		if (i<(items.length-1)){
			value += ", "
		}
	}
	value += ']"'
	createCookie('teacher_cart',value,1)
}

function moveSelectedUp(){
	var items = readList();
	for (var i=1; i<items.length; i++){
		if (items[i][1] && !items[i-1][1]){
			var buf = items[i-1];
			items[i-1] = items[i];
			items[i] = buf;			
		}
	}
	setItemCookies(items);
	updateList(items);
}

function moveSelectedDown(){
	var items = readList();
	for (var i=items.length-2; i>-1; i--){
		if (items[i][1] && !items[i+1][1]){
			var buf = items[i+1];
			items[i+1] = items[i];
			items[i] = buf;
		}
	}
	setItemCookies(items);
	updateList(items);
}

function deleteSelected(){
	var items = readList();
	for (var i = 0; i<items.length; i++){
		if(items[i][1]){
			items.remove(i);
			i--;
		}
	}
	setItemCookies(items);
	updateList(items);
}

function updateList(items){
	var itemlist = document.getElementById('teacherlist');
	var cur_items = getElementsByClassName("sortable-item", "div", itemlist);
	var new_items=[];

	for (var i=0; i<cur_items.length; i++){
		for (var j=0; j<items.length; j++){
			if (items[j][0] == cur_items[i].id){
				new_items[j] = cur_items[i].cloneNode(true);
			}
		}
		itemlist.removeChild(cur_items[i]);
		//i--;
	}
	for (var i=0; i<new_items.length; i++){
		itemlist.appendChild(new_items[i]);
	}
}

