//finalsiteCf global.js
//v. 2.1

//-- Functions --//
/*

fsBtn(btn_name,state,alt_onSrc) -- set state to on/off (on is defulat)

swapStyle(title,reset)
*/


// Browser Check
var isIE = (document.all) ? true : false;
var isNS4 = (document.layers) ? true : false;
var isNS6 = (document.getElementById && !isIE) ? true : false;

//--------------------------------------------------------//

// Button & Menu Options ---------------------------------//

//Time before menus auto-hide
var menu_pause = 250; 

//Show sub-menus for current section( 0=no, 1=yes)
var section_subs = 0;

//Use auto position find for the menus( 0=no, 1=yes)
//Used for relatively positioned/centered layouts
//This option can be turned on for individual layouts by setting it in the <head> tag
var pos_find = 1;

// Set offsets for the menus (this can also be adjusted using margins in the CSS file)
    // x/y offset from top left corner of parent button
    var pos_x = 0; 
    var pos_y = 0;
    
    // browser specific offsets(added to offsets above) for netscape
    // base browser is IE
    var ns6_xoffset = 0;
    var ns6_yoffset = 0;

//--------------------------------------------------------//



// Style Sheet Options -----------------------------------//

var sheets = new Array(
	//Define stylesheets: "title,href"
	// MUST Have "Default,some/stylesheet.css" defined! 
	"default,uploaded/design/code/small.css",
    "large,uploaded/design/code/large.css"
);

//Browser Specific CSS Code
if(isIE){ document.write( "<style>#ql_menu a, #sitetools_menu a{ width:100%; }</style>" ); }

//--------------------------------------------------------//
//onLoad functions
function pageLoad() { preLoad(); }

var sectionId = "";
var sectionBtn = "";
var thisMenu = "";
var wait;


// Button Object Constructor
function btnObj(btnName,menuName,pageId,offSrc,onSrc,selectSrc) {
	this.btnName = btnName;
	this.menuName = menuName;
	this.pageId = pageId;
	this.offSrc = offSrc;
	this.onSrc = onSrc;
	this.selectSrc = selectSrc;
}

function preLoad(){
	//preLoad loops through the buttons array and pre-loads all of the onSrc's
	//Also defines sectionID & sectionBtn & turns on section button

	if(document.images){
		var myImages = new Array();
		var i = 0;
		for(this.btnName in buttons){
			myImages[i] = new Image(); myImages[i].src = buttons[this.btnName].onSrc;
			i++;
			var n=0;
			for(n in pagearray){
				if( pagearray[n] == buttons[this.btnName].pageId){
					document.images[this.btnName].src = buttons[this.btnName].selectSrc ? buttons[this.btnName].selectSrc : buttons[this.btnName].onSrc;
					sectionId = buttons[this.btnName].pageId;
					sectionBtn = buttons[this.btnName].btnName;
				}
				n++;
			}
		}
	}

} //end preLoad


function fsBtn(btn,state,alt_onSrc){
	if(alt_onSrc){ buttons[btn].onSrc = alt_onSrc }
	if(state == "off"){ imgRestore(btn); }else{ swapImage(btn); }
}

function swapImage(btn){
	//swapImage creates a roll-over effect from onSrc when passed the name of the button
	//Also shows sub-menus if specified
	if(buttons[btn].pageId != sectionId){
		document.images[btn].src = buttons[btn].onSrc; //Turn button on
	}
	
		//check btnID against sectionId and section_menu variable before turning on sub menus
	if( buttons[btn].menuName ){ //Turn on menus if section sub option is on or the button pageId does not equal the sectionId
		showSubs(btn);
	}
} //end swapImage

function imgRestore(btn){
	// turns button off unless it is the section button or has a menu
	if(buttons[btn].menuName){
		mnuOut(btn);
	}else if(buttons[btn].pageId != sectionId){
		document.images[btn].src = buttons[btn].offSrc;
	}
}


