// function library
// (c) Naz Rajan 2006-2008
// naz@nazrajan.com
// Version 2008.0103

// Changes since 2007.0613:
// Removed images path from Gallery functions to allow separation of content from site
// Added extra [14], [15], [16] parameters and functionality to Gallery gConfig array
//

// -----------------------------
// MENU
function NR_menu(iMenu,iActive) {
var i;
var menuheight=(BrowserDetect("browser")=="Safari"?"20":mHeight[iMenu]);

	document.write("<table><tr><td bgcolor=\""+mBGColor[iMenu][0]+"\"><table border=\"0\"><tr>");
	for (i=1;i<=mItem[iMenu][0];i++) {
		document.write("<td height=\""+menuheight+"\" align=\""+mAlign[iMenu]+"\""+(null==mClass[iMenu][i]?"":(null==mBGColor[iMenu][i]?"":" bgcolor=\""+mBGColor[iMenu][i]+"\" ")));
		if (iActive==i) {
			document.write("class=\""+(null==mClass[iMenu][i]?"menuon":mClass[iMenu][i]+"on")+"\">"+mItem[iMenu][i]+" ");
		}
		else {
			if (mHref[iMenu][i]=="#") {
				document.write("><span class=\""+(null==mClass[iMenu][i]?"menu":mClass[iMenu][i])+"\">"+mItem[iMenu][i]+"</span>");
			}
			else {
				document.write("><a href=\""+(null==mHref[iMenu][i]?"":mHref[iMenu][i])+"\" class=\""+(null==mClass[iMenu][i]?"menu":mClass[iMenu][i])+"\" ");
				document.write((null==mMouseclick[iMenu][i]?"":(mMouseclick[iMenu][i]==""?"":" onClick=\""+mMouseclick[iMenu][i]+"\"")+" "));
				document.write((null==mMouseover[iMenu][i]?"":(mMouseover[iMenu][i]==""?"":" onMouseOver=\""+mMouseover[iMenu][i]+"\"")+" "));
				document.write((null==mMouseout[iMenu][i]?"":(mMouseout[iMenu][i]==""?"":" onMouseOut=\""+mMouseout[iMenu][i]+"\"")));
				document.write(">"+mItem[iMenu][i]+"</a>");
			}
		}
		document.write((null==mBelowText[iMenu][i]?"":(mBelowText[iMenu][i]==""?"":"<br><span class=\"menutext\">"+mBelowText[iMenu][i]+"</span>")));
		if (mDirection[iMenu]==0) {
			document.write((i==mItem[iMenu][0]?"":mSeparator[iMenu])+"</td>");
		}
		else {
			document.write("</td>"+(i==mItem[iMenu][0]?"":"</tr><tr>"));
		}
	}
	document.write("</tr></table></td></tr></table>");

}

