///////////////////////////////
// Some String utils function 

// Compare two strings (default=insensitive)
function strComp(sString1,sString2,bSensitive)
{
	if(IsNull(bSensitive)) bSensitive = false;
	if(!bSensitive)
	{
		sString1 = sString1.toLowerCase();
		sString2 = sString2.toLowerCase();
	}
	return (sStringG1==sString2);
}


// Check if null
function IsNull(oItem)
{
	return ( oItem == null || oItem == undefined )
}


// Trim functions
function Trim(str){ return str.replace(/^\s*|\s*$/g,""); }
//function RTrim(STRING){ return str.replace(/^\s*,""); }
//function LTrim(STRING){ return str.replace(\s*$/g,""); }


/////////////////////////////
// Some cookies stuffs
// cookie Lang
var cookieLangName	= "CK_SDC_LANG";
// cookie reg info name
var cookieRegInfoName	= "CK_SDC_REG_INFO";

var scSecureUrl=getSecureUrl();
var scLogOffUrl=scSecureUrl + 'logout.html';

// Get Cookies function
function getSecureUrl()
{
	var scHostname = location.hostname;
  if(scHostname.indexOf('.') != -1) return 'https://www2' + scHostname.substring(scHostname.indexOf('.')) + '/' ; else return "https://www2.swift.com/";
}

// Get Cookies function
function scGetCookie(sCookieName)
{
	var startCookiePos = document.cookie.indexOf(sCookieName + '=');
	if(startCookiePos == -1) return '';
	startCookiePos += sCookieName.length + 1;
	var endCookiePos = document.cookie.indexOf(';',startCookiePos);
	if(endCookiePos == -1) endCookiePos = document.cookie.length;
	return unescape(document.cookie.substring(startCookiePos,endCookiePos));
}

// Get URL Param function
function scGetURLParam(sParamName)
{
	var startParamPos = location.search.substring(1).indexOf(sParamName + '=');
	if(startParamPos == -1) return '';
	startParamPos += sParamName.length + 1;
	//if there is a "?" in the rest of the string, return the whole thing as the parameter value (nested url has query args)
	if ((location.search.substring(startParamPos+1).indexOf('?') != -1) &&
		(location.search.substring(startParamPos+1).indexOf('?') < location.search.substring(startParamPos+1).indexOf('&'))) {
		return location.search.substring(startParamPos+1);
	}
	var endParamPos = location.search.substring(1).indexOf('&',startParamPos);
	if(endParamPos == -1) endParamPos = location.search.substring(1).length;
	return unescape(location.search.substring(1).substring(startParamPos,endParamPos));
}

// Avoid javacript error
function setTabsection()
{
	// do nothing
}

// Test if user is logged
function isLogged() {
  var cookieRegInfoValue = scGetCookie(cookieRegInfoName);
  return (cookieRegInfoValue != '');
}

function GetHPLoggedMsg(welcomeString) {
	var cookieRegInfoValue = scGetCookie(cookieRegInfoName);
	if(cookieRegInfoValue.indexOf("|") != -1) cookieRegInfoValue = cookieRegInfoValue.replace("|","<br>");
  return ("<p>" + welcomeString + " " + cookieRegInfoValue + "</p>");
}

function formatCookieRegInfoDisplay(cookie)
{
	return '<span class="name"><a href="' + scSecureUrl + 'myprofile">' +cookie.substr(0,cookie.lastIndexOf(' ')) + '</a></span> | <span class="code">' + cookie.substr(cookie.lastIndexOf(' ')+1) + '</span>' + ' | <a href="' + scLogOffUrl + '">Logout</a>';
}

// write in the division
function writeInnerDivRegInfoCk(cookie)
{
	var objLoginBox = document.getElementById('sw-logged-in');
	if(!IsNull(objLoginBox))
	{
		if((cookie != '') && (cookie.indexOf("<")==-1) && (cookie.toLowerCase().indexOf("&lt;")==-1) && (cookie.toLowerCase().indexOf("%3c")==-1))
			objLoginBox.innerHTML= formatCookieRegInfoDisplay(cookie);
		 else
		 	objLoginBox.innerHTML=' ';
	}
}


