
/* Lifewhile.com scripts */
// Begin national js scripts
/**
 * Copyright 2006, Internet Broadcasting.
 * All Rights Reserved.
 *
 * Namespace management. Usage is: using("com.foo.bar") = { ... }
 *
 * Author:  $Author: ddjohnson $
 * Date:    $Date: 2006/07/25 19:47:42 $
 * Version: $Name:  $
 * ID:      $Id: base.js,v 1.2 2006/07/25 19:47:42 ddjohnson Exp $
 */

var ibsys = {
};

function using(namespace)
{
	var parts = namespace.split(/\./);
	var context = window;
	while(parts.length != 0)
	{
		var obj = parts.shift();
		if(!(obj in context))
			context[obj] = {};
		context = context[obj];
	}
	return context;
}


var siteinfo = {lang:"en",timezone:"CDT",
distribution: 'core',

"owner":"IBS",
"tld":"com",
"is_ia":"yes",
"sitekey":{
"lc":"life",
"uc":"LIFE"},
"sitename":{
"lc":"lifewhile",
"mx":"Lifewhile",
"uc":"LIFEWHILE",
"display":"Lifewhile.com",
"publication":"Lifewhile"},
"callletters":{
"lc":"life",
"uc":"LIFE"},
"statecode":"",
"statename":"",
"city":"",
"contentrights":{
"cnn":"no"},
"autorelated":{
"status":"active",
"minscore":"10",
"includeManual":"no",
"includeAutonomy":"yes",
"count":"7"},
"storysettings":{
"tools":{
"display":"true"}},
"search":{
"engineType":"autonomy",
"autonomySearchConfig":{
"mediaTypesSearched":{
"stories":"off",
"video":"off"}}},
"thirdparty_info":{
"google":{
"verify":"dntcU9nAl9pIXE0oom7vylgld0tf8B1GUVGOWqv81rk=",
"analytics":{
"code":"UA-3515011-64",
"display":"true"}},
"yahoo":{
"verify":"a51871c45e7a1ce1"},
"WT_info":{
"id":"dcs5g47ok10000g89pl83mowl_3l8y"},
"eharm":{
"cid":"54198"},
"ccard":{
"pid":"723301fb",
"rate":"723301fb"},
"brate":{
"feedstracker":"http://ad.doubleclick.net/clk;206545389;8704162;n?"}},
"provider_copyrights":{
"suppress":{
"site":"www.lifewhile.com"}}};


// GLOBAL Variables
now = new Date();
expire = new Date((now.getFullYear()+1),now.getMonth(),now.getDate());
var child = 0;
var rnd = new Date();
rnd = rnd.getTime();

// Deprecated variables
//var IBS_Sitekey = siteinfo.sitekey.lc;
var IS_IA = siteinfo.is_ia;
IBSSite = new Object();
dotPosition = document.location.host.indexOf('.')+1;
IBSSite.domain = document.location.host.substring(dotPosition);

// Set environment variables
env = new Object();
env.bVer = navigator.appVersion;
env.bName = navigator.appName;
env.platform = navigator.platform;
env.userAgent = navigator.userAgent;
env.cookies = navigator.cookieEnabled;
env.NS4 = (document.layers)? 1 : 0;
env.MacIE = ((navigator.userAgent.indexOf("IE 4")  > -1) && (navigator.userAgent.indexOf("Mac")  > -1))? 1 : 0;
env.IE4 = (document.all && !env.MacIE)? 1 : 0;
env.Gen4 = (document.all || document.layers)? 1 : 0;
if(env.bName.indexOf('Netscape') != -1) isNN = true;
else isNN = false;
if(env.bName.indexOf('Microsoft') != -1) isIE = true;
else isIE = false;

//Open window - pass URL and Attributes
function popUp(URL, ATTRIBUTES)  {
	DEF_ATTRIB = 'width=200,height=200,top=100,left=100,resizable=yes,scrollbars=1';
	if (ATTRIBUTES == null) {
		ATTRIBUTES = DEF_ATTRIB;
	}
	child = window.open(URL, "spawn", ATTRIBUTES + ",scrollbars=1");
	// child.opener = self;
}