// -----------------------------
// GALLERY
function NR_gallery(iGallery) {
/*
gConfig[iGallery][1]	SourceFolder
gConfig[iGallery][2]	FirstPicture
gConfig[iGallery][3]	GalleryRows
gConfig[iGallery][4]	GalleryCols
gConfig[iGallery][5]	PicWidth
gConfig[iGallery][6]	PicHeight
gConfig[iGallery][7]	ThumbWidth
gConfig[iGallery][8]	ThumbHeight
gConfig[iGallery][9]	ScrollbarPos (L/B/N)
gConfig[iGallery][10]	Mainpic
gConfig[iGallery][11]	GalleryText
gConfig[iGallery][12]	0=onMouseOver, 1=OnClick
gConfig[iGallery][13]	GalleryClickEvent function name
gConfig[iGallery][14]	ThumbMultiplier (1=default, <1=multiplier)

gConfig[iGallery][30] to [99]	Spare for custom use
*/
var tnum=1;
var gThumbHeader='thumbs/';

	if (gConfig[iGallery][9]=="T") {
		document.write("<table><tr><td>");
		document.write("<a onClick=\"NR_scrollImages("+iGallery+",-1);\"><img name='scrollleft' src='images/scrollleft.gif' width='17' height='20' border='0'></a>");
		document.write("</td><td><img src='images/spacer.gif' width='"+((gConfig[iGallery][4]*(gConfig[iGallery][7]+7))-45)+"' height='20'></td><td align='right'>");
		document.write("<a onClick=\"NR_scrollImages("+iGallery+",1);\"><img name='scrollright' src='images/scrollright.gif' width='17' height='20' border='0'></a>");
		document.write("</td></tr></table>");
	}
	else if (gConfig[iGallery][9]=="L") {
		document.write("<table><tr><td><table><tr><td valign=\"top\"><a onClick=\"NR_scrollImages("+iGallery+",-1);\"><img name=\"scrollup\" src=\"images/scrollup.gif\" width=\"19\" height=\"14\" ");
		document.write("border=\"0\"></a></td></tr><tr><td height=\""+((gConfig[iGallery][3]*gConfig[iGallery][8])-20)+"\">&nbsp;</td></tr><tr><td valign=\"bottom\"><a onClick=\"NR_scrollImages("+iGallery+",1);\"><img name=\"scrolldown\" src=\"images/scrolldown.gif\" width=\"19\" height=\"14\" border=\"0\"></a></td></tr></table></td><td><table>");
	}
	else {
		document.write("<table>");
	}
	for (r=1; r<=gConfig[iGallery][3]; r++) {
		document.write("<tr><td valign='top' width='"+(gConfig[iGallery][4]*(gConfig[iGallery][7]+10))+"' height='"+(gConfig[iGallery][8]+10)+"'>");
		for (c=1; c<=gConfig[iGallery][4]; c++) {
			document.write("<img id='thumb"+tnum+"' src='");
			if (tnum>gPicture[iGallery][0]) {
				document.write("images/spacer.gif");
				document.write("' width='"+gConfig[iGallery][7]+"' height='"+gConfig[iGallery][8]+"'>");
			}
			else {
				document.write(gConfig[iGallery][1]+"/"+gThumbHeader+gPicture[iGallery][tnum]+gSourceTail);
				document.write("' width='"+(gConfig[iGallery][14]<1?gPictureWidth[iGallery][tnum]:gConfig[iGallery][7])+"' height='"+(gConfig[iGallery][14]<1?gPictureHeight[iGallery][tnum]:gConfig[iGallery][8])+"' ");
				if (gConfig[iGallery][12]==0) {
					document.write("onMouseOver=\"");
					if (gConfig[iGallery][13]>"") {document.write(gConfig[iGallery][13]+"();")}
					document.write("NR_rolloverImage(\'"+gConfig[iGallery][10]+"\', "+iGallery+", "+tnum+")\" ");
				}
				else if (gConfig[iGallery][12]==1) {
					if (gConfig[iGallery][13]>"") {document.write(" onClick=\""+gConfig[iGallery][13]+"(\'"+gClick[iGallery][((r-1)*gConfig[iGallery][4])+c]+"\');\" ")}
					else {document.write(" onClick=\"NR_rolloverImage(\'"+gConfig[iGallery][10]+"\', "+iGallery+", "+tnum+")\" ")}
				}
				document.write(">");
				document.write("<img src='images/spacer.gif' width='10' border='0'>");
			}
			tnum++;
		}
		document.write("</td></tr>");
	}
	if (gConfig[iGallery][9]=="L") {
		document.write("</table></td></tr></table>");
	}
	else {
		if (gConfig[iGallery][9]=="B") {
			document.write("<tr><td><table><tr><td>");
			document.write("<a onClick=\"NR_scrollImages("+iGallery+",-1);\"><img name='scrollleft' src='images/scrollleft.gif' width='17' height='20' border='0'></a>");
			document.write("</td><td><img src='images/spacer.gif' width='"+((gConfig[iGallery][4]*(gConfig[iGallery][7]+7))-45)+"' height='20'></td><td align='right'>");
			document.write("<a onClick=\"NR_scrollImages("+iGallery+",1);\"><img name='scrollright' src='images/scrollright.gif' width='17' height='20' border='0'></a>");
			document.write("</td></tr></table></td></tr>");
		}
		else {
			document.write("</table>");
		}
	}
}

