/*
	TEMPLATE FUNCTIONS
*/

//These doctype extensions will be tracked with statwrapper!
var extDoc = [".doc",".xls",".exe",".zip",".pdf"];

//Wrapper for Omniture and GA:
function statwrapper(str_url) {
	if (str_url.indexOf(document.location.hostname) == -1 && str_url.indexOf('http://') != -1) {
		var splitResult = str_url.split('http://');
		fin_url = '/external/'+splitResult[1];
	} else {
		for (var j=0; j<extDoc.length; j++) {
			if (str_url.indexOf(extDoc[j]) != -1) {
				var splitResult = str_url.split(document.location.hostname);
				fin_url = splitResult[1];
				break;
			}
		}
	}
	//GA
		pageTracker._trackPageview(fin_url);
	//Omniture
		//Not implemented 
}

function tr_addLinkerEvents() {
	var as = document.getElementById("p-simpleswitch-body").getElementsByTagName("a");
	//var extDoc = [".doc",".xls",".exe",".zip",".pdf"];
	for(var i=0; i<as.length; i++) {
		var tmp  = as[i].getAttribute("onclick");
        tmp  = ((tmp != null)? "" + tmp : "");
		if (tmp.indexOf('statwrapper')!=-1 && tmp!="") continue;
		for (var j=0; j<extDoc.length; j++) {
			if (as[i].href.indexOf(extDoc[j]) != -1 && !(as[i].href.indexOf(document.location.hostname) == -1 && as[i].href.indexOf('http://') != -1)) {
                as[i].onclick = function(){
					statwrapper(this.href);
                } 
				break;
			}
		}	
		if (as[i].href.indexOf(document.location.hostname) == -1 && as[i].href.indexOf('http://') != -1) {
            as[i].onclick = function(){
				statwrapper(this.href);
            } 
		}	
	}
}