// FIX THE STRINGS ( apostrophes)
function fixString(strText) {
	if(!strText || strText == null) return "";
	var newstr = strText.replace(/~/g, "&#39;");
	return newstr;
}

// Replace white space around tags in teaser - used in TopStory and PhotoArray
function padTags(s){
	if(!s || s == null) return "";
	var tmp = s.replace(/(<\w)/ig, " $1");
	tmp = tmp.replace(/(<\/\w>)/ig, "$1 ");
	return tmp;
}

/**
 * returns the parent widget ID of the given indexID, for use
 * with jsIndex
 */
function getWidgetID(indexId)
{
	var el = document.getElementById("index"+indexId);
	if(el == null) return null;
	var p = el.parentNode;
	while(p)
	{
		if(p.id && p.id.match(/sw[0-9]+/))
			return p.id.replace(/sw/,"");
		p = p.parentNode;
	}
	return null;
}




var XMLObj = {
	impl: function() {
		return (window.XMLHttpRequest ? new XMLHttpRequest() : 
				(window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : 
					new Error("No XMLHttpRequest Implementation")));
	},
	
	get: function(url, handler) {
		var req = XMLObj.impl();
		req.open("get", url, true);
		req.onreadystatechange = function() {
			/* Opera may return status 304; unchanged */
			if(req.readyState == 4) {
				handler(req.responseXML, req.responseText);
			}
		};
		req.send(null);
	},
	
	post: function(url, params, handler) {
		var req = XMLObj.impl();
		req.open("post", url, true);
		req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		req.setRequestHeader("Referer", document.location.href);
		req.onreadystatechange = function() {
			/* Opera may return status 304; unchanged */
			if(req.readyState == 4 ) {
				handler(req.responseXML, req.responseText);
			}
		};
		req.send(params);
	}
};



// Define client cookie values
cookiesList = document.cookie.split('; ');
myCookies = new Array();
for(c=0; c<cookiesList.length; c++) {
	cookieTemp = cookiesList[c].split('=');
	myCookies[cookieTemp[0]] = cookieTemp[1];
}

// Added new variable to support multiple sub domains
var docDomain = document.domain.split('.');
var dd='';
for(var i=1; i<docDomain.length; i++) {
	dd+="."+docDomain[i];
}
docDomain=dd;

// Set cookie info
function setCookie( name, value, path, expires, domain, secure ) {
	expire.setTime(now.getTime() + expires * 24 * 60 * 60 * 1000);
	curCookie =  name + "=" + escape(value) +
		((expires) ? "; expires=" + expire.toGMTString() : "") +
		((path) ? "; path=" + path : "") +
		((domain) ? "; domain=" + domain : "") +
		((secure) ? "; secure" : "");
	if ((name + "=" + escape(value)).length <= 4000) document.cookie = curCookie;
	else if (confirm("Cookie exceeds 4KB and will be cut!")) document.cookie = curCookie;
}

// Get cookie info
function getCookie(c) {
	if(typeof myCookies[c] != 'undefined') return myCookies[c];
	else return '';
}

// Remove cookie
function deleteCookie(name,path) {
	setCookie(name,"",path,-1,docDomain);
}

// In case old cookie functions are used somewhere...
WM_setCookie  = setCookie;
WM_readCookie = getCookie;
WM_killCookie = deleteCookie;



function fixPngImage(p) {
	var imgsrc;
	var trans = "http://images.ibsys.com/sh/images/spacer.gif";   
	if(typeof p.tested != undefined && !p.tested &&  typeof p.runtimeStyle != 'undefined') {
	   // retain image src
	   imgsrc = p.src;

	   // make sure the image is a PING
	   if ( /\.png$/.test( imgsrc.toLowerCase() ) ) {
	   	// If it is set it to a transparent image
		p.src = trans;
		// Set the runtime style to load the alpha image in the background
		p.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + imgsrc + "',sizingMethod='scale')";
		p.tested = true;
	   }
   }
}