function NR_scrollImages(iGallery,sdirection) {
var t, n, imgname, imgsrc;
var imghdr=gConfig[iGallery][1]+"/", irows=gConfig[iGallery][3], icols=gConfig[iGallery][4];
var gThumbHeader='thumbs/';
	if (sdirection==0) {
		dFirstPictureOnPage=1;	// NR_jumpToSection("",100,1);
		n=dFirstPictureOnPage;
	}
	else {
		n = dFirstPictureOnPage+(icols*sdirection);
  		n = (n<gConfig[iGallery][2]?gConfig[iGallery][2]:n);   // no scroll after reaching start
	}
	if (n<=gPicture[iGallery][0]) {  // no scroll if reached end
		dFirstPictureOnPage = n;
   		for (t=1; t<=(irows*icols); t++) {
			imgname = "thumb" + t;
			if (n>gPicture[iGallery][0]) {
			  	imgsrc = "images/spacer.gif";
				document.getElementById(imgname).alt = "";  //dSiteName;
			}
			else {
				imgsrc = imghdr + gThumbHeader + gPicture[iGallery][n] + gSourceTail;
				//imgsrc = imghdr + gPicture[iGallery][n] + gSourceTail;
				document.getElementById(imgname).alt = "Click here to see a larger version of this image \r\n(picture "+n+", file "+gPicture[iGallery][n]+")";
			}
			document.getElementById(imgname).src = imgsrc;
			document.getElementById(imgname).width = gConfig[iGallery][7];
			document.getElementById(imgname).height = gConfig[iGallery][8];
			if (gConfig[iGallery][14]<1) {
				document.getElementById(imgname).width = gPictureWidth[iGallery][n];
				document.getElementById(imgname).height = gPictureHeight[iGallery][n];
			}
			n++;
		}
	}
}

function NR_showImage(imgname, iGallery, pnum) {
var imgsrc, imgnum, imghdr=gConfig[iGallery][1]+"/", i;

	imgsrc = document.getElementById("thumb"+pnum).src;
	imgnum = dFirstPictureOnPage+pnum-1;
	document.getElementById(imgname).src = "images/spacer.gif";   // clear current picture
	document.getElementById(imgname).width = gConfig[iGallery][5];  // PicWidth
	document.getElementById(imgname).height = gConfig[iGallery][6]; // PicHeight
	if (imgnum>gPicture[iGallery][0]) {  // spacer used, not a thumbnail
		if (gConfig[iGallery][11]>"") {
			document.getElementById(gConfig[iGallery][11]).innerHTML = "&nbsp;";
		}
	}
	else {	
		if (gConfig[iGallery][11]>"") {
			document.getElementById(gConfig[iGallery][11]).innerHTML = gText[iGallery][imgnum];
		}
		document.getElementById(imgname).src = imghdr + gPicture[iGallery][imgnum] + gSourceTail;
		if (gConfig[iGallery][14]<1) {
			document.getElementById(imgname).width = gPictureWidth[iGallery][n];
			document.getElementById(imgname).height = gPictureHeight[iGallery][n];
		}
		else {
			document.getElementById(imgname).width = gConfig[iGallery][7];
			document.getElementById(imgname).height = gConfig[iGallery][8];
		}
	}

}

function NR_rolloverImage(imgname, iGallery, pnum) {
	var imgsrc, imgnum, imghdr=gConfig[iGallery][1]+"/", imgtail=gSourceTail;
// diagnosegallery();

	imgnum = dFirstPictureOnPage+pnum-1;
	if (imgnum>gPicture[iGallery][0]) {  // means spacer used, not a thumbnail
		document.getElementById(imgname).src = "images/spacer.gif";   // clear current picture
		if (gConfig[iGallery][11]>"") {
			document.getElementById(gConfig[iGallery][11]).innerHTML = "&nbsp;";
		}
	}
	else {	
		document.getElementById(imgname).src = imghdr + gPicture[iGallery][imgnum] + imgtail;
		if (gConfig[iGallery][11]>"") {
			document.getElementById(gConfig[iGallery][11]).innerHTML = gText[iGallery][imgnum];
		}
	}
}

