/*****************************************
/	minicore.js -- client support functions for HTML pages
******************************************/

// Missing Array Functions for IE 5.0
//Leave this here for browser compatibility!
if(navigator.appVersion.indexOf("MSIE 5.0")!=-1)
{
 Array.prototype.push = function(element){this[this.length] = element;}
 Array.prototype.pop = function()
 {
  if(this.length < 1)
   return null;
  var element = this[this.length-1];
  this[this.length-1] = null;
  this.length--;
  return element;
 }
}

/*****************************************
/ global variables
******************************************/
var Ctrl;
var extVars = "";
var isIE=(navigator.appName!="Netscape"),
isIE5=(navigator.appVersion.indexOf("MSIE 5")>=0),
isIE5_0 = (isIE5 && (navigator.appVersion.indexOf ("MSIE 5.5") < 0)),
isIE6=(navigator.appVersion.indexOf("MSIE 6")>=0),
oid, cid, Layout, w=window, fullscreen,
isAdmin, Corp=1, isKids=1, kidsCur=0,
langArray=["EN","DE-DE","JA-JP","ES-ES","PT-BR","FR-FR","IT-IT","ZH-CN","ZH-TW","KO-KO","ES-MX","RU-RU","TR-TR"];
loadOnce=0, doubleReq=false, sTimer=null, mainLoaded=0,timeKeep=null;
var Obj = new Object();
var p = window;
var ROOT = "../../../";
var Ini = new Object();
Ini.GlobalPath = ROOT;

var lang = getLang();

var User = {};
    User.Lang = lang;

var chinaKids = false;
/*****************************************
LINK FUNCTIONS
******************************************/
function setConsAccess(oid, anchor){
	if(anchor)
		Obj.Anchor = anchor;
	tm(204,oid);
}

function anchorLink(c,o,a){//c = classId, o = objectId, a=anchor
	Obj.Anchor = a;
	tm(c,o);
}

function tm(c,i,a,p,e, delimiter){
	var o=new Object();
	o.ClassId=c != null? c: null;
	o.Id=i? i: null;
	doLink(o,a,p,e, delimiter);
}

// Passes obj containing classId and id to doLinkStr to build url
// sends url to make request to server
function doLink(o,a,p,e, delimiter){
	if(!delimiter)
		delimiter = ",";
	if(a)Obj.Asp=a;
	if(p)Obj.Prop=p.split(delimiter);
	if(e){
		if (Obj.Ext)
			e += "," + Obj.Ext;
		Obj.Ext=e.split(delimiter);
	}
	else if (Obj.Ext)
	{
		var str = Obj.Ext.toString(); //for IE5, split() only works with a string -AP
		Obj.Ext = str.split(delimiter);
	}
	
	var s=doLinkStr(o);

	if(s&&!doubleReq) {
		doubleReq=true;
		parent.document.location.href=s;
	}else {
	  setTimeout('doubleReq=false',1000);
	  return false;
	}
}

// Returns a complete url based on obj.classId, obj.id and the existing page's Obj
// Also handles Obj.ExParm; adds anything to the url exactly as specified,
// Obj.Anchor for html anchors
function doLinkStr(obj){
	// special code for minicore.js: extract lang from path
	var o=obj? obj: new Object();
	var s = "";
	if(o.site){
		s += "http://" + o.site + "/";
	}
	else
		s += serverPath();
	s+=(Obj.Asp=="default".toLowerCase())?"":"templates/bin/";
	s+=((Obj.Asp)? Obj.Asp: "template")+".asp?lang="+lang;
	if (o.ClassId || o.ClassId==0) s+="&ClassId="+o.ClassId;
	if (o.Id) s+="&ObjectId="+o.Id;
	if (Obj.ExParm) s+=Obj.ExParm;

	var d=["Prop","Ext","Save"];
	for(var i=0;i<d.length;i++)
		if (Obj[d[i]]) s+= eval("get"+ d[i] +"(s)");
	if(w.isCurriculum && (isCurriculum(o.ClassId) || o.ClassId == 0))
		s+="&CurId=4";
	if(Obj.Anchor) s+="#"+Obj.Anchor;

//	reset page vars for when only using function to create url string
	Obj.Prop=Obj.Ext=Obj.Asp=Obj.ExParm=null;
	return s;
}

// if (Obj.Prop), builds Prop string
// to set this up, Obj.Prop=[name1=value1,name2=value2]
// on the next page Obj.name1=value1 & Obj.name2=value2 will be present
function getProp(){
	var ret="&Prop="+escape(mkPrs(Obj.Prop,'|'))
	return (ret.length>6)?ret:"";
}

