// Copyright (c) 2003-2006 by IBM Corporation

if (typeof dbgpwr == "undefined"){var dbgpwr=false;}
if (typeof dbgck == "undefined"){var dbgck=false;}
if (typeof dbgmenu == "undefined"){var dbgmenu=false;}
if (typeof pw_geo_restrict == "undefined"){var pw_geo_restrict=0;}

var j_pref = "/jct09002c";

// when true, this overrides the normal redirect behavior, which is that if the new page is the same as the current page, it is not reloaded.
var refreshThisPage = false;

var v=navigator.appVersion;

// countries currently not in business w. IBM:
var CCLCnobiz=[
"bzen2Belize",
"cres2Costa Rica",
"does2Dominican Republic",
"sves2El Salvador",
"gtes2Guatemala",
"htfr2Haiti",
"hnes2Honduras",
"lyen3Libya",
"nies2Nicaragua",
"paes2Panama",
"syen3Syrian Arab Republic"
];

// includes new Russian-language associations
// the "--" MUST be used before language options: see writeCountryMenu()
var CCLCgeo=[
"alen3Albania",
"dzfr3Algeria",
"asen1American Samoa (US)",
"ades3Andorra",
"aopt3Angola",
"aien2Anguilla",
"aqen1Antarctica",
"agen2Antigua and Barbuda",
"ares2Argentina",
"amru3Armenia",
"awen2Aruba",
"auen4Australia",
"atde3Austria",
"azru3Azerbaijan",
"bsen1Bahamas",
"bhen3Bahrain",
"bden4Bangladesh",
"bben2Barbados",
"byru3Belarus",
"been3Belgium",
"bjfr3Benin",
"bmen2Bermuda",
"bten4Bhutan",
"boes2Bolivia",
"baen3Bosnia/Herzegovina",
"bwen3Botswana",
"bven3Bouvet Island",
"brpt2Brazil",
"ioen3British Indian Oc. Terr.",
"bnen4Brunei Darussalem",
"bgbg3Bulgaria",
"bffr3Burkina Faso",
"bifr3Burundi",
"khen4Cambodia",
"cmfr3Cameroon",
"caen1Canada--English",
"cafr1Canada--French",
"cvpt3Cape Verde",
"kyen1Cayman Islands (UK)",
"cffr3Central African Rep.",
"tdfr3Chad",
"cles2Chile",
"cnzh4China",
"cxen4Christmas Island",
"ccen4Cocos (Keeling) Is.",
"coes2Colombia",
"kmfr3Comoros",
"cgfr3Congo",
"cdfr3Congo, Democratic Republic of the",
"cken4Cook Islands",
"hrhr3Croatia",
"cyen3Cyprus",
"czcs3Czech Republic",
"dkda3Denmark",
"djfr3Djibouti",
"dmen2Dominica",
"tpen4East Timor (ID)",
"eces2Ecuador",
"egen3Egypt",
"gqes3Equatorial Guinea",
"eren3Eritrea",
"eeen3Estonia",
"eten3Ethiopia",
"fken2Falkland Islands (UK)",
"foen3Faroe Islands (DK)",
"fjen4Fiji",
"fifi3Finland",
"frfr3France",
"gffr3French Guiana",
"pffr3French Polynesia",
"tffr3French Southern Terr.",
"gafr3Gabon",
"gmen3Gambia",
"geru3Georgia",
"dede3Germany",
"ghen3Ghana",
"gien3Gibraltar (UK)",
"grel3Greece",
"glen3Greenland (DK)",
"gden2Grenada",
"gpfr3Guadeloupe (FR)",
"guen1Guam (US)",
"gnfr3Guinea",
"gwpt3Guinea-Bissau",
"gyen2Guyana",
"vait3Holy See",
"hken4Hong Kong S.A.R. of China",
"huhu3Hungary",
"isen3Iceland",
"inen4India",
"iden4Indonesia",
"ieen3Ireland",
"ilen3Israel",
"itit3Italy",
"cifr3Ivory Coast",
"jmen2Jamaica",
"jpja4Japan",
"joen3Jordan",
"kzru3Kazakhstan",
"keen3Kenya",
"kien4Kiribati",
"krko4Korea, Rep. of",
"kwen3Kuwait",
"kgru3Kyrgyzstan",
"laen4Laos",
"lven3Latvia",
"lben3Lebanon",
"lsen3Lesotho",
"lren3Liberia",
"lide3Liechtenstein",
"lten3Lithuania",
"lufr3Luxembourg",
"moen4Macao S.A.R. of China",
"mken3Macedonia",
"mgfr3Madagascar",
"mwen3Malawi",
"myen4Malaysia",
"mven4Maldives",
"mlfr3Mali",
"mten3Malta",
"mhen4Marshall Islands",
"mqfr3Martinique (FR)",
"mren3Mauritania",
"muen3Mauritius",
"ytfr3Mayotte (FR)",
"mxes2Mexico",
"fmen4Micronesia",
"mden3Moldova, Republic of",
"mcfr3Monaco",
"mnen4Mongolia",
"msen2Montserrat (UK)",
"mafr3Morocco",
"mzpt3Mozambique",
"mmen4Myanmar",
"naen3Namibia",
"nren4Nauru",
"npen4Nepal",
"nlen3Netherlands",
"anen2Netherlands Antilles",
"ncfr3New Caledonia",
"nzen4New Zealand",
"nefr3Niger",
"ngen3Nigeria",
"nuen4Niue",
"nfen4Norfolk Island (AU)",
"mpen1Northern Mariana Is.",
"nono3Norway",
"omen3Oman",
"pken3Pakistan",
"pwen1Palau (US)",
"psen3Palestinian Terr. Occ.",
"pgen4Papua New Guinea",
"pyes2Paraguay",
"pees2Peru",
"phen4Philippines",
"pnen4Pitcairn (UK)",
"plen3Poland",
"ptpt3Portugal",
"pres1Puerto Rico (US)",
"qaen3Qatar",
"refr3R&#233;union (FR)",
"roro3Romania",
"ruru3Russian Federation",
"rwen3Rwanda",
"shen3Saint Helena (UK)",
"knen2Saint Kitts and Nevis",
"lcen2Saint Lucia",
"wsen4Samoa",
"smit3San Marino",
"stpt3Sao Tome/Principe",
"saen3Saudi Arabia",
"snfr3Senegal",
"csen3Serbia and Montenegro",
"scen3Seychelles",
"slen3Sierra Leone",
"sgen4Singapore",
"sksk3Slovakia",
"sisl3Slovenia",
"sben4Solomon Islands",
"soen3Somalia",
"zaen3South Africa",
"eses3Spain",
"lken4Sri Lanka",
"vcen1St. Vincent/Gren.",
"sren3Suriname",
"szen3Swaziland",
"sesv3Sweden",
"chfr3Switzerland--French",
"chde3Switzerland--German",
"twzh4Taiwan",
"tjru3Tajikistan",
"tzen3Tanzania",
"then4Thailand",
"tgfr3Togo",
"tken4Tokelau (NZ)",
"toen3Tonga",
"tten2Trinidad and Tobago",
"tnen1Tunisia",
"trtr3Turkey",
"tmru3Turkmenistan",
"tcen1Turks/Caicos Is. (UK)",
"tven4Tuvalu",
"ugen3Uganda",
"uaru3Ukraine",
"aeen3United Arab Emirates",
"uken3United Kingdom",
"usen1United States",
"uyes2Uruguay",
"uzru3Uzbekistan",
"vuen3Vanuatu",
"vees2Venezuela",
"vnen4Vietnam",
"vgen2Virgin Islands, British",
"vien1Virgin Islands, U.S.",
"wffr4Wallis/Futuna (FR)",
"ehen3Western Sahara",
"yeen3Yemen",
"zmen3Zambia",
"zwen3Zimbabwe",
"00en0"];

