/*** Graceful degrade for non-javascript users & some event capture for livesearch ***/

window.onload = addscript; // Graceful degrade stuff for non-javascript users
document.onclick = hidelivesearch; // Onclick capturing for closing live search box

function addscript() {
	// check to see that the browser supports the getElementById method
	if (!document.getElementById) {
		return false; 
	} else {
	  if (document.getElementById('countriesanchor')) { document.getElementById('countriesanchor').href = "#"; }  // Replace conventional url in countries footer link
		if (document.getElementById('searchfield')) { document.getElementById('searchfield').value= " Recherche"; }
		if (document.getElementById('popupclose')) { document.getElementById('popupclose').innerHTML = "<a href='#' target='_self' onclick='window.close();'>close window <img src='/assets/image/icon_close.gif' border='0' alt='close window' /></a>"; } //Add close window link for popup template
	}
	if (((BrowserDetect.browser)=="Firefox")&((BrowserDetect.version)=="3.5")) { document.getElementById('searchsubmit').style.marginBottom = "-10px"; }
  if (((BrowserDetect.browser)=="Firefox")&((BrowserDetect.version)=="3.6")&(BrowserDetect.OS)=="Mac") { document.getElementById('searchsubmit').style.marginBottom = "-8px"; }
}
	
function openpopup() {
	window.open('popup.html','popup','width=500,height=500');
}


/*** START Primary nav hover function for IE ***/

sfHover = function() {
	var sfEls = document.getElementById("nav").getElementsByTagName("LI");
	for (var i=0; i<sfEls.length; i++) {
		sfEls[i].onmouseover=function() {
			this.className+=" sfhover";
		}
		sfEls[i].onmouseout=function() {
			this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
		}
	}
}
if (window.attachEvent) window.attachEvent("onload", sfHover);

/*** START Countries selector ***/

// Preload the AJAX loading gif
ajaxgif=new Image();
ajaxgif.src="/assets/image/ajaxload.gif";

function countriesreveal() { // Show, hide or add to territory selector box
	document.getElementById('countriesbox').style.visibility = 'visible';
	
  // Set the static lists (no longer ajax)
	document.getElementById('countriesboxhead').innerHTML = "";
	var countriesheader="<div id='countriestitle'>Sites de PwC les plus fréquemment visités</div><br clear='all' />";

	document.getElementById('countriescontents').innerHTML = "";
  var countriesoutput="<table id='countriestable' border='0'><tbody><tr><td><ul class='countrylist'><li><a href='http://www.pwc.com/gx/en/index.jhtml?ld=no'>Global</a></li><li><a href='http://www.pwc.com/au/en'>Australia</a></li> <li><a href='http://www.pwc.com/br/pt'>Brazil</a></li> <li><a href='http://www.pwc.com/ca/en'>Canada</a></li> <li><a href='http://www.pwccn.com'>China</a>&nbsp;/&nbsp;<a href='http://www.pwchk.com'>Hong Kong</a></li> <li><a href='http://www.pwc.fr'>France</a></li> <li><a href='http://www.pwc.de'>Germany</a></li> <li><a href='http://www.pwc.com/in/en'>India</a></li></ul></td><td><ul class='countrylist'><li><a href='http://www.pwc.com/it/it'>Italy</a></li> <li><a href='http://www.pwcjp.com/e/index.html'>Japan</a></li> <li><a href='http://www.pwc.com/mx/es'>Mexico</a></li><li><a href='http://www.pwc.com/m1/en'>Middle East</a></li> <li><a href='http://www.pwc.com/nl/nl'>Netherlands</a></li> <li><a href='http://www.pwc.com/ru/ru'>Russia</a></li> <li><a href='http://www.pwc.com/sg/en'>Singapore</a></li> <li><a href='http://www.pwc.com/za/en'>South Africa</a></li></ul></td><td valign='top'><ul class='countrylist'><li><a href='http://www.pwc.com/kr/ko'>South Korea</a></li> <li><a href='http://www.pwc.com/es/es'>Spain</a></li> <li><a href='http://www.pwc.com/se/sv'>Sweden</a></li> <li><a href='http://www.pwc.ch'>Switzerland</a></li> <li><a href='http://www.pwc.co.uk'>United Kingdom</a></li> <li><a href='http://www.pwc.com/us/en'>United States</a></li> </ul> </td></tr></tbody></table><br clear='all'> <p style='text-align: right; font-weight: bold;'><a href='http://www.pwc.com/gx/en/site-index.jhtml'>Liste complète de tous les sites de PwC</a></p><br clear='all' />";
	
	// Finally write the output; close button, header & contents.
	document.getElementById('countriesboxclose').innerHTML = "<a href='#' onClick='countrieshide(); return false;'><img src='/assets/image/icon_close.gif' alt='Close' border='0' id='countriesclosebutton' /></a>"
	document.getElementById('countriesboxhead').innerHTML = countriesheader;
	document.getElementById('countriescontents').innerHTML = countriesoutput;
}


