var d = document;

String.prototype.trim = function () {
	return this.replace(/^\s+|\s+$/g, "");
}

// function that's called if pre-onload handlers are available
var preInitDone = false;
beforeOnloadInit = function() {
	preInitDone = true;
	init();
};

// proprietary DOMContentLoaded Mozilla event handler
if (d.addEventListener) d.addEventListener("DOMContentLoaded", beforeOnloadInit, null);

// fall back to window.onload if needed
window.onload = function() { if (!preInitDone) init(); };

// write out a behavior for IE/Win 5+ to use the ondocumentready events
d.write('<style type="text/css">');
d.write('body { behavior: url(/js/init.htc); }');
d.write('</style>');

// load stylesheet for js-enabled browsers
if(d.getElementById && d.createTextNode) {
	d.writeln("<link href=\"/css/js_enabled.css\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />");
}

init = function() {
	if(d.getElementById && d.createTextNode) {
		for(var i=0; t=d.getElementsByTagName("input")[i]; i++) {
			var tt = t.getAttribute("type");
			if(tt == "text") {
				// apply class to text elements
				t.className = (t.className == "") ? "text" : t.className + " text";
			} else if(tt == "button" || tt == "submit") {
				// apply class to button elements
				t.className = (t.className == "") ? "button" : t.className + " button";
			} else if(tt == "image") {
				// apply class to image elements
				t.className = (t.className == "") ? "image" : t.className + " image";
			}
		}
		// add event handlers to font controls
		if(d.getElementById("font-small")) {
			d.getElementById("font-small").onclick = function(){fontSize('small'); this.blur(); return false;};
			d.getElementById("font-medium").onclick = function(){fontSize('medium'); this.blur(); return false;};
			d.getElementById("font-large").onclick = function(){fontSize('large'); this.blur(); return false;};
		}
		// set wrapper-content classname for interior 2-col layout
		if(d.getElementsByTagName("body")[0].id == "interior") {
			if(d.getElementById("col-left")) {
				d.getElementById("wrapper-content").className = "two-col";
			}
		}
	}
	setStyles();
}

goToSite = function() {
	var u = d.getElementById("selSites").value;
	if(u) {
		if(u.indexOf("kelloggcompany.com") > -1) {
			location.href = u;
		} else {
			window.open(u);
		}
	}
	return false;
}

tellFriend = function() {
	var fw = window.open("http://www.kelloggcompany.com/friend.aspx","friend","width=600,height=600");
	if(fw) fw.focus();
}

setActiveStyleSheet = function(title) {
  if(d.getElementById && d.createTextNode) {
		var i, a;
	  for(i=0; (a = d.getElementsByTagName("link")[i]); i++) {
	    if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) {
	     	a.disabled = true;
	      if(a.getAttribute("title") == title) a.disabled = false;
	    }
	  }
		if(d.getElementById("font-small")) {
			d.getElementById("font-small").className = "";
			d.getElementById("font-medium").className = "";
			d.getElementById("font-large").className = "";
			var l = d.getElementById("font-" + title);
			l.className = "on";
		}
	}
}

setStyles = function() {
  var cookie = readCookie("kcoStyles");
  var title = cookie ? cookie : "small";
	createCookie("kcoStyles", title, 365);
 	setActiveStyleSheet(title);
}

fontSize = function(fs) {
	createCookie("kcoStyles", fs, 365);
	setActiveStyleSheet(fs);
}

createCookie = function(name,value,days) {
  if (days) {
    var date = new Date();
    date.setTime(date.getTime()+(days*24*60*60*1000));
    var expires = "; expires="+date.toGMTString();
  }
  else expires = "";
  d.cookie = name+"="+value+expires+"; path=/";
}

readCookie = function(name) {
  var nameEQ = name + "=";
  var ca = d.cookie.split(';');
  for(var i=0;i < ca.length;i++) {
    var c = ca[i];
    while (c.charAt(0)==' ') c = c.substring(1,c.length);
    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
  }
  return null;
}

insertLogo = function() {
	d.write('<a href="http://www.kelloggcompany.com/">');
	insertPNG('logo','/images/logo_kelloggs',138,52,'','Kellogg\'s','');
	d.write('</a>');
}

insertCharacter = function() {
	var id = Math.floor(Math.random()*9) + 1;
	var s = (d.getElementsByTagName("body")[0].id == "home") ? "" : "_interior";
	switch(id) {
		case 1:
			d.write('<img src="/images/char_tony' + s + '.gif" alt="Tony the Tiger" id="char-tony" class="character">');
			break;
		case 2:
			d.write('<img src="/images/char_ernie' + s + '.gif" alt="Ernie" id="char-ernie" class="character">');
			break;
		case 3:
			d.write('<img src="/images/char_scp' + s + '.gif" alt="Snap, Crackle, Pop" id="char-scp" class="character">');
			break;
		case 4:
			d.write('<img src="/images/char_sarge' + s + '.gif" alt="Sarge" id="char-sarge" class="character">');
			break;
		case 5:
			d.write('<img src="/images/char_sunny' + s + '.gif" alt="Sunny" id="char-sunny" class="character">');
			break;
		case 6:
			d.write('<img src="/images/char_toucan' + s + '.gif" alt="Toucan Sam" id="char-toucan" class="character">');
			break;
		case 7:
			d.write('<img src="/images/char_digem' + s + '.gif" alt="Dig \'Em" id="char-digem" class="character">');
			break;
		case 8:
			d.write('<img src="/images/char_coco' + s + '.gif" alt="Coco" id="char-coco" class="character">');
			break;
		case 9:
			d.write('<img src="/images/char_cornelius' + s + '.gif" alt="Cornelius" id="char-cornelius" class="character">');
			break;
	}
}