function setCookie(value){
	expires=new Date;
	expires.setTime(expires.getTime()+5*365*24*3600*1000);
	ckstr="ipcInfo="+escape(value)+"; path=/;domain=.lenovo.com;expires="+expires.toGMTString();
	if (dbgck) alert("setCookie: "+ckstr);
	document.cookie=ckstr;
}

function setSessionCookie(value){
	ckstr="ipcInfo="+escape(value)+"; path=/;domain=.lenovo.com";
	if (dbgck) alert("setSessionCookie: "+ckstr);
	document.cookie=ckstr;
}

function deleteCookie(){
	document.cookie="ipcInfo=; path=/;domain=.lenovo.com;";
	if (dbgck) alert("deleteCookie");
}

function getCookie(){
	nm="ipcInfo=";
	cookieString=document.cookie;
	n=cookieString.length;
	m=nm.length;
	for (i=0; i<n-m && nm!=cookieString.substring(i, i+m); ++i);
	if (i>=(n-m)){
		return "";
	}
	i+=m;
	j=cookieString.indexOf(";", i);
	c=unescape((j<i)?cookieString.substring(i):cookieString.substring(i, j));
	return c;
}

function ReplacePWCCookie() {
	ipcInfo=getCookie();
	if (ipcInfo=="") return "";
	j=ipcInfo.indexOf("lc=e"); //pwc=");
	if (j>0)
	{
		//replace ipcInfo, "pwc=", "cc="
		ipcInfo= ipcInfo.substring(0, j) + "cc=" + ipcInfo.substring(j+4, ipcInfo.length);
	}
	j=ipcInfo.indexOf("pwl=");
	if (j>0)
	{
		//replace ipcInfo, "pwl=", "lc="
		ipcInfo= ipcInfo.substring(0, j) + "lc=" + ipcInfo.substring(j+4, ipcInfo.length);
	}
	document.cookie = ipcInfo;
}