// Calls 'func' on 'eventName' in 'obj'
function addEvent(obj, eventName, func) {
	if (typeof YAHOO != 'undefined') {
		window.addEvent = function(obj, eventName, func) {
			return YAHOO.util.Event.addListener(obj, eventName, func);
		}
	} else {
		this.setObj = function(obj) {
			return (typeof obj == 'string' ? document.getElementById(obj) || false : typeof obj == 'object' ? obj : false);
		}
		obj = setObj(obj);
		if (obj.addEventListener) {
			window.addEvent = function(obj, eventName, func) {
				obj = setObj(obj);
				if (obj) {
					return obj.addEventListener(eventName, func, true);
				} else {
					return false;
				}
			}
		} else if (obj.attachEvent) {
			window.addEvent = function(obj, eventName, func) {
				obj = setObj(obj);
				if (obj) {
					obj.attachEvent("on" + eventName, func);
					return true;
				} else {
					return false;
				}
			}
		} else {
			return false;
		}
	}
	return addEvent(obj, eventName, func);
}
/**
 * Copyright 2006, Internet Broadcasting Systems. All Rights Reserved.
 * Author:    $Author: bstime $
 * Date:      $Date: 2007/11/27 22:17:40 $
 * Version:   $Name:  $
 * ID:        $Id: AdObj.js,v 1.13 2007/11/27 22:17:40 bstime Exp $
*/

/**
 * Generic AdObj holds properties to ease calling pixel ads for specific uses
 *
 * Usage of class methods:
 *	<li>AdObj.create(position,sz,swId,coId,section) - create and return a new AdObj</li>
 *  <li>AdObj.refreshPosition(positions...) - refresh one or more positions</li>
 *  <li>AdObj.refreshAll() - refresh all ads</li>
 *	<li>AdObj.remove(name) - remove ad</li>
 *
 * @constructor
 * @param {String} position Corresponds to ad position, like mediawidow, banner or tile
 * @param {String} sz Size, formatted as 2x2
 * @param {String} swId Section widget id
 * @param {String} coId Content id
 * @param {String} section Section widget section
 */

function AdObj(position, sz, swId, coId, section) {
	this.position = position;
	this.sz = sz;
	this.swId = swId;
	this.coId = coId ? "+"+coId : "";
	this.section = section;
	var size = this.sz.split("x");
	this.width = size[0];
	this.height = size[1];
}

/**
 * @deprecated in favor of {@link AdObj#refresh}
 *
 * Append iframe with ad call to end of document or refresh the ad of set position
 * NOTE: DART key set to ibs.[sitekey].interactive
 * NOTE: Changed .refresh Removed the extra + between position and coid
 */
AdObj.prototype.callAd = function() {
	if (!document.getElementById(this.position)) {
		// append iframe to document
		document.getElementsByTagName("body")[0].appendChild(document.createElement("span")).innerHTML = "<iframe id="+this.position+" src='http://ad.doubleclick.net/adi/ibs."+siteinfo.sitekey.lc+".interactive/"+adZone+";kw="+this.section+"+"+this.position+this.coId+segQS+";comp="+adid+";ad=true;tile="+dcadposition+ ";pgtype=detail;sz="+this.sz+";ord="+rnd+"?' width='"+this.width+"' height='"+this.height+"' marginwidth='0' marginheight='0' frameborder='0' scrolling='no'></iframe>";
	} else {
		// refreshAd is defined in base js
		refreshAd(this.position);
	}
}

/**
 * Refresh this ad.
 */
