/* $Header:   //rdp098f4/pvcs6.6/pvcs_archives/e-commerce/natwest.com/archives/web/common/javascript/library.js-arc   1.13   Jun 16 2003 14:46:42   Perryp  $ */
// browser/ platform detection
var w3c=(document.getElementById);
var NS4=(document.layers);
var browserName=navigator.userAgent.toLowerCase()+" ";
var opera = browserName.indexOf("opera")!=-1;
var isNetscape = browserName.indexOf("netscape")!=-1;
var mac=navigator.userAgent.toLowerCase()+" ";
mac=mac.indexOf("mac")!=-1;
var intVersion = parseInt(navigator.appVersion);

var IE   = ((browserName.indexOf("msie") != -1)&& (browserName.indexOf('opera')==-1) && (browserName.indexOf('webtv')==-1));
var IE3  = (IE && (intVersion < 4));
//For versions of IE of 4 or greater retrieve the real version number from later in the string
if (IE && !IE3) {
   var iPos1 = browserName.indexOf("msie ") + 5;
   var realIEVersion = parseInt(browserName.substr(iPos1,3));
}
var IE4  = (IE && (intVersion == 4) && (realIEVersion == 4) );
var IE4down  = (IE  && (IE4 || IE3));

// set rollover colours for left hand navigation
var rgbNAV_ROLLOVER_ON="#9999FF";
var rgbNAV_ROLLOVER_L1_OFF="#000033";	
var rgbNAV_ROLLOVER_L2_OFF="#666699"	
var rgbNAV_ROLLOVER_L3_OFF="#666699";	
var rgbNAV_ROLLOVER_L4_OFF="#9999CC";
var rgbNAV_ROLLOVER_DEFAULT_OFF = "#9999CC";

// set rollover colours for arrow boxes
var STRARROWROLLOVERON // Value allocated from ids in the XML
var STRARROWROLLOVEROFF="#FFFFFF";
var STRARROWTEXTROLLOVERON="#FFFFFF";
var STRARROWTEXTROLLOVEROFF="#000000";

var BLN_POPUP_CODE_EXECUTED = false // toggle used to stop event listening browsers running openWindow function twice
var BLN_BACK_EXECUTED = false // toggle used to stop event listening browsers running goBack function twice

var POP_WINDOW_HEIGHT = 400;
var POP_WINDOW_WIDTH = 500;
var sector;

// called from within each page
function setUp() {
	if (w3c)	{
      setEventListeners();  // add event listeners

      //Allocate rollover colour based on sector value
      switch (sector) {
      	case 'personal': STRARROWROLLOVERON="#666699";
      	break
      	default: STRARROWROLLOVERON="#666699";
      }
   }
}

// add event listeners
function setEventListeners() {
	var objDivCollection = document.getElementsByTagName("div");
	var intNoOfDivs = objDivCollection.length;
	for (var i=0;i<intNoOfDivs;i++) {
		// left nav
		if (objDivCollection[i].id.indexOf("LN_")==0) {
			addEvent(objDivCollection[i].id ,"click",LeftNav_heardClick,false);
			addEvent(objDivCollection[i].id ,"mouseover",LeftNav_heardOver,false);
			addEvent(objDivCollection[i].id ,"mouseout",LeftNav_heardOut,false);
		}
		// arrow links
		if (objDivCollection[i].id.indexOf("AR_")>=0) {
			addEvent(objDivCollection[i].id ,"click",arrow_heardClick,false);
			addEvent(objDivCollection[i].id ,"mouseover",arrow_heardOver,false);
			addEvent(objDivCollection[i].id ,"mouseout",arrow_heardOut,false);
         
         // Suss out the sector from the first few chars of id
         sector = objDivCollection[i].id.substring(0,objDivCollection[i].id.indexOf("AR_"));
		}
	}
	// Need to add event listeners to spans too.
	var objSpanCollection = document.getElementsByTagName("span");
	var intNoOfSpan = objSpanCollection.length;
	for (var i=0;i<intNoOfSpan;i++) {
		// left nav
		if (objSpanCollection[i].id.indexOf("LN_")==0) {
			addEvent(objSpanCollection[i].id ,"click",LeftNav_heardClick,false);
			addEvent(objSpanCollection[i].id ,"mouseover",LeftNav_heardOver,false);
			addEvent(objSpanCollection[i].id ,"mouseout",LeftNav_heardOut,false);
		}
	}
}

