var http = httpGetObject();

function openWindow(url, w, h){
	var windowprops = "width=" + w + ",height=" + h +",left=10,top=10,scrollbars=no,status=yes,toolbar=no,location=no,directories=no,resizable=yes";
	popup = window.open(url, 'newWin', windowprops);
	popup.focus();
	return popup;
}

function openWindowScroll(url, w, h){
	var windowprops = "width=" + w + ",height=" + h +",left=10,top=10,scrollbars=yes,status=yes,toolbar=no,location=no,directories=no,resizable=yes";
	popup = window.open(url, 'newWin', windowprops);
	popup.focus();
	return popup;
}

function openDegreeWindow(degree_id, ni_var1){
	if(http){
		xmlUrl = '/get_degree_url.php?degree_id=' + degree_id + '&ni_var1=' + ni_var1;
		http.open('GET', xmlUrl, false);
		http.send(null);
		response = http.responseText;

		windowprops = 'width=850,height=600,left=10,top=10,scrollbars=yes,status=yes,toolbar=no,location=no,directories=no,resizable=yes';
		popup = window.open(response, 'degreeWin', windowprops);
		popup.focus();
		return popup;
	} else {
		alert('httpGetObject does not exist');
		return false;
	}
}

function openSchoolWindow(school_id, ni_var1){
	if(http){
		xmlUrl = '/get_school_url.php?school_id=' + school_id + '&ni_var1=' + ni_var1;
		http.open('GET', xmlUrl, false);
		http.send(null);
		response = http.responseText;

		windowprops = 'width=850,height=600,left=10,top=10,scrollbars=yes,status=yes,toolbar=no,location=no,directories=no,resizable=yes';
		popup = window.open(response, 'schoolWin', windowprops);
		popup.focus();
		return popup;
	} else {
		alert('httpGetObject does not exist');
		return false;
	}
}

function openSchoolWin(link, ni_var1)
{
	windowprops = 'width=850,height=600,left=10,top=10,scrollbars=yes,status=yes,toolbar=no,location=no,directories=no,resizable=yes';
	popup = window.open(link, 'schoolWin', windowprops);
	popup.focus();

}

function copyrightYear(startYear){
	dt = new Date();
	if(startYear != dt.getFullYear()){
		return startYear + " - " + dt.getFullYear();
	} else {
		return startYear;
	}
}

function CheckAll(bChecked){
	var tg = document.getElementsByTagName("input");
	for(i = 0; i < tg.length; i++){
		if(tg.item(i).name == "action[]"){
			tg.item(i).checked = bChecked;
		}
	}
}

function getSchoolURL(val){
	if(http){
		xmlUrl = '/admin/get_school_url.php?school_id=' + val;
		http.open('GET', xmlUrl, false);
		http.send(null);
		return http.responseText;
	} else {
		alert('httpGetObject does not exist');
		return false;
	}
}

function switchClass(obj, strClassName){
	obj.className = strClassName;
}

function var_dump(obj){
	if(typeof obj == "object"){
		return "Type: " + typeof(obj) + ((obj.constructor) ? "\nConstructor: " + obj.constructor : "") + "\nValue: " + obj;
	} else {
		return "Type: " + typeof(obj) + "\nValue: " + obj;
	}
}