function getCookieCCLC(){
	var cc="";
	var lc="";
	ipcInfo=getCookie();
	if (ipcInfo=="") return "";
	len=ipcInfo.length;
	// look first for cc=, lc= ; if not found, look for pwc=, pwl=
	i=ipcInfo.indexOf("cc=");
	if (i>=0) {
		if (i+5>=len||ipcInfo.charAt(i+5)!=';')return "";
		cc=ipcInfo.substring(i+3, i+5);
		i=ipcInfo.indexOf("lc=");
		if (i<0||i+5>=len||ipcInfo.charAt(i+5)!=';')return "";
		lc=ipcInfo.substring(i+3, i+5);
	} else {
		j=ipcInfo.indexOf("pwc=");
		if (j<0||j+6>=len||ipcInfo.charAt(j+6)!=';')return "";
		cc=ipcInfo.substring(j+4, j+6);
		j=ipcInfo.indexOf("pwl=");
		if (j<0||j+6>=len||ipcInfo.charAt(j+6)!=';')return "";
		lc=ipcInfo.substring(j+4, j+6);
	}
	return cc+lc;
}

function getBrowserCCLC(){
	var cc="";
	var lc="";
	l=(navigator.userLanguage?navigator.userLanguage:navigator.language).toLowerCase();
	len=l.length;
	if(len<2)return "00en";
	lc=l.substring(0,2);
	if(len<5){
		if(lc=="ja" || lc=="jp"){ cc="jp"; lc="ja"; }
		if(lc=="en")cc="us";
		if(lc=="zh")cc="cn";
		if(lc=="fr")cc="fr";
		if(lc=="de")cc="de";
		if(lc=="ko"){ cc="kr"; lc="kr"; }
		if(lc=="pt")cc="br";
		if(lc=="es")cc="mx";
	}else{
		cc=l.substring(3,5);
	}
	if(cc=="")cc="00";
	if(lc=="")lc="en";
	return cc+lc;
}

// if no cookie but the browser has CC and LC, then we set the cookie
function getCCLC(){
	cclc=getCookieCCLC();
	if(cclc==""){
		cclc=getBrowserCCLC();
		// set cclc only if Japan, Korea, China or Taiwan
		n="";
		if(cclc=="jpjp"||cclc=="jpja")n=cclc;
		if(cclc=="krkr"||cclc=="krko")n=cclc;
		if(cclc=="cnzh")n=cclc;
		if(cclc=="twzh")n=cclc;
		cclc=n;
		if(cclc!="") {
			var cc=cclc.substring(0,2);
			var lc=cclc.substring(2,4);
			setCookie("cc="+cc+";lc="+lc+";ac=all");
		}
	}
	return cclc;
}

// geo= 0, 1, 2, 3, or 4
function getGeo(cclc){
	if (cclc=="") { return "0"; }
	for(i=0;i<CCLCgeo.length; i++){
		if(cclc==CCLCgeo[i].substring(0,4)) return CCLCgeo[i].substring(4,5);
	}
	return "0";		// 0 means "don't know" -- i.e. global
}

// returns the country name (+ lang, if any) for the given cclc, based on CCLCgeo[]
function getCountryName(cclc){
	var cname = "";
	var arr_size=CCLCgeo.length;
	for (i=0; i<arr_size; i++){
		var cl = CCLCgeo[i].substr(0,4);
		if (cl == cclc){
			var clname=CCLCgeo[i].substr(5);
			var i = clname.indexOf("--");
			if (i>0) cname = clname.substring(0, i);
			else cname = clname;
			break;
		}
	}
	return cname;
}

// returns the filename component of a path; ignores everything beg. w. '?'
// (if ref = "http://www.lenovo.com/xxy/aab/mypage.html", returns "mypage.html")
function getLocFilename(ref) {
  var rslt;
  var q = ref.indexOf("?");
  if (q == -1) {
    rslt = ref;
  } else {
    rslt = ref.substr(0, q);
  }
  var s = rslt.lastIndexOf("/");
  if (s == -1) {
    rslt = ref;
  } else {
    rslt = ref.substr(s+1);
  }
  return rslt;
}

