/*////////////////////////////////////////////////////////////
JavaScript Code Library
Developed by GrafX Design Division Pty Ltd
http://www.grafx.com.au

Last Checked In By : Richard Czeiger
Public Revision No : 1.0

The software and related user documentation are 
protected under copyright laws and remain the sole
property of GrafX Design Division. Full license is
available on the GrafX Design Division web site or
in the original download.

Technical support is available via the GrafX web site at 
http://www.grafx.com.au
////////////////////////////////////////////////////////////*/



// Get the hacked stylesheet
document.write('<style type="text/css">@import url("styles/hacks.css");</style>'); 



// Suppress JavaScript Errors
window.onerror=new Function("return true")



// Set the Status Bar Message
var statusMsg = 'Georges Restaurants'; 
window.defaultStatus=statusMsg;



// Fixes IE6 CSS Rendering Bug
if (document.all && window.attachEvent) window.attachEvent("onload", fixWinIE);
function fixWinIE() {
	if (document.body.scrollHeight < document.body.offsetHeight) { document.body.style.display = 'block'; }
}



// Spam Suppression for Emails
function stopSpam(name, domain, subject) {
	var symbol = '@';
	// Took out the Subject due to MS fault in Outlook Express (Source - http://support.microsoft.com/kb/q182985/ )
	// document.write('<a href="mailto:' + name + symbol + domain + '&subject=' + subject + '">' + name + symbol + domain + '</a>');
	document.write('<a href="mailto:' + name + symbol + domain + '">' + name + symbol + domain + '</a>');
}



// XHTML External Link Script
function externalLinks() { 
	if (!document.getElementsByTagName) return; 
	var anchors = document.getElementsByTagName("a"); 
	for (var i=0; i<anchors.length; i++) { 
		var anchor = anchors[i]; 
		if (anchor.getAttribute("href") && anchor.getAttribute("rel") == "external") { 
			anchor.target = "_blank"; 
		}
		if (anchor.getAttribute("href") && anchor.getAttribute("rel") == "image") { 
			var link = anchor.getAttribute("href");
			anchor.onclick = function(){ PopupGallery(this.href); return false; }
		}
	} 
} 



// Toggle Function
function toggle(obj) {
	if (obj.style.display == "none") {
		obj.style.display = "";
	} else {
		obj.style.display = "none";
	}
}



// Pop Up Window
function Popup(sPicURL) {
	window.open(sPicURL, 'popUp', 'resizable=1,width=400,height=500');
}



// Pop Up Image Window
function PopupPic(sPicURL, sPicTitle) {
	window.open('image.html?'+sPicURL+'&'+sPicTitle, 'imagePopUp', 'resizable=1,width=20,height=20');
}



// Pop Up Image Window
function PopupGallery(sPicURL) {
	window.open(sPicURL, 'galleryPopUp', 'resizable=1,width=700,height=500');
}



// Swap Background for Generic Pages
function swapBG() {
	var min = 1;
	var max = 14;
	randomNumber = (Math.round(Math.random()*(max-min)))+min;
	var random = (randomNumber < 10) ? '0' + randomNumber : randomNumber;

	if (document.getElementById("general")) {
		document.getElementById("container").style.backgroundImage = 'url(images/bgContainer' + random + '.jpg)';
	}
}



// Focus on Input Fields
// inputFocus = function () {
function inputFocus() {
	var focusEl = document.getElementsByTagName("INPUT");
	for (var i=0; i<focusEl.length; i++) {
		if ((focusEl[i].getAttribute("type") == "text")||(focusEl[i].getAttribute("type") == "password")) {
			focusEl[i].onfocus=function() {
				this.className+="sffocus";
			}
			focusEl[i].onblur=function() {
				this.className=this.className.replace(new RegExp("sffocus\\b"), "");
			}
		}
	}
	var focusTx = document.getElementsByTagName("TEXTAREA");
	for (var i=0; i<focusTx.length; i++) {
		focusTx[i].onfocus=function() {
			this.className+="sffocus";
		}
		focusTx[i].onblur=function() {
			this.className=this.className.replace(new RegExp("sffocus\\b"), "");
		}
	}
}
// if (window.attachEvent) window.attachEvent("onload", inputFocus);



// Global Cookie Function
function setCookie(NameOfCookie, value, expiredays, path, domain, secure) {
	//The first lines in the function converts the number of days to a valid date.
	var ExpireDate = new Date();
	ExpireDate.setTime(ExpireDate.getTime() + (expiredays*24*3600*1000));

	//The next line stores the cookie, simple by assigning
	//the values to the document.cookie-object
	//Note the date is converted to Greenwich Meantime using
	//the 'toGMTstring()'-function

	document.cookie = NameOfCookie +"="+ escape(value) +
	((expiredays == null)? "": ";expires="+ ExpireDate.toGMTString()) +
	((path == null)? "": (";path=" + path)) +
	((domain == null) ? "" : (";domain=" + domein)) +
	((secure == true) ?";secure":"");
}