function urlencode(str){
	// http://kevin.vanzonneveld.net
	// +   original by: Philip Peterson
	// +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
	// +      input by: AJ
	// +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
	// +   improved by: Brett Zamir (http://brett-zamir.me)
	// +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
	// +      input by: travc
	// +      input by: Brett Zamir (http://brett-zamir.me)
	// +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
	// +   improved by: Lars Fischer
	// %          note 1: info on what encoding functions to use from: http://xkr.us/articles/javascript/encode-compare/
	// *     example 1: urlencode('Kevin van Zonneveld!');
	// *     returns 1: 'Kevin+van+Zonneveld%21'
	// *     example 2: urlencode('http://kevin.vanzonneveld.net/');
	// *     returns 2: 'http%3A%2F%2Fkevin.vanzonneveld.net%2F'
	// *     example 3: urlencode('http://www.google.nl/search?q=php.js&ie=utf-8&oe=utf-8&aq=t&rls=com.ubuntu:en-US:unofficial&client=firefox-a');
	// *     returns 3: 'http%3A%2F%2Fwww.google.nl%2Fsearch%3Fq%3Dphp.js%26ie%3Dutf-8%26oe%3Dutf-8%26aq%3Dt%26rls%3Dcom.ubuntu%3Aen-US%3Aunofficial%26client%3Dfirefox-a'

	var histogram = {}, unicodeStr='', hexEscStr='';
	var ret = (str+'').toString();

	var replacer = function(search, replace, str){
		var tmp_arr = [];
		tmp_arr = str.split(search);
		return tmp_arr.join(replace);
	};

	// The histogram is identical to the one in urldecode.
	histogram["'"]   = '%27';
	histogram['(']   = '%28';
	histogram[')']   = '%29';
	histogram['*']   = '%2A';
	histogram['~']   = '%7E';
	histogram['!']   = '%21';
	histogram['%20'] = '+';
	histogram['\u00DC'] = '%DC';
	histogram['\u00FC'] = '%FC';
	histogram['\u00C4'] = '%D4';
	histogram['\u00E4'] = '%E4';
	histogram['\u00D6'] = '%D6';
	histogram['\u00F6'] = '%F6';
	histogram['\u00DF'] = '%DF';
	histogram['\u20AC'] = '%80';
	histogram['\u0081'] = '%81';
	histogram['\u201A'] = '%82';
	histogram['\u0192'] = '%83';
	histogram['\u201E'] = '%84';
	histogram['\u2026'] = '%85';
	histogram['\u2020'] = '%86';
	histogram['\u2021'] = '%87';
	histogram['\u02C6'] = '%88';
	histogram['\u2030'] = '%89';
	histogram['\u0160'] = '%8A';
	histogram['\u2039'] = '%8B';
	histogram['\u0152'] = '%8C';
	histogram['\u008D'] = '%8D';
	histogram['\u017D'] = '%8E';
	histogram['\u008F'] = '%8F';
	histogram['\u0090'] = '%90';
	histogram['\u2018'] = '%91';
	histogram['\u2019'] = '%92';
	histogram['\u201C'] = '%93';
	histogram['\u201D'] = '%94';
	histogram['\u2022'] = '%95';
	histogram['\u2013'] = '%96';
	histogram['\u2014'] = '%97';
	histogram['\u02DC'] = '%98';
	histogram['\u2122'] = '%99';
	histogram['\u0161'] = '%9A';
	histogram['\u203A'] = '%9B';
	histogram['\u0153'] = '%9C';
	histogram['\u009D'] = '%9D';
	histogram['\u017E'] = '%9E';
	histogram['\u0178'] = '%9F';

	// Begin with encodeURIComponent, which most resembles PHP's encoding functions
	ret = encodeURIComponent(ret);

	for(unicodeStr in histogram){
		hexEscStr = histogram[unicodeStr];
		ret = replacer(unicodeStr, hexEscStr, ret); // Custom replace. No regexing
	}

	// Uppercase for full PHP compatibility
	return ret.replace(/(\%([a-z0-9]{2}))/g, function(full, m1, m2){
		return "%"+m2.toUpperCase();
	});
}

function goto(where){
	document.location.href = where;
}

function changeVisibility(li, id){
	li.className = li.className == 'close' ? 'open' : 'close';
	el = document.getElementById('sectionData[' + id + ']');
	el.style.display = (el.style.display == 'none') ? 'block' : 'none';
}

function expandAll(expand){
	var el, i = 0;
	while(el = document.getElementById('sectionData[' + i + ']')){
		el.style.display = expand ? 'block' : 'none';
		i++;
	}
}

function expandMenu(el){
	var list = document.getElementById(el);
	if(list != null){
		var listStyle = document.getElementById(el).style;
		if(listStyle.display == 'block'){
			listStyle.display = 'none';
		} else {
			listStyle.display = 'block';
		}
	}
}

function changeTabs(tid){
	if(tid === false){
		alert('You must first complete previous profile steps.');
		return false;
	} else {
		el = null;
		i = 0;
		while(el = document.getElementById('tabs[' + i + ']')){
			if(i == tid){
				el.className = el.className + ' selected';
				document.getElementById('tabsContent[' + i + ']').style.display = 'block';
			}	else {
				tmp = el.className.split(' ');
				el.className = tmp[0];
				document.getElementById('tabsContent[' + i + ']').style.display = 'none';
			}
			i++;
		}
	}
}

