<!--

// Common functions

// A dummy function in case I want a call to do absolutely NOTHING
function justDoNothing() {
// This function really does do nothing!
}

// Preload images that may be swapped in/out while page is viewed
// Call from the BODY tag's "onLoad" event
// Arguments are strings of any full file/path names of images needing preloading, comma delimited
function bufoPreloadImages() {
	if (document.images) {
    var numImages = bufoPreloadImages.arguments.length;
    var imgURL = new Array(numImages);
		for (i=0; i<numImages; i+=1) {
      imgURL[i] = new Image();
      imgURL[i].src = bufoPreloadImages.arguments[i];
		}
	}
}

// Spawn a new window, with options
// args = URL, name of window, location x, location y, width, height, and type of window
// types: noFrills, withNav, solidSize, default
function bufoSpawn(url, winName, winX, winY, winWidth, winHeight, winType){
  switch (winType) {
    case "noFrills":
      winTypeString = "menubar=0,location=0,resizable=1,scrollbars=1,status=0,titlebar=0,toolbar=0"
      break
    case "noScrolls":
      winTypeString = "menubar=0,location=0,resizable=1,scrollbars=0,status=0,titlebar=0,toolbar=0"
      break
    case "withNav":
      winTypeString = "menubar=1,location=1,resizable=1,scrollbars=1,status=1,titlebar=1,toolbar=1"
      break
    case "solidSize":
      winTypeString = "menubar=0,location=0,resizable=0,scrollbars=1,status=0,titlebar=0,toolbar=0"
      break
    default:
      winTypeString = "menubar=0,location=1,resizable=1,scrollbars=1,status=1,titlebar=0,toolbar=0"
  }
  window.open(url,winName,"width=" + winWidth + ",height=" + winHeight + "," + winTypeString +",left=" + winX + ",top=" + winY + ",screenX=" + winX + ",screenY=" + winY)
}

// simply go back one page
function bufoBack(){
  if (navigator.appName == "Microsoft Internet Explorer"){
    history.back();
  } else {
    window.back();
  }
}

// swap images on an event, indefinite num of args
// args follow pattern: name of image, new image url to switch to, name, url, name, url, ...
// url MUST BE FULL URL (relative or definite), not just filename
function bufoImgSwap() {
	if (document.images) {
		for (i=0; i<bufoImgSwap.arguments.length; i+=2) {
			document[bufoImgSwap.arguments[i]].src = bufoImgSwap.arguments[i+1];
		}
	}
}

//----------------------------------

// determine the present year
// write into the document the copyright-eligible years from FirstYear (given argument) to present year
function doCopyrightYears(firstYear) {
  var now_time = new Date();

  var now_year = now_time.getYear();
  if (now_year < 2000)
    now_year = now_year + 1900;
  document.write (firstYear);
  if (now_year>firstYear)
    document.write ('-'+now_year+' ');
}


// --------------------------------------

// E-MAIL SUBMISSION FORM VALIDATION AND SUBMISSION

// E-mail submission form validation
function bufoIsContactValid(formName,badMessageAlert,badEmailAlert) {
// Determine the valid possible characters in an e-mail address
  var legalEmailChars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-.@';

// Get the Email and Message field values from the form
  var valueEmail = document.getElementById(formName).required_email.value;
  var valueMessage = document.getElementById(formName).required_message.value;

// Check the Message - empty message activates alert
  if (valueMessage.length < 2) {
    alert(badMessageAlert);
    return false;
  }

// Initialize the validity of the Email field (to true - any mistakes will falsify it)
  var validEmail = true;
// Empty Email is invalid
  if (valueEmail == "") {
    validEmail = false;
  }
// Email without an "@" in a proper place (between username and domain) is invalid
  if (valueEmail.indexOf("@") < 1 || valueEmail.indexOf("@") > (valueEmail.length-5) || valueEmail.indexOf("@") != valueEmail.lastIndexOf("@")) {
    validEmail = false;
  }
// Email without a "." in a proper place (between domain and TLD) is invalid
  if (valueEmail.indexOf(".") < 1 || valueEmail.lastIndexOf(".") > (valueEmail.length-3)) {
    validEmail = false;
  }
  if (valueEmail.lastIndexOf(".") < valueEmail.indexOf("@") || valueEmail.substr((valueEmail.indexOf("@")-1),1) == "." || valueEmail.substr((valueEmail.indexOf("@")+1),1) == ".") {
    validEmail = false;
  }

// Email with any character that is not in the "Legal Email" character set is invalid
  for (i=0;i<valueEmail.length;i++) {
    if (legalEmailChars.indexOf(valueEmail.substr(i,1)) < 0) {
      validEmail = false;
    }
  }

// An invalid e-mail activates an alert
  if (!validEmail) {
    alert(badEmailAlert);
  }

// A valid e-mail returns true (and goes back to submit the form)
  return validEmail;
}