function getCookie(NameOfCookie) {
	if(document.cookie.length > 0) {
		begin = document.cookie.indexOf(NameOfCookie+"=");
		if(begin != -1) {
			// our cookie was set.
			// The value stored in the cookie is returned from the function
			begin += NameOfCookie.length + 1;
			end = document.cookie.indexOf(";",begin);
			if(end == -1) end = document.cookie.length;
			return unescape(document.cookie.substring(begin,end));
		}
	}
	return null;
	// Our cookie was not set.
	// The value "null" is returned from the function
}

function delCookie(NameOfCookie) {
	// The function simply checks if the cookie is set. If so expiredate is set to Jan. 1st 1970
	if(getCookie(NameOfCookie)) {
		document.cookie = NameOfCookie +"=" +
		";expires= Thu, 01-Jan-70 00:00:01 GMT";
	}
}



// Flash Detection
// moock fpi [f.lash p.layer i.nspector]
// version: 1.3.7
// written by colin moock
// code maintained at: http://www.moock.org/webdesign/flash/detection/moockfpi/
// terms of use posted at: http://www.moock.org/terms/

// These are the user defined globals. Modify the following variables to customize the inspection behaviour.

var requiredVersion = 4;   // Version the user needs to view site (max 9, min 2)
var useRedirect = false;    // Flag indicating whether or not to load a separate page based on detection results. Set to true to load a separate page. Set to false to embed the movie or alternate html directly into this page.
                           
// Only set next three vars if useRedirect is true...
var flashPage = "movie.html"    // The location of the flash movie page
var noFlashPage = "noflash.html"  // Page displayed if the user doesn't have the plugin or we can't detect it.
var upgradePage = "upgrade.html"  // Page displayed if we detect an old plugin

// System globals
var flash2Installed = false;    // boolean. true if flash 2 is installed
var flash3Installed = false;    // boolean. true if flash 3 is installed
var flash4Installed = false;    // boolean. true if flash 4 is installed
var flash5Installed = false;    // boolean. true if flash 5 is installed
var flash6Installed = false;    // boolean. true if flash 6 is installed
var flash7Installed = false;    // boolean. true if flash 7 is installed
var flash8Installed = false;    // boolean. true if flash 8 is installed
var flash9Installed = false;    // boolean. true if flash 9 is installed
var maxVersion = 9;             // highest version we can actually detect
var actualVersion = 0;          // version the user really has
var hasRightVersion = false;    // boolean. true if it's safe to embed the flash movie in the page
var jsVersion = 1.0;            // the version of javascript supported

// Check the browser...we're looking for ie/win, but not aol
var isIE  = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;    // true if we're on ie
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false; // true if we're on windows

// This is a js1.1 code block, so make note that js1.1 is supported.
jsVersion = 1.1;

// Write vbscript detection on ie win. IE on Windows doesn't support regular JavaScript plugins array detection.
if(isIE && isWin){
  document.write('<SCR' + 'IPT LANGUAGE=VBScript\> \n');
  document.write('on error resume next \n');
  document.write('flash2Installed = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.2"))) \n');
  document.write('flash3Installed = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.3"))) \n');
  document.write('flash4Installed = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.4"))) \n');
  document.write('flash5Installed = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.5"))) \n');  
  document.write('flash6Installed = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.6"))) \n');  
  document.write('flash7Installed = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.7"))) \n');
  document.write('flash8Installed = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.8"))) \n');
  document.write('flash9Installed = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.9"))) \n');
  document.write('<\/SCR' + 'IPT\> \n'); // break up end tag so it doesn't end our script
}

// Next comes the standard javascript detection that uses the navigator.plugins array. We pack the detector into a function so that it preloads before being run.

