function updateDots(name) {
	numdots = Math.ceil(eval(name+'Control')['numrows'] / eval(name+'Control')['size']) ;
	needed = Math.ceil(eval(name+'Control')['rescount'] / eval(name+'Control')['size']) ;
	for (var j = 1 ; j <=  numdots ; j++) {
		//set selected
		if (j == eval(name+'Control')['currdot']) {
			var thediv = document.getElementById(name+"Dot"+j);
			thediv.className = "dot-on";
		} else {
			var thediv = document.getElementById(name+"Dot"+j);
			thediv.className = "dot-off";
		}
		//hide extra dots
		if (j > needed) {
			jQuery('#'+name+"Dot"+j).fadeOut() ;
		} else {
			jQuery('#'+name+"Dot"+j).fadeIn() ;
		}
	}
	//hide prev+next if no other pages
	if (needed < 2) {
		jQuery('#'+name+"PrevDot").fadeOut() ;
		jQuery('#'+name+"NextDot").fadeOut() ;
		jQuery('#'+name+"Dot1").fadeOut() ;
	} else {
		jQuery('#'+name+"PrevDot").fadeIn() ;
		jQuery('#'+name+"NextDot").fadeIn() ;
	}
	
	//display no results message below
	if (eval(name+'Control')['rescount'] > 0) {
		//div vis code goes in here
	}
	
}

function reOrder(name) {
	last = '#'+name+'Anchor' ; 
	for (var i = 0; i < eval(name+'Data').length; i++) {
		divname = '#'+name+'Row' + eval(name+'Data')[i].row ;
		jQuery(divname).insertAfter(last) ;
		//alert(divname + " " + last) ;
		last = divname ;
	}
}