function countrieshide() { 	// Clear the contents of the box and hide the div
	document.getElementById('countriescontents').innerHTML = "";  
	document.getElementById('countriesbox').style.visibility = 'hidden';  
}

/*** START Live search ***/

var xmlHttp
	
function showResult(str) {
	// Clear the suggestions box when no chars
	if (str.length<=minchars) {
		document.getElementById("livesearch").innerHTML="";
		document.getElementById("livesearch").style.visibility="hidden";
		return
	}
	if (livesearchon!="true") {
		return
	}
	
	// Place the AJAX loading gif. Replaced with the clear icon after the request is complete (below)
	document.getElementById("livesearchbutton").src="/assets/image/ajaxload.gif";
	document.getElementById("livesearchbutton").className="";
	
	xmlhttp=null;
	url = suggestionsfile; // Suggestions xml file taken from local.js

	if (window.XMLHttpRequest) {// code for IE7, Firefox, Mozilla, etc.
		xmlhttp=new XMLHttpRequest();
	}
	else if (window.ActiveXObject) {// code for IE5, IE6
		xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
	}
	if (xmlhttp!=null) {
		xmlhttp.onreadystatechange=processsearch;
		xmlhttp.open("GET",url,true);
		xmlhttp.send(null);
	}
	else {
		//alert("Your browser does not support XMLHTTP.");
		clearlivesearch();
		return;
	}
}

function processsearch() { // Check if file is valid & if so do something with its contents

	// Take the current search string
	var str = document.getElementById("searchfield").value.toLowerCase();

	// Break the loop when http call is complete or there's an error
	if(xmlhttp.readyState!=4) return;
	if(xmlhttp.status!=200) {
		//alert("Problem retrieving XML data");
		clearlivesearch();
		return;
	}

	// Locate the link element to traverse
	x=xmlhttp.responseXML.documentElement.getElementsByTagName("link");
	var searchoutput = "";
	var searchoutputheader = "<div id='livesearchheader'>Recommended results</div>";
	var searchoutputfooter = "<div id='livesearchfooter'><a href='#'>View all results >></a></div>"; 
	if (str.length > minchars) {

		// Loop through all link elements
		for (i=0;i<x.length;i++) {

			xtitles=x[i].getElementsByTagName("title");
			xurls=x[i].getElementsByTagName("url"); {
			try {
				// The magic of string matching (must be lowercare)
				var testquery = xtitles[0].firstChild.nodeValue.toLowerCase();
				if (testquery.indexOf(str) !=-1) {
					searchoutput = searchoutput + "<a href='" + xurls[0].firstChild.nodeValue + "'>" + xtitles[0].firstChild.nodeValue + "</a><br />";
				} else {
					searchoutput = searchoutput + "";
				}
			}
				catch (er) { searchoutput = searchoutput + ""; }
			}				
		}

	}

	if (searchoutput=="") { 
		// Collapse the suggestions box when no matches & halt the ajax loading gif
		document.getElementById("livesearch").style.visibility="hidden";
		document.getElementById("livesearchbutton").src="/assets/image/icon_close.gif"; // Show the close button, replacing the ajax gif
		document.getElementById("livesearchbutton").className="livesearchclose";
	} else {
		// Return the response, only when xml http call is done. Show the close button, replacing the ajax gif
		if (xmlhttp.readyState==4 || xmlhttp.readyState=="complete") { 
			document.getElementById("livesearch").style.visibility="visible";
			document.getElementById("livesearch").innerHTML=searchoutputheader + searchoutput + searchoutputfooter;
			document.getElementById("livesearchbutton").src="/assets/image/icon_close.gif";
			document.getElementById("livesearchbutton").className="livesearchclose";
		} 
	}

}

function clearsearch() { //Clear from initial focus
	document.getElementById("searchfield").value="";
}

function clearlivesearch() { // Clear from the button & also hide the button
	document.getElementById("searchfield").value=" Recherche";
	document.getElementById("livesearch").innerHTML="";
	document.getElementById("livesearch").style.visibility="hidden";
	document.getElementById("livesearchbutton").src="/assets/image/tran.gif";
	document.getElementById("livesearchbutton").className="";
}

// Hide the livesearch box on a click outside its div
function hidelivesearch(evt) {
    evt = evt || window.event;
    var targ = evt.target || evt.srcElement;

	// If the livesearch box is open, clear it
	if (targ.id=="livesearch" || targ.id=="livesearchheader" || targ.id=="livesearchfooter" || targ.id=="searchsubmit") {
		return;
	} else {
		if (document.getElementById("livesearch").style.visibility=="visible") {
			clearlivesearch();
		}
	}

}