AdObj.prototype.refresh = function(adid,tileNum)
{
	var randInt = parseInt(Math.random(1)*100000000);
                adid = (typeof adid == "undefined") ? "" : adid;
	var category = (typeof WT != 'undefined' && WT.cg_n != '' && adid == '')?WT.cg_n.toLowerCase():'interactive';
	// var obj = document.getElementById(this.position);
	// if(obj == null)
	// {
		var arr = getByClassName(document.body, "ad"+this.position);
		if(arr.length == 0)
			return;
		// obj = arr[0];
	// }
	//http://ad.doubleclick.net/adi/ibs.chi.interactive/;kw=video+news+null+banner1+9385129;ad=true;pgtype=detail;sz=728x90;adid=36780253;ord=940767630?
	var tileNum = (typeof dcadposition != 'undefined' ? dcadposition : tileNum || 1);
	var src = "http://ad.doubleclick.net/adi/ibs."+siteinfo.sitekey.lc+"."+category+"/"+adZone+";kw="+this.section+"+"+this.position+this.coId+segQS+";ad=true;tile="+tileNum+ ";pgtype=detail;sz="+this.sz+";"+adid+";ord="+randInt+"?";
	// if(/iframe/i.exec(obj.nodeName) != null)
	// {
	// 	obj.src = "";
	// 	obj.src = src;
	// }
	// else
	arr[0].innerHTML = "<iframe id="+this.position+" src='"+src+"' width='"+this.width+"' height='"+this.height+"' marginwidth='0' marginheight='0' frameborder='0' scrolling='no'></iframe>";
}

/** AdObj class members */
/**
 * collection of Ad Objects
 */
AdObj.elements = new Object();

/**
 * Create a AdObj instance and add it to the collection
 */
AdObj.create = function create(position,sz,swId,coId,section)
{
	return AdObj.elements[position] = new AdObj(position,sz,swId,coId,section);
}

/**
 * Refresh ads by position: AdObj.refreshPosition("banner1","tile1","square");
 */
AdObj.refreshPosition = function refreshPosition()
{
	for(var j=0; j < arguments.length; j++)
		if(AdObj.elements[arguments[j]])
			AdObj.elements[arguments[j]].refresh();
}

/**
 * Refresh all ads
 */
AdObj.refreshAll = function refreshAll(adid)
{
	var i=1;
	for(var p in AdObj.elements) {
		AdObj.elements[p].refresh(adid,i);
		i++;
	}
}

AdObj.adIds = new Object();

/**
 * Returns an event handler for WMP CurrentItemChange event.
 *
 * The returned handler refreshes ads if the currentMedia has a
 * "dcAdTag" parameter.
 *
 * @param <String> videoPlugID
 * @return <function>
 */
AdObj.createAdRefreshHandler = function createAdRefreshHandler(videoPlugID)
{
	return (function()
	{
		if(!document ||
		   !document.body ||
		   !document.getElementById(videoPlugID))
		{
			return;
		}
		// NOTE: may need to change this if the format of the 'adid' parameter
		// value changes.  currently it is 'adid=[0-9]+'
		var adTagParam = document.getElementById(videoPlugID).currentMedia.getItemInfo("dcAdTag");
		if(/adid=[0-9]+/.exec(adTagParam) != null && !AdObj.adIds[adTagParam])
		{
			AdObj.adIds[adTagParam] = true;
			// log("Refreshing: " + adTagParam);
			AdObj.refreshAll(adTagParam);
			window.setTimeout(
				(function()
				{
					AdObj.adIds[adTagParam] = false;
				}), 1000);
		}
		else
		{
			// log("NOT Refreshing ads; adid="+adTagParam);
		}
	});
}

/**
 * Remove an ad by name.
 * @param <String> name
 * @return true if the object was deleted.
 */
AdObj.remove = function(name)
{
	if(AdObj.elements[name])
		return delete AdObj.elements[name];
	else
		return false;
}

/**
 * TODO: put this function somewhere else
 */
function getByClassName(parent,className)
{
	var nl = parent.getElementsByTagName("*");
	var arr = [];
	for(var j=0; j < nl.length; j++)
	{
		if(nl.item(j).className && nl.item(j).className.indexOf(className) != -1)
			arr.push(nl.item(j));
	}
	return arr;
}
// 

function setDCSid(id) {
     gDcsId=id;
}