var newSubjectID = 1;
function addSubject(form)
{
	var levelName = form.eduLvl[form.eduLvl.selectedIndex].innerHTML;
	var levelID = form.eduLvl.value;
	
	if(!levelID)
	{
		alert('Please select degree level.');
		
		return false;
	}
	
	var categoryName = form.optone[form.optone.selectedIndex].innerHTML;
	var categoryID = form.optone.value;
	
	if(!categoryID)
	{
		alert('Please select category.');
		
		return false;
	}
	
	var subjectName = form.industry[form.industry.selectedIndex].innerHTML;
	var subjectID = form.industry.value;
	
	if(!subjectID && form.industry.options.length != 1)
	{
		alert('Please select subject.');
		
		return false;
	}
	
	var div = document.createElement('div');
	div.id = 'newSubject['+window.newSubjectID+']';
	
	var sName = subjectName;
	sName = sName.replace(" Associate's Degree", "");
	sName = sName.replace(" Bachelor's Degree", "");
	sName = sName.replace(" Certificate", "");
	sName = sName.replace(" Doctoral Degree", "");
	sName = sName.replace(" Master's Degree", "");
	sName = sName.replace(" MBA Degree", "");
	sName = sName.replace("Select a Subject", "");
	
	var data = levelName+' -> '+categoryName+(subjectID ? ' -> '+subjectName : '');
	data += '<input type="hidden" name="newSubjectID['+window.newSubjectID+']" value="'+(subjectID ? subjectID : categoryID)+'" />&nbsp;';
	data += '<input type="hidden" name="newSubjectParentName['+window.newSubjectID+']" value="'+categoryName+'" />&nbsp;';
	data += '<input type="hidden" name="newSubjectName['+window.newSubjectID+']" value="'+sName+'" />&nbsp;';
	data += '<input type="button" onclick="removeSubject('+window.newSubjectID+')" value="Remove" />';
	
	div.innerHTML = data;
	
	document.getElementById('newSubjects').appendChild(div);
	
	form.eduLvl.selectedIndex = 0;
	LevelChanged_HP1(form, form.eduLvl.value);
	
	window.newSubjectID++;
}

function removeSubject(id)
{
	var el = document.getElementById('newSubject['+id+']');
	el.parentNode.removeChild(el);
}


function checkShortTitle(form)
{
	if(!form.shortTitle.value)
	{
		alert('Please enter short title');
		form.shortTitle.focus();
		
		return false;
	}
	
	return true;
}

function clearSelection() 
{
	var sel;
	
	if(document.selection && document.selection.empty)
	{
		document.selection.empty() ;
	} 
	else if(window.getSelection || document.getSelection)
	{
		sel = window.getSelection() || document.getSelection();
		
		if(sel && sel.removeAllRanges)
			sel.removeAllRanges();
	}
}

var dndEl = null, dndParent = null, dndElChecked = null, isSchool = false;
function dndDegreeStart(el)
{
	window.dndEl = el;
	window.dndParent = el.parentNode;
	window.isSchool = false;
	
	for(i = 0; i < el.childNodes.length; i++)
	{
		if(el.childNodes[i].checked !== undefined)
			window.dndElChecked = el.childNodes[i].checked;
	}
	
	el.className = 'degreeDragged';
	
	clearSelection();
}

function dndDegreeStop(el)
{
	if((window.dndEl === null || window.dndEl == el) || (window.dndParent && el.parentNode != window.dndParent))
		return false;
	
	window.isSchool = false;
	
	var tmp = window.dndEl.innerHTML;
	
	
	var ch = false;
	for(i = 0; i < el.childNodes.length; i++)
	{
		if(el.childNodes[i].checked !== undefined)
			ch = el.childNodes[i].checked;
	}
	
	window.dndEl.innerHTML = el.innerHTML;
	window.dndEl.className = 'degreeLI';
	
	for(i = 0; i < window.dndEl.childNodes.length; i++)
	{
		if(window.dndEl.childNodes[i].checked !== undefined)
			window.dndEl.childNodes[i].checked = ch;
	}
	
	el.innerHTML = tmp;
	el.className = 'degreeDragged';
	
	for(i = 0; i < el.childNodes.length; i++)
	{
		if(el.childNodes[i].checked !== undefined)
			el.childNodes[i].checked = window.dndElChecked;
	}
	
	window.dndEl = el;
	
	clearSelection();
}



function showDegrees(id)
{
	var el = document.getElementById('degreeList['+id+']');
	el.style.display = el.style.display == 'none' ? 'block' : 'none';
}

function degreesChanged(el)
{
	var ch = false;
	for(i = 0; i < el.childNodes.length; i++)
	{
		for(j = 0; j < el.childNodes[i].childNodes.length; j++)
		{
			if(el.childNodes[i].childNodes[j].checked === true)
			{
				ch = true;
				break;
			}
		}
	}
	
	id = el.id.replace('degreeList[', '');
	id = id.replace(']', '');
	
	document.getElementById('school['+id+']').checked = ch ? true : false;
	
	return true;
}