function detectFlash() {  
  // If navigator.plugins exists...
  if (navigator.plugins) {
    // ...then check for flash 2 or flash 3+.
    if (navigator.plugins["Shockwave Flash 2.0"]
        || navigator.plugins["Shockwave Flash"]) {

      // Some version of Flash was found. Time to figure out which.
      
      // Set convenient references to flash 2 and the plugin description.
      var isVersion2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
      var flashDescription = navigator.plugins["Shockwave Flash" + isVersion2].description;

      // DEBUGGING: uncomment next line to see the actual description.
      // alert("Flash plugin description: " + flashDescription);
      
      // A flash plugin-description looks like this: Shockwave Flash 4.0 r5
      // We can get the major version by grabbing the character before the period note that we don't bother with minor version detection. Do that in your movie with $version or getVersion().
      var flashVersion = parseInt(flashDescription.substring(16));

      // We found the version, now set appropriate version flags. Make sure to use >= on the highest version so we don't prevent future version users from entering the site.
      flash2Installed = flashVersion == 2;    
      flash3Installed = flashVersion == 3;
      flash4Installed = flashVersion == 4;
      flash5Installed = flashVersion == 5;
      flash6Installed = flashVersion == 6;
      flash7Installed = flashVersion == 7;
      flash8Installed = flashVersion == 8;
      flash9Installed = flashVersion >= 9;
    }
  }
  
  // Loop through all versions we're checking, and set actualVersion to highest detected version.
  for (var i = 2; i <= maxVersion; i++) {  
    if (eval("flash" + i + "Installed") == true) actualVersion = i;
  }
  
  // If we're on msntv (formerly webtv), the version supported is 4 (as of January 1, 2004). Note that we don't bother sniffing varieties of msntv. You could if you were sadistic...
  if(navigator.userAgent.indexOf("WebTV") != -1) actualVersion = 4;  
  
  // DEBUGGING: uncomment next line to display flash version
  // alert("version detected: " + actualVersion);

  // We're finished getting the version on all browsers that support detection. Time to take the appropriate action.

  // If the user has a new enough version...
  if (actualVersion >= requiredVersion) {
    // ...then we'll redirect them to the flash page, unless we've been told not to redirect.
    if (useRedirect) {
      // Need javascript1.1 to do location.replace
      if(jsVersion > 1.0) {
        // It's safe to use replace(). Good...we won't break the back button.
        window.location.replace(flashPage);  
      } else {
        // JavaScript version is too old, so use .location to load the flash page.
        window.location = flashPage;
      }
    }
    
    // If we got here, we didn't redirect. So we make a note that we should write out the object/embed tags later.
    hasRightVersion = true;                
  } else {  
    // The user doesn't have a new enough version. If the redirection option is on, load the appropriate alternate page.
    if (useRedirect) {
      // Do the same .replace() call only if js1.1+ is available.
      if(jsVersion > 1.0) {
        window.location.replace((actualVersion >= 2) ? upgradePage : noFlashPage);
      } else {
        window.location = (actualVersion >= 2) ? upgradePage : noFlashPage;
      }
    }
  }
}

detectFlash();  // call our detector now that it's safely loaded. 

// In this section we set up the content to be placed dynamically on the page. Customize movie tags and alternate html content below.

function embedFlash(flashName,flashWidth,flashHeight) {
	var oeTags = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="' + flashWidth + '" height="' + flashHeight + '" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab">'
	+ '<param name="movie" value="media/' + flashName + '.swf">'
	+ '<param name="play" value="true">'
	+ '<param name="loop" value="false">'
	+ '<param name="quality" value="high">'
	+ '<param name="wmode" value="transparent">'
	+ '<param name="menu" value="false">'
	+ '<embed src="' + flashName + '.swf" width="' + flashWidth + '" height="' + flashHeight + '" play="true" loop="false" quality="high" wmode="transparent" menu="false" type="application/x-shockwave-flash" plauginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"><\/embed>'
	+ '<\/object>';
	var alternateContent = '<img src="images/' + flashName + '.gif" width="' + flashWidth + '" height="' + flashHeight + '">';
	
	if (!useRedirect) {    // if dynamic embedding is turned on
		if(hasRightVersion) {  // if we've detected an acceptable version
			document.write(oeTags);   // embed the flash movie
		} else {  // flash is too old or we can't detect the plugin
			document.write(alternateContent);  // insert non-flash content
		}
	}
}



// Form Validation
function isValid(string,allowed) {
    for (var i=0; i < string.length; i++) {
       if (allowed.indexOf(string.charAt(i)) == -1)
          return false;
    }
    return true;
}

var alpha = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; // Alphabetical only
var number = '0123456789'; // Numbers only
var money = '0123456789.'; // Money only

// Converts all First Letters in a Word to Capitals
function toUpper() {
    var a = document.form1.text1.value.split(/\s+/g); // split the sentence into an array of words
    for (i = 0 ; i < a.length ; i ++ ) {
        var firstLetter = a[i].substring(0, 1).toUpperCase();
        var restOfWord = a[i].substring(1);
        // var restOfWord = a[i].substring(1, a.length).toLowerCase();
        a[i] = firstLetter + restOfWord; // re-assign it back to the array and move on
    }
    document.form1.text1.value = a.join(' '); // join it back together
}

// Checks to see if email address has an '@' or a '.'
function checkEmail(address) {
	if (address.indexOf("@") < 0 || address.indexOf(".") < 0) {
		// Do something is present 
	} else {
		// Do something else
	}
}



// Style Switching 
function switchStyles() {
	if (document.body.clientWidth < 200 ) {
		//helpme = document.body.clientWidth;
		//alert(helpme);
		setActiveStyleSheet('styles/mobile.css');
	}
}

function setActiveStyleSheet(newStyle) {
	var i, a, main;
	for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
		if(a.getAttribute("media") == 'screen') {
			a.setAttribute("href", newStyle);
		}
	}

}





// Multiple Onload Functions to be called
function multipleOnload() {
	switchStyles();
	externalLinks();
	// inputFocus();
	swapBG();
}
window.onload = multipleOnload;