// Write ajusted breadcrumb
_page.tr_writeBreadCrumb = function (active_item) {
	_page.breadCrumbItem = active_item;
	var strThisId;
	var strNavTrail='';
	var max_length = 94;
	var total_length = 0;
	var first_item = 0;
	var spacing_length = 3; // Number of chars for spacing
	// Initalize array of breadcrumb ID's
	var parent_ids=active_item.split("_");
	for (var i=0; i<parent_ids.length; i++) {
		parent_ids[i]=(i>0?parent_ids[i-1]+"_"+parent_ids[i]:parent_ids[i]);
	}
	// Reduce length when font size is enlarged
	if(_page.locale.substring(3,5)=="zh" || _page.locale.substring(3,5)=="ja" || _page.locale.substring(3,5)=="ko"){
		max_length = max_length - 40; // Used to be 15
	}
	if(_page.locale.substring(3,5)=="th"){
		max_length = max_length - 10;
	}
	if(_page.locale.substring(3,5)=="ru"){
		max_length = max_length - 5;
	}
	// Get length of youarehere
	youarehere_length = _page.getstringlength(_page.text["youarehere"]);
	// Get length of home
	home_length = _page.getstringlength(_page.text["home_breadcrumb"]);
	// Reduce max length for 'you are here' and 'home' texts
	max_length = max_length - youarehere_length - home_length -2;
	strNavTrail+='<table class="p-breadcrumb-table" cellspacing="0">\n';
	strNavTrail+='	<tr>\n';
	strNavTrail+='		<td id="p-youarehere">'+_page.text["youarehere"]+':</td>\n';
//	strNavTrail+='		<td id="p-home"><a href="'+_page.link["home"]+'">'+_page.text["home_breadcrumb"]+'</a></td>\n';
	// Set special section vars
	var strSectionMainName = (typeof _page.sectionMain[0]!="undefined"?_page.sectionMain[0]:'')
	var strSectionMainLink = (typeof _page.sectionMain[1]!="undefined"?_page.sectionMain[1]:'')
	var strSectionSpecialName = (typeof _page.sectionSpecial[0]!="undefined"?_page.sectionSpecial[0]:'')
	var strSectionSpecialLink = (typeof _page.sectionSpecial[1]!="undefined"?_page.sectionSpecial[1]:'')
	// Reduce max lenght for section
	var area_string='';
	if(_page.area!="" && strSectionSpecialName==""){
		if(_page.headerType == "external_extranet") {
			firstElement = (typeof(_page.topNavXN[_page.area])!="undefined"?_page.topNavXN[_page.area][0][0]:"");
		} else{
			firstElement = (typeof(_page.topNav[_page.area])!="undefined"?_page.topNav[_page.area][0][0]:"");
		}
		// Only show section when section is available
		if(active_item!="") {
			if(firstElement!="") {
				//Show translated section contents
				strNavTrail+='		<td class="p-first-microarrow"><a href="'+_page.locales[_page.locale]+'">'+firstElement+'</a></td>\n';
				area_string = firstElement;
			} else {
				strNavTrail+='		<td class="p-microarrow">'+_page.area+'</td>\n';
				area_string = _page.area;
			}
		} else {
			if(firstElement!=""){
				//Show translated section contents
				strNavTrail+='		<td class="p-first-microarrow">'+firstElement+'</td>\n';
				area_string = firstElement;
			}else{
				// Include text that is used in _page.area (other site)
				strNavTrail+='		<td class="p-microarrow">'+_page.area+'</td>\n';
				area_string = _page.area;
			}
		}
	} else if(strSectionSpecialName!="") {
		// Show special section items
		if(strSectionMainName!="")		strNavTrail+='		<td class="p-microarrow">'+(strSectionMainLink!=""?'<a href="'+strSectionMainLink+'">'+strSectionMainName+'</a>':strSectionMainName)+'</td>\n';
		if(strSectionSpecialName!="")	strNavTrail+='		<td class="p-microarrow">'+(strSectionSpecialLink!="" && active_item!=""?'<a href="'+strSectionSpecialLink+'">'+strSectionSpecialName+'</a>':strSectionSpecialName)+'</td>\n';
		area_string = strSectionMainName+strSectionSpecialName;
	}
	// reduce max length
	if(area_string!="") {
		max_length = max_length - _page.getstringlength(area_string);
	}
	if(active_item!=""){
		// Check if all items fit on 1 row			
		for (var i=0; i<parent_ids.length; i++) {
			total_length += _page.leftNav[parent_ids[i]].text.length;
		}
		counter = 0;
		if(total_length>max_length){
			while(total_length>max_length){
				total_length = total_length - _page.leftNav[parent_ids[counter]].text.length - spacing_length;
				i = i - 1;
				counter += 1;
			}
		}
		start_item = parent_ids.length - i;
		if(start_item!=0){
			strNavTrail+='		<td class="p-microarrow">...</td>\n';
		}
		for (var j=start_item; j<parent_ids.length; j++) {
			if(j!=(parent_ids.length-1)){
				strNavTrail+='<td class="p-first-microarrow"><a href="'+_page.leftNav[parent_ids[j]].link+'">'+_page.leftNav[parent_ids[j]].text+'</a></td>\n';
			}else{
				strNavTrail+='<td class="p-microarrow">'+_page.leftNav[parent_ids[j]].text+'</td>\n';
			}
		}
	}
	strNavTrail+='</tr>\n';
	strNavTrail+='</table>\n';
	document.write(strNavTrail);
};

//php urlencode compatibe javascrpt urlencode version
function urlencode( str ) {
    // http://kevin.vanzonneveld.net
    // +   original by: Philip Peterson
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +      input by: AJ
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
                               
    var histogram = {}, histogram_r = {}, code = 0, tmp_arr = [];
    var ret = str.toString();
   
    var replacer = function(search, replace, str) {
        var tmp_arr = [];
        tmp_arr = str.split(search);
        return tmp_arr.join(replace);
    };
 
    // The histogram is identical to the one in urldecode.
    histogram['!']   = '%21';
    histogram['%20'] = '+';
 
    // Begin with encodeURIComponent, which most resembles PHP's encoding functions
    ret = encodeURIComponent(ret);
 
    for (search in histogram) {
        replace = histogram[search];
        ret = replacer(search, replace, ret) // Custom replace. No regexing
    }
    
    // Uppercase for full PHP compatibility
    return ret.replace(/(\%([a-z0-9]{2}))/g, function(full, m1, m2) {
        return "%"+m2.toUpperCase();
    });
    
    return ret;
}



// Read a page's GET URL variables and return them as an associative array.
function getUrlVars() {
	var vars = [], hash;
	var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
	for(var i = 0; i < hashes.length; i++) {
		hash = hashes[i].split('=');
		vars.push(hash[0]);
		vars[hash[0]] = hash[1];
	}
	return vars;
}