insertStockQuote = function() {
	d.write("<p><strong>Stock Quote:</strong><br><strong>K</strong> (NYSE) <strong>$" + stockPrice + "</strong><br>" + formatStockChange(stockChange) + "</p>");
	d.write("<p>" + stockDate + "<br>" + stockTime + "</p>");
	d.write("<p>Quotes delayed at least 20 minutes.</p>");
}

formatStockChange = function(s) {
	if(s.indexOf("+") != -1) {
		return "<span class=\"stock-up\">" + s.replace(/^\+/, "").trim() + "</span>";
	} else if(s.indexOf("-") != -1) {
		return "<span class=\"stock-down\">" + s.replace(/^-/, "").trim() + "</span>";
	} else {
		// unchanged
		return "<strong>" + s + "</strong>";
	}
}

insertPrintLink = function() {
	if(window.print) {
		d.write(' | <a href="javascript:window.print()">Print</a>');
	}
}

function popUpWindow(URL,windowName,width,height) {
	var w = screen.availWidth;
	var h = screen.availHeight;
	var leftPos = Math.round((w-width)/2);
	var topPos = Math.round((h-height)/2);
	var msgWindow = window.open(URL,windowName,"top="+topPos+",left="+leftPos+",width="+width+",height="+height+",scrollbars,resizable");
	msgWindow.focus();
}

// PNG Fix
////////////////////////////////
function insertPNG(strId, strPath, intWidth, intHeight, strClass, strAlt, strMap) {
	if (pngAlpha) {
		d.write('<img style="display: block; height:'+intHeight+'px;width:'+intWidth+'px;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\''+strPath+'.png\', sizingMethod=\'scale\')" width="'+intWidth+'" height="'+intHeight+'" id="'+strId+'" class="'+strClass+'" src="/images/pngfix.gif" alt="'+strAlt+'" border="0"');
		if(strMap) d.write(' usemap="#' + strMap + '"');
		d.write('>');
	} else if (pngNormal) {
		d.write('<img src="'+strPath+'.png" width="'+intWidth+'" height="'+intHeight+'" id="'+strId+'" name="'+strId+'" border="0" class="'+strClass+'" alt="'+strAlt+'" border="0"');
		if(strMap) d.write(' usemap="#' + strMap + '"');
		d.write('>');
	} else {
		d.write('<img src="'+strPath+'.gif" width="'+intWidth+'" height="'+intHeight+'" id="'+strId+'" name="'+strId+'" border="0" class="'+strClass+'" alt="'+strAlt+'" border="0"');
		if(strMap) d.write(' usemap="#' + strMap + '"');
		d.write('>');
	}
}

// if IE5.5+ on win32, then display PNGs with AlphaImageLoader - dependent on Browser Detect Lite
if ((browser.isIE55 || browser.isIE6up) && browser.isWin32) {
	var pngAlpha = true;
	var strExt = ".png";
// else, if the browser can display PNGs normally, then do that. that list includes:
	//     -Gecko Engine: Netscape 6 or Mozilla, Mac or PC
	//     -IE5+ Mac
	//     -Opera 6+ PC
	//     -Opera 5+ Mac
	//     -Opera 6+ Linux
	//     -Omniweb 3.1+
	//     -Icab 1.9+
	//     -WebTV
	//     -Sega Dreamcast
} else if ((browser.isGecko) || (browser.isIE5up && browser.isMac) || (browser.isOpera && browser.isWin && browser.versionMajor >= 6) || (browser.isOpera && browser.isUnix && browser.versionMajor >= 6) || (browser.isOpera && browser.isMac && browser.versionMajor >= 5) || (browser.isOmniweb && browser.versionMinor >= 3.1) || (browser.isIcab && browser.versionMinor >= 1.9) || (browser.isWebtv) || (browser.isDreamcast)) {
	var pngNormal = true;
	var strExt = ".png";
	// otherwise, we use plain old GIFs
} else {
	var strExt = ".gif";
}

// expode and parseQuery are functions to deal with query string
function explode(item,delimiter) {
	tempArray=new Array(1);
	var Count=0;
	var tempString=new String(item);
	while (tempString.indexOf(delimiter)>0) {
		tempArray[Count]=tempString.substr(0,tempString.indexOf(delimiter));
		tempString=tempString.substr(tempString.indexOf(delimiter)+1,tempString.length-tempString.indexOf(delimiter)+1);
		Count=Count+1
	}
	tempArray[Count]=tempString;
	return tempArray;
}

function parseQuery() {
	var returnVals = new Array();
	var qString = new String(window.location);
	var queryStart = qString.indexOf('?');
	if (queryStart==-1) {
		return returnVals;
	}
	var query = qString.substring(queryStart + 1, qString.length);
	parts = explode(query, "&");
	for (i in parts) {
		bits = explode(parts[i], "=");
		returnVals[bits[0]] = bits[1];
	}
	return returnVals;
}

var query = parseQuery();