//	create global object
PEOPLE.TVModule = {
	showids : PEOPLE.removeHTML(document.getElementById('showids').innerHTML), // get show ids from tout, like: 10003,10991,10212,10098,10057
	timezones : [ // timezone, zip code, empty array (to be filled during getgridinfo())
		{'tz':'EST','zip':'12345','result':[]},
		{'tz':'CST','zip':'60611','result':[]},
		{'tz':'MST','zip':'79821','result':[]},
		{'tz':'PST','zip':'98101','result':[]}
	],
	init : function() { // let's get started
		PEOPLE.TVModule.addcid('tvgridtout');
		PEOPLE.TVModule.inserttimezones();
		PEOPLE.TVModule.getgridinfo(0);
	},
	inserttimezones : function() { // create time zones HTML and insert into DOM
		var html  = '<div id="select-tz">';
			html += '<ul>';
			html += '<li><span>All Time Zones:</span></li>';
			html += '<li id="EST" class="active"><a href="javascript:void();" onclick="PEOPLE.TVModule.getPTG(0);return false;" title="View Times for Eastern Standard Time Zone">EST</a></li>';
			html += '<li id="CST"><a href="javascript:void();" onclick="PEOPLE.TVModule.getPTG(1);return false;" title="View Times for Central Standard Time Zone">CST</a></li>';
			html += '<li id="MST"><a href="javascript:void();" onclick="PEOPLE.TVModule.getPTG(2);return false;" title="View Times for Mountain Standard Time Zone">MST</a></li>';
			html += '<li id="PST"><a href="javascript:void();" onclick="PEOPLE.TVModule.getPTG(3);return false;" title="View Times for Pacific Standard Time Zone">PST</a></li>';
			html += '</ul>';
			html += '</div>';
			html += '<div id="ptg"></div>'; // empty DIV for actual grid
		document.getElementById('tvgrid').innerHTML = html;
	},
	appendscript : function(n) { // creates and appends SCRIPT element for each time zone with showids from WP
		var tz = this.timezones[n]['tz']
		var zip = this.timezones[n]['zip']
		var src = 'http://api.zap2it.com/tvlistings/ZCPrimeTimeGrid.do?ap=ptg&v=2&aid=people&zip='+zip+'&stnlt='+this.showids;
		var script = document.createElement('script');
			script.id = 'script-'+tz;
			script.type = 'text/javascript';
			script.src = src;
		var ptg = document.getElementById('ptg');
			ptg.appendChild(script);
	},
	getgridinfo : function(n) { // loop through zip codes, append scripts, store resultStr as parameter of object
		this.appendscript(n);
		var to = setInterval(function() { // wait for SCRIPT to load...
			if (resultStr != '') { // if its here...
				clearInterval(to);
				PEOPLE.TVModule.timezones[n]['result'] = resultStr; // push into object
				resultStr = ''; // clear for next round
				if (n == 0) PEOPLE.TVModule.getPTG(0); // if this is the first timezone, load into grid
				if (n < (PEOPLE.TVModule.timezones.length-1)) PEOPLE.TVModule.getgridinfo(Number(n+1)); // if there are more to do, do `em!
			};
		}, 700);
	},
	getPTG : function(n) { // creates tv grid
		if (n) { // set class to change font color of time zone link
			var LIs = document.getElementById('tvgrid').getElementsByTagName('li');
			for (i = 0; i < LIs.length; i++) {
				LIs[i].className = '';
			};
			LIs[n+1].className = 'active';
		};
		var divName = 'ptg'; // DIV to insert grid into
		jsonStr = eval((this.timezones[n]['result']));
		var j = jsonStr[0]; // get data from object
		if (j.error) { // not sure about this...
			var sfSpan = getAttrsTextNode("span", "class=zcc-error", j.error),
			sfDiv = getAttrsTextNode("div", "class=zcc-wrap", sfSpan.innerHTML);
			returnStr = sfDiv.innerHTML;
		} else { // if no errors, build grid
			var ptgDiv = getAttrsTextNode('div', 'class=zcc-wrap'),
			ptgTbl = getAttrsTextNode('table', 'class=zcc-primetime'),
			ptgTblHd = document.createElement('thead'),
			ptgTblTd,
			ptgTblTr = document.createElement('tr'),
			ptgTblHdTH = getAttrsTextNode('th', null, zc_opt.firstTH),
			ptgTblBd = document.createElement('tbody'),
			r, d, i, l, k, c;
			ptgTblTr.appendChild(ptgTblHdTH);
			for(i=0; i < j.colHeaders.length ; i++) {
				ptgTblHdTH = getAttrsTextNode('th', 'class=zcc-sked-time', j.colHeaders[i].name);
				ptgTblTr.appendChild(ptgTblHdTH);
			};
			ptgTblHd.appendChild(ptgTblTr);
			ptgTbl.appendChild(ptgTblHd);
			for(l=0; l < j.rows.length; l++) {
				c = (c == 'odd') ? 'even' : 'odd';
				ptgTblTr = document.createElement('tr');
				ptgTblTr.className = c;
				ptgTblTd = getAttrsTextNode('td', 'class=zcc-station');
				r = j.rows[l]
				if(r.stationLogoURL) {
					ptgTblTd.appendChild(getAttrsTextNode('img', 'src=' + r.stationLogoURL + '::alt=' + r.callSign + '::class=zcc-station-logo'));
				}
				ptgTblTd.appendChild(getAttrsTextNode('div', 'class=zcc-callsign', r.callSign));
				ptgTblTr.appendChild(ptgTblTd);
				for(k=0; k < r.items.length; k++) {
					d = r.items[k];
					ptgTblTd = getAttrsTextNode('td', 'class=zcc-sked::colspan=' + d.rowSpan);
					if (d.programTitle == 'Local Programming') {
						var ptgA = getAttrsTextNode('p', 'class=zcc-sked-title', d.programTitle);
					} else {
						var ptgA = getAttrsTextNode('a', 'class=zcc-sked-title::href=' + d.programURL, d.programTitle);
					};
					var ptgTblTdSpan = getAttrsTextNode('span', 'class=zcc-sked-attributes'),
							ptgAttr = false,
							ptgSpan,
							icSep = zc_opt.pnct.icons;
					ptgA.title = d.programTitle;
					ptgTblTd.appendChild(ptgA);
					ptgTblTd.appendChild(document.createTextNode(' '));
					if(d.HD) {
						ptgSpan = getAttrsTextNode('span', 'class=zcc-sked-hd', 'HD');
						ptgTblTdSpan.appendChild(ptgSpan);
						ptgAttr = true;
					}
					if(d.New) {
						ptgSpan = getAttrsTextNode('span', 'class=zcc-sked-new', ptgAttr ? null : 'New');
						if (ptgAttr) {
							ptgSpan.appendChild(getAttrsTextNode('span', 'class=zcc-separator', ptgAttr ? icSep : ''));
							ptgSpan.appendChild(document.createTextNode('New'));
						}
						ptgTblTdSpan.appendChild(ptgSpan);
						ptgAttr = true;
					}
					if(d.Live) {
						ptgSpan = getAttrsTextNode('span', 'class=zcc-sked-live', ptgAttr ? null : 'Live');
						if (ptgAttr) {
							ptgSpan.appendChild(getAttrsTextNode('span', 'class=zcc-separator', ptgAttr ? icSep : ''));
							ptgSpan.appendChild(document.createTextNode('Live'));
						}
						ptgTblTdSpan.appendChild(ptgSpan);
						ptgAttr = true;
					}
					if(d.Video) {
						ptgSpan = getAttrsTextNode('span', 'class=zcc-sked-video', ptgAttr ? null : 'Video');
						if (ptgAttr) {
							ptgSpan.appendChild(getAttrsTextNode('span', 'class=zcc-separator', ptgAttr ? icSep : ''));
							ptgSpan.appendChild(document.createTextNode('Video'));
						}
						ptgTblTdSpan.appendChild(ptgSpan);
					}
					ptgTblTd.appendChild(ptgTblTdSpan);
					ptgTblTr.appendChild(ptgTblTd);
				}
				ptgTblBd.appendChild(ptgTblTr);
			}
			ptgTbl.appendChild(ptgTblBd);
			ptgDiv.appendChild(ptgTbl);
			returnStr = ptgDiv.innerHTML; // get whatever is currently in DIV...
			document.getElementById(divName).innerHTML = returnStr; // insert complete HTML
		};
		PEOPLE.TVModule.addcid('ptg'); // add "cid" variable to all links
	},
	addcid : function(id) { // adds cid=tvlmodule to links in specified ID
		if (id == null || typeof document.getElementById(id) == 'undefined') return;
		var cid = 'cid=tvlmodule';
		var As = document.getElementById(id).getElementsByTagName('a');
		for (i = 0; i < As.length; i++) {
			var a = As[i];
			if (a.href.indexOf('cid=') > 0) {
				continue;
			} else if (a.href.indexOf('?') > 0) {
				a.href = a.href + '&' + cid;
			} else {
				a.href = a.href + '?' + cid;
			};
		};
	}
};
PEOPLE.TVModule.init();
//	add tvlistings module
var addtvlistings = function() {
	if (!showid) return;
	var tvl = document.createElement('script');
		tvl.type = 'text/javascript';
		tvl.src = 'http://img2-short.timeinc.net/people/static/j/tvwatch/tvlistings.js';
	document.getElementsByTagName('body')[0].appendChild(tvl);
};
tii_callFunctionOnWindowLoad(addtvlistings);