// we assume p2 is always absolute (location.href)
function pagesEquivalent(p1, p2) {
	var qstr = "?";
	var p1_lb_index = p1.indexOf("#");
	var p2_lb_index = p2.indexOf("#");
	var p1q = p1.indexOf(qstr);
	var p2q = p2.indexOf(qstr);

	// remove trailing '#'s:
	if (p1_lb_index>0) p1 = p1.substring(0,p1_lb_index);
	if (p2_lb_index>0) p2 = p2.substring(0,p2_lb_index);
	if (p1q>0) p1 = p1.substring(0,p1q);
	if (p2q>0) p2 = p2.substring(0,p2q);

	if (p1==p2 || p1==getLocFilename(p2)) {
		if (dbgpwr) alert("straight match found: p1="+p1+", p2="+p2);
		return true;
	}

	// allows recognition that www-1.ibm.com/x == www.pc.ibm.com/x:
	var p1_ibm_ptr = p1.indexOf(".ibm.com");
	var p2_ibm_ptr = p2.indexOf(".ibm.com");
	if (p1_ibm_ptr>0 && p2_ibm_ptr>0) {
		var p1ss = p1.substr(p1_ibm_ptr);
		var p2ss = p2.substr(p2_ibm_ptr);
		if (dbgpwr) alert("p1 sub="+p1ss+", p2 sub="+p2ss);
		if (p1ss==p2ss || p2ss.substr(j_pref.length+8)==p1ss.substr(8)) {  // 8 = length of ".ibm.com"
			if (dbgpwr) alert("'www-' match found: p1="+p1+", p2="+p2);
			return true;
		}
	}

	if (p1.indexOf("/") == 0) {
		var x = 0;
		if (p2.indexOf("http://") == 0)
			x = 7;
		else if (p2.indexOf("https://") == 0)
			x = 8;
		if (x>0) {
			var p2s = p2.substr(x); // after "//"
			var n = p2s.indexOf("/");
			p2s = p2s.substr(n);
			// p2s is the part after [http[s]://].*ibm.com  i.e. the local path, starting with "/"
			if (p2s==p1 || p2s.substr(j_pref.length)==p1 || p2s==getLocFilename(p1) || ("/us/en"+p2s)==p1)
			{
				if (dbgpwr) alert("server-less match found: p1="+p1+", p2="+p2s);
				return true;
			}
		}
	}

	if (dbgpwr) alert("pages NOT equivalent: p1="+p1+", p2="+p2);
	return false;
}

function getparamvalue(pname) {
	var pval="";
	var i=location.href.indexOf("&"+pname+"=");
	if (i<0) i=location.href.indexOf("?"+pname+"=");
	if (i>=0) pval = location.href.substr(i+pname.length+2);
	return pval;
}

function get_GPI_lang(cclc) {
	var lang;
	if (cclc=="" || cclc.length<4){
		lang="";
	} else {
		var cc=cclc.substring(0,2);
		var lc=cclc.substring(2,4);
		switch (lc) {
			case "de": lang = "DEDE"; break;
			case "en": lang = "ENUS"; break;
			case "es": lang = "ESES"; break;
			case "fr": lang = "FRFR"; break;
			case "it": lang = "ITIT"; break;
			case "pt": lang = "PTBR"; break;
			case "zh":
				if (cc=="tw") lang = "ZHTW";
				else lang = "ZHCN";
				break;
			case "jp": lang = "JAJP"; break;
			case "ja": lang = "JAJP"; break;
			case "kr": lang = "KOKR"; break;
			case "ko": lang = "KOKR"; break;
		}
	}
	return lang;
}

function SetGPI(CkName, value) {
	var argv = SetGPI.arguments;
	var argc = SetGPI.arguments.length;
	var expires = (argc > 2) ? argv[2] : null;
	var path = (argc > 3) ? argv[3] : null;
	var domain = (argc > 4) ? argv[4] : null;
	var secure = (argc > 5) ? argv[5] : false;
	document.cookie = CkName + "=" + escape (value) +
		((expires == null) ? "" : ("; expires=" + expires.toGMTString())) +
		((path == null) ? "" : ("; path=" + path)) +
		((domain == null) ? "" : ("; domain=" + domain)) +
		((secure == true) ? "; secure" : "");
}

function set_lang1(lang) {
	var expdate = new Date ();
	expdate.setTime(expdate.getTime() + (24 * 60 * 60 * 1000 * 365));
	SetGPI('BabelPref', lang, expdate, "/", '.ibm.com');
}