///////////////////////////////////////////////////////////////////////
// find the intended href of a click in a div tag
// div tags must be formated correctly
// will work on left hand nav and boxed arrows
// objId = ID of div
function processClick(objId){
 var objTargetDiv =  document.getElementById(objId)
 var objTargetSpan = objTargetDiv.getElementsByTagName("span")
 var strTargetHref = objTargetSpan[0].firstChild.href

 // find if it is intended to be a popup - marked by presence of 'target' attribute
 var strIsPopup = objTargetSpan[0].firstChild.target
 if (strIsPopup.length > 0) { // intended for popup
        if (!BLN_POPUP_CODE_EXECUTED)   {// the popup code has not already been run
      
            	// pull back the contents of the onClick inline event tag for this element and execute it
            	var strOnClick = objTargetSpan[0].firstChild.onclick+"";
            	strOnClick = strOnClick.substring(strOnClick.indexOf("return")+7,strOnClick.lastIndexOf("}"));
            	eval(strOnClick);
        }
 } else {
    // Check to see if it's a back button. If so, run the goBack function if it hasn't already been fired
   if (strTargetHref.indexOf("goBack") > 0) {
     if (!BLN_BACK_EXECUTED) { goBack(); }
   } else {
     document.location.href = strTargetHref; 
   }
 }
 BLN_POPUP_CODE_EXECUTED = false; // re-set the toggle
 BLN_BACK_EXECUTED = false; // re-set the toggle
 return false;
}

///////////////////////////////////////////////////////////////////////
// find the intended href of a click in a div tag
// div tags must be formated correctly
// will work on left hand nav and boxed arrows
// objId = ID of div
function LnClick(objId) {
 var objTargetDiv =  document.getElementById(objId)
 var objTargetSpan = objTargetDiv.getElementsByTagName("span")
 var objTargetHref = objTargetSpan[0].firstChild.href
 
 if (objTargetHref!=null)  { document.location.href = objTargetHref; }
 return false;
}

// START : Left hand Navigation
// left nav - heard mouse click
var NAV_HANDLED_CLICK = false;
function LeftNav_heardClick(e) {
	if (false == NAV_HANDLED_CLICK){
		if (isNetscape) {	LnClick(e.currentTarget.id);}
		else { LnClick(window.event.srcElement.id);}
		NAV_HANDLED_CLICK = true;
	}
	return false;
}

// left nav - heard mouseover
function LeftNav_heardOver(e) {
	if (isNetscape){ LnSwitch(e.currentTarget.id,1);}
   else{ LnSwitch(window.event.srcElement.id,1);}
}

// left nav - heard moseout
function LeftNav_heardOut(e) {
	if (isNetscape) {LnSwitch(e.currentTarget.id,0);}
	else { LnSwitch(window.event.srcElement.id,0);}
}

//  Main navigation highlighting
function LnSwitch(id, strState) {
	if (id) {
		var intLevel = parseInt(id.charAt(3));
		var rolloverColor;
		
		if (strState) {
			// mouse pointer moved onto.
			rolloverColor = rgbNAV_ROLLOVER_ON;
		}else{
			// mouse pointer moved off of.
			switch (intLevel){
				case 1:
					rolloverColor = rgbNAV_ROLLOVER_L1_OFF; break;
				case 2:
					rolloverColor = rgbNAV_ROLLOVER_L2_OFF; break;
				case 3:
					rolloverColor = rgbNAV_ROLLOVER_L3_OFF; break;
				case 4:
					rolloverColor = rgbNAV_ROLLOVER_L4_OFF; break;
				default :
					rolloverColor = rgbNAV_ROLLOVER_DEFAULT_OFF;	break;
			}
		}
		document.getElementById(id).style.backgroundColor=rolloverColor;
	}
}
// END : Left hand Navigation

// START : Arrow links
// arrow - heard mouse click
function arrow_heardClick(e) {
	if (isNetscape) { processClick(e.currentTarget.id);}
	else	{ processClick(window.event.srcElement.id);}
}

// arrow - heard mouseover
function arrow_heardOver(e) {
	if (isNetscape) {	ArSwitch(e.currentTarget.id,1);}
   else{ ArSwitch(window.event.srcElement.id,1);}
}

// arrow - heard mouseout
function arrow_heardOut(e) {
	if (isNetscape) {ArSwitch(e.currentTarget.id,0);}
	else 	{ArSwitch(window.event.srcElement.id,0);}
}