// Includes &name=value pairs in url
//09/10/2002 jh.  allows client code to use Ext for name anchor tags
function getExt(){
if (Obj.Ext[0].indexOf("#") != -1 && Obj.Ext[0].indexOf("=") == -1)
     return "&" + Obj.Ext
else
     return "&"+ mkPrs(Obj.Ext,'&');
}

function mkPrs(a,sep){
	var t="";
	for(var i=0;i<a.length;i++) {
		var j=a[i].split('=');
		t+=j[0]+"=";
		for(var k=1;k<j.length;k++){
			t+=j[k];
			if (k != j.length-1)
				t+="=";
		}
		if (sep&&i!=a.length-1) t+=sep;
	}
	return t;
}

function serverPath()
{
	return ROOT;
}

function getLang()
{
	return document.location.href.split("/")[5];
}


/*****

POPUP FUNCTIONS

*****/
var p = this;
p.tog = chooseLangPopup;
p.setLang = chooseLangPopup;

function chooseLangPopup(c){
	if(c){
		var d=confirm("To see a translation you need to set your native language to something other than English. Would you like to do this?");
		if (!d) return 0;
	}
	newPopupType = "ChooseLangHTML";
	//altered because Norton rejects all of core.js if size is specified
    Kids_launchPopup(null, "width" + "=" + (3*100) + ",height=500,left=200,top=60")
}

function Kids_launchPopup(popURL, popupStr)
{
     paramStr = 0;
     var popupURL = popURL ? popURL : serverPath() + "templates/gsrc/SEO_Popup.htm";
     var winFeatures = popupStr ? popupStr : "width=200,height=350,left=590,top=210";
	popupWin = w.open(popupURL, "ge_mentor", winFeatures);
		// pr - put in if statement here to fix unspecified error in IE5 when trying to launch popup to same window
		if (popupWin && popupWin.focus)
			popupWin.focus();
}

function closePopup(){
     // jh 10/1/02:  keep email popups from Contact Us page open.  some users would like to go to the pages they are having problems with.
     if (popupWin && newPopupType == "mail"){
          popupWin=0;
          return
     }
	if (w.popupWin){
		w.popupWin.close();
		popupWin=0;
	}
}

function emailWin(str,winName,subject,sec,extraPropPr){
	var obj=new Object();
	obj.ClassId=204;
	obj.Id=208290;
	var propStr="To="+str;
	if (extraPropPr)
		propStr+= extraPropPr;
	//var extStr=(sec) ? "Sec="+sec: "Sec="+Sec.Id;
	if (winName) propStr+=",WinName="+winName;
	if (subject) propStr+=",Subject="+subject;
	Obj.Prop=propStr.split(",");
	//Obj.Ext=extStr.split(",");
	launchPopup("mail",450,375,doLinkStr(obj),20,20);
	Obj.Prop=null;
	Obj.Ext=null;
}

function logoLink(){
	document.location.href = "225474.htm";
}

var popupWin=0, popupType=0, oldPopupType=0, newPopupType=0;

function launchPopup(pType,pw,ph,loc,lf,tp,trans,pStr){
	var  popupLoc;
	newPopupType=pType;

     if (arguments.length < 3){
          Kids_launchPopup(arguments[0],arguments[1]);
          return
     }

	if(loc)  popupLoc=loc;

	if (pStr) paramStr=pStr;
	else {
		var w=pw? pw: 250;
		var h=ph? ph: 360;
		var l=lf? lf: 0;
		var t=tp? tp: 10;
		h+=60;
		paramStr="width="+w+",height="+h+",left="+l+",top="+t+",resizable=yes";
		paramStr+=",scrollbars=yes,menubar=no";
	}
	Kids_launchPopup(popupLoc, paramStr)
}

function changeLang(lang,redirect){
	var url=redirect.split("/");
	url[5] = langArray[lang];
	url = url.join("/");
	document.location.href = url;
} 

/*****************************************
/ IMAGE FUNCTIONS
******************************************/
function tSpacer(w,h){return gImg("tspacer.gif",w,h);}
function gImg(imgName,w,h,alt,name){ return pathImg("templates/gimg/"+imgName,w,h,alt,name);}

