
var pageLimit=20;
var pageStart=0;
var popup_top,popup_left,popup_height,popup_width = 0;

if((navigator.userAgent.indexOf("Mac")>-1)&&(navigator.appName=="Microsoft Internet Explorer"))ie_mac = 1;
else ie_mac = 0;

function initPopup(){
  if (self.innerHeight) {
    windowWidth = self.innerWidth;
    windowHeight = self.innerHeight;
  } else if (document.documentElement && document.documentElement.clientHeight) {
    windowWidth = document.documentElement.clientWidth;
    windowHeight = document.documentElement.clientHeight;
  } else if (document.body) {
    windowWidth = document.body.clientWidth;
    windowHeight = document.body.clientHeight;
  }
  popup_top = (windowHeight-popup_height)/2;
  popup_left = (windowWidth-popup_width)/2;
}


  function capFirst(longstr){
	var str = '';
	var arr = longstr.split('_');
	for( var i=0; i<arr.length; i++){
		str += arr[i].charAt(0).toUpperCase()+arr[i].substr(1).toLowerCase()+' ';
	}
	return str;
  }

function grantObj(name,funding, amount,type1,type2,type3,deadlinestr,ref){
	this.name = name;
	this.funding = funding;
	this.amount = amount;
	this.type1 = type1;
	this.type2 = type2;
	this.type3 = type3;
	this.deadline_arr = deadlinestr.split('|');
	this.ref = ref;

	this.checkValues = function(valueArray){
		var funding = valueArray[0];
		var type = valueArray[1];
		var deadline = valueArray[2];

		var isdeadline = false;
		if(this.deadline_arr[0]=='none'){
			isdeadline = true;
		}else if (deadline>0) {
			for (var dd=0; (dd<this.deadline_arr.length && !isdeadline); dd++){
				var today = new Date();
				var check_date = new Date();
					check_date.setFullYear(today.getFullYear(),(1*today.getMonth()+1*deadline+1),1)
				var dstr = this.deadline_arr[dd].split('-');
				var dl_date = new Date();
				var theyear = (dstr[0]==0?today.getFullYear():(1*dstr[0]<2000 ? (2000+1*dstr[0]) : dstr[0]));
					dl_date.setFullYear(theyear,(1*dstr[1]-1),dstr[2]);
				isdeadline = ((dl_date>=today && dl_date<check_date) ? true : false);
			}
		}
		if( (funding=='all_funding' || funding==this.funding)
			&& (type=='all_type' || this.type1=='any_type' || (type==this.type1 || type==this.type2 || type==this.type3))
			&& (deadline=='any' || isdeadline)
		   ){
			return true;
		}else{
			return false;
		}
	}

	this.myDisplay = function(){
		var type_arr = new Array();
		if(this.type1!='none'){
			type_arr.push(capFirst(this.type1));
		}
		if(this.type2!='none'){
			type_arr.push(capFirst(this.type2));
		}
		if(this.type3!='none'){
			type_arr.push(capFirst(this.type3));
		}javascript:void(0)
		var deadline_str = '';
		if(this.deadline_arr[0]!='none'){
			for (var dd=0; (dd<this.deadline_arr.length); dd++){
				var dstr = this.deadline_arr[dd].split('-');
				deadline_str += (deadline_str=='' ? '' : ', ');
				deadline_str += month_array[1*dstr[1]-1]+' '+dstr[2];
			}
		}
		var str = '<span class="user_link">'+this.name+'</span>';;
		str += '<div id="extra'+i+'" class="scenario_link italic">';
		str += txt_amount +': '+this.amount;
		str += '<br />'+txt_school_type+': '+(type_arr.length==0 ? txt_na : type_arr.join(', '));
		str += '<br />'+txt_deadline+': '+(this.deadline_arr[0]=='none' ? txt_none : deadline_str);
		str += '</div>';
		return str;
	}
}


function sort_imp(a,b){
	if(a.name==b.name){
		return 0;
	}else if(a.name<b.name){
		return -1;
	}else{
		return 1;
	}
}

function di(refer){
	return document.getElementById(refer);
}

function print_list(parse_list_view,impstratNb){
  if(impstratNb<pageLimit || confirm('You\'ve selected '+impstratNb+' grants. This might take a while to load. Do you still want to continue?')){
    mywindow = window.open(path+"?_form_=true&parse_list="+parse_list_view+"&parse_request=true&cmscache=parse_list:parse_request","mywindow","location=0,status=1,resizable=yes,scrollbars=1,width="+popup_width+",height="+popup_height);
    mywindow.moveTo(popup_left, popup_top);
    mywindow.focus();
  }
}


//removeAllChildNodes() : useful function that cleans the nodes of an element
function removeAllChildNodes(target_element, length_node){
  if(target_element.hasChildNodes()){
    while(target_element.childNodes.length >= length_node){
      target_element.removeChild(target_element.firstChild);
    }
  }
}

function selectDisplay(type,option){
	var opt_sc = di(type).options;
  for(k=1;k<opt_sc.length;k++){
    if(option==opt_sc[k].value){
			if(!opt_sc[k].origText){
				opt_sc[k].origText=opt_sc[k].text;
			}
      return opt_sc[k].origText;
    }
  }
return;
}

