///////////////////////////// WEB SOFTWARE BY DAVID REGIER /////////////////////////////
///////////////////////////// http://www.ctpmaui.com/david /////////////////////////////
////////////////////// UNAUTHORIZED USE OF THIS CODE IS PROHIBITED /////////////////////

var theUserAgent = navigator.userAgent;
var theAppVersion = navigator.appVersion;
var bName = navigator.appName;
var exactVer = parseFloat( theAppVersion );
var bVer = parseInt( exactVer );
var bMinor = navigator.appMinorVersion;
var os = navigator.platform;

cb = true; var dHTML_IE4 = false; var dHTML_DOM = false;
var IE = false; var IE4 = false; var IE5 = false;
var NC = false; var NC4 = false; var NC6 = false; var NC7 = false;

if (bName == "Microsoft Internet Explorer") {
	var splitAppVersion = theAppVersion.split('MSIE');
	bVer = parseInt( splitAppVersion[1] );
	exactVer = parseFloat( splitAppVersion[1] );
	if(bVer >= 5) { IE5 = true; dHTML_DOM = true; }
	else { IE4 = true; dHTML_IE4 = true; }
	IE = true;
}

else if ( bName == "Netscape" ) {
	NC = true;
	// SAVE navigator.userAgent:
	//Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:0.9.2) Gecko/20010726 Netscape6/6.1
	//Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.0.1) Gecko/20020823 Netscape/7.0
	//Mozilla/4.73 [en] (Windows NT 5.0; U)
	if( theUserAgent.lastIndexOf( "Netscape" ) >= 0 ) { // NC6 or NC7
		dHTML_DOM = true;
		var nInfo = theUserAgent.split( "Netscape" )[ 1 ];
		var slash = ( nInfo.indexOf( "/" ) >= 0 ) ? true : false;
		exactVer = ( slash ) ? parseFloat( nInfo.split( "/" )[ 1 ] ) : parseFloat( nInfo );
		bVer = parseInt( exactVer );
	}
	if( bVer >= 7 ) NC7 = true;
	else if( bVer == 6 ) NC6 = true;
	else NC4 = true;
}

var dHTML = ( dHTML_IE4 || dHTML_DOM ) ? true : false;

var macOS = ( theAppVersion.indexOf('Macintosh') > -1 ) ? true : false;
var winOS = ( os.substring( 0, 3 ) == "Win" );
var macIE = ( macOS && theAppVersion.indexOf('MSIE') > -1 ) ? true : false;

var theHost = document.location.hostname.toLowerCase();

var local = ( theHost.length == 0 || theHost == "127.0.0.1" ) ? true : false;
var live = !local;

window.onerror = errorHandler;

var bDoesTrans = ( IE5 && winOS ) ? true : false;

var dText = [
	"Click to enlarge",
	"Click to view map of maui",

"place holder"
];

//----------------------------------------------------------------------------------------
function errorHandler( msg, url, line ) {
	if ( local ) {
		alert( "ERROR: " + msg + "\n\nURL: " + url + "\n\nLINE: " + line );
		return false;
	}
	return true;
}
//--------------------------------------------------------------------------------------

function replaceLiteral( target, replacement ) {
	return this.split( target ).join( replacement );
}
String.prototype.replaceLiteral = replaceLiteral;
//--------------------------------------------------------------------------------------
function linkOn( link ) {
	if( dHTML ) { link.style.textDecoration = 'underline'; }
}
function linkOff( link ) {
	if( dHTML ) { link.style.textDecoration = 'none'; }
}

//---------------------------------------------------------------------------------------
var imgBorderColOn = "rgb( 0,0,255 )";
var imgBorderColOff = "rgb( 0,0,0 )";