// Create cookie from Ajax response
function createCookieRegInfo(originalRequest)
{
	var cookieRegInfoValue='';
	var cookieNameValue = originalRequest.responseText;
	        
	if(cookieNameValue.substring(0,cookieNameValue.indexOf("=")) == cookieRegInfoName)
	{
		cookieRegInfoValue = cookieNameValue.substring(cookieNameValue.indexOf("=")+1, cookieNameValue.length);
		document.cookie = cookieRegInfoName + "=" + escape(cookieRegInfoValue) + "; domain=.swift.com; path=/";
		// Remove the login button at first login revamp 2010
		if(document.getElementById('sw-loginNav')) document.getElementById('sw-loginNav').style.display = 'none';
	}
	writeInnerDivRegInfoCk(cookieRegInfoValue);
}

// make the javascript sleeping
function sc_sleep(milliseconds) {
  var start = new Date().getTime();
  for (var i = 0; i < 1e7; i++) {
    if ((new Date().getTime() - start) > milliseconds){
      break;
    }
  }
}

// Calling this function will write registration info (first name, last name, registration number)

function decodeBase64IfNeeded(text) {

		var textDecoded = text;
		
		if (textDecoded.indexOf('=?UTF-8?B?') != 0){
				firstPart = textDecoded.substring(0,textDecoded.indexOf('=?UTF-8?B?'));
				lastPart = textDecoded.substring(textDecoded.indexOf('?=')+2,textDecoded.length);
				utf8_base64_textDecoded= base64_decode(textDecoded.substring(textDecoded.indexOf('=?UTF-8?B?')+10, 	textDecoded.indexOf('?=')));
				textDecoded = firstPart+utf8_base64_textDecoded+lastPart;
		}
		
		return textDecoded;	
		
}

	function base64_decode(input) {
		
		    var output = "";
        var chr1, chr2, chr3;
        var enc1, enc2, enc3, enc4;
        var i = 0;
        var _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";

        input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");

        while (i < input.length) {

            enc1 = _keyStr.indexOf(input.charAt(i++));
            enc2 = _keyStr.indexOf(input.charAt(i++));
            enc3 = _keyStr.indexOf(input.charAt(i++));
            enc4 = _keyStr.indexOf(input.charAt(i++));

            chr1 = (enc1 << 2) | (enc2 >> 4);
            chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
            chr3 = ((enc3 & 3) << 6) | enc4;

            output = output + String.fromCharCode(chr1);

            if (enc3 != 64) {
                output = output + String.fromCharCode(chr2);
            }
            if (enc4 != 64) {
                output = output + String.fromCharCode(chr3);
            }

        }

        output = utf8_decode(output);

        return output;

 }
 
 function utf8_decode(utftext) {
        var string = "";
        var i = 0;
        var c = c1 = c2 = 0;

        while ( i < utftext.length ) {

            c = utftext.charCodeAt(i);

            if (c < 128) {
                string += String.fromCharCode(c);
                i++;
            }
            else if((c > 191) && (c < 224)) {
                c2 = utftext.charCodeAt(i+1);
                string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
                i += 2;
            }
            else {
                c2 = utftext.charCodeAt(i+1);
                c3 = utftext.charCodeAt(i+2);
                string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
                i += 3;
            }

        }

        return string;
  }
// Calling this function will populate the customer login box on the home page (div id="custLogin")
function displayCustLoginInfo()
{
	// get cookie Reg Num info & elements to update
	var cookieRegInfoValue	= scGetCookie(cookieRegInfoName);
	var custLoginBox = document.getElementById('custLogin');
	var custLoginLoggedIn = document.getElementById('custLoginLoggedIn');
	var custLoginNotLoggedIn = document.getElementById('custLoginNotLoggedIn');
	var custLoginLoggedInWelcome = document.getElementById('custLoginLoggedInWelcome');

	if( cookieRegInfoValue == '' )
	{
		//cookie doesn't exist or is empty, write "not logged in" block
		custLoginLoggedIn.style.display = 'none';
		custLoginNotLoggedIn.style.display = '';
	}
	else
	{
		//cookie exists and is not empty, write "logged in" block
		custLoginLoggedInWelcome.innerHTML = '<b>Welcome ' + cookieRegInfoValue + '</b>';
		custLoginLoggedIn.style.display = '';
		custLoginNotLoggedIn.style.display = 'none';
	};

}

