//
// Filename: navigation.js
// Author: J M Lacson
// CVS $Id: navigation.js,v 1.12 2003/09/04 14:57:55 jml2003 Exp $
//

var href = "<a class=\"g-link\" href=\"";
var hrefClose = "\">";

var td2Open = "<td></td>";
var td3Middle = "<td align=\"left\" valign=\"top\"><div class=\"nav3\">";
var td3Open = td2Open + td2Open + td3Middle;
var td2Middle = "<td colspan=\"2\" align=\"left\" valign=\"top\"><div class=\"nav2\">";
var td2Close = "</a></div></td>"

var td2SelectedOpen = "<td align=\"left\" valign=\"top\"><img src=\"http://images.med.cornell.edu/body/common/nav2_selected.gif\" alt=\"\" width=\"8\" height=\"10\"></td>";

var td3ActiveOpen = "<td></td><td align=\"left\" valign=\"top\"><img src=\"http://images.med.cornell.edu/body/common/nav3_selected.gif\" alt=\"\" width=\"8\" height=\"10\"></td>";

var td2ActiveMiddle = "<td colspan=\"2\" align=\"left\" valign=\"top\"><div class=\"nav2-selected\">";
var td3ActiveMiddle = "<td align=\"left\" valign=\"top\"><div class=\"nav3-selected\">";
var td2ActiveClose = "</div></td>";

var td4FirstOpen_1 = "<td rowspan=\"";
var td4FirstOpen_2 = "\"></td>"
var td4FirstOpen_grey = "\" background=\"http://images.med.cornell.edu/general/pixel_grey.gif\"><img src=\"http://images.med.cornell.edu/spacer.gif\" alt=\"\" width=\"1\" height=\"1\"></td>";

var td4 = "<td><img src=\"http://images.med.cornell.edu/spacer.gif\" alt=\"\" width=\"8\" height=\"10\"></td><td align=\"left\" valign=\"top\"><div class=\"nav4\">";

var td4Active = "<td align=\"left\" valign=\"top\"><img src=\"http://images.med.cornell.edu/body/common/nav3_selected.gif\" alt=\"\" width=\"8\" height=\"10\"></td><td align=\"left\" valign=\"top\"><div class=\"nav4-selected\">";


var td4Close = "</div></td>";

var tdBOpen2 = "<td colspan=\"2\"></td><td><img src=\"http://images.med.cornell.edu/body/common/navbox_txt_arrow.gif\" alt=\"\" width=\"2\" height=\"3\" vspace=\"4\" hspace=\"2\"></td><td><div class=\"body-text\">";

var tdBOpen = "<td><img src=\"http://images.med.cornell.edu/spacer.gif\"  width=\"15\"><img src=\"http://images.med.cornell.edu/body/common/navbox_txt_arrow.gif\" alt=\"\" width=\"2\" height=\"3\" vspace=\"4\" hspace=\"2\"></td><td><div class=\"body-text\">";


var trSpacer = "<tr><td colspan=\"4\"><img src=\"http://images.med.cornell.edu/spacer.gif\" alt=\"\" width=\"1\" height=\"4\"></td></tr>";

var tr4Spacer = "<tr><td colspan=\"2\"><img src=\"http://images.med.cornell.edu/spacer.gif\" alt=\"\" width=\"1\" height=\"3\"></td></tr>";

var trLineBreak = "<tr><td colspan=\"4\">&nbsp;</td></tr>";

var spacerTd = "<td><img src=\"http://images.med.cornell.edu/spacer.gif\" alt=\"\" width=\"2\" height=\"1\"></td>";

var dottedLineTr = "<tr><td colspan=\"4\" background=\"http://images.med.cornell.edu/body/common/dottedline_h.gif\" height=\"4\"><img src=\"http://images.med.cornell.edu/spacer.gif\" alt=\"\" width=\"136\" height=\"1\"></td></tr>";

// For the parameter args in the url
var NAME_1 = "name1";
var NAME_2 = "name2";
var NAME_3 = "name3";
var TYPE_1 = "type1";
var TYPE_2 = "type2";
var TYPE_3 = "type3";