function diagnosegallery() {
//	alert(gConfig[1][1]);
//	alert(dFirstPictureOnPage);
//	alert(gPicture[1][0]);
//	alert(document.getElementById(gConfig[1][11]).src);
//	alert(document.getElementById('mainpic').src);
alert("DIAGNOSIS");
}


// -----------------------------
// IMAGE MANAGEMENT
function NR_swapImage(flder,imgid,ovr) {
	document.getElementById(imgid).src = (ovr ? flder+"/"+imgid+"_over.jpg" : flder+"/"+imgid+".jpg");
}


// -----------------------------
// USER INTERACTION
function disableRightClick(e)
{
  var message = "Right click has been disabled";
  
  if(!document.rightClickDisabled) // initialize
  {
    if(document.layers) 
    {
      document.captureEvents(Event.MOUSEDOWN);
      document.onmousedown = disableRightClick;
    }
    else document.oncontextmenu = disableRightClick;
    return document.rightClickDisabled = true;
  }
  if(document.layers || (document.getElementById && !document.all))
  {
    if (e.which==2||e.which==3)
    {
      alert(message);
      return false;
    }
  }
  else
  {
    alert(message);
    return false;
  }
}
disableRightClick();

// -----------------------------
// SITE PRESENTATION
function NR_movetocenter(bglayer,maxw) {
var	sw=screen.width, sh=screen.height;
	if (sw>sh) {  
		document.getElementById(bglayer).style.left=((sw-maxw)/2);
		if (document.getElementById(bglayer).style.left<0) {document.getElementById(bglayer).style.left=0;};
		if (sh>768) {
			document.getElementById(bglayer).style.top=((sh-750)/2);
			if (document.getElementById(bglayer).style.top<0) {document.getElementById(bglayer).style.top=0;};
		}
	}
	else {
		document.getElementById(bglayer).style.left=0;
		document.getElementById(bglayer).style.top=0;
	}
}

// -----------------------------
// SITE NAVIGATION
function NR_geturl() {
	var urlquery, urlterms;
	urlquery = location.href.split("?");
	return urlquery[1];
}

// -----------------------------
function NR_jumpToSection(param,jumpto,jumpdefault) {
	var urlquery, urlterms;
	urlquery = location.href.split("?");
	return (urlquery[1]==param ? jumpto : jumpdefault);
}

// -----------------------------
// STRING
function NR_FormatTitle(strText) {
	var strHTML, i=0;
	i = strText.indexOf('/');
	strHTML = strText.substr(0,i) + '<br><div class=\'body\'>';
	strText = strText.substr(i+1, strText.length-i);
	i = strText.indexOf('/');
	strHTML = strHTML + strText.substr(0,i) + '<br>' + strText.substr(i+1, strText.length-i) + '</div>';
	return strHTML;
}

function NR_replaceString(str,strfind,strrepl) {
	while(1 == 1) {
		if(str.indexOf(strfind)==-1) return str;
			str = str.replace(strfind,strrepl);
	}
}

function StringLeft(str, n) {
    if (n <= 0)
        return "";
    else if (n > String(str).length)
        return str;
    else
        return String(str).substring(0,n);
}

function StringRight(str, n) {
    if (n <= 0)
       return "";
    else if (n > String(str).length)
       return str;
    else {
       var iLen = String(str).length;
       return String(str).substring(iLen, iLen - n);
    }
}