// this function must be called in the end of the DCR of the page that uses the operational status component
function moveOpStatusText()
{
  elementToCopy = document.getElementById("textbeforeOS");    
  elementToCopyTo = document.getElementById("beforeOS");  
  if((elementToCopyTo != null) && (elementToCopy != null)) elementToCopyTo.appendChild(elementToCopy);
}


// this function is called in the syndication DCR to display a message above the applications
function displayNoTranslationMessage()
{
  // If there is no translation cookie, or an english translation cookie and when the URL is not KB, display the message
  var cookieLangValue = scGetCookie(cookieLangName);
  var stringPathName = location.pathname;
  var stringSearchBasePath1 = "/search/redirect.faces";
  var stringSearchBasePath2 = "/search/search.faces";
  
  if( (cookieLangValue != '') && (cookieLangValue != 'en') )
  {
		// Display the messsage in the correct language
		if(  (stringPathName.substring(0,stringSearchBasePath1.length) != stringSearchBasePath1) && (stringPathName.substring(0,stringSearchBasePath1.length) != stringSearchBasePath2) )
		{
			// application not KB
		  if(cookieLangValue == 'fr') document.write('<span class="orangetextnosize">Cette page est affich&eacute;e uniquement en anglais.</span>');
		  else if(cookieLangValue == 'es') document.write('<span class="orangetextnosize">&iexcl;Esta p&aacute;gina s&oacute;lo est&aacute; disponible en ingl&eacute;s!</span>');
		  else if(cookieLangValue == 'zh') document.write('<span class="orangetextnosize">\u8be5\u7f51\u9875\u53ea\u5b58\u5728\u82f1\u6587\u7248</span>');
    }
  }
}

// this function is receiving a page as parameter and send a browser redirect with correct lang
function redirectToPage(pageURL)
{
  var cookieLangValue = scGetCookie(cookieLangName);
  if( (cookieLangValue != '') && (cookieLangValue != 'en') )
    redirectURLWithLang(pageURL,cookieLangValue);
  else
    redirectURLWithLang(pageURL,'en');
}

function redirectURLWithLang(url,lang)
{

    // build up the equivalent URL
    var newUrl = url;
    if(newUrl.indexOf('?') == -1) newUrl +='?'; else newUrl +='&';
    newUrl += 'lang=' + lang;

    // redirect
    window.location = newUrl;
}
		
// Update for reginfo jsf

var req;

// Calling this function will write registration info (first name, last name, registration number)
function displayRegInfoCookie()
{
 // get cookie Reg Num info
 var cookieRegInfoValue = scGetCookie(cookieRegInfoName);
 if( cookieRegInfoValue == '' )
 {
  if ( (location.protocol.substr(0,5) == 'https') && (location.hostname.substr(0,4) == 'www2') && (location.pathname.indexOf('/myprofile/public') == -1) )
  {  
   // Reg info cookie does not exist; get it via ajax
   var url = '/myprofile/get_registration_number.jsp';
   var pars = 'fakeinfo=' + Math.random();
   loadXMLDoc(url+'?'+pars) ;
  } 
  else writeInnerDivRegInfoCk(cookieRegInfoValue);
 } 
 else writeInnerDivRegInfoCk(cookieRegInfoValue);
}
 
function loadXMLDoc(url) {
 req = false;
    // branch for native XMLHttpRequest object
    if(window.XMLHttpRequest && !(window.ActiveXObject)) {
     try {
   req = new XMLHttpRequest();
        } catch(e) {
   req = false;
        }
    // branch for IE/Windows ActiveX version
    } else if(window.ActiveXObject) {
        try {
         req = new ActiveXObject("Msxml2.XMLHTTP");
       } catch(e) {
         try {
            req = new ActiveXObject("Microsoft.XMLHTTP");
         } catch(e) {
            req = false;
         }
  }
    }
    
 if(req) {
  req.onreadystatechange = processReqChange;
  req.open("GET", url, true);
  req.send("");
 }
}
 