//---------------------------------------------------------------------------------------
function borderIm( image, color ) { image.style.borderColor = color; }
//----------------------------------------------------------------------------------------
function getCookieVal (offset) {
  var endstr = document.cookie.indexOf (";", offset);
  if (endstr == -1)
    endstr = document.cookie.length;
  return unescape(document.cookie.substring(offset, endstr));
}
//----------------------------------------------------------------------------------------
function GetCookie (name) {
  var arg = name + "=";
  var alen = arg.length;
  var clen = document.cookie.length;
  var i = 0;
  while (i < clen) {
    var j = i + alen;
    if (document.cookie.substring(i, j) == arg)
      return getCookieVal (j);
    i = document.cookie.indexOf(" ", i) + 1;
    if (i == 0) break;
  }
  return null;
}
//----------------------------------------------------------------------------------------
function SetCookie (name,value,expires,path,domain,secure) {
  document.cookie = name + "=" + escape (value) +
    ((expires) ? "; expires=" + expires.toGMTString() : "") +
    ((path) ? "; path=" + path : "") +
    ((domain) ? "; domain=" + domain : "") +
    ((secure) ? "; secure" : "");
}
//----------------------------------------------------------------------------------------
function DeleteCookie (name,path,domain) {
  if (GetCookie(name)) {
    document.cookie = name + "=" +
      ((path) ? "; path=" + path : "") +
      ((domain) ? "; domain=" + domain : "") +
      "; expires=Thu, 01-Jan-70 00:00:01 GMT";
  }
}
//----------------------------------------------------------------------------------------
//Global function read everytime page loads
var expdate = new Date ();
expdate.setTime (expdate.getTime() + (24 * 60 * 60 * 365 * 1000)); // 1 year from now
//--------------------------------------------------------------------------------------

var charleyWin = null;

function openWin( theSite, tool, loc, status, menu, winSize ) {

	closeWin();

	var wid = 800 * 1.1 * winSize;
	var hgt = 450 * winSize;

	// Works on AOL, IE, N6 & NC4
	// IE Makes pop up same size as INNER DIMENSIONS of parent window.
	// AOL makes pop up same exact size as parent since toobars etc. don't attribute to inner dim
	// of AOL window
	if( winSize == 1 ) {
		wid = ( parent.IE ) ? document.body.clientWidth : screen.availWidth - 10;
		hgt = ( parent.IE ) ? document.body.clientHeight : screen.availHeight - 50;
	}

	charleyWin = window.open("","charley_window","toolbar="+tool+",location="+loc+",directories=0,status="+status+",menubar="+menu+",scrollbars=1,resizable=1,width="+wid+",height="+hgt+",top="+screen.availTop+",left="+screen.availLeft+"");

	charleyWin.location.href = theSite;
	focusWin();

}

function closeWin() {
	if( charleyWin != null && charleyWin.closed == false ) {
		charleyWin.close();
		charleyWin = null;
	}
}
function focusWin() {
	if( charleyWin != null && typeof charleyWin.registered == 'boolean' ) charleyWin.focus();
	else setTimeout( "focusWin()", 500 );
}

function linkToPopUp() {
	if( eval( "typeof charleyWin.registered" ) == "boolean" ) charleyWin.myOpener = self;
	else setTimeout( "linkToPopUp()", 250 );
}
//--------------------------------------------------------------------------------------

function launchSS( dataFile ) {
	openWin( "ss.html?db=" + dataFile, "0", "0", "1", "0", 1.0 );
	linkToPopUp();
}
//--------------------------------------------------------------------------------------
function randompick() {
  return randompick.arguments[ Math.floor( Math.random()*randompick.arguments.length ) ];
}
//--------------------------------------------------------------------------------------
// ACCESSOR VARS: bDoesTrans, exactVer

