// JavaScript Document for all Pages on Greenstar

/****************************************************
* Global Vars										*
*													*
*****************************************************/

var directory = "";




/****************************************************
* Call Handlers										*
*													*
*****************************************************/


function addEventFunc(el, evtType, func, capture){
	var ret = 0;
	
	if (el.addEventFuncListener){
		ret = el.addEventFuncListener(evtType, func, capture);
	} else if (el.attachEvent){
		ret = el.attachEvent('on' + evtType, func);
	} else { el['on' + evtType] = func; }
	
	return ret;
}





/****************************************************
* Browser Detection									*
*													*
*****************************************************/


function Detect() {
	
	agent 	= navigator.userAgent.toLowerCase();
						
	// detect OS
	this.isMac		= (agent.indexOf('mac') != -1);
	this.isWin		= (agent.indexOf('win') != -1);
	this.isWin2k	= (this.isWin && (agent.indexOf('nt 5') != -1));
	this.isWinSP2	= (this.isWin && (agent.indexOf('xp') != -1 || agent.indexOf('sv1') != -1));
	this.isOther	= (agent.indexOf('unix') != -1 || agent.indexOf('sunos') != -1 || agent.indexOf('bsd') != -1 || agent.indexOf('x11') != -1 || agent.indexOf('linux') != -1);
	
	// detect browser
	this.isSafari	= (agent.indexOf('safari') != -1);
	this.isSafari2 = (this.isSafari && (parseFloat(agent.substring(agent.indexOf("applewebkit/")+"applewebkit/".length,agent.length).substring(0,agent.substring(agent.indexOf("applewebkit/")+"applewebkit/".length,agent.length).indexOf(' '))) >=  300));
	this.isOpera	= (agent.indexOf('opera') != -1);
	this.isNN		= (agent.indexOf('netscape') != -1);
	this.isFF3		= (agent.indexOf('firefox/3') != -1);
	this.isIE		= (agent.indexOf('msie') != -1);
	this.isIE6		= (agent.indexOf('msie 6.') != -1);
	this.isIE5		= (agent.indexOf('msie 5.') != -1);
}

var browser = new Detect();




/****************************************************
* Return Objects By ClassName						*
*													*
*****************************************************/

function getElementsByClassName(strClassName, obj) {
    var ar = arguments[2] || [];
    var re = new RegExp("\\b" + strClassName + "\\b", "g");

    if (re.test(obj.className)) {
        ar.push(obj);
    }
    for (var i=0; i<obj.childNodes.length; i++){
        getElementsByClassName(strClassName, obj.childNodes[i], ar);
	}
    
    return ar;
}






/****************************************************
* Grab all stylesheets								*
*													*
*****************************************************/

function getAllSheets(){
	var Lt, St, rel;
	
	if(!window.ScriptEngine && navigator.__ice_version){
		return document.styleSheets; 
	}
	if(document.getElementsByTagName){
		Lt = document.getElementsByTagName('link');
		St = document.getElementsByTagName('style');
	} else if(document.styleSheets && document.all){
		Lt = document.all.tags('LINK');
		St = document.all.tags('STYLE');
	} else { return []; }
	
	for(var x=0, os=[]; Lt[x]; x++){
		if(Lt[x].rel){ rel = Lt[x].rel;
		} else if(Lt[x].getAttribute) { rel = Lt[x].getAttribute('rel');
		} else { rel = ''; }
	
		if(typeof(rel) == 'string' && rel.toLowerCase().indexOf('style') + 1){
			os[os.length] = Lt[x];
		}
	}
	
	for(x=0; St[x]; x++){ os[os.length] = St[x]; } return os;
}


function changeStyle(){
	for(var x=0, ss=getAllSheets(); ss[x]; x++){
		if(ss[x].title){
			ss[x].disabled = true;
		}
		
		for(var y=0; y<arguments.length; y++){
			if(ss[x].title == arguments[y]){
				ss[x].disabled = false;
			}
		}
	}
	
	if(!ss.length) { alert('Your browser cannot change stylesheets'); }
}






/****************************************************
* Primary Navigation Rollover						*
*													*
*****************************************************/

function priNavRoll(e){
	if (!e){ e = window.event; }
	var tgt = e.target || e.srcElement;
}





/****************************************************
* Handle mousedown on free space, i.e. losing focus	*
* on HTML elements									*
*													*
*****************************************************/