// For the navType parsing

var SELECT_TYPE = "Select";
var ACTIVE_TYPE = "Active";

// LeftLink navTypes

var NAV_TYPE_2 = "2";
var NAV_TYPE_3 = "3";
var NAV_TYPE_4 = "4";
var NAV_TYPE_B = "B";

function LeftLink (displayName, url, navType, parent, parent2) {
    this.displayName = displayName;
    this.url = url;
    this.navType = navType;
    this.parent = parent;
    this.parent2 = parent2;

    this.td2 = getTd2(url, displayName, navType, parent, parent2);
    this.td2Selected = getTd2Selected(url, displayName, navType, parent);
    this.td2Active = getTd2Active(url, displayName, navType);
}

function Nav4Page(url, nav4Links) {
    this.url = url;
    this.nav4Links = nav4Links;
    this.numNav4Links = nav4Links.length;
}

function NavBodyPage(url, bodyLinks) {
    this.url = url;
    this.bodyLinks = bodyLinks;
}


function NavParameter (linkName, displayType, navLevel, parent, parent2) {
    this.linkName = linkName.replace(/[\+]/g, ' ');
    this.displayType = displayType;
    this.navLevel = navLevel;
    this.parent = parent.replace(/[\+]/g, ' ');
    this.parent2 = parent2.replace(/[\+]/g, ' ');
}

function getNav2Args(displayName) {
    return "?" + NAME_1 + "=" + displayName.replace(/ /g, "\+") + "&" + TYPE_1 + "=2Active";
}

function getNav3Args(displayName, parent) {
    return "?" + NAME_1 + "=" + parent.replace(/ /g, "\+") + "&" + TYPE_1 + "=2Select" + "&" + NAME_2 + "=" + displayName.replace(/ /g, "\+") + "&" + TYPE_2 + "=3Active";
}

function getNav3ArgsSelect(displayName, parent) {
    return "?" + NAME_1 + "=" + parent.replace(/ /g, "\+") + "&" + TYPE_1 + "=2Select" + "&" + NAME_2 + "=" + displayName.replace(/ /g, "\+") + "&" + TYPE_2 + "=3Select";
}

function getNav4Args(displayName, parent, parent2) {
    return getNav3ArgsSelect(parent2, parent) + "&" + NAME_3 + "=" + displayName.replace(/ /g, "\+") + "&" + TYPE_3 + "=4Active";
}

function getBodyArgs(displayName, parent) {
    return "?" + NAME_1 + "=" + parent.replace(/ /g, "\+") + "&" + TYPE_1 + "=2Select";
}

function getTd2(url, displayName, navType, parent, parent2) {
    var td;
   if (url.indexOf("popup") > 0) {
    if (navType == NAV_TYPE_2) {
    	td = td2Open + td2Middle + href + url + this.hrefClose + displayName + td2Close;
    } else if (navType == NAV_TYPE_3) {
    	td = td3Open + href + url + this.hrefClose + displayName + td2ActiveClose;
    } else if (navType == NAV_TYPE_4) {
    	td = td4 + href + url + this.hrefClose + displayName + td4Close;
    } else if (navType == NAV_TYPE_B) {
    	td = tdBOpen + href + url + this.hrefClose + displayName + td4Close;
    }
   } else {
    if (navType == NAV_TYPE_2) {
    	td = td2Open + td2Middle + href + url + getNav2Args(displayName) +this.hrefClose + displayName + td2Close;
    } else if (navType == NAV_TYPE_3) {
    	td = td3Open + href + url + getNav3Args(displayName, parent) + this.hrefClose + displayName + td2ActiveClose;
    } else if (navType == NAV_TYPE_4) {
    	td = td4 + href + url + getNav4Args(displayName, parent, parent2) + this.hrefClose + displayName + td4Close;
    } else if (navType == NAV_TYPE_B) {
    	td = tdBOpen + href + url + getBodyArgs(displayName, parent) + this.hrefClose + displayName + td4Close;
    }
   }
    return (td);
}