// f_geo is either 0 (match with all geos) or 1, 2, 3 or 4 (restrict matches to the specified geo)
function writeCountryMenu(pgset, f_geo) {
	var gtarg="";
	var tstr="";
	var patt,targ;
	var geo_patts = new Array();
	var lc_patts = new Array();
	var cc_patts = new Array();
	var geolc_patts = new Array();
	var cclc_patts = new Array();
	var moms = new Array(12);
	var mc=0;
	var pg_aname = "Pages";
	if ((typeof pgset != "undefined") && (pgset!="")){
		pg_aname = pg_aname+"_"+pgset;
	}
	var pages_size=eval(pg_aname+".length");
	var arr_size=CCLCgeo.length;
	var i,j,k;
	var g, lc, cc, cclc;
	// initialize match arrays
	var cclc_matches = new Array(arr_size);
	var cclc_top = new Array(arr_size);
	var mcount=0;
	for (i=0; i<arr_size; i++){
		var cc=CCLCgeo[i].substring(0,2);
		cclc_matches[i]=0;
		cclc_top[i]=0;
		if (cc=="us" && (f_geo==0 || f_geo==1)){
			// the US is always included
			cclc_matches[i]=1;
			mcount++;
			cclc_top[i]=1;
		}
		// add entries for "mother" countries
		// map (lang, geo) to array-index for cclc: entry is "<lc><g><i>" -- lc is 2 chars, g is 1 char
		if (cc=="fr"){
			moms[mc] = "fr3"+i;
			mc++;
		}
		if (cc=="es"){
			moms[mc] = "es3"+i;
			mc++;
		}
		if (cc=="br"){
			moms[mc] = "pt2"+i;
			mc++;
		}
		if (cc=="de"){
			moms[mc] = "de3"+i;
			mc++;
		}
		if (cc=="it"){
			moms[mc] = "it3"+i;
			mc++;
		}
		if (cc=="jp"){
			moms[mc] = "jp4"+i;
			mc++;
		}
		if (cc=="ru"){
			moms[mc] = "ru3"+i;
			mc++;
		}
		if (cc=="cn"){
			moms[mc] = "zh4"+i;
			mc++;
		}
		if (cc=="kr"){
			moms[mc] = "kr4"+i;
			mc++;
		}
		if (cc=="uk"){
			moms[mc] = "en3"+i;
			mc++;
		}
	}
	// collect patterns
	for (i=0; i<pages_size; i++){
		patt=eval(pg_aname+"[i]");
		var p0code = patt.charCodeAt(0);
		if (p0code>=48 && p0code<=57){
			if (p0code==48){ // '0'
				gtarg = patt.substr(1);
			} else {
				// geo pattern
				geo_patts[geo_patts.length]=patt;
				if (dbgmenu){ alert("added geo pattern: "+patt); }
			}
		} else if (patt.substr(0,2)=="--"){
			// language pattern
			lc_patts[lc_patts.length]=patt;
			if (dbgmenu){ alert("added lc pattern: "+patt); }
		} else if (patt.substr(2,2)=="--"){
			// country pattern
			cc_patts[cc_patts.length]=patt;
			if (dbgmenu){ alert("added cc pattern: "+patt); }
		} else if (patt.substr(0,1)=="-"){
			// geo/language pattern: e.g. "-3fr"
			geolc_patts[geolc_patts.length]=patt;
			if (dbgmenu){ alert("added geolc pattern: "+patt); }
		} else {
			// cclc (literal) pattern
			cclc_patts[cclc_patts.length]=patt;
			if (dbgmenu){ alert("added cclc pattern: "+patt); }
		}
	}
	// match cclcs against patterns
	for (i=0; i<geo_patts.length; i++){
		g=geo_patts[i].charAt(0);
		targ=geo_patts[i].substr(1);
		// a geo pattern implies that all its constituent countries should be added
			for (j=0; j<arr_size; j++){
				if(g==CCLCgeo[j].charAt(4) && (f_geo==0 || f_geo==CCLCgeo[j].charAt(4))) {
					cclc_matches[j]=1;
					mcount++;
				}
			}
	}
	for (i=0; i<lc_patts.length; i++){
		lc=lc_patts[i].substr(2,2);
		targ=lc_patts[i].substr(4);
		for (j=0; j<arr_size; j++){
			if(lc==CCLCgeo[j].substr(2,2) && (f_geo==0 || f_geo==CCLCgeo[j].charAt(4))){
				cclc_matches[j]=1;
				mcount++;
				// add to top-list
				for (k=0; k<mc; k++) {
					if (moms[k].substr(0,2)==lc) {
						var mindex = parseInt(moms[k].substr(3));
						cclc_top[mindex]=1;
						break;
					}
				}
				if (dbgmenu){ alert(CCLCgeo[j].substr(0,4)+" was added because its lc "+lc+" is included"); }
			}
		}
	}
	for (i=0; i<geolc_patts.length; i++){
		g=geolc_patts[i].charAt(1);
		lc=geolc_patts[i].substr(2,2);
		targ=geolc_patts[i].substr(4);
		for (j=0; j<arr_size; j++){
			if(lc==CCLCgeo[j].substr(2,2) && g==CCLCgeo[j].charAt(4) && (f_geo==0 || f_geo==CCLCgeo[j].charAt(4))){
				cclc_matches[j]=1;
				mcount++;
				// add to top-list
				for (k=0; k<mc; k++) {
					if (moms[k].substr(0,2)==lc && moms[k].charAt(2)==g) {
						var mindex = parseInt(moms[k].substr(3));
						cclc_top[mindex]=1;
						break;
					}
				}
				if (dbgmenu){ alert(CCLCgeo[j].substr(0,4)+" was added because its geo & lc "+lc+" are included"); }
			}
		}
	}
	// NOTE: a pattern like "ca--" will result in both Canadian options showing up in the list;
	// but only the English option will appear in the short list (if segmented option)
	// RATIONALE: if 2 or more languages have the same target page, the page must be in English
	for (i=0; i<cc_patts.length; i++){
		cc=cc_patts[i].substr(0,2);
		targ=cc_patts[i].substr(4);
		for (j=0; j<arr_size; j++){
			if(cc==CCLCgeo[j].substr(0,2) && (f_geo==0 || f_geo==CCLCgeo[j].charAt(4))){
				cclc_matches[j]=1;
				// add to top-list only if the country option is for English or is unspecified
				var dd=CCLCgeo[j].indexOf("--");
				var ddlang=CCLCgeo[j].indexOf("English");
				if (dd<0 || ddlang>0){
					cclc_top[j]=1;
				}
				mcount++;
				if (dbgmenu){ alert(CCLCgeo[j].substr(0,4)+" was added because its cc is included"); }
			}
		}
	}
	for (i=0; i<cclc_patts.length; i++){
		cclc=cclc_patts[i].substr(0,4);
		targ=cclc_patts[i].substr(4);
		for (j=0; j<arr_size; j++){
			if(cclc==CCLCgeo[j].substr(0,4) && (f_geo==0 || f_geo==CCLCgeo[j].charAt(4))){
				cclc_matches[j]=1;
				// add to top-list because it's a country-specific pattern:
				cclc_top[j]=1;
				mcount++;
				if (dbgmenu){ alert(CCLCgeo[j].substr(0,4)+" was added because its cclc is included"); }
			}
		}
	}
	if (dbgmenu){ alert("# of matching countries="+mcount); }

	for (i=0; i<arr_size; i++){
		if (cclc_matches[i]==1){
			var clname=CCLCgeo[i].substr(5);
			cclc = CCLCgeo[i].substr(0,4);
			if (clname!=""){
				document.writeln('<option value="'+cclc+'">'+clname+'</option>');
				if (dbgmenu){ tstr += ","+cclc; }
			}
		}
	}
	if (dbgmenu){ alert("matches: "+tstr); }
}