//resetLists : to reset all the search fields and rewrite the entire TOC
function resetLists(){
  for(var i=0;i<listSearch.length;i++){
    di(listSearch[i]).selectedIndex = 0;
	}
  removeAllChildNodes(di('container_toc'),1);
  update_TOC();
}


// initialize pulldowns
function update_TOC(flag){
  disp_array = [];
  pageStart = 0;
  var count_array = new Array();
  var allValues = new Array();
  for(var i=0;i<listSearch.length;i++){
  	var obj = di(listSearch[i]);
		if(!count_array[i]){
			count_array[i]=new Array();
		}
		for(var j=0;j<obj.options.length;j++){
			if(!count_array[i][j]){
				count_array[i][j]=0;
			}
			var listValue = new Array();
	  	for(var k=0;k<listSearch.length;k++){
				listValue[k]=((k==i)?obj.options[j].value:di(listSearch[k]).options[di(listSearch[k]).selectedIndex].value);
			}
			for (l=0; l<master_list.length; l++){
				if(master_list[l].checkValues(listValue)){
					count = count_array[i][j];
					count_array[i][j] = (count+1);
					if(i==0 && j==obj.selectedIndex){
						disp_array.push(master_list[l]);
					}
				}
			}
			if(!obj.options[j].origText){
				obj.options[j].origText=obj.options[j].text;
			}
			obj.options[j].text = obj.options[j].origText + ' ('+count_array[i][j]+')        ';
		}
	}
  disp_array.sort(sort_imp);
  writeTOC();
}

function writeTOC(){
	removeAllChildNodes(di('container_toc'),1);
	var parse_list = new Array();
	var parent_div = document.createElement('div');
	parent_div.className = 'principal_div';

  var endDisp = Math.min(disp_array.length,pageStart+pageLimit);
  for(i=pageStart; i<endDisp; i++){
    var temp_div = document.createElement('a');
    temp_div.className='inner_content';
    temp_div.isIn=false;
    temp_div.targetImpstrat = disp_array[i].ref;
    temp_div.href='javascript:void(0)';
    temp_div.style.display='block';
    temp_div.onclick = function(){
      print_list(this.targetImpstrat,1);
    }
    temp_div.onmouseover = function() {
      if(!temp_div.isIn){
        this.isIn=true;
        this.className='inner_content_sel';
      }
    }
    temp_div.onmouseout = function(e) {
      this.isIn=false;
      this.className='inner_content';
    };

		temp_div.innerHTML = disp_array[i].myDisplay();
		parent_div.appendChild(temp_div);
	}
  for(i=0; i<disp_array.length; i++){
    parse_list.push(disp_array[i].ref);
  }

    var head_word = '';
      var funding_val = di('funding_select').options[di('funding_select').selectedIndex].origText;
      var type_val = di('type_select').options[di('type_select').selectedIndex].origText;
      var deadline_val = di('deadline_select').options[di('deadline_select').selectedIndex].origText;
	  var head_word = '<div class="head_word">Grants for '+funding_val+', '+type_val+' and '+deadline_val;
	if(parse_list.length==0){
		parent_div.innerHTML = head_word+'</div><div class="inner_content"></br>None</div>';
	}else{
		var head_title = document.createElement('span');
      head_word += ' <a class=link_impstrat href="javascript:void(0)" onclick="print_list(\''+parse_list.join(",")+'\',\''+parse_list.length+'\')">('+view_all_word+') </a>';
      searchBox = document.createElement('div');
      searchBox.className='search_box';
      var searchBoxExtra = '';
      var searchBoxExtraEnd = '';
	if(disp_array.length>pageLimit){
	  searchBoxExtra='<div style="margin-top: 10px">';
	  searchBoxExtraEnd='</div>';
	  var endDisp = Math.min(disp_array.length,pageStart+pageLimit);
	  var navHTML = '<div class="result_right">';
	  if(pageStart==0){
		navHTML+='<span style="color: #666666">|&lt;&lt; '+navText[0]+'</span> - <span style="color: #666666">&lt; '+navText[1]+'</span>';
	  }else{
		navHTML+='<a href="javascript: goTo(0)">|&lt;&lt; '+navText[0]+'</a> - <a href="javascript: goTo('+(pageStart-20)+')">&lt; '+navText[1]+'</a>';
	  }
	  var max=(20*Math.floor((disp_array.length-1)/20));
	  if(pageStart==max){
		navHTML+=' - <span style="color: #666666">'+navText[2]+' &gt;</span> - <span style="color: #666666">'+navText[3]+' &gt;&gt;|</span>';
	  }else{
		navHTML+=' - <a href="javascript: goTo('+(pageStart+20)+')">'+navText[2]+' &gt;</a> - <a href="javascript: goTo('+max+')">'+navText[3]+' &gt;&gt;|</a>';
	  }
	  searchBox.innerHTML += navHTML+'</div>';
	  searchBox.innerHTML += '<div class="result">Results <b>'+(pageStart+1)+'</b> - <b>'+endDisp+'</b> of <b>'+disp_array.length+'</b></div></div>';
	}
      head_title.innerHTML = head_word + searchBoxExtra + searchBox.innerHTML + searchBoxExtraEnd + '</div>';
			parent_div.insertBefore(head_title,parent_div.firstChild);
      parent_div.appendChild(searchBox);
		}
	  di('container_toc').appendChild(parent_div);
}

function goTo(i){
  pageStart=i;
  writeTOC();
}