//  arrow highlighting
function ArSwitch(id, strState) {
	if (id) {
		var rolloverColor;
		if (strState) {
			rolloverColor = STRARROWROLLOVERON;
			textColour = STRARROWTEXTROLLOVERON;
		} else {
			rolloverColor = STRARROWROLLOVEROFF;
			textColour = STRARROWTEXTROLLOVEROFF;
		}
		var objTargetDiv =  document.getElementById(id);
		var objTargetSpan = objTargetDiv.getElementsByTagName("span");
		
		objTargetSpan[0].firstChild.style.color=textColour;
		document.getElementById(id).style.backgroundColor=rolloverColor;
	}
}
// END : Arrow links

///////////////////////////////////////////////////////////////////////////////
// add eventListener to object
// only designed to work with IE 5 up and Netscape 6 up
//
// obj = object name
// eventType = 'click, mouseover, mouseout etc.' - NB: all lower case and no 'on' prefix
// funct = the function to be called when event is detected
// Capture = true or false - indicates if listening done on-route to event or when bubbling up (NS6 only)
// returns true or false depending if event listner was successfully added
function addEvent(obj,eventType,funct,Capture){
	var objRef=document.getElementById(obj);
	if (objRef.attachEvent) {   //IE5+
		var success=objRef.attachEvent("on" + eventType, funct);
		return success;
	}
	else if (objRef.addEventListener) {   //NS6
		objRef.addEventListener(eventType,funct,Capture);
		return true;
	}
	else
	{
		// unable to attach event
		return false;
	}
}

function writeFlashOrOther2(flashSrc,height,width,otherSrc) {
var strHtml = "";
if (hasFlash) {
   strHtml += '<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=4,0,28,0" WIDTH="' + width + '" HEIGHT="' + height + '" tabindex="-1">';
   strHtml += '<PARAM NAME="movie" VALUE="' + flashSrc + '" />';
   strHtml += '<PARAM NAME="quality" VALUE="high" />';
   strHtml += '<EMBED src="' + flashSrc + '" quality="high" WIDTH="' + width +  '"   HEIGHT="' + height + '" swLiveConnect="true" tabindex="-1" TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash">';
   strHtml += '</EMBED></OBJECT>';
} else {
   strHtml += otherSrc;
}
document.write(strHtml);
}

/* XXXXXX Code used in flash detection XXXXX */
var hasFlash = false;
var flashVersion = "";
var mimetype = 'application/x-shockwave-flash';
    
function checkForFlash() {  //for Netscape browsers
   var intPlugins=navigator.plugins.length;
   if (intPlugins>0) {
   var intCtr=0;
   var objPlugin;
   
      while (intCtr<intPlugins) {
      objPlugin=navigator.plugins[intCtr];
         if (hasFlash==false) {
            if (navigator.mimeTypes && navigator.mimeTypes["application/x-shockwave-flash"] && navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin && (objPlugin.description.indexOf("Flash")!=-1)) {
            intPos=objPlugin.description.indexOf("Flash");
            flashVersion=objPlugin.description.substring((intPos+6),(intPos+7));
               if (flashVersion>3 ) { hasFlash=true; }
            }
         }
      intCtr++;
      }  //end while
   } // end of if (intPlugins>0)
}
checkForFlash();


function popWindow(url,fromFlash) {
   this.window.name = "home";         
   var popupWindow=window.open(url, "_nw", "width="+700+",height="+530+",left=10,top=50,resizable=yes,scrollbars=yes,menubar=no,location=no,toolbar=no,status=yes");
    if (!IE4down) popupWindow.focus();
   
   BLN_POPUP_CODE_EXECUTED = true; // flag that the popup code has has been executed
   if (!fromFlash){
    return false;
   }
}

function popWindowUnder(url) {
   this.window.name = "home";         
   var popupWindow=window.open(url, "_nw", "width="+653+",height="+376+",left=10,top=50,resizable=yes,scrollbars=yes,menubar=no,location=no,toolbar=no,status=yes");
    //if (!IE4down) popupWindow.focus();
   parent.window.focus();
   BLN_POPUP_CODE_EXECUTED = true; // flag that the popup code has has been executed

}

function goBack() { 
  history.back();
  BLN_BACK_EXECUTED = true; // flag that the popup code has has been executed
  return false;
}

function postClick(strSrc,strType,strCat) {
var axel = Math.random()+"";
var a = axel * 10000000000000;
var strHtml = '<IMG SRC="http://ad.uk.doubleclick.net/activity;src=' + strSrc + ';type=' + strType + ';cat=' + strCat + ';ord='+ a + '?" WIDTH="1" HEIGHT="1" BORDER="0">';
document.write(strHtml);
}
