/**
 *
 * BMW Script Library
 * Copyright (c) 2005 interone worldwide
 *
 * @ignore
 *
 * This script contains all Chinese localized Javascript definition
 *
 * @usage   see individual function descriptions
 *
 * @author  Lee Yu
 * @version  1.0
 */


var browserName;    //Browser name and version . eg: Firefox2, IE6



/** overwrite the original download() with download tracking 
 * @param {String} fileUrl is the URL of the downloadable file
 */
function download(fileUrl){

  if (false) {
    if (typeof parent.persoDownloadEventType != "undefined") {
      if (parent.persoDownloadEventType) {
        var persoDownloadEventType = parent.persoDownloadEventType;
        var persoSeries = parent.persoSeries;
        var persoBodytype = parent.persoBodytype;
        var persoModel = parent.persoModel;
        var persoColor = parent.persoColor;
        var persoRim = parent.persoRim;
        parent.createPersoEvent(persoDownloadEventType, persoSeries, persoBodytype, persoModel, persoColor, persoRim);
      }
    } else if (typeof self.persoDownloadEventType != "undefined") {alert("else if");
      if (self.persoDownloadEventType) {
        var persoDownloadEventType = self.persoDownloadEventType;
        var persoSeries = self.persoSeries;
        var persoBodytype = self.persoBodytype;
        var persoModel = self.persoModel;
        var persoColor = self.persoColor;
        var persoRim = self.persoRim;
        createPersoEvent(persoDownloadEventType, persoSeries, persoBodytype, persoModel, persoColor, persoRim);
      }
    }
  }

  /* New code start : add Webtrends tracking and download iframe*/
  if(confTrackingEnabled == true){
   
    if(typeof(dcsMultiTrack)=="undefined"){
    	parent.dcsMultiTrack('DCS.file_name', fileUrl, 'DCS.referrer_page', window.location.href);
    }else{
    	dcsMultiTrack('DCS.file_name', fileUrl, 'DCS.referrer_page', window.location.href);
    }
    
  }
  
  if(document.getElementById('download_iframe') == null){
    var downloadFrame = document.createElement('iframe');
    downloadFrame.name="download_iframe";
    downloadFrame.id="download_iframe";
    downloadFrame.width="0";
    downloadFrame.height="0";
    downloadFrame.frameBorder="0"
    document.body.appendChild(downloadFrame);
  } 

  var downloadUrl = buildValidServerRelativeUrl(fileUrl) + "?download=true";
  document.getElementById('download_iframe').src = downloadUrl;
  /* New code end */  
}

var BrowserDetector = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "unknown";
		this.versionFloat = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "unknown";
		this.version = this.integerVersion();
		this.OS = this.searchString(this.dataOS) || "unknown";
	},
	searchString: function (data) { // get the browser name , and prepare the VersionSearch token
		for (var i=0;i<data.length;i++)	{
			this.versionSearchString = data[i].versionSearch || data[i].identity;    // the version search token
			
			var dataString = data[i].string;
			var dataProp = data[i].prop;

			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		if(!this.versionSearchString) return;
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	integerVersion: function (){
		return parseInt(this.versionFloat);
	},
	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: "IE",
			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"
		}
	]

};

/**
 * Get all URL parameter as an associative array
 * @param {Object} url to parse
 * @return associative array of name - value pairs of URL parameter
 */
function getParameterMap( url) {
	
	var parameterMap = new Object;
	var urlParts = url.split("?");
	if (urlParts==null) return null;
	if (urlParts.length<2) return null;
	
	var query = urlParts[1];
	var params = query.split("&");
	
	if (params==null) return null;
	if (params.length<1) return null;
	
	for (var i=0;i<params.length;i++) {
		var pairs = params[i].split("=");
		if (pairs.length==2) {
			parameterMap[pairs[0]]=pairs[1];		
		} else if (pairs .length>2) {
			var s = "";
			for (var j=1;j<pairs.length;j++) {
				s+=pairs[j];
				if (j<(pairs.length-1)) s+="=";	
			}
			parameterMap[pairs[0]]=s; 
		} 
	}
	
	return parameterMap;
} 

/**
 * Get a single URL parameter value
 * @param {Object} url to parse
 * @param {Object} parameterName name of the parameter
 * @return value of the parameter or null in case there is no such parameter 
 */
function getParameterFromUrl(url, parameterName) {
	
	var map = getParameterMap(url);
	if (map!=null) {
	    if (parameterName in map) {
		return map[parameterName];
	    }
	}
	return null;	
}

/**
 * changes the onLoadFunctionsAddon and adds
 * an automatic file download in case a download
 * filename is given as URL parameter, the function
 * is triggered by the body.onlad event.
 * ######################################################
 * #NOTE:						#
 * #if you want to add function calls to the 		#
 * #onLoadFunctionsAddon do it in the manner shown below#
 * #in order not to overwrite already existing code	#
 * ######################################################
 */ 
var cLoadStr = new String(onLoadFunctionsAddon.toString());
var i = cLoadStr.lastIndexOf("}");
cLoadStr=cLoadStr.substring(0,i);
var j=cLoadStr.indexOf("{");
cLoadStr =cLoadStr.substr(j);
cLoadStr+="\r\nvar url = decodeURI(document.location.href);\r\n";
cLoadStr+="var downloadFile = getParameterFromUrl(url,\"downloadFile\");\r\n";
cLoadStr+="if (downloadFile!=null) {\r\n";
cLoadStr+="download(downloadFile);\r\n";
cLoadStr+="}\r\n}";
onLoadFunctionsAddon=new Function(cLoadStr);







BrowserDetector.init();
browserName = BrowserDetector.browser + BrowserDetector.version;


/**
*	Let the page scroll to the top .
*
*/
function goToTop()
{
	if(!document.getElementById('outerDiv')) return ;
	
	if(!document.getElementById('autoTopAnchor'))
	{
	    var paragraph = document.createElement("div");
        paragraph.setAttribute('id',"autoTopAnchor");
		paragraph.setAttribute('style',"position:relative; top:0px; left:0px; height:0px; width:0px; overflow:hidden;");
	    paragraph.innerHTML = '<a name="autoTop"></a>';
	    var parentNode = document.getElementById('outerDiv');
	    parentNode.insertBefore(paragraph, parentNode.firstChild);
	}

	if(window.location.href.indexOf('#autoTop') != -1)
	{
    	window.location = window.location;
	}else{
		window.location = window.location + '#autoTop';
	}
}

function trackTeaserClick(trackingPage, trackingPageTitel, targetPageUrl){
  if (confTrackingEnabled) {
    if(trackingPage==undefined){
		//alert('ok');
		return true;
	}
    var trackingUrl = buildValidServerRelativeUrl(trackingPage) + '?target=' + escape(buildValidServerRelativeUrl(targetPageUrl)) + '&source=' + escape(self.location.pathname);
    trackAbsolute(trackingUrl, trackingPageTitel, false, false);
  }
  return true;
}