function RegNavBlock(hdg, pset){
	rExp = /-/g;
	var cclc = getCCLC();
	var go_button;
	var pgset = pset.replace(rExp, "_");
	var argv = RegNavBlock.arguments;
	var argc = RegNavBlock.arguments.length;
	var lang = (argc > 2) ? argv[2] : null;
	var nocheck = (argc > 3) ? argv[3] : null;
	var f_geo = (argc > 4) ? argv[4] : pw_geo_restrict;  // default is 0
	var include_go = (nocheck==null || nocheck != 1);
	var opt0, tabbg, tabbg_white;
	// alternative language headings:
	var hdg_cn="&#36873;&#25321;&#22269;&#23478;&#21450;&#22320;&#21306;";
	var opt0_cn=hdg_cn;
	var hdg_cs="Vyberte zemi/oblast";
	var opt0_cs="Vyberte jedno";
	var hdg_da="V&#230;lg land/Region";
	var opt0_da="V&#230;lg en";
	var hdg_de="W&#228;hlen Sie ein Land";
	var opt0_de="W&#228;hlen Sie eins aus";
	var hdg_el="&#917;&#960;&#953;&#955;&#941;&#958;&#964;&#949; &#967;&#974;&#961;&#945;/&#960;&#949;&#961;&#953;&#959;&#967;&#942;";
	var opt0_el=hdg_el;
	var hdg_en="Select a country/region";
	var opt0_en="Select one";
	var hdg_es="Seleccione un pa&#237;s";
	var opt0_es="Seleccione uno";
	var hdg_fi="Select a country/region";
	var opt0_fi="Select one";
	var hdg_fr="Choisissez un pays";
	var opt0_fr="Choisissez un &#233;l&#233;ment";
	var hdg_it="Seleziona un paese";
	var opt0_it="Selezionare";
	var hdg_ja="&#22269;&#12434;&#36984;&#25246;&#12375;&#12390;&#12367;&#12384;&#12373;&#12356;";
	var opt0_ja="Select one";
	var hdg_jp=hdg_ja;
	var opt0_jp=opt0_ja;
	var hdg_kr="&#44397;&#44032;&#49440;&#53469;";
	var opt0_kr=hdg_kr;
	var hdg_no="Velg land/region";
	var opt0_no="Velg &#233;n";
	var hdg_pt="Selecione um pa&#237;s";
	var opt0_pt="Selecione um";
	var hdg_ru="&#1042;&#1099;&#1073;&#1077;&#1088;&#1080;&#1090;&#1077; &#1089;&#1090;&#1088;&#1072;&#1085;&#1091;";
	var opt0_ru=hdg_ru;
	var hdg_sv="V&#228;lj land/Region";
	var opt0_sv="V&#228;lj";
	var hdg_tr="&#220;lke/b&#246;lge se&#231;in";
	var opt0_tr="Birini se&#231;in";
	var hdg_tw="&#36984;&#25799;&#22283;&#23478; / &#22320;&#21312;";
	var opt0_tw=hdg_tw;

	hdg = hdg_en;
	opt0 = opt0_en;
	// this code overrides the 'heading' parameter:
	if (lang!=null) {
		hdg = eval("hdg_"+lang);
		opt0 = eval("opt0_"+lang);
	}
	var bg = "";
	tabbg = 'style="background-color: #98b1c4;"';
	tabbg_white = 'style="background-color: #ffffff;"';

	if (cclc=="") bg = "background-color:#ffff99; ";
	go_button = "//www.ibm.com/i/v14/buttons/go.gif";
	document.writeln('<table cellpadding="0" cellspacing="0" border="0" width="150"><tr><td width="150" class="v14-header-1-small">'+hdg+'</td></tr></table><table cellpadding="0" cellspacing="0" border="0" '+tabbg+'><tr valign="top"><td width="150"><table cellspacing="1" cellpadding="0" border="0" width="100%"><tr valign="middle" '+tabbg_white+'><td>');

	// form MUST be named ccform:
	document.writeln('<table cellpadding="1" cellspacing="0" border="0"><form name="ccform"><tr><td colspan="2"><img src="//www.ibm.com/i/c.gif" width="1" height="1" alt=""/></td></tr><tr valign="top"><td width="123">');
	document.writeln('<select name="country" style="'+bg+'font-size:10px; font-family:verdana,sans-serif; width:120px;" onchange="goToRegionalPage(\''+pgset+'\',false);">');
	document.writeln('<option value="">'+opt0+'</option>');
	writeCountryMenu(pgset, f_geo);
	document.writeln('</select></td><td width="23" height="23" valign="middle">');
	if (include_go){
		document.writeln('<a href="javascript:goToRegionalPage(\''+pgset+'\',false)"><img src="'+go_button+'" width="21" height="21" alt="Go" border="0"/></a>');
	} else {
		document.writeln('&nbsp;');
	}
	document.writeln('</td></tr></form></table></td></tr></table></td></tr></table>');
	document.writeln('<table cellpadding="0" cellspacing="0" border="0"><tr><td><img src="//www.ibm.com/i/c.gif" width="1" height="9" alt=""/></td></tr></table>');
	preselectDefaultCountry(false);
}

