/* KTVU.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; } // Site Info Object var siteinfo = { tld:"com", lang:"en", timezone:"PST", id:"1827526", advertisingid:"fran", station:"fran", ultraseekregion:"cox", affiliate:"fox", state:"ca", owner:"cox", region:"cox", is_ia:"yes", sitekey:{lc:"fran", uc:"FRAN" }, sitename:{lc:"ktvu", mx:"KTVU", uc:"KTVU.COM", display:"KTVU.com" }, callletters:{lc:"ktvu", uc:"KTVU" }, statecode:{uc:"CA", lc:"ca" }, statename:{uc:"CALIFORNIA", lc:"california", mx:"California" }, city:{uc:"SAN FRANCISCO", lc:"san francisco", mx:"San Francisco" }, slideshow:{version:"2" }, storysettings:{display:"true" }, contentrights:{cnn:"yes", nbcoo:"no", group:"red", red:"yes" }, search:{ultraseekregion:"cox" }, source_names:{poolid:"1782", name:"CNN", display:"true" }, thirdparty_info:{ tzoo:{ac:"SFO"}, rtrac:{accnt:"149143", zipaccnt:"152382", frpaccnt:"152455"}, creditcard:{pid:"854c2ede"}, google:{verify:"Js4dCU2RDk8tW0TwqsolMn4HdLlk0Bj9kW8k1gCHuNo="}, yahoo:{verify:"1a259152e283e6bf"}, ebay:{pid:"2353033"}, piggyback:{pid:"17"}, tripadvisor:{id:"10753", subdomain:"ktvu"}, lendingtree:{id:"981460"}, autotrader:{number:"024", id:"IBSCOBRNDSITE024", sell:"IBSCOBRNDSYC0024", coxid:"007"}, stepup:{id:"1000"}, eharmony:{cid:"1223", clicktracker_dfp:"12700856;8704162;e"}, experion:{id:"6411"}, date:{citycode:"1823654", clicktracker:"5444", clicktracker_dfp:"7391734;8704162;n"}, findlaw:{clicktracker_dfp:"6861486;8704162;s"}, homestore:{tracker_id:"4163", code:"ci", clicktracker_dfp:"7412453;8704162;f"}, valpak:{clicktracker:"4797", clicktracker_dfp:"7440761;8704162;i"}, yellowpages:{tracker_id:"3830", from:"CoxBayinsider", clicktracker_dfp:"7347920;8704162;l"}, careerbuilder:{tracker_id:"4076"}, moviesearch:{zip:"94105"}, titantv:{id1:"53004", id2:"53005"}, mailforms:{email:"bill.murray"}, monster:{lid:"349,343,20586,702,352,355,883,356"}, coupons:{pid:"11109&zid=wr49&nid=11"}, WT_info:{id:"dcsqer06c10000kjci8awuirt_4w7z"}, serviceMagic:{affiliateCode:"ibssanfrancisco", articleId:"725849", formId:"725850"}, tacoda:{id:"13698"} }, video:{playerversion:"5", skin:"blue", wxicons:"cox", headerlinks:"#000099", cpcode:"12948" }, linkmethods:{name:"slideshow", mtid:"181", method:"popup", width:"1024", height:"750", top:"0", left:"0", dynamic_url:"/slideshow[ibs_variable type=iburl att=sectionpath][ibs_variable type=iburl att=coid]/detail.html" } } // 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, "'"); 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; cAdObj.create(position,sz,swId,coId,section) - create and return a new AdObj *
  • AdObj.refreshPosition(positions...) - refresh one or more positions
  • *
  • AdObj.refreshAll() - refresh all ads
  • *
  • AdObj.remove(name) - remove ad
  • * * @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 = ""; } else { // refreshAd is defined in base js refreshAd(this.position); } } /** * Refresh this ad. */ AdObj.prototype.refresh = function(adid) { 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 src = "http://ad.doubleclick.net/adi/ibs."+siteinfo.sitekey.lc+"."+category+"/"+adZone+";kw="+this.section+"+"+this.position+this.coId+segQS+";ad=true;tile="+dcadposition+ ";pgtype=detail;sz="+this.sz+";"+adid+";ord="+randInt+"?"; // if(/iframe/i.exec(obj.nodeName) != null) // { // obj.src = ""; // obj.src = src; // } // else arr[0].innerHTML = ""; } /** 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) { for(var p in AdObj.elements) AdObj.elements[p].refresh(adid); } 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 videoPlugID * @return */ 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 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; } /**** Deprecated - PlayerFactory uses audit object to do this now. see PTS 81853 addEvent(window,"load", function() { // pageProps is still if(typeof pageProps == "undefined") return; AdObj.create("banner1", "728x90", "-1", (pageProps.coid ? String(pageProps.coid) : "-1"), pageProps.sectiontag); if(document.getElementById("videoplug") && document.getElementById("videoplug").attachEvent) { document.getElementById("videoplug").attachEvent( "currentItemChange", AdObj.createAdRefreshHandler("videoplug")); } } ); ***/ /* // wrapper function - inserted into XSL function callMediaWindowPixel(coId) { var mwpix = new AdObj("mediawindow", "2x2", "9161858", coId, "testpage"); mwpix.callAd(); } // call from swf callMediaWindowPixel(coId); */ // 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