function getTd2Selected(url, displayName, navType, parent) {
    var tdSelect;
    if (navType == NAV_TYPE_2) {
    	tdSelect = td2SelectedOpen + td2Middle + href + url + getNav2Args(displayName) + hrefClose + displayName + td2Close;
    } else if (navType == NAV_TYPE_3) {
    	tdSelect = td3ActiveOpen + td3Middle + href + url + getNav3Args(displayName, parent) + hrefClose + displayName + td2Close;
    }
    return (tdSelect);
}

function getTd2Active(url, displayName, navType) {
    var tdActive;
    if (navType == NAV_TYPE_2) {
    	tdActive = td2SelectedOpen + td2ActiveMiddle + displayName + td2ActiveClose;
    } else if (navType == NAV_TYPE_3) {
    	tdActive = td3ActiveOpen + td3ActiveMiddle + displayName + td2ActiveClose;
    } else if (navType == NAV_TYPE_4) {
    	tdActive = td4Active + displayName + td4Close;
    }
    return (tdActive);
}


function parseParameters() {
   var _d = document.location.toString();
   var _e = _d.split("?")[1];
   var _parms = new Array();
   var _valus = new Array();
   // parameters must have a &!
   var _f = _e.split("&");
   for(var i=0;i<_f.length;i++) {
     _parms[i]=_f[i].split("=")[0];
     _valus[i]=_f[i].split("=")[1];
   }
}

function getParameters(){
    	var param=self.location.search;
    	param=param.substring(1,param.length);
	var navParameters = new Array();

    	if (param!=null && param!='') {
	    var paramList = (param.split("&"));
		var lName = '';
		var dType = '';		
		var nLevel = '';

		var lName2 = '';
		var dType2 = '';		
		var nLevel2 = '';

		var lName3 = '';
		var dType3 = '';		
		var nLevel3 = '';	

	    for (var i=0;i<paramList.length;i++) {
		var index = paramList[i].indexOf("=");
		var argName = paramList[i].substring(0, index);
		var argValue = paramList[i].substring(index+1);

		// if name in string, value goes straight through
		if (argName == NAME_1) {
		    lName = argValue.replace('%27', "'");
		} else if (argName == NAME_2) {
		    lName2 = argValue.replace('%27', "'");
		} else if (argName == NAME_3) {
		    lName3 = argValue.replace('%27', "'");
		} else if (argName == TYPE_1) {
		    nLevel = argValue.substring(0,1);
		    dType = argValue.substring(1);
		} else if (argName == TYPE_2){
		    nLevel2 = argValue.substring(0,1);
		    dType2 = argValue.substring(1);
		} else if (argName == TYPE_3){
		    nLevel3 = argValue.substring(0,1);
		    dType3 = argValue.substring(1);
		}

	    }

	    var count = 0;

	    // now make the array of navParameters
	    if (lName != '' && dType != '' && nLevel != '') {
		navParameters[count] = new NavParameter(lName, dType, nLevel, '', '');
		count++;
	    }

	    if (lName2 != '' && dType2 != '' && nLevel2 != '') {
		navParameters[count] = new NavParameter(lName2, dType2, nLevel2, lName, '');
		count++;
	    }

	    if (lName3 != '' && dType3 != '' && nLevel3 != '') {
		navParameters[count] = new NavParameter(lName3, dType3, nLevel3, lName, lName2);
	    }

	    return (navParameters);

    	} else {
	    return(0);
	}

    	return(param);
}

var siteURL = "";

