function lookupCourseBannerDescriptionURL( givenCRN ) { var myTerm = "200809"; return "https://lighthouse.sunysuffolk.edu/pls/prod/bwckctlg.p_display_courses?" + "sel_crse_strt=" + givenCRN + "&term_in=" + myTerm + "&one_subj=MAT" + "&sel_crse_end=" + "&sel_subj=" + "&sel_levl=" + "&sel_schd=" + "&sel_coll=" + "&sel_divs=" + "&sel_dept=" + "&sel_attr="; } function lookupPersonDirectoryListingURL( givenDirID ) { return "http://www3.sunysuffolk.edu/OnlineDirectory/onlinedirectory.asp?print=TRUE&clean=TRUE&cred=1&url=1&index=" + givenDirID; } function lookupCourseTemplateLocalURL( givenCourse ) { return "../syllabi/" + givenCourse[ "syllabus" ]; } function lookupCommitteeLocalURL( givenCommittee ) { return "committees.html#" + makeCommitteeID( givenCommittee ); } function makeCommitteeID( givenCommittee ) { return givenCommittee[ "Name" ]; } function lookupBookAmazonSearchURL( givenBook ) { var myTitle = givenBook[ "Title" ]; var myAuthor = givenBook[ "Author" ]; var myPublisher = givenBook[ "Publisher" ]; var myEdition = givenBook[ "Edition" ]; var mySearchString = myTitle + " " + myAuthor + " " + myPublisher + " " + myEdition + "th Edition"; mySearchString = mySearchString.replace( / /g, "+" ); return "http://www.amazon.com/s/ref=nb_ss_gw/102-3172260-2612123?url=search-alias%3Dstripbooks&field-keywords=" + mySearchString; } function appendCourse( givenParent, givenCourse ) { var myTitle = givenCourse[ "Title" ]; var myCRN = givenCourse[ "CRN" ]; var myOldCatalog = givenCourse[ "MA" ]; var myBook = givenCourse[ "Book" ]; var myCzar = givenCourse[ "czar" ]; var myContainer = constructClassifiedChild( givenParent, "div", "course-container" ); var myTable = constructClassifiedChild( myContainer, "table", "course-header-table" ); var myBody = constructClassifiedChild( myTable, "tbody", "course-header-body" ); var myRow = constructClassifiedChild( myBody, "tr", "course-header-row" ); var myCRNCell = constructClassifiedChild( myRow, "td", "course-CRN-cell" ); appendText( myCRNCell, "MAT " + myCRN ); var myOldCatalogCell = constructClassifiedChild( myRow, "td", "course-old-catalog-cell" ); appendText( myOldCatalogCell, "(MA" + myOldCatalog + ")" ); var myTitleCell = constructClassifiedChild( myRow, "td", "course-title-cell" ); appendText( myTitleCell, myTitle ); var myDescriptionCell = constructClassifiedChild( myRow, "td", "course-description-cell" ); var myDescription = constructNonEmptyInternalLink( myDescriptionCell, givenCourse, "CRN", lookupCourseBannerDescriptionURL( myCRN ), "Lookup Course Description on Banner for MAT " + myCRN + " - " + myTitle, "banner-description-link" ); appendText( myDescription, "Description" ); var mySyllabusCell = constructClassifiedChild( myRow, "td", "course-syllabus-cell" ); var mySyllabus = constructNonEmptyInternalLink( mySyllabusCell, givenCourse, "syllabus", lookupCourseTemplateLocalURL( givenCourse ), "Download Course Syllabus Template for MAT " + myCRN + " - " + myTitle, "syllabus-link" ); appendText( mySyllabus, "Syllabus Template" ); if( myCzar ) appendCourseCzar( myContainer, myCzar ); if( myBook && myBook.Title !== "" ) appendBook( myContainer, myBook ); appendNonEmptyField( myContainer, givenCourse, "calc", "Calculator Policy: ", "", "calculator-policy" ); } function constructNonEmptyField( givenParent, givenDataObject, givenFieldName, givenConstructor ) { if( givenDataObject[ givenFieldName ] && givenDataObject[ givenFieldName ] != "" ) return givenConstructor( givenParent ); else return givenParent; } function appendNonEmptyField( givenParent, givenDataObject, givenFieldName, givenPrefix, givenPostfix, givenClassName ) { constructNonEmptyField( givenParent, givenDataObject, givenFieldName, function () { var myField = constructClassifiedChild( givenParent, "span", givenClassName ); var myFieldPrefix = constructClassifiedChild( myField, "span", givenClassName + "-prefix" ); appendText( myFieldPrefix, givenPrefix ); var myFieldValue = constructClassifiedChild( myField, "span", givenClassName + "-value" ); appendText( myFieldValue, givenDataObject[ givenFieldName ] ); var myFieldPostfix = constructClassifiedChild( myField, "span", givenClassName + "-postfix" ); appendText( myFieldPostfix, givenPostfix ); } ); } function constructNonEmptyInternalLink( givenParent, givenDataObject, givenFieldName, givenLinkTarget, givenLinkAlt, givenLinkClassName ) { return constructNonEmptyField( givenParent, givenDataObject, givenFieldName, function () { return constructLink( givenParent, givenLinkTarget, givenLinkAlt, givenLinkClassName ); } ); } function appendCourseCzar( givenParent, givenCzarID ) { if( givenCzarID ) { var myContainer = constructClassifiedChild( givenParent, "div", "czar-container" ); var myCaption = constructClassifiedChild( myContainer, "span", "czar-caption" ); appendText( myCaption, "Course Czar: " ); constructFacultyLink( myContainer, givenCzarID ); } } function appendBook( givenParent, givenBook ) { var myTitle = givenBook[ "Title" ]; var myPublisher = givenBook[ "Publisher" ]; var myEdition = givenBook[ "Edition" ]; var myURL = givenBook[ "buyURL" ]; var myContainer = constructClassifiedChild( givenParent, "div", "book-container" ); var myCaption = constructClassifiedChild( myContainer, "span", "textbook-caption" ); appendText( myCaption, "Textbook: " ); var myParent = constructNonEmptyInternalLink( myContainer, givenBook, "buyURL", givenBook[ "buyURL" ], "Buy the book on Amazon.com", "book-link" ); appendNonEmptyField( myParent, givenBook, "Author", "", ": ", "book-authors-container" ); var myTitleContainer = constructClassifiedChild( myParent, "span", "book-title-container" ); appendText( myTitleContainer, myTitle ); appendText( myParent, ", (" + myPublisher + ", " + myEdition + ")" ); } function appendCommittee( givenParent, givenCommittee ) { var myLink = constructClassifiedChild( givenParent, "a", "committee-anchor" ); myLink.name = makeCommitteeID( givenCommittee ); var myContainer = constructClassifiedChild( givenParent, "div", "committee-container" ); var myTypeContainer = constructClassifiedChild( myContainer, "div", "committee-type-container" ); var myType = givenCommittee[ "Category" ]; appendText( myTypeContainer, myType ); var myNameContainer = constructClassifiedChild( myContainer, "div", "committee-name-container" ); var myName = givenCommittee[ "Name" ]; appendText( myNameContainer, myName ); var myChairs = givenCommittee[ "Chairs" ]; var myCaption = ( myChairs.length > 1 ? "Co-Chairs: " : "Chair: " ); appendFacultyList( myContainer, myCaption, myChairs ); var myMembers = givenCommittee[ "Members" ]; appendFacultyList( myContainer, "Members: ", myMembers ); } function appendFacultyList( givenParent, givenTitle, givenList ) { var myContainer = constructClassifiedChild( givenParent, "div", "faculty-list-container" ); var myTitle = constructClassifiedChild( myContainer, "span", "faculty-list-title" ); appendText( myTitle, givenTitle ); for( var i = 0; i < givenList.length; i ++ ) { var myFacultyID = givenList[ i ]; constructFacultyLink( myContainer, myFacultyID ); if( i < givenList.length - 1 ) appendText( myContainer, ", " ); } } function appendFacultyMember( givenParent, givenFacultyID ) { var myName; { myName = myFacultyMember[ "Name" ]; myParent = constructFacultyLink( givenParent, givenFacultyID ); } } function constructFacultyLink( givenParent, givenFacultyID ) { var myContainer; var myFacultyMember = firstOccurrenceInObjectArray( myFaculty, "dirID", givenFacultyID ); if( myFacultyMember && myFacultyMember[ "Name" ] != '' ) { myName = myFacultyMember[ "Name" ]; var myTargetURL = lookupPersonDirectoryListingURL( givenFacultyID ); myContainer = constructLink( givenParent, myTargetURL, "Open Directory Listing in a New Window", "faculty-link" ); myContainer.href="#"; myContainer.onclick = function() { window.open( myTargetURL, '_blank', 'width=460,height=350,resizable=yes' ); return false; } } else { myName = givenFacultyID; if( /^[-+]?[0-9]+(\.[0-9]+)?$/.test( givenFacultyID ) ) return myContainer; myContainer = givenParent; } appendText( myContainer, myName ); return myContainer; } function appendFaculty( givenParent, givenFacultyMember ) { var myFacultyID = givenFacultyMember[ "dirID" ]; var myTable = constructClassifiedChild( givenParent, "table", "faculty-container-table" ); var myBody = constructClassifiedChild( myTable, "tbody", "faculty-container-body" ); var myRow = constructClassifiedChild( myBody, "tr", "faculty-container-row" ); var myImageCell = constructClassifiedChild( myRow, "td", "faculty-image-cell" ); var myImage = constructClassifiedChild( myImageCell, "img", "faculty-image" ); myImage.src = "../pictures/" + myFacultyID + ".jpg"; myImage.alt = myImage.title = "Picture of " + givenFacultyMember[ "Name" ]; if( givenFacultyMember[ "schedule" ] && givenFacultyMember[ "schedule" ] == "yes" ) { var myLinkContainer = constructClassifiedChild( myImageCell, "div", "faculty-schedule-container" ); var myScheduleLink = constructLink( myLinkContainer, "schedule/2009-09/" + myFacultyID + ".html", "Faculty Teaching Schedule", "faculty-schedule-link" ); appendText( myScheduleLink, "Fall 2009 Schedule" ); } var myDirectoryCell = constructClassifiedChild( myRow, "td", "faculty-directory-cell" ); var myFrame = constructClassifiedChild( myDirectoryCell, "iframe", "faculty-frame" ); myFrame.src = lookupPersonDirectoryListingURL( myFacultyID ); myFrame.name = myFacultyID; myFrame.id = myFacultyID; var myCommitteesCell = constructClassifiedChild( myRow, "td", "faculty-committees-cell" ); appendCommitteeService( myCommitteesCell, myFacultyID ); //if( givenFacultyMember[ "inOffice" ] && givenFacultyMember[ "inOffice" ] != "" ) // myCommitteesCell.innerHTML += "
Spring 2009 Office Hours:
" // + givenFacultyMember[ "inOffice" ]; } function appendCommitteeService( givenParent, givenFacultyID ) { var myCount = 0; var myContainer = document.createElement( "div" ); var myHeader = constructClassifiedChild( myContainer, "div", "faculty-committees-header" ); appendText( myHeader, "Serves on the following " ); var myLink = constructLink( myHeader, "committees.html", "Go to Mathematics Committees List", "internal-link" ); appendText( myLink, "Mathematics Committees" ); var myCommitteesList = constructClassifiedChild( myContainer, "ol", "faculty-committees-list" ); for( var i = 0; i < myCommittees.length; i++ ) { var myCommittee = myCommittees[ i ]; var myName = myCommittee[ "Name" ]; var myType = myCommittee[ "Category" ]; var myChairs = myCommittee[ "Chairs" ]; var myCaption = ( myChairs.length > 1 ? "(Co-Chair)" : "(Chair)" ); if( containsElement( givenFacultyID, myChairs ) ) { var myCommitteeItem = constructClassifiedChild( myCommitteesList, "li", "faculty-committee-item" ); var myCommitteeLink = constructCommitteeLink( myCommitteeItem, myCommittee ); appendText( myCommitteeItem, ", " ); var myBold = constructClassifiedChild( myCommitteeItem, "b", "faculty-chairmanship" ); appendText( myBold, myCaption ); myCount++; } var myMembers = myCommittee[ "Members" ]; if( containsElement( givenFacultyID, myMembers) ) { var myCommitteeItem = constructClassifiedChild( myCommitteesList, "li", "faculty-committee-item" ); var myCommitteeLink = constructCommitteeLink( myCommitteeItem, myCommittee ); myCount++; } } if( myCount > 0 ) givenParent.appendChild( myContainer ); } function constructCommitteeLink( givenParent, givenCommittee ) { var myTargetURL = lookupCommitteeLocalURL( givenCommittee ); var myLink = constructLink( givenParent, myTargetURL, "Open the description of the " + givenCommittee[ "Name" ] + " in a new page", "faculty-listing-committee-link" ); //myLink.href = "#"; /* myLink.onclick = function() { var myWindow = window.open( myTargetURL, "_blank", "width=850,height=180,resizable=yes" ); myWindow.document.write( 'Popup' ); myWindow.document.write( '' ); myWindow.document.write( '' ); myWindow.document.write( '' ); myWindow.document.write( '' ); myWindow.document.write( '' ); myWindow.document.write(''); myWindow.document.close(); appendCommittee( myWindow.document.body, givenCommittee ); myWindow.window.focus(); return false; } */ appendText( myLink, givenCommittee[ "Name" ] ); return myLink; } function constructLink( givenParent, givenTargetURL, givenDescription, givenClassName ) { var myLink = constructClassifiedChild( givenParent, "a", givenClassName ); myLink.title = givenDescription; myLink.href = givenTargetURL; return myLink; } function constructClassifiedChild( givenParent, givenElementName, givenClassName ) { var myElement = document.createElement( givenElementName ); givenParent.appendChild( myElement ); myElement.className = givenClassName; return myElement; } function appendText( givenParent, givenText ) { givenParent.appendChild( document.createTextNode( givenText ) ); } function firstOccurrenceInObjectArray( givenArray, givenLookupField, givenLookupValue ) { for( var i = 0; i < givenArray.length; i++ ) { if( givenArray[ i ][ givenLookupField ] == givenLookupValue ) return givenArray[ i ]; } return null; } function appendSelectedList( givenParent, givenDataObjectArray, givenCategory, givenAppender ) { for( var i = 0; i < givenDataObjectArray.length; i++ ) { var myDataObject = givenDataObjectArray[ i ]; var myCategory = myDataObject[ "Category" ]; if( myCategory == null || myCategory == givenCategory ) givenAppender( givenParent, myDataObject ); } } function containsElement( givenElement, givenArray ) { for( var i = 0; i < givenArray.length; i++ ) { if( givenArray[ i ] == givenElement ) return true; } return false; }