/*** START Send & share global defaults ***/

  if (sharetitle === undefined) { var sharetitle = "Partager"; }

	function writesharelink() {
		document.write("<li id='ptshare'><a href='#' target='_self' class='shareicon' onclick='shareboxreveal(); return false;'>" + sharetitle + "</a></li>");
	}

	// Icon, Pre-URL, Post-URL, Description/alt tag, Onlick. Only declare them if they don't already exist from local.js

	if (arr_ss [0] === undefined) {
		// Twitter
		arr_ss [0] = new Array()
		arr_ss [0][0] = "/assets/image/share_twitter.gif";
		arr_ss [0][1] = "http://twitter.com/home?status=" + escape(window.location);
		arr_ss [0][2] = "";  // E.G. arr_ss [0][2] = "&param=something";
		arr_ss [0][3] = "Twitter";
		arr_ss [0][4] = "";
	}

	if (arr_ss [1] === undefined) {
		// Facebook
		arr_ss [1] = new Array()
		arr_ss [1][0] = "/assets/image/share_facebook.gif";
		arr_ss [1][1] = "http://www.facebook.com/share.php?u=" + escape(window.location);
		arr_ss [1][2] = "";
		arr_ss [1][3] = "Facebook";
		arr_ss [1][4] = "";
	}
	
	if (arr_ss [2] === undefined) {
		// Linkedin
		arr_ss [2] = new Array()
		arr_ss [2][0] = "/assets/image/share_linked.gif";
		arr_ss [2][1] = "http://www.linkedin.com/shareArticle?mini=true&url=" + escape(window.location);
		arr_ss [2][2] = "";
		arr_ss [2][3] = "Linkedin";
		arr_ss [2][4] = "";
	}
	
	if (arr_ss [3] === undefined) {
		// Mixx
		arr_ss [3] = new Array()
		arr_ss [3][0] = "/assets/image/share_mixx.gif";
		arr_ss [3][1] = "http://www.mixx.com/submit?page_url=" + escape(window.location);
		arr_ss [3][2] = "";
		arr_ss [3][3] = "Mixx";
		arr_ss [3][4] = "";
	}

	if (arr_ss [4] === undefined) {
		// Digg
		arr_ss [4] = new Array()
		arr_ss [4][0] = "/assets/image/share_digg.gif";
		arr_ss [4][1] = "http://digg.com/submit?phase=2&url=" + escape(window.location);
		arr_ss [4][2] = "";
		arr_ss [4][3] = "Digg";
		arr_ss [4][4] = "";
	}

	if (arr_ss [5] === undefined) {
		// Google buzz
		arr_ss [5] = new Array()
		arr_ss [5][0] = "/assets/image/share_googlebuzz.gif";
		arr_ss [5][1] = "http://www.google.com/reader/link?url=" + escape(window.location);
		arr_ss [5][2] = "";
		arr_ss [5][3] = "Google buzz";
		arr_ss [5][4] = "";
	}

	function shareboxreveal() { // Show, hide or add to territory selector box
		document.getElementById('sharebox').style.display = 'block';
	}

	function shareboxhide() { 	// Clear the contents of the box and hide the div
		document.getElementById('sharebox').style.display = 'none';  
	}

function writesharebox() { // Taken from HTML for 3rd party templates
	var sendshare = "<div id='sharebox'><ul id='shareicons'><div id='shareboxclose'><a href='#' onClick='shareboxhide(); return false;'><img src='/assets/image/icon_close.gif' alt='Close' border='0' /></a></div>"	
	if (window.sendsharetitle === undefined) { window.sendsharetitle = escape("Page title here"); }
	for (i=0;i<arr_ss.length; i++) {
	    sendshare = sendshare + "<li id='share" + i + "'><a href='" + arr_ss[i][1] + "&title=" + sendsharetitle + arr_ss[i][2] + "' onclick='" + arr_ss[i][4] + "' target='_blank' class='shareicon'><img src='" + arr_ss[i][0] + "' border='0' alt='" + arr_ss[i][3] + "' />&nbsp;" + arr_ss[i][3] + "</a></li>";	
	}
	sendshare = sendshare + "</ul></div>";
	document.write(sendshare);
}

  // Default R2 forms validation message (translatable))
  if (formvalidationmsg === undefined) { var formvalidationmsg = "Please complete the highlighted fields"; }
  
/*** START Lightweight browser detection ***/

//alert(BrowserDetect.browser + ' ' + BrowserDetect.version + ' on ' + BrowserDetect.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: "Chrome",
			identity: "Chrome"
		},
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari",
			versionSearch: "Version"
		},
		{
			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();