//Sub Menu Functions
function showSubs(btn){
	if((thisMenu.length>0) && (thisMenu != buttons[btn].btnName)){
		clearSubs(thisMenu);
	}
	// set offsets based on browser			 
	var x_offset = (isNS6) ? ns6_xoffset : 0;
	var y_offset = (isNS6) ? ns6_yoffset : 0;	
	
	if(section_subs == 1 || (buttons[btn].pageId != sectionId)){ //Test for section subs option and section ID
		if(pos_find==1){
			document.getElementById(buttons[btn].menuName).style.left = findPosX(document.getElementById(buttons[btn].btnName)) + (pos_x - x_offset);
			document.getElementById(buttons[btn].menuName).style.top = findPosY(document.getElementById(buttons[btn].btnName)) + (pos_y - y_offset);				 			 
		}
		document.getElementById(buttons[btn].menuName).style.visibility = 'visible';
		thisMenu = buttons[btn].btnName; //add menu to close later
	}
	
	clearTimeout(wait);
} //end showSubs

function mnuOut(btn){
	wait = setTimeout("clearSubs('"+ btn +"')", menu_pause);
}

function clearSubs(btn) { //clears open menu
	if(buttons[btn].menuName){
		document.getElementById(buttons[btn].menuName).style.visibility='hidden';
		thisMenu="";
	}

	if(buttons[btn].pageId != sectionId){
		document.images[btn].src = buttons[btn].offSrc; //turn button back off
		}else if(buttons[btn].selectSrc){
 document.images[btn].src = buttons[btn].selectSrc;
	}
}


//Automatically find x,y positions of objects
function findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}
//end Sub Menus

// ----------------------------------------------


// StyleSwitcher functions written by Paul Sowden
// http://www.idontsmoke.co.uk/ss/
// - - - - - - - - - - - - - - - - - - - - - - -
// For the details, visit ALA:
// http://www.alistapart.com/stories/alternate/
//
// nifty StyleSwitcher scripts modified by Aaron Jones 10/10/2002
//
// Updated for finalsite : Craig Edmond 7/8/2004,4/14/2005
// ----------------------------------------------


function swapStyle(title, reset) {
  var i, a, main;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
    if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) {
      a.disabled = true;
      if(a.getAttribute("title") == title) a.disabled = false;
    }
  }
  if (reset == 1) {
	  createCookie("cfstyle", title);
  }
}

function setStyle() {
	var style = readCookie("cfstyle");
	if (style != null) {
		swapStyle(style, 0);
	}
}

// ----------------------------------------------
// Cookie functions
// ----------------------------------------------

function createCookie(name,value,days) {
  if (days) {
    var date = new Date();
    date.setTime(date.getTime()+(days*24*60*60*1000));
    var expires = ";expires="+date.toGMTString();
  }
  else expires = "";
  document.cookie = name+"="+value+expires+";path=/;";
}

// ----------------------------------------------

function readCookie(name) {
  var nameEQ = name + "=";
  var ca = document.cookie.split(';');
  for(var i=0;i < ca.length;i++) {
    var c = ca[i];
    while (c.charAt(0)==' ') c = c.substring(1,c.length);
    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
  }
  return null;
}

// ----------------------------------------------

function writeFlash(fpath,w,h) {
	document.write('<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="'+ w +'" height="'+ h +'" id="flahshmovie" align="middle">');
	document.write('<param name="allowScriptAccess" value="sameDomain" />');
	document.write('<param name="movie" value="'+ fpath +'" />');
	document.write('<param name="quality" value="high" />');
	document.write('<param name="bgcolor" value="#ffffff" />');
	document.write('<embed src="'+ fpath +'" quality="high" bgcolor="#ffffff" width="'+ w +'" height="'+ h +'" name="flashmovie" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />');
	document.write('</object>');
	
}


// Write out stylesheets

var style = readCookie("cfstyle");
if(style == null){ style = "default"; }

for(var i=0;i < sheets.length;i++){
  	var rel_str = "alternate stylesheet";
    var sheets_atr = sheets[i].split(',');
  	if(sheets_atr[0] == style){ rel_str = "stylesheet"; }
    document.write( "<link type=\"text/css\" title=\""+ sheets_atr[0] +"\" href=\""+ sheets_atr[1] +"\"  rel=\""+ rel_str +"\" >");
}