// -----------------------------
// SLIDESHOW
function NR_RunSlideShow(divid,imageid,imageFiles,displaySecs) { 
	var imagesfolder;
	if (imageFiles.indexOf('/')>0) {
		imagesfolder = "";    // folder is part of filename so leave blank
	}
	else {
		imagesfolder = "images/";
	}
	var imageSeparator = imageFiles.indexOf(";"); 
	var nextImage = imageFiles.substring(0,imageSeparator); 
	
	if (BrowserDetect("browser")=="Firefox") {
		document.getElementById(imageid).style.visibility="hidden";
	}
	changeOpac(imageid, 0);
	blendimage(divid,imageid,imagesfolder+nextImage,100); 
	
	var futureImages = imageFiles.substring(imageSeparator+1,imageFiles.length)+ ';' + nextImage; 
	setTimeout("NR_RunSlideShow('"+divid+"','"+imageid+"','"+futureImages+"',"+displaySecs+")",displaySecs*1000); 
	
	// Cache the next image to improve performance. 
	imageSeparator = futureImages.indexOf(";"); 
	nextImage = futureImages.substring(0,imageSeparator);
 	if (dSlideCache[nextImage] == null) { 
		dSlideCache[nextImage] = new Image;
		dSlideCache[nextImage].style.visibility="hidden";
		dSlideCache[nextImage].src = imagesfolder+nextImage;
		//dSlideCache[nextImage].style.visibility="visible";
	} 
//	document.getElementById(imageid).style.visibility="visible";
}

function changeOpac(id, opacity) { 
	var object = document.getElementById(id).style;
	
	object.opacity = (opacity==0?0:opacity/101); 
	object.MozOpacity = (opacity==0?0:opacity/101); 
	object.KhtmlOpacity = (opacity==0?0:opacity/101); 
	object.filter = "alpha(opacity=" + opacity + ")";
} 

function blendimage(divid, imageid, imagefile, millisec) {
	var speed = Math.round(millisec/10); 
	var timer = 0; 
	//set the current image as background 
	document.getElementById(divid).style.backgroundImage = "url(" + document.getElementById(imageid).src + ")"; 
	changeOpac(imageid, 0); //make image transparent 
	document.getElementById(imageid).src = imagefile; //make new image
	//fade in image 
	for(i=0; i<100; i++) { 
		setTimeout("changeOpac('" + imageid + "'," + i + ")",(timer * speed)); 
		timer++; 
	} 
}

/*
function opacity(id, opacStart, opacEnd, millisec) { 
    //speed for each frame 
    var speed = Math.round(millisec / 100); 
    var timer = 0; 

    //determine the direction for the blending, if start and end are the same nothing happens 
    if(opacStart > opacEnd) { 
        for(i=opacStart; i>=opacEnd; i--) { 
            setTimeout("changeOpac('' + id + '',' + i + ')",(timer * speed)); 
            timer++; 
        } 
    } else if(opacStart<opacEnd) { 
        for(i=opacStart; i<=opacEnd; i++) 
            { 
            setTimeout("changeOpac('" + id + "'," + i + ")",(timer * speed)); 
            timer++; 
        } 
    } 
}

function blendimage(divid, imageid, imagefile, millisec) { 
    var speed = Math.round(millisec / 100); 
    var timer = 0; 
     
    //set the current image as background 
    document.getElementById(divid).style.backgroundImage = "url(" + document.getElementById(imageid).src + ")"; 
     
    //make image transparent 
    changeOpac(imageid, 0); 
     
    //make new image 
    document.getElementById(imageid).src = imagefile; 

    //fade in image 
    for(i = 0; i <= 100; i++) { 
        setTimeout("changeOpac('" + imageid + "'," + i + ")",(timer * speed)); 
        timer++; 
    } 
} 

*/


// -----------------------------
// BROWSER
// Detect Browser type and version
function BrowserDetect(nOption) {		// nOption = browser | version | os

var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{	string: navigator.vendor,
			subString: "Apple",
			identity: "Safari"
		},
		{	prop: window.opera,
			identity: "Opera"
		},
		{	string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{	string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{	string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{	string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{	// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{	string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{	string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{	// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{	string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{	string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{	string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

	};
	BrowserDetect.init();

	if (nOption=="browser") {return BrowserDetect.browser;}
	else if (nOption=="version") {return BrowserDetect.version;}
	else if (nOption=="os") {return BrowserDetect.OS;}
	else return "";
}

// -----------------------------