var dndSib = null;
function dndSchoolStart(el, id)
{
	window.dndEl = el;
	window.isSchool = true;
	window.dndParent = el.parentNode;
	
	var degreeLists = document.getElementsByName('degreeList');
	
	for(i = 0; i < degreeLists.length; i++)
	{
		degreeLists[i].style.display = 'none';
	}
	
	el.className = 'schoolDragged';
		
	window.dndSib = el.nextSibling;
	
	while(window.dndSib.nodeType == 3)
	{
		window.dndSib = window.dndSib.nextSibling;
	}
	
	clearSelection();
}

function dndSchoolStop(el)
{
	if((window.dndEl === null || window.dndEl == el) || (window.dndParent && el.parentNode != window.dndParent))
		return false;
	
	var children = document.getElementById('schoolsAndDegrees').childNodes;
	
	var elPos = dndElPos = null;
	for(i = 0; i < children.length; i++)
	{
		if(children[i] == el)
			elPos = i;
		else if(children[i] == window.dndEl)
			dndElPos = i;
	}
	
	var insertBeforeEl = elPos > dndElPos ? el : el.nextSibling;
	
	var insertBeforeEl = null;
	if(elPos < dndElPos)
		insertBeforeEl = el;
	else
	{
		insertBeforeEl = el.nextSibling;
		
		while(insertBeforeEl.nodeType == 3)
		{
			insertBeforeEl = insertBeforeEl.nextSibling;
		}
		
		//*
		var tmp = el.nextSibling;
		
		if(tmp.name != 'schoolsBox')
			tmp = tmp.nextSibling;
		
		if(tmp.name != 'schoolsBox')
			tmp = tmp.nextSibling;
		
		insertBeforeEl = tmp;
		//*/
	}
	
	window.dndEl.parentNode.insertBefore(window.dndEl, insertBeforeEl);
	window.dndSib.parentNode.insertBefore(window.dndSib, insertBeforeEl);
	
	clearSelection();
}

function dndSchoolReset()
{
	return false;
	window.dndEl = window.dndParent = window.dndSib = null;
	window.isSchool = false;
}

function wOpen(url, w, h)
{
	w = w || 850;
	h = h || 600;
	
	var windowprops = "width="+w+",height="+h+",left=10,top=10,scrollbars=yes,status=yes,toolbar=no,location=no,directories=no,resizable=yes";
	popup = window.open(url, 'new', windowprops);
	popup.focus();
	
	return false;
}

function QDFSubmit(f)
{
	var id = f.industry.value;
	var name = null;
	
	for(i = 0; i < f.industry.childNodes.length; i++)
	{
		if(f.industry.childNodes[i].selected === true)
			name = f.industry.childNodes[i].title;
	}
	
	if(!name)
		name = 'Online';
	
	if(!id)
		alert('Please select degree subject');
	else
		window.location = '/degree-results/'+requestInfoURL(name)+'/'+id;
	
	return false;
}

function showDDM(id, toggle){
	var ddMenu = document.getElementById(id);	
	if(toggle) ddMenu.style.display = "block";
	else ddMenu.style.display = "none";
}

function QDFSubmitSubject(f)
{
	var id = f.industry.value;
	var name = null;
	
	for(i = 0; i < f.industry.childNodes.length; i++)
	{
		if(f.industry.childNodes[i].selected === true)
			name = f.industry.childNodes[i].title;
	}
	
	if(!name)
		name = 'Online';
	
	if(!id)
		alert('Please select degree subject');
	else
		window.location = '/subject-results/'+requestInfoURL(name)+'/'+id;
	
	return false;
}

function requestInfoURL(url)
{
	while(url.indexOf('/') != -1)
	{
		url = url.replace('/', '');
	}
	
	while(url.indexOf(' ') != -1)
	{
		url = url.replace(' ', '-');
	}
	
	while(url.indexOf("'") != -1)
	{
		url = url.replace("'", '');
	}
	
	while(url.indexOf('--') != -1)
	{
		url = url.replace('--', '-');
	}
	
	return url;
}

function openJMI()
{
	var jmi_menu = document.getElementById("jmiMenu");
	
	if ( jmi_menu.style.display == "block" )
	{
		jmi_menu.style.display = "none";
	}
	else {
		jmi_menu.style.display = "block";
	}
}