function processReqChange() {
    // only if req shows "loaded"
    if (req.readyState == 4) {
        // only if "OK"
        if (req.status == 200) {            
            createCookieRegInfo(req) ;
        } else {
            alert("There was a problem retrieving the XML data:\n" +
                req.statusText);
        }
    }
}


// google analytics document tracking
var gaA_fileTypes = new RegExp(/\.(doc*|xls*|ppt*|exe|zip|pdf|xpi)$/i); // Indicate each file extension that needs to be tracked, gaA_fileTypes is the regular expression that matches downloadable files
var gaA_pageTracker = null; // Should be set to the name of your tracker variable

var gaAddons = function(){
    var startListening = function(obj, evnt, func){
        if (obj.addEventListener) 
            obj.addEventListener(evnt, func, false);
        else 
            if (obj.attachEvent) 
                obj.attachEvent("on" + evnt, func);
    }

   /*
    var trackDocument = function(evnt){
				var trackDocumentURL=(evnt.srcElement) ? "/" + evnt.srcElement.pathname : this.pathname;
        gaA_pageTracker._trackPageview(trackDocumentURL);
        sc_sleep(200); // give time to the ga request to complete
    }
    */
    
    var trackDocument = function(evnt){
				var e = (evnt.srcElement) ? evnt.srcElement : this;
				while (e.tagName != "A") {e = e.parentNode;}
				var lnk = (e.pathname.charAt(0) == "/") ? e.pathname : "/" + e.pathname;
				if (e.search && e.pathname.indexOf(e.search) == -1) lnk += e.search;
				// if (e.hostname != location.host) lnk = "/external/" + e.hostname + lnk;
				if (typeof(pageTracker) == "object") 
				{
					pageTracker._trackPageview(lnk); 
				  sc_sleep(200); // give time to the ga request to complete
				}
		} 
		
		
    /**
     * Initialize gaAddons
     */
    if (document.getElementsByTagName && typeof gaA_pageTracker == "object") {
        var hrefs = document.getElementsByTagName('a');
        for (var l = 0, m = hrefs.length; l < m; l++) 
          if( gaA_fileTypes.test(hrefs[l].pathname) || (hrefs[l].innerHTML.indexOf("pdf.gif") != -1) || (hrefs[l].innerHTML.indexOf("doc.gif") != -1) || (hrefs[l].innerHTML.indexOf("ppt.gif") != -1) || (hrefs[l].innerHTML.indexOf("xls.gif") != -1) )
            startListening(hrefs[l], "click", trackDocument);
    }
}

// to track documents, add a call to this function just after google analytics code initialisation
function addGADocumentTracking(){
	gaA_pageTracker=pageTracker;
	gaAddons();

	// track search parameters and the result
	if(document.location.pathname.substr(0,25)=='/search/kb/searchKB.faces') 
	{
	  var objTotalKBSearchResults = document.getElementById('totalKBSearchResults');
    if(!IsNull(objTotalKBSearchResults))
	  {
	  	var totalKBSearchResults = objTotalKBSearchResults.getAttribute('value');
      if(totalKBSearchResults != "") 
      {
      	addGAKBSearchViaAppl();
      }
    }
  }

}


//
// Track global search from top of page (syndicated part) - gdq/gvh - 31/05/2010
//
function addGAGlobalSearch(aSearchString, aLanguage) {

	GLOBAL_SEARCH_BASE = "/keyword_search/global/top/";
	SDC_WWW2_GA_ID = "UA-7646760-3"; 
  
  try {
  
  	search_language = aLanguage == "" ? "en" : aLanguage.toLowerCase();
  	
		gaReportUrl      = GLOBAL_SEARCH_BASE + search_language + "?searchInputTerms=" + formatSearchTerms(aSearchString);
		trackSearchAtGoogle(gaReportUrl);
	}

	catch (err) {
		// nothing to do so far
	}
}
//
// Track global search from the applicication - gdq/gvh - 01/06/2010
//