function loseFocus(e){	
	var inputs = document.getElementsByTagName("input");
	for(var i=0;i<inputs.length;i++){
		if(inputs[i].value == "" && inputs[i].getAttribute("busy") == 0){			
			switch(inputs[i].name){
				case "keyword":
					inputs[i].value = "Keyword";
					break;    
				case "username":
					inputs[i].value = "Username";
					break;
				case "password":					
					try {
						inputs[i].setAttribute("type", "text");
					} catch(err){
					   var new_input = document.createElement('input');
					   new_input.setAttribute('type','text');
					   new_input.setAttribute('name',inputs[i].getAttribute('name'));
					   new_input.setAttribute('id',inputs[i].getAttribute('id'));
					   new_input.setAttribute('busy',inputs[i].getAttribute('busy'));
					   inputs[i].parentNode.replaceChild(new_input,inputs[i]);
					   addEventFunc(new_input, "mousedown", updateInputs, false);
					   addEventFunc(new_input, "focus", updateInputs, false);
					   addEventFunc(new_input, "blur", inputBlur, false);
					}
					inputs[i].value = "Password";
					break;
				default:
			}
		}
	}
}







/****************************************************
* Event Handlers									*
*													*
*****************************************************/

function addListeners(){	
	var as = document.getElementsByTagName("a");
	for(var i=0;i<as.length;i++){
		as[i].hideFocus = true;
	}
	
	var imgs = document.getElementsByTagName("img");
	for(i=0;i<imgs.length;i++){
		if(imgs[i].parentNode.parentNode){
			if(imgs[i].parentNode.parentNode.className.indexOf("book-now") > -1 && imgs[i].parentNode.parentNode.nodeName.toLowerCase() == "td"){
				addEventFunc(imgs[i], "mouseover", inputRoll, false);
				addEventFunc(imgs[i], "mouseout", inputRoll, false);
			}
		}
	}
	
	
	
	if(browser.isIE){ addEventFunc(document.body, "mousedown", loseFocus, false); }
}





/****************************************************
* Get Flash Object									*
*													*
*****************************************************/

function getFlashMovieObject(movieName){
  if (window.document[movieName]){
	  return window.document[movieName];
  }
  if (navigator.appName.indexOf("Microsoft Internet")==-1){
    if (document.embeds && document.embeds[movieName]){
      return document.embeds[movieName];
	}
  }
  else // if (navigator.appName.indexOf("Microsoft Internet")!=-1)
  {
    return document.getElementById(movieName);
  }
}





/****************************************************
* Write Out JS Browser Stylesheet					*
*													*
*****************************************************/

function writeJsStyles(w){
	var sSheets = document.getElementsByTagName("link");
	var dir = "";

	if(sSheets[0]){
		if(sSheets[0].href.indexOf("css") != -1){
			dir = sSheets[0].href.substring(0,sSheets[0].href.indexOf("css"));
		}
	}

	if(w==1){ document.write('<link href="' + dir + 'css/js-dependant.css" rel="stylesheet" type="text/css" media="screen" />'); }
	if(browser.isSafari){ document.write('<link href="' + dir + 'css/safari.css" rel="stylesheet" type="text/css" media="screen" />'); }
	if(browser.isIE5 || browser.isIE6){ document.write('<link href="' + dir + 'css/ie.css" rel="stylesheet" type="text/css" media="screen" />'); }
	
	directory = dir;
}





/****************************************************
* Preload Rollover Imagery							*
*													*
*****************************************************/

function preloadRollovers(){
	var rImages = ['about-us/arrow2.gif'];
	var pImages = [];
	if(document.images){
		for(var i=0; i<rImages.length; i++){
			pImages[i] = new Image();
			pImages[i].src = directory + "images/" + rImages[i];			
		}
	}
}






/****************************************************
* Fix white gap on IE6 Primary Navigation			*
*													*
*****************************************************/

function fixIE(){
	var el;
	if(document.getElementById("primary-navigation")){
		var bases = getElementsByClassName("base", document.getElementById("primary-navigation"));
		for(var i=0; i<bases.length; i++){
			el = document.createElement("div");
			el.className = "ie-fix";
			bases[i].appendChild(el);
		}
	}
}






/****************************************************
* On Page Load Functions							*
*													*
*****************************************************/

function init(){
	addListeners();
	fixIE();
}





writeJsStyles(1);
preloadRollovers();
addEventFunc(window, "load", init, false);