// uses Pages[] if pgset=="", otherwise uses Pages_<pgset>[]
function getRegionalPageName(cclc, pgset){
	var g=getGeo(cclc);
	var cc=cclc.substring(0,2);
	var lc=cclc.substring(2,4);
	var pg_aname = "Pages";
	if (dbgpwr){ alert("getRegionalPageName: cclc="+cclc+"; pages="+pgset+"; geo="+g+";"); }
	if ((typeof pgset != "undefined") && (pgset!="")) {
		pg_aname = pg_aname+"_"+pgset;
	}
	var len=eval(pg_aname+".length");
	// check country/lang. match
	for(i=0;i<len; i++) {
		if(cclc==eval(pg_aname+"[i].substring(0,4)")) return eval(pg_aname+"[i].substr(4)");
	}
	// check country match with wildcard language in the pattern
	for(i=0;i<len; i++) {
		if(cc==eval(pg_aname+"[i].substring(0,2)") && eval(pg_aname+"[i].substring(2,4)")=="--") return eval(pg_aname+"[i].substr(4)");
	}
	// check geo/lang. match: e.g. "-3fr" for French in EMEA, or "-2es" for Spanish in LA
	for(i=0;i<len; i++) {
		if(("-"==eval(pg_aname+"[i].substring(0,1)")) && (g==eval(pg_aname+"[i].substring(1,2)")) &&
		   (lc==eval(pg_aname+"[i].substring(2,4)"))) return eval(pg_aname+"[i].substr(4)");
	}
	// check language match, without country: e.g. "--fr" or "--es"
	for(i=0;i<len; i++) {
		if(("--"==eval(pg_aname+"[i].substring(0,2)")) &&
		   (lc==eval(pg_aname+"[i].substring(2,4)"))) return eval(pg_aname+"[i].substr(4)");
	}
	// check geo match
	if (dbgpwr) alert("checking for geo match");
	for (i=0;i<len; i++) {
		if (g==eval(pg_aname+"[i].substring(0,1)")) return eval(pg_aname+"[i].substr(1)");
	}
	// default match
	if (dbgpwr) alert("default match");
	for(i=0;i<len; i++) {
		if("0"==eval(pg_aname+"[i].substring(0,1)")) return eval(pg_aname+"[i].substr(1)");
	}
	return "";
}