function addGAGlobalSearchViaAppl() {

	GLOBAL_SEARCH_BASE		= "/keyword_search/global/appl/";
	SDC_WWW2_GA_ID			= "UA-7646760-3"; 
	SEARCH_TERM_INPUT_ID		= "jsfForm:searchInputTerms";
	SEARCH_MATCH_ALL_TERMS_ID	= "jsfForm:matchAllTermsCheckBox";
	GA_MATCH_ALL_TERMS		= "Match all terms";
	GA_NOT_MATCH_ALL_TERMS		= "Do not match all terms";
	SEARCH_DIV								= "searchFormDiv";

	try {
		gaReportUrl = GLOBAL_SEARCH_BASE;
		separator   = "";
//
// Add language
//
     gaReportUrl += getLanguageViaCookie() + "?";
//
// The search terms
//
		if (document.getElementById(SEARCH_TERM_INPUT_ID)) {
			searchTermsField = document.getElementById(SEARCH_TERM_INPUT_ID);
			fieldName = SEARCH_TERM_INPUT_ID.substring(SEARCH_TERM_INPUT_ID.indexOf(":") + 1);
			gaReportUrl += separator + fieldName + "=" + formatSearchTerms(searchTermsField.value);
			separator = "&"
		}
//
// Match all terms
//
		if (document.getElementById(SEARCH_MATCH_ALL_TERMS_ID)) {
			searchMatchAllTerms = document.getElementById(SEARCH_MATCH_ALL_TERMS_ID);
			fieldName = SEARCH_MATCH_ALL_TERMS_ID.substring(SEARCH_MATCH_ALL_TERMS_ID.indexOf(":") + 1);			
			gaReportUrl += separator + fieldName + "=" + searchMatchAllTerms.checked;
			separator = "&"
		}
//
// Add the selected filers
//
    gaReportUrl += separator + getSelectedFilters (SEARCH_DIV);

		trackSearchAtGoogle(gaReportUrl);

	}

	catch (err) {

	}

}

function getLanguageViaCookie() {
	
	LANGUAGE_COOKIE = "CK_SDC_LANG";
	DEFAULT_LANGUAGE = "en";
	
	try {

		allCookies = document.cookie;
		pattern = /CK_SDC_LANG=(\w+);?/;
		matchResult = allCookies.match(pattern);
		
		if (matchResult != null && matchResult.length == 2) {
			return matchResult[1];
		}
		
	}
	
	catch (err) {
		
	}
	
	return DEFAULT_LANGUAGE;
	
}

function getLinkById(aLinkId, aDivId) {
//
// Only search the links that are in the search form
//
  try { 
  	SEARCH_DIV = aDivId;
  	searchDiv = document.getElementById(SEARCH_DIV);
		allLinks = searchDiv.getElementsByTagName("a");
	
		for (i = 0; i < allLinks.length; i++) {
			if (allLinks[i].id == aLinkId) {
				return allLinks[i];
			}
		}
  }
  catch(err) {
  		return null;
	}

	return null;
	
}

