/* ROUTE OBJECT
 *
 * Fields:
 * id: route ID/number
 * name: full name, not including ID
 * dirArr: array of directions
 * subArr: array of subroutes
 *
 */
 

function rd_route(provID, rteID, name) {
	this.provID = provID;
	this.rteID = rteID;
  this.name = name;
  
  // create function mappings
  this.html = rd_rte_getHTML;
  this.fullID = rd_rte_getFullID;
  this.fullName = rd_rte_getFullName;
  this.setDirArray = rd_rte_setDirArr;
  this.setSubArray = rd_rte_setSubArr;
	this.subRoutes = rd_rte_getSubRoutes;
  this.checkDirDay = rd_rte_checkDirDay;
}

function rd_rte_getFullID() {
  return this.provID+this.rteID;
}

function rd_rte_getFullName() {
  return this.rteID + " " + this.name;
}

function rd_rte_getHTML(rownum) {
	var bgcolor = (rownum % 2 == 1) ? "#eee" : "white"; 
	var html = "<div style='background: "+bgcolor+"; height: 20px;'>"; //"<tr>";
	//html += "<td bgcolor='"+bgcolor+"' style='padding:1px;'><span class='rd_rl_num'>"+this.id+"</span> "+this.name+"</td>";
  
  //html += "<td width=2 bgcolor='black'></td>";
  
  //html += "<td width=60 bgcolor='"+bgcolor+"' align='center'>";

  var foundDay = false;


  foundDay = false;
  html += "<div style='float: right; width:60px; text-align:center;'>";
  for(var dir in this.dirArr) {
    var hasDay = (this.dirArr[dir].toLowerCase().indexOf("sun") != -1);
    if(hasDay) {
    	html += "[<span class='rd_rl_dir'><a href='javascript:rd_selectSubRoute(\""+this.provID+this.rteID+"\", \""+dir+"\", \"sun\")'>"+dir+"</a></span>] ";
      foundDay = true;
    }
  }
  if(!foundDay) html += "(none)";
  html += "</div>";
  
  html += "<div style='float: right; width:2px; height: 20px; background: black;'><!--  --></div>";

  foundDay = false;
  html += "<div style='float: right; width:60px; text-align:center;'>";
  for(var dir in this.dirArr) {
    var hasDay = (this.dirArr[dir].toLowerCase().indexOf("sat") != -1);
    if(hasDay) {
    	html += "[<span class='rd_rl_dir'><a href='javascript:rd_selectSubRoute(\""+this.provID+this.rteID+"\", \""+dir+"\", \"sat\")'>"+dir+"</a></span>] ";
      foundDay = true;
    }
  }
  if(!foundDay) html += "(none)";
  html += "</div>";

  html += "<div style='float: right; width:2px; height: 20px; background: black;'><!--  --></div>";
  
  foundDay = false;
  html += "<div style='float: right; width:60px; text-align:center;'>";
  for(var dir in this.dirArr) {
    var hasDay = (this.dirArr[dir].toLowerCase().indexOf("w") != -1);
    if(hasDay) {
    	html += "[<span class='rd_rl_dir'><a href='javascript:rd_selectSubRoute(\""+this.provID+this.rteID+"\", \""+dir+"\", \"w\")'>"+dir+"</a></span>] ";
      foundDay = true;
    }
  }
  if(!foundDay) html += "(none)";
  html += "</div>";
      
  html += "<div style='float: right; width:2px; height: 20px; background: black;'><!--  --></div>";

  
  html += "<div style='padding:1px; overflow:hidden;'><span class='rd_rl_num'>"+this.rteID+"</span> "+this.name+"</div>";


  html += "</div>";
	return html; 
}

function rd_rte_setDirArr(dirArr) {
	this.dirArr = dirArr;
}

function rd_rte_setSubArr(subArr) {
	//alert("ssa");
  for(var sub in subArr) {
  	//alert(subArr[sub]);
  }
	this.subArr = subArr;
}

// returns conventional array
function rd_rte_getSubRoutes(dir, day) {
	var subCount = 0;
  for(var sub in this.subArr) {
  	//alert(sub);
  	if(sub.indexOf(dir) == 0 && this.subArr[sub].days.indexOf(day) != -1) subCount++;
  }
	var subs = new Array(subCount);
	var i=0;
  for(var sub in this.subArr) {
  	if(sub.indexOf(dir) == 0 && this.subArr[sub].days.indexOf(day) != -1) {
    	subs[i] = this.subArr[sub];
      i++;
    }
  }
  return subs;
}

// returns boolean
function rd_rte_checkDirDay(dir, day) {
  for(var sub in this.subArr) {
  	if(sub.indexOf(dir) == 0 && this.subArr[sub].days.indexOf(day) != -1) return true;
  }
  return false;
}

/* SUBROUTE OBJECT
 *
 * Fields:
 * id: 
 *
 */
 
function rd_subroute(id, name, days) {
	this.id = id;
  this.name = name;
  this.days = days;
}