// adjusts the selected option in the country pulldown
// also sets the 'remember' option if rmb_opt AND the cookie contains "cc="
function preselectDefaultCountry(rmb_opt){
	var argv = preselectDefaultCountry.arguments;
	var argc = preselectDefaultCountry.arguments.length;
	var fname = (argc > 1) ? argv[1] : null;
	if (fname!=null) fm = eval("document."+fname);
	else fm = document.ccform;
	c=getCookie();
	if (rmb_opt && c.indexOf("cc=")>=0) fm.remember.checked=1;
	cclc=getCCLC();
	if (dbgpwr) alert("preselectDefaultCountry: cclc="+cclc);
	if (cclc=="")return;
	l=fm.country;
	for(i=0;i<l.length;i++){
		if (l[i].value==cclc){
			l.selectedIndex=i;
			break;
		}
	}
}

// opens a new window iff the server doesn't contain "ibm.com"
function goToOrPopupPage(url, repl) {
	var ext_page = false;
	var hname;
	var pd = "";

	if (url.substring(0,7)=="http://") {
		next_slash = url.indexOf("/", 7);
		if (next_slash==-1) {
			hname = url.substring(7);
		} else {
			hname = url.substring(7,next_slash);
		}
		if (hname.indexOf("ibm.com") == -1) ext_page = true;
	} else if (url.substring(0,8)=="https://") {
		next_slash = url.indexOf("/", 8);
		if (next_slash==-1) {
			hname = url.substring(8);
		} else {
			hname = url.substring(8,next_slash);
		}
		if (hname.indexOf("ibm.com") == -1) ext_page = true;
	}
	if (!ext_page) {
		// add in '#' piece if not present in targ, but present in current page url
		if (url.indexOf("#")<0) {
			var j = location.href.indexOf("#");
			if (j>0) {
				var k = location.href.indexOf("?");
				if (k>j) {
					pd = location.href.substring(j,k);
				} else {
					pd = location.href.substr(j);
				}
			}
			url += pd;
		}
		if (dbgpwr) alert("repl is "+repl+"; pd="+pd);

		var newurl = url;
		if (location.href.indexOf("www-304.ibm.com") > 0) {
			if (url.indexOf("/")==0) {
				newurl = j_pref + url;
			}
		}

		if (repl) window.location.replace(newurl);
		else window.location=newurl;

	} else {
		window.open(url, "extwin");
	}
}

function redirectToRegionalPage(pgset){
	var cclc = getCCLC();
	p=getRegionalPageName(cclc, pgset);
	if (dbgpwr) alert("cclc="+cclc+"; my URL="+document.URL+"; redirect URL="+p);
	if (p!="" && (refreshThisPage || !pagesEquivalent(p,location.href))) goToOrPopupPage(p,true);
}

// redirects iff the cookie is set
function maybeRedirectToRegionalPage(pgset){
	if (dbgpwr) alert("maybeRedirectToRegionalPage(): my URL="+document.URL);
	var cclc = getCCLC();
	if (dbgpwr){ alert("cclc="+cclc); }
	if (cclc=="") return;

	p=getRegionalPageName(cclc, pgset);
	if (dbgpwr) alert("cclc="+cclc+"; my URL="+document.URL+"; redirect URL="+p);
	if (p!="" && (refreshThisPage || !pagesEquivalent(p,location.href))) goToOrPopupPage(p,true);
}

function goToRegionalPageCCLC(pgset, rmb_opt, cclc) {
	var argv = goToRegionalPageCCLC.arguments;
	var argc = goToRegionalPageCCLC.arguments.length;
	var fname = (argc > 3) ? argv[3] : null;
	if (fname!=null) fm = eval("document."+fname);
	else fm = document.ccform;
	cc=cclc.substring(0,2);
	lc=cclc.substring(2,4);
	if (cclc=="----"){
		p="ww_select.html";
		if ((typeof pgset != "undefined") && (pgset!="")) p += "?OpenDocument&pageset=" + pgset;
	} else {
		if (!rmb_opt || fm.remember.checked) {
			setCookie("cc="+cc+";lc="+lc+";ac=all");
		} else {
			// updated 12/11/06 to change PWC= to CC= and PWL= to LC=
			setSessionCookie("cc="+cc+";lc="+lc+";ac=all");
		}
		// also set GPI cookie
		set_lang1(get_GPI_lang(cclc));
		p=getRegionalPageName(cclc, pgset);
	}
	if (dbgpwr){ alert("goToRegional: cclc="+cclc+"; p="+p); }
	if (p!="" && (refreshThisPage || !pagesEquivalent(p,location.href))) goToOrPopupPage(p,false);
}

function goToRegionalPage(pgset, rmb_opt){
	var argv = goToRegionalPage.arguments;
	var argc = goToRegionalPage.arguments.length;
	var fname = (argc > 2) ? argv[2] : null;
	if (fname!=null) fm = eval("document."+fname);
	else fm = document.ccform;

	// change pulldown bg to white
	fm.country.style.backgroundColor = "#fff";
	s=fm.country;
	i=s.selectedIndex;
	if (i==0) return;
	cclc=s.options[i].value;
	goToRegionalPageCCLC(pgset, rmb_opt, cclc);
}

ReplacePWCCookie();