function mwpop(path,w,h) {
	var atts = 'width='+w+',height='+h+',\'scrollbars=yes,toolbar=no,status=no,location=no,menubar=no,top=50,left=50';
	popUp(path, atts);
//window.location.href=path.split('?')[0];
}

function setMediaPlayerCookie (num) {
  setCookie("mediaWindow",num,"",30,window.location.host,"");
  return "done";
}

function getMediaPlayerCookie () {
  var myCookie = new String(getCookie("mediaWindow"));
  return myCookie;
}


/* toggleData function
 * toggles all elements inside a parent element
 * 2 params 
 *   id - the parent element id
 *   cn - class name of elements you want to hide
 */
function toggleData(id,cn){
	var div = document.getElementById(id);
	var cond = div.getElementsByTagName('*');
	for(var i = 0;i<cond.length;i++){
		if(cond[i].className.indexOf(cn) != -1) {
		cond[i].style.display = (cond[i].style.display != 'none') ? 'none' : '';
		}
	}
}
/* hideData function
 * hides all elements inside a parent element
 * same params as toggleData
 * current usage - full display of current conditions weather object calls this function 
 */
function hideData(id,cn){
	var div = document.getElementById(id);
	var cond = div.getElementsByTagName('*');
	for(var i = 0;i<cond.length;i++){
		if(cond[i].className.indexOf(cn) != -1) {
			if(cond[i].style.display != 'none') cond[i].style.display = 'none';
		}
	}
}
	

// End national_js scripts


// Begin regional js scripts


using('ibsys');

ibsys.lifeNavSetup = function(navList) {
	var navul = document.getElementById(navList);
	var navli = navul.getElementsByTagName("li"); 

	var minHeight = 35; var minTopPad = 6; var minBotPad = 4;

	var navWidth = navul.offsetWidth - (navli.length - 1);
	var navItemWidth = Math.floor(navWidth / navli.length);
	var lastItemWidth = navItemWidth + (navWidth - (navli.length * navItemWidth));

	var linkHeight; var linkPaddingTop; var linkPaddingBottom;
	var maxLinkHeight = 0;

	for (var i = 0; i < navli.length;  i++ ) {

		if(i < navli.length - 1) {
			navli[i].style.width = navItemWidth + "px";
		} else {
			navli[i].style.width = lastItemWidth + "px";
		}

		if(navli[i].getElementsByTagName("a")[0].offsetHeight > maxLinkHeight) { maxLinkHeight = navli[i].getElementsByTagName("a")[0].offsetHeight; }

	}

	if(maxLinkHeight + minTopPad + minBotPad < minHeight) {
		var extraPad = Math.ceil((minHeight - (maxLinkHeight + minTopPad + minBotPad)) / 2);
		var basePaddingTop = minTopPad + extraPad;
		var basePaddingBottom = minBotPad + extraPad;
	} else {
		var basePaddingTop = minTopPad;
		var basePaddingBottom = minBotPad;
	}

	var itemHeight = maxLinkHeight + basePaddingTop + basePaddingBottom;

	for (var i = 0; i < navli.length;  i++ ) {
		navli[i].style.height = itemHeight + "px";

		linkHeight = navli[i].getElementsByTagName("a")[0].offsetHeight;
		linkPaddingTop = Math.floor(((maxLinkHeight - linkHeight)/2)+basePaddingTop);
		linkPaddingBottom = Math.floor(((maxLinkHeight - linkHeight)/2)+basePaddingBottom);

		navli[i].getElementsByTagName("a")[0].style.paddingTop = linkPaddingTop + "px";
		navli[i].getElementsByTagName("a")[0].style.paddingBottom = linkPaddingBottom + "px";

		if(i < navli.length - 1) {
			navli[i].getElementsByTagName("a")[0].style.width = navItemWidth + "px";
		} else {
			navli[i].getElementsByTagName("a")[0].style.width = lastItemWidth + "px";
		}

	}

}



// End regional_js scripts