function getTransition( transNum, duration ) {

	var trans = "";
	if( bDoesTrans ) {
		var d = duration;

		if( exactVer >= 5.5 ) {

			var thisTrans = ( transNum == 0 ) ? Math.floor( Math.random() * 17 ) + 1 : transNum;

			switch ( thisTrans ) {
				case 1: trans="Fade(duration="+d+",overlap=1)"; break;
				case 2: trans="Blinds(duration="+d+",bands="+randompick(2,4,6,8)+",direction="+randompick('up','down','right','left')+")"; break;
				case 3: trans="CheckerBoard(duration="+d+",squaresX="+randompick(2,4,8,12)+",squaresY="+randompick(2,4,8,12)+",direction="+randompick('up','down','right','left')+")"; break;
				case 4: trans="Barn(duration="+d+",motion="+randompick('in','out')+",orientation=",randompick('horizontal','vertical')+")"; break;
				case 5: trans="GradientWipe(duration="+d+",gradientSize="+randompick(0,0.1,0.3,0.5,0.7,0.9,1)+",wipeStyle="+randompick(0,1)+",motion="+randompick('forward','reverse')+")"; break;
				case 6: trans="Inset(duration="+d+")"; break;
				case 7: trans="Iris(duration="+d+",irisStyle="+randompick('DIAMOND','CIRCLE','CROSS','PLUS','SQUARE','STAR')+",motion="+randompick('in','out')+")"; break;
				case 8: trans="RadialWipe(duration="+d+",wipeStyle="+randompick('CLOCK','WEDGE','RADIAL')+")"; break;
				case 9: trans="RandomBars(duration="+d+",orientation="+randompick('horizontal','vertical')+")"; break;
				case 10: trans="RandomBars(duration="+d+")"; break;
				case 11: trans="Slide(duration="+d+",pushStyle="+randompick('HIDE','PUSH','SWAP')+",bands="+randompick(1,2,3,4,5,6,7)+")"; break;
				case 12: trans="Spiral(duration="+d+",gridSizeX="+randompick(8,16,32,64)+",gridSizeY="+randompick(8,16,32,64)+")"; break;
				case 13: trans="Stretch(duration="+d+",stretchStyle="+randompick('HIDE','PUSH','SPIN')+")"; break;
				case 14: trans="Strips(duration="+d+",motion="+randompick('leftdown','leftup','rightdown','rightup')+")"; break;
				case 15: trans="Wheel(duration="+d+",spokes="+randompick(2,4,10,16,20)+")"; break;
				case 16: trans="Zigzag(duration="+d+",gridSizeX="+randompick(8,16,32,64)+",gridSizeY="+randompick(8,16,32,64)+")"; break;
				case 17: trans="RandomDissolve(duration="+d+")"; break;
        //case 18: trans="Pixelate(duration="+d+",maxSquare="+randompick(5,10,20,30,40,50)+")"; break;
				default: alert( "SWITCH/CASE ERROR: Case caught by default handler in \"getTransition\"" );
			}
			trans = "progid:DXImageTransform.Microsoft." + trans;
		}
		else { // Old IE 5 Browsers

			switch ( transNum ) {
				case 1: trans="blendTrans(duration="+d+")"; break;
				default: trans="revealTrans(duration="+d+",transition=" + Math.floor(Math.random()*23) + ")";
			}
		}
	}
	return trans;
}

//--------------------------------------------------------------------------------------
var ImgReal = null;
function checkDim( imgNameToCk, imgWidToCk, imgHgtToCk ) {

	if( ImgReal == null ) {
		ImgReal = new Image();
		ImgReal.src = eval( "document.images." + imgNameToCk + ".src;" );
	}
	if( ImgReal.complete ) {
		var realWid = ImgReal.width;
		var realHgt = ImgReal.height;
		if( realWid > 1 && realHgt > 1 ) {
			if( imgWidToCk != realWid || imgHgtToCk != realHgt )
				alert( ImgReal.src + " has incorrect dimensions set:\n\n• " + imgWidToCk + "×" + imgHgtToCk + " are the errant values\n• " + realWid + "×" + realHgt + " are the true values" );
		}
		ImgReal = null;
	}
	else {
		this.imgNameToCk = imgNameToCk;
		this.imgWidToCk = imgWidToCk;
		this.imgHgtToCk = imgHgtToCk;
		setTimeout( "checkDim( imgNameToCk, imgWidToCk, imgHgtToCk );", 500 );
	}
}

//--------------------------------------------------------------------------------------

function getObject( strObjName ) {
	if( dHTML )
		return ( dHTML_DOM ) ? document.getElementById( strObjName ) : eval( strObjName );
}

//--------------------------------------------------------------------------------------