// E-mail submission form submission
// Checks validation - if good, submits, if not, returns false
function bufoContactSubmit(formName,badMessageAlert,badEmailAlert) {
  if (bufoIsContactValid(formName,badMessageAlert,badEmailAlert)) {
    document.getElementById(formName).submit();
  }
}


// --------------------------------------


// SPECIFIC TO SITE HUB

// To put up the names of menu icons on the display on the Site Hub menu
function bufoDisplaySection(changeTo) {
  document.getElementById('hubMenuNameDisplay').innerHTML=changeTo;
}

// Specifically to swap the menu icons on the Site Hub (when moused over)
// args are only the Subsite Name and which Mode to put the icon in (norm or lite)
function bufoIconSwap(subSiteName,whichMode) {
  imageUrl='img/icon_'+subSiteName+'_'+whichMode+'.gif';
  bufoImgSwap(subSiteName,imageUrl);
  if (whichMode=='lite') {
    bufoDisplaySection(subSiteName);
  } else {
    bufoDisplaySection('&nbsp;');
  }
}

// --------------------------------------


// FOR ALL SUBSITES

// To TEST and CREATE the menu header at the top of each subsite
// If no JavaScript, the HTML takes care of it
// If there's JavaScript but no Flash, the "else" statement takes over, and makes the JavaScript version of the menu
// If there's Flash, then the Flash version of the menu is put up
function makeBufoSubsiteMenuHeader() {

  if (is_Flash && is_FlashVersion>5) {
    document.write('<tr>');
    document.write('<td class="bufoHeader" id="bufoHeaderIcon" valign="top" align="left" height="35">');
    document.write('<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" type="application/x-shockwave-flash" data="http://www.semperbufo.com/flash/bufo_menuheader_hubicon.swf" width="35" height="35" id="bufo_menuheader_hubicon" align="middle"> <param name="allowScriptAccess" value="always" /> <param name="allowNetworking" value="all" /> <param name="enableJSURL" value="true" /> <param name="enableHREF" value="true" /> <param name="movie" value="http://www.semperbufo.com/flash/bufo_menuheader_hubicon.swf" /><param name="loop" value="false" /><param name="menu" value="false" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" /><embed src="http://www.semperbufo.com/flash/bufo_menuheader_hubicon.swf" loop="false" menu="false" quality="high" bgcolor="#ffffff" width="35" height="35" name="bufo_menuheader_hubicon" align="middle" allowScriptAccess="always" allowNetworking="all" enableJSURL="true" enableHREF="true" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /></embed></object>');
    document.write('</td>');
    document.write('<td class="bufoHeader" id="bufoHeaderMenu" valign="top" align="right" height="35">');
    document.write('<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" type="application/x-shockwave-flash" data="http://www.semperbufo.com/flash/bufo_menuheader.swf" width="447" height="35" id="bufo_menuheader" align="middle"> <param name="allowScriptAccess" value="always" /> <param name="allowNetworking" value="all" /> <param name="enableJSURL" value="true" /> <param name="enableHREF" value="true" /> <param name="movie" value="http://www.semperbufo.com/flash/bufo_menuheader.swf" /><param name="loop" value="false" /><param name="menu" value="false" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" /><embed src="http://www.semperbufo.com/flash/bufo_menuheader.swf" loop="false" menu="false" quality="high" bgcolor="#ffffff" width="447" height="35" name="bufo_menuheader" align="middle" allowScriptAccess="always" allowNetworking="all" enableJSURL="true" enableHREF="true" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /></embed></object>');
    document.write('</td>');
    document.write('</tr>');
  } else {
    document.write('<tr>');
    document.write('<td class="bufoHeader" id="bufoHeaderIcon" valign="top" align="left" height="35">');
    document.write('<a href="http://www.semperbufo.com/" onMouseOver="bufoImgSwap(\'bufo\',\'http://www.semperbufo.com/img/icon_bufo_lite.gif\');" onMouseOut="bufoImgSwap(\'bufo\',\'http://www.semperbufo.com/img/icon_bufo_norm.gif\');"><img class="select_icon" id="bufo" name="bufo" src="http://www.semperbufo.com/img/icon_bufo_norm.gif" width="35" height="35" alt="bufo"></a>');
    document.write('</td>');
    document.write('<td class="bufoHeader" id="bufoHeaderMenu" valign="top" align="right" height="35">');
    document.write('<a href="http://creator.semperbufo.com/" onMouseOver="bufoImgSwap(\'creator\',\'http://www.semperbufo.com/img/icon_creator_lite.gif\');" onMouseOut="bufoImgSwap(\'creator\',\'http://www.semperbufo.com/img/icon_creator_norm.gif\');"><img class="select_icon" id="creator" name="creator" src="http://www.semperbufo.com/img/icon_creator_norm.gif" width="35" height="35" alt="creator"></a>');
    document.write('<a href="http://writer.semperbufo.com/" onMouseOver="bufoImgSwap(\'writer\',\'http://www.semperbufo.com/img/icon_writer_lite.gif\');" onMouseOut="bufoImgSwap(\'writer\',\'http://www.semperbufo.com/img/icon_writer_norm.gif\');"><img class="select_icon" id="writer" name="writer" src="http://www.semperbufo.com/img/icon_writer_norm.gif" width="35" height="35" alt="writer"></a>');
    document.write('<a href="http://artist.semperbufo.com/" onMouseOver="bufoImgSwap(\'artist\',\'http://www.semperbufo.com/img/icon_artist_lite.gif\');" onMouseOut="bufoImgSwap(\'artist\',\'http://www.semperbufo.com/img/icon_artist_norm.gif\');"><img class="select_icon" id="artist" name="artist" src="http://www.semperbufo.com/img/icon_artist_norm.gif" width="35" height="35" alt="artist"></a>');
    document.write('<a href="http://designer.semperbufo.com/" onMouseOver="bufoImgSwap(\'designer\',\'http://www.semperbufo.com/img/icon_designer_lite.gif\');" onMouseOut="bufoImgSwap(\'designer\',\'http://www.semperbufo.com/img/icon_designer_norm.gif\');"><img class="select_icon" id="designer" name="designer" src="http://www.semperbufo.com/img/icon_designer_norm.gif" width="35" height="35" alt="designer"></a>');
    document.write('<a href="http://multimedium.semperbufo.com/" onMouseOver="bufoImgSwap(\'multimedium\',\'http://www.semperbufo.com/img/icon_multimedium_lite.gif\');" onMouseOut="bufoImgSwap(\'multimedium\',\'http://www.semperbufo.com/img/icon_multimedium_norm.gif\');"><img class="select_icon" id="multimedium" name="multimedium" src="http://www.semperbufo.com/img/icon_multimedium_norm.gif" width="35" height="35" alt="multimedium"></a>');
    document.write('<a href="http://musician.semperbufo.com/" onMouseOver="bufoImgSwap(\'musician\',\'http://www.semperbufo.com/img/icon_musician_lite.gif\');" onMouseOut="bufoImgSwap(\'musician\',\'http://www.semperbufo.com/img/icon_musician_norm.gif\');"><img class="select_icon" id="musician" name="musician" src="http://www.semperbufo.com/img/icon_musician_norm.gif" width="35" height="35" alt="musician"></a>');
    document.write('<a href="http://actor.semperbufo.com/" onMouseOver="bufoImgSwap(\'actor\',\'http://www.semperbufo.com/img/icon_actor_lite.gif\');" onMouseOut="bufoImgSwap(\'actor\',\'http://www.semperbufo.com/img/icon_actor_norm.gif\');"><img class="select_icon" id="actor" name="actor" src="http://www.semperbufo.com/img/icon_actor_norm.gif" width="35" height="35" alt="actor"></a>');
    document.write('<a href="http://thinker.semperbufo.com/" onMouseOver="bufoImgSwap(\'thinker\',\'http://www.semperbufo.com/img/icon_thinker_lite.gif\');" onMouseOut="bufoImgSwap(\'thinker\',\'http://www.semperbufo.com/img/icon_thinker_norm.gif\');"><img class="select_icon" id="thinker" name="thinker" src="http://www.semperbufo.com/img/icon_thinker_norm.gif" width="35" height="35" alt="thinker"></a>');
    document.write('</td>');
    document.write('</tr>');
  }
}

// This one makes sure the Flash menus can access alternate subdomains...
function bufoMusicMenuTo(whichGetURL) {
  window.location.assign(whichGetURL);
}

// Sample IFRAMEs
// How to select a sample to put in an IFRAME box
// i.e., Writer excerpts, Designer portfolio pieces, etc.
// whichList is the ID of the list of samples (id+'Box' == the ID of the IFRAME)
// whichInfo is the URL of the sample to put in the IFRAME
function bufoIFrameURLSwitch(whichList,whichInfo) {
  whichList+='Box';
  if (currentExcerpt != whichInfo && whichInfo != 'noSelection') {
    document.getElementById(whichList).src = whichInfo;
    currentExcerpt = whichInfo;
  }
}

var currentExcerpt = 'noSelection';

// --------------------------------------


//-->
