﻿var $subjects=new Array();

var $courses=new Array();

var $enroll=new Array();	// Courses without conflicts.

function arrayHasKey(array,key){
	var has=false;
	for(index in array){
		if(key==index){
			has=true;
			break;
		}
	}
	return has;
}

function arrayHasValue(array,value){
	var has=false;
	for(index in array){
		if(value==array[index]){
			has=true;
			break;
		}
	}
	return has;
}

function hasSubject(sid){
	
	sid=parseInt(sid);
	
	var has=false;
	
	for(index in $subjects){
		if(sid==index){
			has=true;
			break;
		}
	}
	
	return has;
}

function hasCourse(cid){
	
	cid=parseInt(cid);
	
	var has=false;
	
	for(index in $courses){
		if(cid==index){
			has=true;
			break;
		}
	}
	
	return has;
}

function isSubjectComplete(sid){
	var is=hasSubject(sid);
	
	if(is){
		is=arrayHasKey(getSubject(sid),"credit");
	}
	
	return is;
}

function isCourseComplete(cid){
	var is=hasCourse(cid);
	
	if(is){
		is=arrayHasKey(getCourse(cid),"times");
	}
	
	return is;
}

function addSubjects(json){
	if(!hasSubject(json.sid)){
		$subjects[json.sid]=json;
	}else{
		var subject=$subjects[json.sid];
		for(key in json){
			subject[key]=json[key];
		}
	}
}

function addCourses(json){
	if(!hasCourse(json.cid)){
		$courses[json.cid]=json;
	}else{
		var course=$courses[json.cid];
		for(key in json){
			course[key]=json[key];
		}
	}
}

function getSubject(sid){
	sid=parseInt(sid);
	return $subjects[sid];
}

function getCourse(cid){
	cid=parseInt(cid);
	return $courses[cid];
}

function clearEnroll(){
	$enroll=new Array();
}

function addEnroll(course){
	$enroll[course.sid]=course.cid;
}

function getEnroll(){
	return $enroll;
}

function sortArrayByValue(array){
	var keySet=new Array();
	var valueSet=new Array();
	
	var tempSet=new Array();
	
	for(key in array){
		var value=array[key];
		tempSet[value]=key;
		keySet[keySet.length]=value;
	}
	
	keySet.sort();
	
	for(index in keySet){
		var value=keySet[index];
		var key=tempSet[value];
		valueSet[key]=value;
	}
	
	return valueSet;
}

function sortArrayByKey(array){
	var keySet=new Array();
	var valueSet=new Array();
	
	for(key in array){
		keySet[keySet.length]=key;
	}
	
	keySet.sort();
	
	for(key in keySet){
		var index=keySet[key];
		valueSet[index]=array[index];
	}
	
	return valueSet;
}