function getLeftNav(isDottedLineVisible) {
	var paramlist=getParameters();
	var links = loadLinks();
	var wasDottedLinePrinted = 0;

	
	
	document.write("<table width=\"157\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">");
	document.write("<tr>");
	document.write("<td><img src=\"http://images.med.cornell.edu/spacer.gif\" alt=\"\" width=\"12\" height=\"1\"></td>");
	document.write("<td><img src=\"http://images.med.cornell.edu/spacer.gif\" alt=\"\" width=\"12\" height=\"1\"></td>");
	document.write("<td><img src=\"http://images.med.cornell.edu/spacer.gif\" alt=\"\" width=\"131\" height=\"1\"></td>");
	document.write(spacerTd);
	document.write("</tr>");
	document.write(trLineBreak);

	if (!paramlist){		
		for (var j=0;j< links.length;j++) {
			document.write("<tr>");
			if (links[j].navType != NAV_TYPE_4) {
				document.write(links[j].td2);
			}
			document.write(spacerTd + "</tr>");
			
			if (isDottedLineVisible != null && wasDottedLinePrinted == 0) {
				document.write(trLineBreak);
				document.write(dottedLineTr);
				wasDottedLinePrinted = 1;
			} 
			if (j + 1 < links.length) {

					if (links[j].displayName == links[j+1].parent || (links[j].parent == links[j+1].parent && links[j+1].parent != '')) {
						document.write(trSpacer);
					} else {
						document.write(trLineBreak);
					}
			
			}				
		} // closes for
	} else {

		for (var k=0;k<links.length;k++) {
			if (links[k].navType != NAV_TYPE_4) {
		   		document.write("<tr>");

		   		// check if the name and type match (2, 3, or 4 for the level of nav)
			   	for (var i=0;i<paramlist.length;i++) {

		   			if (paramlist[i].linkName == links[k].displayName && paramlist[i].navLevel == links[k].navType) {

						// if so then check for type of td to display (Select, Active)
						if (paramlist[i].displayType == SELECT_TYPE) {

							if (paramlist[i].navLevel == NAV_TYPE_2) {
								document.write(links[k].td2Selected);
								break;
							}

							if (paramlist[i].navLevel == NAV_TYPE_3) {
								if ( links[k].parent == paramlist[i].parent ) {
									document.write(links[k].td2Selected);
									break;
								} else {
									document.write(links[k].td2);
								}
							}
						} else if (paramlist[i].displayType == ACTIVE_TYPE) {
							if (paramlist[i].navLevel == NAV_TYPE_2) {
								document.write(links[k].td2Active);
								break;
							}

							if (paramlist[i].navLevel == NAV_TYPE_3) {
								if ( links[k].parent == paramlist[i].parent ) {
									document.write(links[k].td2Active);
									break;
								} else {
									document.write(links[k].td2);
								}
							}
						}
		   			} else {
						if (i == (paramlist.length - 1) ) {
							document.write(links[k].td2);
						}
		   			}
				} // close the inner for loop
		
				document.write(spacerTd + "</tr>");
			
				if (isDottedLineVisible != null && wasDottedLinePrinted == 0) {
				    document.write(trLineBreak);
					document.write(dottedLineTr);
					wasDottedLinePrinted = 1;
				}


				if (k + 1 < links.length) {

					if (links[k].displayName == links[k+1].parent || (links[k].parent == links[k+1].parent && links[k+1].parent != '')) {
						document.write(trSpacer);
					} else {
						document.write(trLineBreak);
					}

				}
		  	} // close the outer if
		} // close outer for		   
	} // close else

	document.write(trLineBreak + "</table>");
}


function getCurrentUrl() {
   var currentUrl = document.location.toString();
   if (currentUrl.indexOf("?") > 0) {
  	   currentUrl = currentUrl.substring(0, currentUrl.indexOf("?"));
   }
   return(currentUrl);
}

function getMiddleNav() {
   var currUrl = getCurrentUrl();
   var paramlist=getParameters();
   var links = loadNav4Pages();
   var isFirstTr = 0;

   document.write("<table width=\"145\" border=\"0\" cellpadding=\"0\" cellspacing=\"3\" align=\"right\">");

   if (!paramlist){
      for (var j=0;j< links.length;j++) {
         if (links[j].url == currUrl) {

            var nav4Links = links[j].nav4Links;

            for(var m=0;m<nav4Links.length;m++) {
               document.write("<tr>");

               if (isFirstTr == 0) {
                  // opening rowspan stuff
			var rowspanNum = links[j].numNav4Links + (links[j].numNav4Links - 1);
                  document.write(td4FirstOpen_1 + rowspanNum + td4FirstOpen_2);
                  document.write(td4FirstOpen_1 + rowspanNum + td4FirstOpen_grey);
                  document.write(nav4Links[m].td2);
                  // closing rowspans
                  document.write(td4FirstOpen_1 + rowspanNum + td4FirstOpen_2);
                  isFirstTr = 1;
               } else {
                  document.write(nav4Links[m].td2);
               }

               document.write("</tr>");

		   // spacer row between links, except last link
		   if ( j+1 != links.length) {
			document.write(tr4Spacer);
		   }

            } // close for m
         } //close if currUrl
      } //close for j

   }    else {


      for (var k=0;k<links.length;k++) {
         var nav4Links = null;

         if (links[k].url == currUrl) {
            nav4Links = links[k].nav4Links;
            break;
         }
      }

      if (nav4Links != null) {

         for(var n=0;n<nav4Links.length;n++) {

            document.write("<tr>");

            // check if the name and type match (2, 3, or 4 for the level of nav)
            for (var i=0;i<paramlist.length;i++) {

               if (paramlist[i].linkName == nav4Links[n].displayName && paramlist[i].navLevel == nav4Links[n].navType) {

                  if (isFirstTr == 0) {
                     // opening rowspan stuff
			   var rowspanNum = nav4Links.length + (nav4Links.length - 1);
                     document.write(td4FirstOpen_1 + rowspanNum + td4FirstOpen_2);
                     document.write(td4FirstOpen_1 + rowspanNum + td4FirstOpen_grey);
                     document.write(nav4Links[n].td2Active);
                     // closing rowspans
                     document.write(td4FirstOpen_1 + rowspanNum + td4FirstOpen_2);

                     isFirstTr = 1;
                     break;
                  } else {
                     document.write(nav4Links[n].td2Active);
                     break;
                  }
               } else {
                  if (i == (paramlist.length - 1) ) {
                     if (isFirstTr == 0) {
                        // opening rowspan stuff
			   	var rowspanNum = nav4Links.length + (nav4Links.length - 1);
                        document.write(td4FirstOpen_1 + rowspanNum + td4FirstOpen_2);
                        document.write(td4FirstOpen_1 + rowspanNum + td4FirstOpen_grey);
                        document.write(nav4Links[n].td2);
                        // closing rowspans
                        document.write(td4FirstOpen_1 + rowspanNum + td4FirstOpen_2);
                        isFirstTr = 1;
                     } else {
                        document.write(nav4Links[n].td2);
                     }
                  } // close if i ==
               } // close if paramlist
            } // close for i

            document.write("</tr>");

		// spacer row between links, except last link
		if ( n+1 != nav4Links.length ) {
		   document.write(tr4Spacer);
		}

         } // close for n
      } // close if nav4Links !=null
   } // close else !paramlist

      document.write("<tr>");
         document.write("<td><img src=\"http://images.med.cornell.edu/spacer.gif\" alt=\"\" width=\"5\" height=\"1\"></td>");
         document.write("<td><img src=\"http://images.med.cornell.edu/spacer.gif\" alt=\"\" width=\"1\" height=\"1\"></td>");
         document.write("<td><img src=\"http://images.med.cornell.edu/spacer.gif\" alt=\"\" width=\"8\" height=\"1\"></td>");
         document.write("<td><img src=\"http://images.med.cornell.edu/spacer.gif\" alt=\"\" width=\"124\" height=\"1\"></td>");
         document.write("<td><img src=\"http://images.med.cornell.edu/spacer.gif\" alt=\"\" width=\"1\" height=\"1\"></td>");
         document.write("</tr>");
         document.write("</table>");
}


function getBodyNav() {
   	var currUrl = getCurrentUrl();
	var bodyPages = loadBodyPages();

	for (var j=0;j< bodyPages.length;j++) {
         if (bodyPages[j].url == currUrl) {

            var bodyLinks = bodyPages[j].bodyLinks;

	   for (var t=0;t< bodyLinks.length;t++) {
	    document.write("<tr>");
	    if (bodyLinks[t].navType == NAV_TYPE_B) {
		 document.write(bodyLinks[t].td2);
	    }
	    document.write(spacerTd + "</tr>");
	   }
         }
	}    

}