function showImg( imgInfo ) {
	openWin( "image_viewer.html?" + escape( imgInfo ), 0, 0, 1, 0, 1, 1 );
	linkToPopUp();
}
//----------------------------------------------------------------------------------
//--------------------------- START DYNAMIC IMAGE VIEWER ---------------------------
//------------------------------ RUNS ON IE5+ AND NC6+ -----------------------------
//----------------------------------------------------------------------------------
// IV = Image Viewer
// ACCESSOR CLASSES: off, on, norm
// ACCESSOR FUNCTIONS: checkDim, getObject, getTransition, linkOff, linkOn,
// randompick, replaceLiteral, showImg
// ACCESSOR VARS: bDoesTrans

// Global Vars that allow customization:
var tnBkgColOnIV = "rgb( 191,191,191 )";
var tnBkgColOffIV = "rgb( 255,255,255 )";
var marginArrIV = [ 20, 20 ]; // top, bot: pixels above & below large image

//--------------------------------------------------------------------------------------
// Loops thru section(s) (if any) that are to be hidden when large image is displayed AND
// Loops thru section(s) (if any) that are to be re-show when large image is is hidden

function setSectVisIV( sectName, className ) {

	var i = 0;
	while( getObject( sectName + i ) ) {
		Section = getObject( sectName + i );
		Section.className = className;
		i++;
	}
}
//--------------------------------------------------------------------------------------
// Loops thru other open photos (if any) and hides them.
// Keeps more than 1 large photos from showing simultaneously

function hideOtherPhotosIV( tnPage ) {
	if( document.getElementById && !tnPage ) {
		var OtherDivs = document.getElementsByTagName( "DIV" );
		for( var i = 0; i < OtherDivs.length; i++ ) {
			if( OtherDivs[i].id.indexOf( "bigIV" ) == 0 )
				hideBigImgIV( OtherDivs[i].id.substring( 5, OtherDivs[i].id.length ) );
		}
	}
}
//--------------------------------------------------------------------------------------
// [ 'images', 'princeWFReid.jpg', 347, 351, 'Maui Prince', 'b', 1, LinkObj , 'sectName' ]
//      0               1           2    3           4       5   6     7           8