function pathImg(imgPath,w,h,alt,name,hspace,vspace,valign,align){
	var s="<img src='"+ ROOT + imgPath + "'";
	if(w) s+=" width="+w;
	if(h) s+=" height="+h;
	if(alt)	s+=" alt='"+alt+"'";
	if(name) s+=" name='"+name+"'";
	if(hspace) s+=" hspace='"+hspace+"'";
	if(vspace) s+=" vspace='"+vspace+"'";
	if(valign)	s+=" valign='"+valign+"'";
	if(align)	s+=" align='"+align+"'";
	s+= " border=0>";
	return s;
}

/************************
/ About Us
**************************/
//launch appropriate Flash Tour in a pop-up
//tour versions: 1=corp, 2=cat, 3=hr, 4=cons
function launchTours(version){
   Obj.ExParm = "&TourType=" + version;
   var loc=doLinkStr({ClassId: 204, Id: 223456});
   var w = (screen.width < 801 ? 640 : 820);
   var h = (screen.height < 601 ? 440 : 541);
   launchPopup("tour",w,h,loc);
}

function realignLeftCallout()
{
  var nav = document.getElementById("left_nav");
  var callout = document.getElementById("callout_left_low");
  callout.style.top = nav.offsetHeight + 230;
}

function HTML_OnLoad()
{
	if(!document.getElementById("left_nav"))
		return;
	var leftNavObjects = [204812,221412, 200235, 208232, 000000, 208288, 203994, 211891, 000000, 206404];
	var subNavObjects = [214227, 222397, 221651, 215861, 216251, 000000, 216450];
	var beneathSubNavObjects = [220006, 216871, 221715, 223778, 214798, 224049, 223777, 214801, 204890, 223704, 222683, 224508];

	for(var i = 0; i < leftNavObjects.length; i++)
	{
		if(leftNavObjects[i] == oid)
		{
			document.getElementById("nav_" + i).className = "left_nav_item_selected";
			document.getElementById("nav_" + i).childNodes[0].className = "selected";
		}
	}

	for(var i = 0; i < subNavObjects.length; i++)
	{
		if(subNavObjects[i] == oid)
		{
			document.getElementById("nav_0").className = "left_nav_item_selected";
			document.getElementById("subnav_0_item_" + i).childNodes[0].className = "selected";
			document.getElementById("left_subnav_0").style.display = "block";
		}
	}

	for(var i = 0; i < beneathSubNavObjects.length; i++)
	{
		if(beneathSubNavObjects[i] == oid)
		{
			document.getElementById("nav_0").className = "left_nav_item_selected";
			//document.getElementById("subnav_0_item_" + i).childNodes[0].className = "selected";
			document.getElementById("left_subnav_0").style.display = "block";
		}
	}

	if(oid == leftNavObjects[0])
		document.getElementById("left_subnav_0").style.display = "block";
	document.getElementById("left_nav").style.visibility = "visible";
	if(document.getElementById("callout_left_low"))
   		realignLeftCallout();
}

window.onload = HTML_OnLoad;

/******************************************
/	FOR LANDING PAGES
/*******************************************/
function launchSystemCheck(popSrc, returnAddress){
var returnProp = null;
var url=serverPath()+"templates/bin/systemcheck.asp?";
	if(popSrc)  url += "returnUrl="+serverPath()+"templates/bin/mypage.asp";
	else if(returnAddress) {
		returnProp = "returnUrl=" + serverPath()+returnAddress;
		url += returnProp;
	} else {
		url += "returnUrl=" + escape(document.location.href);
		returnProp = "returnUrl=" + escape(document.location.href);
	}
	sysCheck=1;
	if(popSrc)  opener.document.location=url;
	else //document.location=url;
		tm(null,null,"systemcheck",null,returnProp);
}

function tmSite(site, c, i, a, p, e){
	var o= new Object();
	o.ClassId=c != null? c: null;
	o.Id=i? i: null;
	o.site = site;
	doLink(o,a,p,e);	
}

/******************************************
//LOGIN STUFF
/*******************************************/
function submitLogin(f){
	if(siteMenuSet(f)){
		f.submit();
	}
}

function getServerName(target)
{
    return (oid == 225557 || target == 2) ? Ini.WWWServerName : (oid == 225503 || target == 1) ? Ini.CorpServerName : Ini.KidsServerName;
}

function siteMenuSet(f,url) {
  var target = null;
  if (f.selectService != null) {
    target = parseInt(f.selectService.value);
    if(target == 0){
    // alert(LoginVars.selectAlert); //these vars aren't available in SEO
     return false;
    }
  }
  f.action = url ? "http://" + getServerName(target) + url : "http://" + getServerName(target) + "/templates/bin/login.asp";
  return true;
}