function getSelectedFilters (aDivId) {
   
  GROUP_BASE_ID		= "jsfForm:filterGroupTable:";
	GROUP_TRAILER_ID = ":filterDataTable";
	FILTER_HEADER_ID = ":filterHeader";
	CHECKBOX_ID			= ":INC_CheckBox";
	LINK_ID				= ":INC_link";

  selectedFilters = "";
	
	try {
		
//
// Selected filters
//
    groupCount = 0;
		groupHeaderId = GROUP_BASE_ID + groupCount.toString() + GROUP_TRAILER_ID + FILTER_HEADER_ID;
//
// Loop thru the filter groups
//
    separator = "";
    while (document.getElementById(groupHeaderId)) {

			filterTitle = trimString(document.getElementById(groupHeaderId).innerHTML);
			
			selectedFilters +=  separator + filterTitle.replace(/\s+/g,"_") + "="; 

			checkBoxCount = 0;
			filterIncluded = false;
			checkBoxId	= GROUP_BASE_ID + groupCount.toString() + GROUP_TRAILER_ID + ":" + checkBoxCount.toString() + CHECKBOX_ID;
			linkId		  = GROUP_BASE_ID + groupCount.toString() + GROUP_TRAILER_ID + ":" + checkBoxCount.toString() + LINK_ID;
//
// Loop thru the selected filter for current group
//
			while (document.getElementById(checkBoxId)) {

				checkBox	= document.getElementById(checkBoxId);
				mylink		= getLinkById(linkId, aDivId);
				
				if (checkBox.checked) {
					
					selectedFilter = trimString(mylink.innerHTML);
					selectedFilters += (filterIncluded ? "," : "") + selectedFilter.replace(/\s+/g,"_");

					filterIncluded = true;

				}
				
				checkBoxCount++;
				
			  checkBoxId	= GROUP_BASE_ID + groupCount.toString() + GROUP_TRAILER_ID + ":" + checkBoxCount.toString() + CHECKBOX_ID;
			  linkId		  = GROUP_BASE_ID + groupCount.toString() + GROUP_TRAILER_ID + ":" + checkBoxCount.toString() + LINK_ID;

			}
			
			groupCount++;
			groupHeaderId = GROUP_BASE_ID + groupCount.toString() + GROUP_TRAILER_ID + FILTER_HEADER_ID;
			separator = "&";
		}
		
	}
	
	catch(err) {
			return "";
	}
	
	return selectedFilters;

}