// Shows large image on the current page unless older browser or macIE
function showIV( ImgInfoArr ) {

	var os = navigator.platform.toLowerCase();
	var macIE = ( os.substring( 0, 3 ) == "mac" && document.all ) ? true : false;
	//var macIE = true;
	if( document.getElementById && !macIE ) {

		var tnPage = ( ImgInfoArr[ 8 ] == "thumbnails" ) ? true : false;

		if( tnPage ) this.LinkIV = ImgInfoArr[ 7 ];

		hideOtherPhotosIV( tnPage );

		var sectName = ImgInfoArr[ 8 ];
		if( tnPage ) document.body.style.backgroundColor = tnBkgColOnIV;
		setSectVisIV( sectName, "off" )

		switch( ImgInfoArr[ 5 ] ) {
			case "w": ImgInfoArr[ 5 ] = "255,255,255"; break;
			case "b": ImgInfoArr[ 5 ] = "0,0,0"; break;
		}

		var imgFilter = (bDoesTrans) ? "visibility:hidden;filter:"+getTransition(0,1) : "";

		var html = "<DIV ID='bigIV" + sectName + "'>";

		if( tnPage )
			html += "<TABLE ALIGN='center' BORDER='0' CELLSPACING='0' CELLPADDING='0' WIDTH='100%' HEIGHT='100%'><TR><TD ALIGN='center' VALIGN='middle'>";

			html +=
			"<TABLE ALIGN='center' BORDER='0' CELLSPACING='0' CELLPADDING='0'>" +
				"<TR>" +
					"<TD>" +
						"<DIV STYLE='line-height:" + marginArrIV[ 0 ] + "px;'>&nbsp; </DIV>" +
						"<A HREF='javascript:void(0);' ID='topFocalPt'></A><BR>" +
					"</TD>" +
				"</TR>" +
				"<TR>" +
					"<TD ALIGN='center'>" +
						"<A HREF='javascript:hideBigImgIV( \"" + sectName + "\" );' onMouseOver='self.status=this.title; return true;' onMouseOut='self.status=\"\"; return true;' TITLE='Click to go back to thumbnail'><IMG NAME='" + sectName + "IV' SRC='" + ImgInfoArr[ 0 ] + "/" + ImgInfoArr[ 1 ] + "' BORDER='0' WIDTH='" + ImgInfoArr[ 2 ] + "' HEIGHT='" + ImgInfoArr[ 3 ] + "' HSPACE=0 VSPACE=0 STYLE='border:" + ImgInfoArr[ 6 ] + "px solid rgb( " + ImgInfoArr[ 5 ] + " ); " + imgFilter + "; margin-right=45px;' onAbort='this.src=this.src;' onLoad='checkDim( \"" + sectName + "IV\", " + ImgInfoArr[ 2 ] + ", " + ImgInfoArr[ 3 ] + " ); setImgTitleIV( \"" + ImgInfoArr[ 4 ] + "\" ); if( bDoesTrans ) startFilterIV( this );'></A>" +
					"</TD>" +
				"</TR>" +
				"<TR>" +
					"<TD ALIGN='center' CLASS='norm'>" +
						"<DIV STYLE='line-height:2px'>&nbsp; </DIV>" +
						"<SPAN ID='imgTitleIV'>Loading image, please wait...</SPAN>" +
						"<DIV STYLE='line-height:5px'>&nbsp; </DIV>" +
						"<A HREF='javascript:hideBigImgIV( \"" + sectName + "\" );' onMouseOver='linkOn(this); self.status=this.title; return true;' onMouseOut='linkOff(this); self.status=\"\"; return true;' TITLE='Click photo to go back to thumbnail' ID='botFocalPt'>Back</A>" +
						"<DIV STYLE='line-height:" + marginArrIV[ 1 ] + "px;'>&nbsp; </DIV>" +
					"</TD>" +
				"</TR>" +
			"</TABLE>";

		if( tnPage ) html += "</TD></TR></TABLE>";

		html += "</DIV>";

		var ImgConsole = getObject( sectName );
		ImgConsole.innerHTML = html;
		ImgConsole.className = "on";
		var FocuserBot = getObject( "botFocalPt" ); FocuserBot.focus();
		var FocuserTop = getObject( "topFocalPt" ); FocuserTop.focus();
		return false;
	}
	else { // NC4, IE4 & macIE use pop-up image viewer
		var imgInfo = ImgInfoArr[ 0 ] + "/" + ImgInfoArr[ 1 ] + "|" + ImgInfoArr[ 2 ] + "|" + ImgInfoArr[ 3 ] + "|" + ImgInfoArr[ 4 ] + "|" + ImgInfoArr[ 5 ] + "|" + ImgInfoArr[ 6 ];
		showImg( imgInfo );
		return false;
	}
}

//--------------------------------------------------------------------------------------
// Set page back to default state by hiding large image
function hideBigImgIV( sectName ) {

	var tnPage = ( sectName == "thumbnails" ) ? true : false;
	var ImgConsole = getObject( "bigIV" + sectName );
	ImgConsole.innerHTML = "";
	ImgConsole.className = "off";
	if( tnPage ) document.body.style.backgroundColor = tnBkgColOffIV;
	setSectVisIV( sectName, "on" );
	if( tnPage && typeof LinkIV == "object" ) {
		LinkIV.focus();
		LinkIV.blur();
		window.scrollBy( 0, ( heightTN + 8 ) );
	}

}
//--------------------------------------------------------------------------------------

function startFilterIV( photoIV ) {
	eval( "" +
		"try {" +
			"photoIV.filters(0).apply();" +
			"photoIV.style.visibility = 'visible';" +
			"photoIV.filters(0).play();" +
		"}" +
		"catch( e ) { photoIV.style.visibility = 'visible'; }" +
	"" );
}
//--------------------------------------------------------------------------------------

function setImgTitleIV( imgTitle ) {
	var ImgTitle = getObject( "imgTitleIV" );
	imgTitle = imgTitle.replaceLiteral( '^^', "'" );
	imgTitle = imgTitle.replaceLiteral( '^', '"' );
	ImgTitle.innerHTML = imgTitle;

}