function UpdateSRTable(name, setdot) {
	control = eval(name+'Control') ;
	
	if (setdot) { 
		//check limits
		if (setdot<1) { setdot = 1 ; }
		//load control
		
		if (setdot>Math.ceil(control['numrows'] / control['size'])) { setdot = Math.ceil(control['numrows'] / control['size']) ; }
		eval(name+'Control')['currdot'] = setdot ; 
	} else {
		eval(name+'Control')['currdot'] = 1 ;
		setdot = 1 ;
	}
	
	//fade out all
	for(i=1;i<=control['numrows'];i++) {
		jQuery('#'+name+'Row'+i).fadeOut() ;
	}
	
	//sort
	var stype = jQuery("#sortDropDown").val() ;
	if (stype == 'sortByLocation') {
		eval(name+'Data').sort(sortByLocation) ;
	} else if (stype == 'sortByScore') {
		eval(name+'Data').sort(sortByScore) ;
	} else if(stype == 'sortByPdate') {
		eval(name+'Data').sort(sortByPdate) ;
	}
	
	reOrder(name) ;
	
	//count results //not nice dup'd code
	//handle date filter
	var datefilter = new Date() ;
	switch (jQuery('#AddedDropDown').val()) {
		case 'Anytime':
			datefilter.setDate(datefilter.getDate()-99999) ;
			break ;
		case 'This Week' :
			datefilter.setDate(datefilter.getDate()-7) ;
			break ;
		case 'Last Week' :
			datefilter.setDate(datefilter.getDate()-14) ;
			break ;
		case 'Last Month' :
			datefilter.setDate(datefilter.getDate()-31) ;
			break ;
	}
	
	res = 0 ;
	var i ;
	for (var i=0;i < eval(name+'Control')['numjobs'];i++) {
		var jdate = new Date(eval(name+'Data')[i]['dateposted'].substring(0,10)) ;
		if ((jQuery('#secDropDown').val() > 0) && (eval(name+'Data')[i]['industry'] != jQuery('#secDropDown').val())) {
			//jQuery('#row'+appData[i].row).fadeOut() ; //--leave hidden if wrong industry
			eval(name+'Data')[i]['show'] = 0 ;
		//} else if (jdate < datefilter) {
		} else if (eval(name+'Data')[i]['addedIndex'] > jQuery('#AddedDropDown').val()) {
			//-- leave hidden out of date range
			eval(name+'Data')[i]['show'] = 0 ;
		} else if ((jQuery('#typeDropDown').val() != 0) && eval(name+'Data')[i]['type'] != jQuery('#typeDropDown').val()){
			// leave hidde if wrong type
			eval(name+'Data')[i]['show'] = 0 ;
		} else {
			//alert(shown) ;
			//jQuery('#'+name+'Row'+eval(name+'Data')[i].row).delay(500).fadeIn() ;
			eval(name+'Data')[i]['show'] = 1 ;
			res++;
		}
	}
	//alert(res) ;
	eval(name+'Control')['rescount'] = res ;
	
	//tweak currdot...
	if (setdot>Math.ceil(control['rescount'] / control['size'])) { setdot = Math.ceil(control['rescount'] / control['size']) ; }
	eval(name+'Control')['currdot'] = setdot ; 
	
	//show rows
	shown = 0 ;
	//for (var i = start; i < appData.length && shown<10 ; i++) {
	count = 0 ;
	
	var start = (control['currdot']*control['size'])-control['size'] ;
	
	//show with filters
	for (var i in eval(name+'Data')) {
		if ((count >= start) && (shown < 10)) {
			
			/* -- OLD DISPLAY CODE
			//handle date filter
			var datefilter = new Date() ;
			switch (jQuery('#AddedDropDown').val()) {
				case 'Anytime':
					datefilter.setDate(datefilter.getDate()-99999) ;
					break ;
				case 'This week' :
					datefilter.setDate(datefilter.getDate()-7) ;
					break ;
				case 'Last week' :
					datefilter.setDate(datefilter.getDate()-14) ;
					break ;
				case 'Last Month' :
					datefilter.setDate(datefilter.getDate()-31) ;
					break ;
			}
			
			var jdate = new Date(eval(name+'Data')[i]['dateposted']) ;
			
			
				if (jdate > datefilter) {
					t = 'yes' ;
				} else {
					t = 'no' ;
				}
			//alert(datefilter + " " + jdate + " " + t) ;
			
			//alert(appData[i].row) ;
			//for(i=jQuerystart;(i<=numjobs && shown<10);i++) {
				//(jQuery('input[name=remdec]').is(':checked')) && (appData[i]['declined'] == 1)
				if ((jQuery('#secDropDown').val() > 0) && (eval(name+'Data')[i]['industry'] != jQuery('#secDropDown').val())) {
					//jQuery('#row'+appData[i].row).fadeOut() ; //--leave hidden if wrong industry
				} else if (jdate < datefilter) {
					//-- leave hidden out of date range
				} else {
					//alert(shown) ;
					jQuery('#'+name+'Row'+eval(name+'Data')[i].row).delay(500).fadeIn() ;
					shown++;
				}
				
				*/
			
			if (eval(name+'Data')[i]['show'] == '1') {
				jQuery('#'+name+'Row'+eval(name+'Data')[i].row).delay(500).fadeIn() ;
				shown++;
			}
			
		}
		
		count++ ;
		
	}
	
	//update dots
	updateDots(name) ;
	
	//show no-results div
	if (res > 0 ) {
		jQuery('#no-results').fadeOut() ;
	} else {
		jQuery('#no-results').fadeIn() ;
	}
	
}