function addGAKBSearchViaAppl() {
	
	KB_SEARCH_BASE 								= "/keyword_search/kb/appl";
	KB_SEARCH_DIRECT_TIP_BASE			= KB_SEARCH_BASE + "/directtip?";	
	KB_DIRECT_TIP_INPUT						= "jsfForm:kbDirectTipInput";
	KB_SEARCH_TERM_INPUT_ID				= "jsfForm:kbSearchInputTerms";
	KB_SEARCH_MATCH_ALL_TERMS_ID	= "jsfForm:matchAllTermsCheckBox";
	KB_SEARCH_PRODUCT_SELECT			= "jsfForm:kbProductSelect";
	KB_SEARCH_PLATFORM_SELECT			= "jsfForm:kbPlatformSelect";
	GA_MATCH_ALL_TERMS						= "Match all terms";
	GA_NOT_MATCH_ALL_TERMS				= "Do not match all terms";
	SDC_WWW2_GA_ID								= "UA-7646760-3";
	SEARCH_KB_DIV									= "searchKBFormDiv";

	try {
		separator = "";
//
// Check if direct tip was entered - form is setup so that when a tip is filled in, a direct tip search is performed no matter what button is clicked or no matter what button has the focus
//		
		if (document.getElementById(KB_DIRECT_TIP_INPUT) && document.getElementById(KB_DIRECT_TIP_INPUT).value != "") {
			gaReportUrl = KB_SEARCH_DIRECT_TIP_BASE;
			fieldName = KB_DIRECT_TIP_INPUT.substring(KB_DIRECT_TIP_INPUT.indexOf(":") + 1);
			directTipInput = fieldName + "=" + formatSearchTerms(document.getElementById(KB_DIRECT_TIP_INPUT).value);
			gaReportUrl += directTipInput;
			
		}	
		
		else 
			
		{
			gaReportUrl = KB_SEARCH_BASE + "?";
//
// KB keyword search
//			
//
// The search terms
//
			if (document.getElementById(KB_SEARCH_TERM_INPUT_ID)) {
				searchTermsField = document.getElementById(KB_SEARCH_TERM_INPUT_ID);
				fieldName = KB_SEARCH_TERM_INPUT_ID.substring(KB_SEARCH_TERM_INPUT_ID.indexOf(":") + 1);
				gaReportUrl += separator + fieldName + "=" + formatSearchTerms(searchTermsField.value);
				separator = "&";
			}
//
// Match all terms
//
			if (document.getElementById(KB_SEARCH_MATCH_ALL_TERMS_ID)) {
				searchMatchAllTerms = document.getElementById(KB_SEARCH_MATCH_ALL_TERMS_ID);
				fieldName = KB_SEARCH_MATCH_ALL_TERMS_ID.substring(KB_SEARCH_MATCH_ALL_TERMS_ID.indexOf(":") + 1);
				gaReportUrl += separator + fieldName + "=" + searchMatchAllTerms.checked;
				separator = "&";
			}
//
// Product select
//
      selectedProducts = "";
			if (document.getElementById(KB_SEARCH_PRODUCT_SELECT)) {
				
				productSelect = document.getElementById(KB_SEARCH_PRODUCT_SELECT);
				
				for ( i = 0; i < productSelect.options.length; i++ ) {
					 
					if (productSelect.options[i].selected) {
						productSelected = trimString(productSelect.options[i].text);
						selectedProducts += (selectedProducts == "" ? "" : ",") + productSelected.replace(/ /g,"_");
				  }
				}
				
				fieldName = KB_SEARCH_PRODUCT_SELECT.substring(KB_SEARCH_PRODUCT_SELECT.indexOf(":") + 1);
				if (selectedProducts != "") {
				  gaReportUrl += separator + fieldName + "=" + selectedProducts;  
				  separator = "&";
			  }
			}
//
// Platform select
//
			selectedPlatforms = "";
			if (document.getElementById(KB_SEARCH_PLATFORM_SELECT)) {
				
				platformSelect = document.getElementById(KB_SEARCH_PLATFORM_SELECT);
				
				for ( i = 0; i < platformSelect.options.length; i++ ) {
					 
					if (platformSelect.options[i].selected) {
						platformSelected = trimString(platformSelect.options[i].text);
						selectedPlatforms += (selectedPlatforms == "" ? "" : ",") + platformSelected.replace(/ /g,"_");
				  }
				}
				
				fieldName = KB_SEARCH_PLATFORM_SELECT.substring(KB_SEARCH_PLATFORM_SELECT.indexOf(":") + 1);
				if (selectedPlatforms != "") {
				  gaReportUrl += separator + fieldName + "=" + selectedPlatforms;  
				  separator = "&";
				}
			}
		
		}
//
// Add the selected filers
//
		selectedFilters = getSelectedFilters (SEARCH_KB_DIV);
    
    if (selectedFilters != "") {
    		gaReportUrl +=  separator + selectedFilters;
    }
    
//
// Add the result if available
//
	  var objTotalKBSearchResults = document.getElementById('totalKBSearchResults');
    if(!IsNull(objTotalKBSearchResults))
	  {
	  	var totalKBSearchResults = objTotalKBSearchResults.getAttribute('value');
      if(totalKBSearchResults != "") 
      {
				gaReportUrl +=  separator + "Results=" + totalKBSearchResults;
				
				// send to Ga only when result available
				trackSearchAtGoogle(gaReportUrl);
      }
    }

    
	
				
}
	
	catch(err) {
//		alert("DEBUG: catched an error " + err.message + " - " + err.description);
	}
	
}



function trackSearchAtGoogle(aUrlToReport) {

//
// Set a tracker that will track for www2.swift.com
//
SDC_WWW2_GA_ID								= "UA-7646760-3";	

try {
			www2_pageTracker = _gat._getTracker(SDC_WWW2_GA_ID)
			if (typeof(www2_pageTracker) == "object") {
				//console.log("encodeURI(aUrlToReport)=>%s",encodeURI(aUrlToReport));

//				alert(encodeURI(aUrlToReport));
				www2_pageTracker._trackPageview(encodeURI(aUrlToReport));

				sc_sleep(200); // give time to the ga request to complete
			}
}
catch (err) {
//	alert("DEBUG: error catched at trackSearchAtGoogle: " + err.message + " - " + err.description);
}
	
}

