var d = document;

String.prototype.trim = function () {
	return this.replace(/^\s+|\s+$/g, "");
}

Math.randomRange = function(min,max){
	return this.floor(this.random()*(max-min+1))+min;
}

// tracking functions
var Kellogg = Kellogg || {};

Kellogg.trackers = [];

Kellogg.track = function (str) {
	for (var i = 0, l = Kellogg.trackers.length; i < l; i++) {
		if (typeof Kellogg.trackers[i]._trackPageview === "function") {
			if (str) {
				Kellogg.trackers[i]._trackPageview(str);
			} else {
				Kellogg.trackers[i]._trackPageview();
			}
		}
	}
};

MonitorFlash = function (str) {
	//try{console.log("MonitorFlash", arguments)} catch(err) {};
	Kellogg.track("/" + str.replace(/:/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(){Kellogg.track("/Utility/Textsizer/small"); fontSize('small'); this.blur(); return false;};
			d.getElementById("font-medium").onclick = function(){Kellogg.track("/Utility/Textsizer/medium"); fontSize('medium'); this.blur(); return false;};
			d.getElementById("font-large").onclick = function(){Kellogg.track("/Utility/Textsizer/large"); fontSize('large'); this.blur(); return false;};
		}
		var bid = d.getElementsByTagName("body")[0].id;
		if(bid == "home") {
			// set header background image
			/*var h = d.getElementById("header");
			if(h) {
				h.style.backgroundImage = "url(/images/bg_header_home0" + Math.randomRange(1,6) + ".jpg)";
			}*/
		} else if(bid == "interior") {
			// set wrapper-content classname for interior 2-col layout
			if(d.getElementById("col-left")) {
				d.getElementById("wrapper-content").className = "two-col";
			}
			// init subnav
			var sitenav = document.getElementById("nav-sub");
			if(sitenav) {
				if (d.getElementsByTagName("body")[0].className != "newproducts") {
					var pid = query["id"];
					for(var i=0; (a = sitenav.getElementsByTagName("a")[i]); i++) {
						var hr = a.getAttribute("href");
						if(hr) {
							if(pid && getLinkID(hr) == pid) {
								a.parentNode.className = "on";
								var c = a.parentNode.parentNode.className;
								switch(c) {
									case "level-3":
										var a = a.parentNode.parentNode.parentNode;
										a.className = "on";
									case "level-2":
										var a = a.parentNode.parentNode.parentNode;
										a.className = "on";
								}
							}
						}
					}
				}
				sitenav.style.visibility = "visible";
			}
		}
	}
	setStyles();
}

getLinkID = function(str) {
	var queryStart = str.indexOf('?');
	if (queryStart!=-1) {
		var query = str.substring(queryStart + 1, str.length);
		var parts = query.split("&");
		for (var i=0; i<parts.length; i++) {
			var bits = parts[i].split("=");
			if (bits[0] == "id") return bits[1];
		}
	}
	return null;
}

goToSite = function() {
	var u = d.getElementById("selSites").value;
	if(u) {
		Kellogg.track("/Utility/Othersites/go");
		if(u.indexOf("kelloggcompany.com") > -1) {
			location.href = u;
		} else {
			window.open(u);
		}
	}
	return false;
}

tellFriend = function(u) {
	if(!u) u = "";
	var fw = window.open(u + "/friend.aspx","friend","width=600,height=600");
	if(fw) fw.focus();
}

externalLink = function(u) {
	window.open("/redirect.html?u=" + escape(u),'', 'width=760,height=500,location=yes,menubar=yes,scrollbars=yes,status=yes,toolbar=yes,resizable=yes');
}

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(u) {
	if(!u) u = "";
	d.write('<a href="' + u + '/">');
	insertPNG('logo', u + '/images/logo_kelloggs',138,52,'','Kellogg\'s','');
	d.write('</a>');
}

insertCharacter = function(u) {
	if(!u) u = "";
	var id = Math.floor(Math.random()*8) + 1;
	var s = (d.getElementsByTagName("body")[0].id == "home") ? "" : "_interior";
	switch(id) {
		case 1:
			d.write('<img src="' + u + '/images/char_tony' + s + '.gif" alt="Tony the Tiger" id="char-tony" class="character">');
			break;
		case 2:
			d.write('<img src="' + u + '/images/char_ernie' + s + '.gif" alt="Ernie" id="char-ernie" class="character">');
			break;
		case 3:
			d.write('<img src="' + u + '/images/char_scp' + s + '.gif" alt="Snap, Crackle, Pop" id="char-scp" class="character">');
			break;
		case 4:
			d.write('<img src="' + u + '/images/char_cornelius' + s + '.gif" alt="Cornelius" id="char-cornelius" class="character">');
			break;
		case 5:
			d.write('<img src="' + u + '/images/char_sunny' + s + '.gif" alt="Sunny" id="char-sunny" class="character">');
			break;
		case 6:
			d.write('<img src="' + u + '/images/char_toucan' + s + '.gif" alt="Toucan Sam" id="char-toucan" class="character">');
			break;
		case 7:
			d.write('<img src="' + u + '/images/char_digem' + s + '.gif" alt="Dig \'Em" id="char-digem" class="character">');
			break;
		case 8:
			d.write('<img src="' + u + '/images/char_coco' + s + '.gif" alt="Coco" id="char-coco" class="character">');
			break;
	}
}

insertStockQuote = function() {
	d.write("<p>Stock Quote:K</strong> (NYSE) $" + stockPrice + " " + formatStockChange(stockChange) + "</p>");
	d.write("<p>" + stockDate + " " + stockTime + "</p>");
	d.write("<p class=\"fineprint\">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";
}

// handle missing images
imageMissing = function(i) {
  i.src = "/images/image_not_available.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();