function updateTable(name, setdot) {
	control = eval(name+'Control') ;
	
	if (setdot) { 
		//check limits
		if (setdot<1) { setdot = 1 ; }
		//load control
		
		if (setdot>Math.ceil(control['numrows'] / control['size'])) { setdot = Math.ceil(control['numrows'] / control['size']) ; }
		eval(name+'Control')['currdot'] = setdot ; 
	} else {
		eval(name+'Control')['currdot'] = 1 ;
		setdot = 1 ;
	}
	//fade out all
	for(i=1;i<=control['numrows'];i++) {
		jQuery('#'+name+'Row'+i).fadeOut() ;
	}
	
	
	
	//sort
	if (jQuery("input[@name='order']:checked").val() == 'date') {
		eval(name+'Data').sort(sortByDate) ;
	} else if (jQuery("input[@name='order']:checked").val() == 'ranking') {
		eval(name+'Data').sort(sortByRanking) ;
	} else if (jQuery("input[@name='order']:checked").val() == 'name') {
		eval(name+'Data').sort(sortByName) ;
	}
	reOrder(name) ;
	
	
	//count results //not nice dup'd code
	res = 0 ;
	var i ;
	for (var i=0;i < eval(name+'Control')['numjobs'];i++) {
				if ((jQuery('input[name=remdec]').is(':checked')) && (eval(name+'Data')[i]['declined'] == 1)) {
				} else if ((jQuery('#dropDown').val() != '-All-')&&(jQuery('#dropDown').val() != eval(name+'Data')[i]['title'])) {
					//
				} else {
					res++;
				}
	}
	//alert(res) ;
	eval(name+'Control')['rescount'] = res ;
	
	
	
	//tweak currdot...
	if (setdot>Math.ceil(control['rescount'] / control['size'])) { setdot = Math.ceil(control['rescount'] / control['size']) ; }
	eval(name+'Control')['currdot'] = setdot ; 
	
	//show rows
	shown = 0 ;
	//for (var i = start; i < appData.length && shown<10 ; i++) {
	count = 0 ;
	
	var start = (control['currdot']*control['size'])-control['size'] ;
	
	for (var i in eval(name+'Data')) {
		if ((count >= start) && (shown < 10)) {
			//alert(appData[i].row) ;
			//for(i=jQuerystart;(i<=numjobs && shown<10);i++) {
				//(jQuery('input[name=remdec]').is(':checked')) && (appData[i]['declined'] == 1)
				if ((jQuery('input[name=remdec]').is(':checked')) && (eval(name+'Data')[i]['declined'] == 1)) {
					//jQuery('#row'+appData[i].row).fadeOut() ; //--leave hidden if declined
				} else if ((jQuery('#dropDown').val() != '-All-')&&(jQuery('#dropDown').val() != eval(name+'Data')[i]['title'])) {
					//-- leave hidden if wrong job
				} else {
					//alert(shown) ;
					jQuery('#'+name+'Row'+eval(name+'Data')[i].row).delay(500).fadeIn() ;
					shown++;
				}
		}
		
		count++ ;
		
	}
	
	//set vis of ranking option
	if ((jQuery('#dropDown').val() != '-All-')) {
		jQuery('#rankOpt').fadeIn() ;
	} else {
		jQuery('#rankOpt').fadeOut() ;
	}
	
	//update dots
	updateDots(name) ;
	
}

//parseDate function
function parseISO8601(dateStringInRange) {
    var isoExp = /^\s*(\d{4})-(\d\d)-(\d\d)\s*$/,
        date = new Date(NaN), month,
        parts = isoExp.exec(dateStringInRange);

    if(parts) {
      month = +parts[2];
      date.setFullYear(parts[1], month - 1, parts[3]);
      if(month != date.getMonth() + 1) {
        date.setTime(NaN);
      }
    }
    return date;
}

//sort functions for search results
function sortByPdate(a,b) {
	var x = a.dateposted ;
	var y = b.dateposted ;
	return ((x < y) ? 1 : ((x > y) ? -1 : 0));
}
function sortByLocation(a,b) {
	var x = a.location ;
	var y = b.location ;
	return ((x < y) ? -1 : ((x > y) ? 1 : 0));
}
function sortByScore(a,b) {
	var x = parseInt(a.rank) ;
	var y = parseInt(b.rank) ;
	return ((x < y) ? 1 : ((x > y) ? -1 : -1));
}

//sort functions for applications
function sortByRating(a,b) {
	var x = a.r ;
	var y = b.r ;
	return ((x < y) ? 1 : ((x > y) ? -1 : 0));
}

function sortByRanking(a,b) {
	var x = a.r2 ;
	var y = b.r2 ;
	return ((x < y) ? 1 : ((x > y) ? -1 : 0));
}

function sortByDate(a,b) {
	var x = a.date ;
	var y = b.date ;
	return ((x < y) ? 1 : ((x > y) ? -1 : 0));
}

function sortByName(a,b) {
	var x = a.name ;
	var y = b.name ;
	return (( x < y ) ? -1 : ((x > y) ? +1 : 0)) ;
}