//
// Track  bic search from top of page (syndicated part) - gdq/gvh - 09/06/2010
//
function addGABicSearch(aBicString, aLanguage) {
	
	//console.log("entering addGABicSearch(aBicString=>%s, aLanguage=>%s)",aBicString, aLanguage);

	BIC_SEARCH_BASE = "/bic_search/global/home/";
	SDC_WWW2_GA_ID = "UA-7646760-3"; 
  
  try {
  	//console.info("in try...");
  	search_language = aLanguage == "" ? "en" : aLanguage.toLowerCase();
  	
  	gaReportUrl      = BIC_SEARCH_BASE + search_language + "?bicSearch_bicOrInstitution=" + formatSearchTerms(aBicString);
		trackSearchAtGoogle(gaReportUrl);
	}

	catch (err) {
		//console.warn("caught err=>%o",err);
		// nothing to do so far
	}
}

function addGABicSearchViaAppl() {
	
	BIC_SEARCH_BASE = "/bic_search/appl/";
  BIC_SEARCH_BIC_OR_INST = "bicSearch_bicOrInstitution";
  BIC_SEARCH_BIC = "bicSearch_bic";
  BIC_SEARCH_INST = "bicSearch_institution";
  BIC_SEARCH_CITY = "bicSearch_city"
  BIC_SEARCH_COUNTRY = "bicSearch_country";
  BIC_SEARCH_CAPTCHA = "bicSearch_captcha";
  
	SDC_WWW2_GA_ID = "UA-7646760-3"; 
	
	try {
		
		gaReportUrl = BIC_SEARCH_BASE;
//
// Add language
//
     gaReportUrl += getLanguageViaCookie() + "?";
     separator = "";	
//
// 		Add BIC or Institution search string
//
			if (document.getElementById(BIC_SEARCH_BIC_OR_INST)) {
				        bicOrInstitution = document.getElementById(BIC_SEARCH_BIC_OR_INST);
								gaReportUrl +=  BIC_SEARCH_BIC_OR_INST + "=" +  formatSearchTerms(bicOrInstitution.value);
								separator = "&"
			}
//
//    Add BIC search string
//
			if (document.getElementById(BIC_SEARCH_BIC)) {
				        bic = document.getElementById(BIC_SEARCH_BIC);
								gaReportUrl += separator + BIC_SEARCH_BIC + "=" +  formatSearchTerms(bic.value);
								separator = "&";
			}
//
//    Add Institution search
//
			if (document.getElementById(BIC_SEARCH_INST)) {
				        institution = document.getElementById(BIC_SEARCH_INST);
								gaReportUrl += separator + BIC_SEARCH_INST + "=" +  formatSearchTerms(institution.value);
								separator = "&";
			}
//
//    Add city search
//
			if (document.getElementById(BIC_SEARCH_CITY)) {
				        city = document.getElementById(BIC_SEARCH_CITY);
								gaReportUrl += separator + BIC_SEARCH_CITY + "=" +  formatSearchTerms(city.value);
								separator = "&";
			}
//
//    Add country search
//
			if (document.getElementById(BIC_SEARCH_COUNTRY)) {
				        country = document.getElementById(BIC_SEARCH_COUNTRY);
								gaReportUrl += separator + BIC_SEARCH_COUNTRY + "=" +  formatSearchTerms(country.value);
								separator = "&";
			}
//
//    Add captcha search
//
			if (document.getElementById(BIC_SEARCH_CAPTCHA)) {
				        captcha = document.getElementById(BIC_SEARCH_CAPTCHA);
								gaReportUrl += separator + BIC_SEARCH_CAPTCHA + "=" +  formatSearchTerms(captcha.value);
								separator = "&";
			}
//
// Track this search
//
			trackSearchAtGoogle(gaReportUrl);

	}
	catch (err) {
// let it fail without any notice		
	}
}

function formatSearchTerms (aSearchTerms) {
	
	searchTerms = trimString(aSearchTerms);
	return searchTerms.replace(/\s+/g, "+");

}

function trimString (aString) {
	return aString.replace(/^\s*/,'').replace(/\s*$/,'');
}

