Team:HUST-China/Templates/css/huge.js
From 2012.igem.org
Revision as of 16:45, 26 September 2012 by HUST XueYu (Talk | contribs)
'; tag += ''; doc.innerHTML = tag; doc.style.display = 'none'; var idx = -1; var ver = GE('ClipPlayer').versionInfo; if(ver != null && ver.length > 0) { idx = ver.indexOf("."); } else { throw "wrong version"; } if(idx != -1 && parseInt(ver.substr(0, idx)) < 7) { throw "wrong version"; } } catch(e) { if(redir == true) location.href = "/help/requirements.aspx"; return; } } } var wmplp = false; var wmpsh = false; function AutoPlayClip(url) { var ids = url.match(/song\=(\d+)/); if (ids != null && ids.length > 0) { var id = ids[1]; var item = GE('clp_'+id); if (item != null) { clpup(item, id); } } } function PlayClip(url, id) { if(CurrentPlayImage.children[0]) { CurrentPlayImage.children[0].isLoading = true; CurrentPlayImage.children[0].src = imgPre + "/i/ms/bt_load.gif"; } var cp = GE('ClipPlayer'); if(cp == null) { CreatePlayer(true); cp = GE('ClipPlayer'); } if(!CheckWmp10()) window.onbeforeunload = StopPlayerNow; if(cp != null) { wmplp = cp.settings.getMode("loop"); wmpsh = cp.settings.getMode("shuffle"); cp.settings.setMode("loop", false); cp.settings.setMode("shuffle", false); cp.URL = url; cp.controls.play(); } } function clpov(item) { if(item == CurrentPlayImage) { if(CurrentPlayImage.children[0].isLoading != true) CurrentPlayImage.children[0].src = imgPre + "/i/ms/bt_stop_o.gif"; } else if(item.children[0]) item.children[0].src = imgPre + "/i/ms/bt_play_o.gif"; } function clpot(item) { if(item == CurrentPlayImage) { if(CurrentPlayImage.children[0].isLoading != true) CurrentPlayImage.children[0].src = imgPre + "/i/ms/bt_stop.gif"; } else if(item.children[0]) item.children[0].src = imgPre + "/i/ms/bt_play.gif"; } function clpdn(item) { if(event != null && event.button > 1) return; if(item == CurrentPlayImage) { if(CurrentPlayImage.children[0].isLoading != true) CurrentPlayImage.children[0].src = imgPre + "/i/ms/bt_stop_d.gif"; } else if(item.children[0]) item.children[0].src = imgPre + "/i/ms/bt_play_d.gif"; } function clpup(item, id) { if(event != null && event.button > 1) return; if(item.clipid == null) { var len = document.all.length; var fnd = false; for(var x = 0; x < len; x++) { var ele = document.all[x]; if(ele.tagName.toLowerCase() == "a" && ele.clipid == id) { item = ele; fnd = true; break; } } if(fnd == false) return; } if(item == CurrentPlayImage) { var tmp = CurrentPlayImage.children[0].alt; tmp = tmp.replace("Stop", "Play"); CurrentPlayImage.children[0].alt = tmp; GE('ClipPlayer').controls.stop(); GE('ClipPlayer').settings.setMode("loop", wmplp); GE('ClipPlayer').settings.setMode("shuffle", wmpsh); CurrentPlayImage = null; clpot(item); return; } if(CurrentPlayImage != null) { var tmp = CurrentPlayImage; var tmps = CurrentPlayImage.children[0].alt; tmps = tmps.replace("Stop", "Play"); GE('ClipPlayer').settings.setMode("loop", wmplp); GE('ClipPlayer').settings.setMode("shuffle", wmpsh); CurrentPlayImage.children[0].alt = tmps; CurrentPlayImage = null; clpot(tmp); } CurrentPlayImage = item; clpot(item); var clpurl = GetClipUrl(item.mnid); PlayClip(clpurl, id); } function GetClipUrl(cid) { var newEnv; var retval = "error"; if(typeof(cid) != "undefined" && cid !="0") { newEnv = musicnetEnv; newEnv = newEnv.replace("#SONGID#", cid); try { dom = postCustomSoapRequest("GetSampleUrl", "http://entertainment.msn.com/services/", newEnv, MUSICNETSERVICE_URL, false); if (dom) { var resNode = dom.selectSingleNode('//GetSampleUrlResult'); if(resNode) return resNode.text; } } catch(e){} } return retval; } function PCBL() { alert('Parental Controls have been applied. Purchase of explicit content is not allowed on this account.'); } function PCPC() { if(event != null && event.button > 1) return; alert('Parental Controls have been applied. Sampling of explicit content is not allowed on this account.'); } // Buy buttons and logic // buy globals var frzBuy = false; var buyImages; var npbid; // support script for ImageButtonCtrl function chkbb() { // If redirPending or blockChkbb is set, do not execute chkbb to consume incorrectly bbuy cookie if(meetsReqs && !redirPending && typeof(blockChkbb) == "undefined") { // Wait until onload() JS handler is invoked to complete purchase, this is to avoid // JS flyout animation timeouts to causes IE to error while remaining of JS global code is executed __CheckNoHassleCookie(); if(document.readyState == "complete" || (typeof(noHassle) != "undefined" && noHassle != 1)) { // preload the images __PreloadBuyImages(); var bid = GetCkVal("bbuy"); if(bid != null && bid.length > 0 && bid != "undefined") { if( GetCkVal("secauth") != "1" && GetCkVal("secauth") != "2" && NeedSecure()) { // Do secure login - DO NOT CLEAR the Buy cookie // Set secauth cookie to 2 to avoid loops when auth is aborted / fails expSet = GMTStringPlus(10); document.cookie = "secauth=2;Path=/; expires=" + expSet + "; domain=" + __getDocDomain(); TrigLogIn(defaultBuyPpcb, true); } else { if( GetCkVal("secauth") == "2" ) { document.cookie = "secauth=;Path=/; expires=" + expDel + "; domain=" + __getDocDomain(); if( !IndefIsLoggedIn() ) { // If user refused to log in once redirected to passport sign in page, we should give up // with trying to complete the purchase - otherwise user may be redirected to secured // passport sign in page again when continuing browsing music pages. document.cookie = "bbuy=;Path=/; expires=" + expDel + "; domain=" + __getDocDomain(); return; } } if( (GE(bid) != null && GE(bid).pctrl == true && pcontr == true) ) { document.cookie = "bbuy=;Path=/; expires=" + expDel + "; domain=" + __getDocDomain(); return; } var frmnp = GetCkVal("frmnp"); if(GE(bid) != null && (frmnp != null && frmnp.length > 0 && frmnp != "undefined")) { document.cookie = "frmnp=;Path=/; domain=" + __getDocDomain(); npbid = bid; __ShowNotifyDialog(GE(bid)); } else if(IndefIsLoggedIn() && GE(bid) != null && window.inNowPlaying != true) { var top = 0, lft = 0; var ele = GE(bid); // determine pixel location of the button on the page do { top += ele.offsetTop; lft += ele.offsetLeft; ele = ele.offsetParent; } while (ele != null) // only scroll to the button if it's off the page if(top > document.body.clientHeight) GE(bid).scrollIntoView(true); ele = GE("cn" + bid.substr(2)); if (ele != null) { var redir = GetCkVal("red"); var firstAttempt = (redir == null || redir == "undefined"); // We don't want to redirect if this is not the first attempt to complete buy process if (!firstAttempt) blockRedir = true; // Elements may be created dynamically - don't clear cookie unless the element is already on the page document.cookie = "bbuy=;Path=/;domain=" + __getDocDomain() + ";expires=" + GMTStringMinus(10); bc(GE("cn" + bid.substr(2)), GE(bid)); // If this is the first attempt to complete buy process, set cookie to keep track of this // and restore bbuy cookie if (redirPending && firstAttempt) { document.cookie = "red=1;Path=/; expires=" + GMTStringPlus(10) + "; domain=" + __getDocDomain(); document.cookie = "bbuy=" + bid + ";Path=/; expires=" + expSet + "; domain=" + __getDocDomain(); } } } } } } } } function tk(t,i,p) { return t+":"+i+":"+p;} function bbi(t, i, p, o) { if(event != null && event.button > 1) return; // if the user mouses over an image before the onload scripts have run (possible!) if (!buyImages) __PreloadBuyImages(); var k = tk(t,i,p); if (!buyImages[k]) { __AddBuyImageToCache(t,i,p); } if(o == null) event.srcElement.src = buyImages[k].src; else o.src = buyImages[k].src; } //text button mouse events. t= type of button, i = mouseevent; function bti(t, i, p, o) { if(event != null && event.button > 1) return; // if the user mouses over an image before the onload scripts have run (possible!) if (!buyImages) __PreloadBuyImages(); var k = tk(t,i,p); if (!buyImages[k]) { __AddBuyImageToCache(t,i,p); } if(o != null) { var par = o.parentElement; var child2 = o.children[1]; child2.src = buyImages[k].src; } } function bs(s, o) { if(event != null && event.button > 1) return; if(o == null) event.srcElement.src = s; else o.src = s; } function nbs(s, o) { if (typeof(event) != 'undefined') { if(event != null && event.button > 1) return; } if(o == null && s !== null) { if (typeof(event) != 'undefined') { if(s.complete == true) event.srcElement.src = s.src; } } else if(s !== null) { if(s.complete == true) o.src = s.src; } } function tbs(s, o) { if(event != null && event.button > 1) return; //var par = o.parentElement; var i = o.children[0]; if(s != null) { if(s.complete == true) i.src = s.src; } } //sign-up for prepaid cards, entry point - reedem prepaid card link function rprepaid() { if(event != null && event.button > 1) return; var url = "http://" + document.location.hostname + "/musicstore/signup/default.aspx"; if (!IsLoggedIn()) { if (url.indexOf("?") == -1) url = url + "?"+ LIT; else url = url + "&"+ LIT; } if (url.indexOf("?") == -1) url = url + "?subType=prepaid"; else url = url + "&subType=prepaid"; if(window.ctTrackUrl != null) { try { ctTrackUrl(url, "cm=" + event.srcElement.parentElement.cmvl + "&ce=SUBC" + event.srcElement.parentElement.cevl); } catch(e) { location.href = url; redirPending = true; } } else { location.href = url; redirPending = true; } return; } //music rental signup, from juice promotional link/page function mrsignup(subCat) { if(event != null && event.button > 1) return; //if not logged in, redirect to sign-in/up page with service type = "musicrental" orelse redirect to default page for juice. var url = "http://" + document.location.hostname + "/musicstore/signup/subscriptioncheck.aspx"; if (!IsLoggedIn()) { if (url.indexOf("?") == -1) url = url + "?"+ LIT; else url = url + "&"+ LIT; } if (url.indexOf("?") == -1) url = url + "?subType=rental"; else url = url + "&subType=rental"; if (subCat != "") { url = url + "&subCat=" + subCat; } document.cookie = "suburl=" + escape(document.URL) + "; Path=/; expires=" + expSet + "; domain=" + __getDocDomain(); if(window.ctTrackUrl != null) { try { ctTrackUrl(url, "cm=" + event.srcElement.parentElement.cmvl + "&ce=SUBC" + event.srcElement.parentElement.cevl); } catch(e) { location.href = url; redirPending = true; } } else { location.href = url; redirPending = true; } return; } function bc(ele, obj) { if(event != null && event.button > 1) return; if(event != null) { document.cookie = "red=; Path=/; expires=" + expDel + "; domain=" + __getDocDomain(); blockRedir = false; } window.setTimeout("omBuyTrack('" + obj.id + "','" + ele.bytp + "','buystart');", 10); if(frzBuy == true) return; // IndefIsLoggedIn is not 100% accurate as it relies on a value set in the entertainment page // however, it does not require a roundtrip and if the user is not logged in, the buy code can // handle this and initiate the login at that point var sec = NeedSecure(); if( !IndefIsLoggedIn() || (GetCkVal("secauth") != "1" && GetCkVal("secauth") != "2" && sec) ) { var url = parent.document.URL; // Secure login anyone who may need to go through computer enrollment // to save a redirect later if (url.indexOf("?") == -1) url = url + "?"+ (sec ? SLIT : LIT); else url = url + "&"+ (sec ? SLIT : LIT); url = url + "&ppcb=musicstore"; expSet = GMTStringPlus(10); var bbid; if(obj != null) { bbid = obj.id; } document.cookie = "bbuy=" + bbid + ";Path=/; expires=" + expSet + "; domain=" + __getDocDomain(); document.cookie = "buyurl=" + escape(document.URL) + "; Path=/; expires=" + expSet + "; domain=" + __getDocDomain(); document.cookie = "secauth=2;Path=/; expires=" + expSet + "; domain=" + __getDocDomain(); //going to redir,if present set tab cookie setTabCookie(); if(window.inNowPlaying == true && window.npbuyurl) { setTimeout("RLNK('" + window.npbuyurl + "');", 100); return; } if(window.ctTrackUrl != null) { try { ctTrackUrl(url, "cm=" + event.srcElement.parentElement.cmvl + "&ce=BUYPP" + event.srcElement.parentElement.cevl); } catch(e) { location.href = url; redirPending = true; } } else { location.href = url; redirPending = true; } return; } var o = (event == null ? null : event.srcElement); if(obj != null) o = obj.children[0]; // if bst dne or is not set, set it now // this assures cancel will operate correctly // (note repeat purchase cancels can occur even in noHassle) if (o != null && !o.bst) { o.bst = 1; if (typeof(o.baksr) == "undefined") o.baksr = o.src; if (typeof(o.bakov) == "undefined") o.bakov = o.onmouseenter; if (typeof(o.bakot) == "undefined") o.bakot = o.onmouseleave; if (typeof(o.bakdn) == "undefined") o.bakdn = o.onmousedown; if (typeof(o.bakup) == "undefined") o.bakup = o.onmouseup; if (typeof(o.bakkdn) == "undefined") o.bakkdn = o.onkeydown; if (typeof(o.bakkup) == "undefined") o.bakkup = o.onkeyup; if (typeof(o.baktxt) == "undefined") o.baktxt = o.children[0].innerText; if (typeof(o.bakcls) == "undefined") o.bakcls = o.className; // noHassle is -1, 0 or 1 (unknown, no, yes) __CheckNoHassleCookie(); if(noHassle > 0) { if(window.ctTrackUrl != null && event != null) { try { ctTrackDirect("cm=" + event.srcElement.parentElement.cmvl + "&ce=BUYONE" + event.srcElement.parentElement.cevl); } catch(e) {} } // is noHassle buy and not repeat buy cancel window.setTimeout("omBuyTrack('" + obj.id + "','" + ele.bytp + "','buyconfirm');", 10); __DoBuy(o); } else { // conduct pre-buy checks prior to confirm button display res = eval('Pre'+ o.parentElement.conck); if (res != 0) return; if(window.ctTrackUrl != null && event != null) { try { ctTrackDirect("cm=" + event.srcElement.parentElement.cmvl + "&ce=BUY" + event.srcElement.parentElement.cevl); } catch(e) {} } // is standard buy and not repeat buy cancel eval("bti('" + o.parentElement.bytp + "','up','con',o);"); window.setTimeout("omBuyTrack('" + obj.id + "','" + ele.bytp + "','buyconfirm');", 10); o.children[0].innerText = "confirm"; __mSetHandlers(o, bm); if(ele && ele.style) { // wire up cancel button events and make visible ele.title = "Cancel"; __mSetHandlers(ele, bcan); ele.tabIndex = 0; ele.style.visibility = 'visible'; } o.bst = 1; } } else if(o != null) { // is cancel click, revert to buy button and clear the BBUrl __mClearBBUrl(); o.src = o.baksr; o.className = o.bakcls; o.onmouseenter = o.bakov; o.onmouseleave = o.bakot; o.onmousedown = o.bakdn; o.onmouseup = o.bakup; o.onkeydown = o.bakkdn; o.onkeyup = o.bakkup; o.children[0].innerText = o.baktxt; if(o.parentElement.bytp) bti(o.parentElement.bytp, 'up', 'reg', o); if(ele && ele.style) ele.style.visibility = 'hidden'; o.bst = 0; } } function bkchk() { return (event.keyCode == 13 || event.keyCode == 32 ); } function bn(cnele, ele) { bc(cnele, ele); } // handle all buy button events function bbuy(o) { if(event != null && event.button > 1) return; //tst(o); if(o==null) o = event.srcElement; var par = o.parentElement; switch(event.type) { case 'mouseenter': bti(par.bytp, 'hv', 'reg', o); break; case 'mouseleave' : bti(par.bytp, 'up', 'reg', o); break; // Warning : key events fall through case 'keydown': if(!bkchk()) break; case 'mousedown':bti(par.bytp, 'dn', 'reg', o);break; case 'keyup': if (!bkchk()) break; case 'mouseup': // backup image src/event handler o.baksr = o.src; o.bakov = o.onmouseenter; o.bakot = o.onmouseleave; o.bakdn = o.onmousedown; o.bakup = o.onmouseup; o.bakkdn = o.onkeydown; o.bakkup = o.onkeyup; o.baktxt = o.children[0].innerText; o.bakwid = o.offsetWidth; o.bakcls = o.className; // flip the button to 'processing' __mSetHandlers(o, null); bti(par.bytp, 'up', 'pro', o); o.children[0].innerText = ""; o.id = par.id+ "_bbtn"; eval(par.clck); break; } } // handle all context menu events function ccm() { var o = event.srcElement; switch(event.type) { case 'mouseenter': bbi('com', 'hv', 'cm', o); break; case 'mouseleave' : bbi('com', 'up', 'cm', o); break; // Warning : key events fall through case 'keydown': if(!bkchk()) break; case 'mousedown': bbi('com', 'dn', 'cm', o); break; case 'keyup': if (!bkchk()) break; case 'mouseup': // backup image src/event handler bbi('com', 'up', 'cm', o); eval(cmenu()); break; } } // handle all cancel button events function bcan() { var o = event.srcElement; if(o.item == null || typeof(o.item) == "undefined") { o = o.parentElement; } var chld = o.children[0]; switch(event.type) { case 'mouseenter': bbi('com', 'hv', 'can', chld); break; case 'mouseleave': bbi('com', 'up', 'can', chld); break; // Warning : key events fall through case 'keydown': if(!bkchk()) break; case 'mousedown': bbi('com', 'dn', 'can', chld); break; case 'keyup': if (!bkchk()) break; case 'mouseup': bbi('com','up', 'can', chld); eval("bn(GE('cn"+ o.item +"'), GE('by" + o.item + "'));"); break; } } // handle all confirm button events function bm() { if(event != null && event.button > 1) return; var par = this.parentElement; switch(event.type) { case 'mouseenter': bti(par.bytp, 'hv', 'con', this); break; case 'mouseleave': this.children[0].innerText="confirm";bti(par.bytp, 'up', 'con', this);break; // Warning : key events fall through case 'keydown': if(!bkchk()) break; case 'mousedown': this.children[0].innerText="";bti(par.bytp, 'up', 'pro', this); break; case 'keyup': if (!bkchk()) break; case 'mouseup': // flip the button to 'processing' // no handler backup required __mSetHandlers(this, null); this.id = par.id+ "_cbtn"; if(window.ctTrackUrl != null) { try { ctTrackDirect("cm=" + par.cmvl + "&ce=CONFIRM" + par.cevl); } catch(e) {} } __DoBuy(this); break; } } function __DoBuy(o) { var par = o.parentElement; var retval = eval(par.conck); if(window.inNowPlaying == true && retval != 0) { bc(GE('cn' + par.id.substring(2)), par); return; } if(retval == 0) { window.setTimeout("omBuyTrack('" + par.id + "','" + par.bytp + "','buycomplete');", 10); } else { window.setTimeout("omBuyTrack('" + par.id + "','" + par.bytp + "','buyfailed');", 10); } if(retval == 0) bdn(o); else if(retval == 2) frzBuy = true; else if(retval > 0 || retval == -5) bc(GE('cn' + par.id.substring(2)), par); __mNoHassleClearBBUrl(retval); } function bdn(ele) { var par = ele.parentElement; bFly(par); __mSetHandlers(ele, null); ele.style.cursor = "default"; // set the purchase image (should be preloaded) bti(par.bytp, 'up', 'reg', ele); ele.children[0].innerText = "Purchased"; ele.title = "Purchased"; try { if(document.all["cn" + par.id.substring(2)]) document.all["cn" + par.id.substring(2)].style.visibility = "hidden"; } catch(e){} if(window.inPostLic == null || window.inPostLic != true) __ShowNoHassleDialog(par); } // No Hassle // display the no hassle dialog box // ele is the main buy span function __ShowNoHassleDialog(ele) { // if noHassle has been set, do not ask them again __CheckNoHassleCookie(); if (noHassle != -1) return; // insert the dialog HTML now if (!document.all["nhassle"]) { // there is quite a bit of thought in this HTML: the seemingly irrational position directive on the nhin (even the presence of nhin) // is to fool IE into believing nhin is outside of the filter, the filter was blocking the buttons from accepting clicks // do not adjust this HTML recklessly! ele.insertAdjacentHTML("afterEnd", "
"+
"
|
/g, "\r\n"); var inv = new Array("<", ">", "/", "\\"); for(var i = 0; i < inv.length; i++) { if(rbody.value.indexOf(inv[i]) != -1 || GE('rname').value.indexOf(inv[i]) != -1 || GE('rtitle').value.indexOf(inv[i]) != -1) { alert("Your review cannot contain the following characters: < > / \\ "); return false; } } return true; } function chkCmt() { var rbody = GE('comment'); if(rbody.value.length > 500) { alert('Your comment is ' + rbody.value.length + ' characters long. Entries are limited to 500 characters.'); return false; } rbody.value = rbody.value.replace(/
/g, "\r\n"); var inv = new Array("<", ">", "/", "\\", "--"); for(var i = 0; i < inv.length; i++) { if(rbody.value.indexOf(inv[i]) != -1) { alert("Your comment cannot contain the following characters: < > / \\ -- "); return false; } } if(GE('cancelForm')) GE('cancelForm').submit(); return true; } function previewReview(v, rtype) { var rbody = GE('rbody'); var rrate = GE('rrate'); var rname = GE('rname'); var rtitle = GE('rtitle'); if(rbody && rrate && rname && rtitle) { if(rbody.value.length > 2000 && v != 1) { alert('Your review is ' + rbody.value.length + ' characters long. Entries are limited to 2000 characters.'); return false; } rbody.value = rbody.value.replace(/
/g, "\r\n"); var inv = new Array("<", ">", "/", "\\"); for(var i = 0; i < inv.length; i++) { if(rbody.value.indexOf(inv[i]) != -1 || rname.value.indexOf(inv[i]) != -1 || rtitle.value.indexOf(inv[i]) != -1) { alert("Your review cannot contain the following characters: < > / \\ "); return false; } } GE('p_rtitle_wr').innerText = rtitle.value; GE('p_rrate_wr').src = imgPre + "/i/r_sr_"+ rrate.value +".gif"; GE('p_rdate_wr').innerText = ""; GE('p_rname_wr').innerText = rname.value; GE('p_rbody_wr').innerText = rbody.value; //show preview GE('divWR').style.display = "none"; GE('divPR').style.display = "block"; GE('rtitle2').value = rtitle.value; GE('rrate2').value = rrate.value; GE('rname2').value = rname.value; GE('rbody2').value = rbody.value; } return false; } function submitReview(v, rtype) { var rrate = GE('rrate2'); var rname = GE('rname2'); var rtitle = GE('rtitle2'); var rbody = GE('rbody2'); var rsv = GE('rsv2'); var id = GE('objid'); if(rbody.value.length > 2000 && v != 1) { alert('Your review is ' + rbody.value.length + ' characters long. Entries are limited to 2000 characters.'); return false; } rbody.value = rbody.value.replace(/
/g, "\r\n"); var inv = new Array("<", ">", "/", "\\"); for(var i = 0; i < inv.length; i++) { if(rbody.value.indexOf(inv[i]) != -1 || rname.value.indexOf(inv[i]) != -1 || rtitle.value.indexOf(inv[i]) != -1) { alert("Your review cannot contain the following characters: < > / \\ "); return false; } } if(typeof(rtype) != "undefined") { var DataToSend; DataToSend = "rsv=" + rsv.value + "&rtitle=" + escape(rtitle.value) + "&rrate=" + rrate.value + "&rname=" + escape(rname.value) + "&rbody=" + escape(rbody.value) + "&id=" + id.value; var xmlhttpObj = new ActiveXObject("Microsoft.XMLHTTP"); xmlhttpObj.Open("POST","/xml/reviews/save"+ rtype +"Review.aspx",false); xmlhttpObj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xmlhttpObj.send(DataToSend); GE('divWR').style.display = "none"; GE('divPR').style.display = "none"; GE('divTR').style.display = "block"; if(typeof(reviewWritten) != "undefined") reviewWritten = true; } return false; } function editReview() { GE('divPR').style.display = "none"; GE('divTR').style.display = "none"; GE('divWR').style.display = "block"; return false; } function cancelReview() { document.forms["rvfrm"].reset(); GE('divTR').style.display = "none"; GE('divPR').style.display = "none"; GE('divWR').style.display = "block"; return false; } // Dl Manager script var SERVER = "http://" + document.location.hostname; var NOCLIENT_URL = SERVER + "/client/install.aspx"; var SYSREQ_URL = SERVER + "/help/requirements.aspx"; var CLIENTUPGRADE_URL = SERVER + "/client/install.aspx"; var INDIVID_URL = SERVER + "/client/install.aspx"; var WMPDOWNLOAD_URL = "http://www.microsoft.com/windows/windowsmedia/default.aspx"; var ENROLL_URL = SERVER + "/managecomputer/default.aspx"; var SIGNUP_URL = "/musicstore/signup/default.aspx"; var SUBSCRIPTION_CHECK_URL = "/musicstore/signup/subscriptioncheck.aspx"; var BAM_URL = "/premium/BAM/default.aspx"; var CUSTOMERSERVICE_URL = SERVER + "/help/errormesgs.aspx?"; var WEBSERVICE_SSLRELURL = "/clientservice/ssl/default.asmx"; var WEBSERVICE_RELURL = "/clientservice/default.asmx"; var PUBLICSERVICE_SSLRELURL = "/services/publiclistservice.asmx"; var PUBLICSERVICE_RELURL = "/services/publiclistservice.asmx"; var USERINFOSERVICE_RELURL = "/services/userinfoservice.asmx"; var MIN_ACTIVEX_VER = "4.2.2609.2"; var ACTIVEX_CLASSNAME = "MsnMusicAxLib.MsnMusicAx.2"; var MIN_SERVICEXML_VER = 3; var MIN_PLAYER_VER = "7.1.0.0"; var MIN_DRM_VER = "7.1.0.0"; var MIN_DRM_SEC_VER = "2.0.0.0"; var CLIENT_STATUS_URL = SERVER + "/music/dlstatus.aspx"; var MUSICNETSERVICE_URL = "/services/musicnet.asmx"; // Default PPCB - login type for Passport due to Buy button var defaultBuyPpcb = "musicstore"; var emailRegex = /^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/; var clientRegisteredForCurrentUserEnv = "
"); return t; } function __mClearStat() { if (document.all["stat"] != null) { stat.innerHTML = ""; } } //endif var blockRedir = false; function redirectPage(pageUrl) { if (!redirPending && !blockRedir) { redirPending = true; if(window.inNowPlaying != true) { setTimeout("window.location.href = '" + pageUrl + "';" , 100); } else { if(window.npbuyurl) setTimeout("RLNK('" + window.npbuyurl + "');", 100); } } } function IsComputerEnrolled(noredir) { try { if (!CheckActiveX(noredir, false, false)) return false; output = msnmusax.Do("GETID", ""); if ("NAK" != output) { // Test if computer is enrolled with current user var newClientRegisteredForCurrentUserEnv = clientRegisteredForCurrentUserEnv.replace("#COMPUTERID#", output); dom = postSoapRequest("ClientRegisteredForCurrentUser", newClientRegisteredForCurrentUserEnv, false); if (!dom) return false; resNode = dom.selectSingleNode('//ClientRegisteredForCurrentUserResponse'); if (resNode) { if (resNode.text == "true") { clientId = output; return true; } } } } catch (e) { //ifdef debug __mdbgout("Exception caught in IsComputerEnrolled()"); //endif } return false; } function GetDefaultComputerName() { var name = "" try { name = msnmusax.Do("GETCOMPUTERNAME", ""); } catch(e) { } return name; } function EnrollComputer(machineName) { // NOTE: This should be called after indiv is already checked if( !CheckActiveX() ) return false; var enrollExisting; var hash = ""; var registerResult = -2; var clientEnrolled = false; try { clientId = msnmusax.Do("GETID", ""); if("NAK" == clientId) { // No ID yet - do clean enroll enrollExisting = false; clientId = "00000000-0000-0000-0000-000000000000"; registerResult = -1; } else { // Get challenge and do existing enroll with hash enrollExisting = true; var newEnv = clientRegisteredForCurrentUser2Env.replace("#COMPUTERID#", clientId); dom = postSoapRequest("ClientRegisteredForCurrentUser2", newEnv, false); if( dom ) { resNode = dom.selectSingleNode("//ClientRegisteredForCurrentUser2Result"); if( resNode ) { if( "true" == resNode.text ) { // Already enrolled - server returns same error code registerResult = 205; clientEnrolled = true; } else { resNode = dom.selectSingleNode("//returnId"); if( resNode ) { hash = msnmusax.Do("BEGINREG", "{" + resNode.text + "}"); if( "NAK" != hash ) { registerResult = -1; } } } } } } if( registerResult == -1 && machineName == "" ) { machineName = GetDefaultComputerName(); } // If the above step succeeds (either branch), registerResult should be -1 if( registerResult == -1 ) { var clientInfo = msnmusax.Do("GETCLIENTINFO", ""); var newEnv = registerClientEnv.replace("#MACHINENAME#", machineName); newEnv = newEnv.replace("#DRMCHALLENGE#", ""); newEnv = newEnv.replace("#COMPUTERID#", clientId); newEnv = newEnv.replace("#CLIENTHASH#", hash); dom = postSoapRequest("RegisterClient", newEnv, true); if( dom ) { registerResult = dom.selectSingleNode('//RegisterClientResult').text; if( registerResult == 32001 ) { // Clear secure cookie expDel = GMTStringMinus(10); document.cookie = "secauth=;Path=/; expires=" + expDel + "; domain=" + __getDocDomain(); // Enroll succeeded if( !enrollExisting ) { // Its a new enroll, have to store the ID and secret var resServer = dom.selectSingleNode("//server").text; var resId = dom.selectSingleNode("//retId").text; var resSecret = dom.selectSingleNode("//retSecret").text; output = msnmusax.Do("INITCLIENT", "{" + resId + "}" + "{" + resSecret + "}" + resServer); if ("ACK" != output) { // TODO: Figure out how to handle this failure case. May not be a way. registerResult = -4; } else { clientEnrolled = true; clientId = msnmusax.Do("GETID", ""); var resShouldSync = dom.selectSingleNode("//shouldSync").text; if( resShouldSync == "true" ) { // Licenses waiting - sync TrigPull(); } } } else { clientEnrolled = true; } } else if( registerResult == 0 ) { // Not logged in - secure login TrigLogIn(defaultBuyPpcb, true); } else if( registerResult == 1 ) { // No account redirectPage(SUBSCRIPTION_CHECK_URL + "?fbuy=1"); } else if( registerResult == 2 ) { // Not billable redirectPage(BAM_URL); } else if( registerResult == 201 ) { redirectPage(CUSTOMERSERVICE_URL + "#maxclientsreached"); } else if( registerResult == 202 ) { // User should already be individualized (check before calling this) // TODO: We may need to do async indiv redirectPage(CUSTOMERSERVICE_URL + "#needtoindiv"); } else if( registerResult == 206 ) { redirectPage(CUSTOMERSERVICE_URL + "#authlimitreached"); } else { redirectPage(CUSTOMERSERVICE_URL + "#enrollfailure"); } } else { redirectPage(CUSTOMERSERVICE_URL + "#ssl"); } } } catch (e) { redirectPage(CUSTOMERSERVICE_URL + "#enrollfailure"); } return clientEnrolled; } function UnenrollComputer() { var retval = true; try { if (!CheckActiveX()) { retval = false; } else { var alreadyEnrolled = true; output = msnmusax.Do("GETID", ""); var challenge = null; if ("NAK" == output) { alreadyEnrolled = false; } else { var newClientRegisteredForCurrentUser2Env = clientRegisteredForCurrentUser2Env.replace("#COMPUTERID#", output); dom = postSoapRequest("ClientRegisteredForCurrentUser2", newClientRegisteredForCurrentUser2Env, false); if (!dom) { retval = false; } else { resNode = dom.selectSingleNode("//returnId"); if (!resNode) { retval = false; } else { challenge = "{" + resNode.text + "}"; if (challenge == "{00000000-0000-0000-0000-000000000000}") { alreadyEnrolled = false; } } } } var clientHash = ""; var uninitResult = ""; if (retval && alreadyEnrolled) { clientHash = msnmusax.Do("BEGINUNREG", challenge); var newBeginUnregisterClientEnv = beginUnregisterClientEnv.replace("#COMPUTERID#", output); newBeginUnregisterClientEnv = newBeginUnregisterClientEnv.replace("#HASH#", clientHash); dom = postSoapRequest("BeginUnregisterClient", newBeginUnregisterClientEnv, false); if (!dom) { retval = false; } else { resNode = dom.selectSingleNode("//BeginUnregisterClientResponse"); if (!resNode) { retval = false; } else { if ("NAK" == resNode.text) { retval = false; } else { uninitResult = msnmusax.Do("UNREG", resNode.text); } } } } if (retval && alreadyEnrolled) { var newUnregisterClientEnv = unregisterClientEnv.replace("#COMPUTERID#", output); newUnregisterClientEnv = newUnregisterClientEnv.replace("#HASH#", uninitResult); dom = postSoapRequest("UnregisterClient", newUnregisterClientEnv, false); if (!dom) { retval = false; } else { resNode = dom.selectSingleNode('//UnregisterClientResponse'); if (!resNode) { retval = false; } else { if ("true" != resNode.text) { retval = false; } } } } } } catch (e) { retval = false; } return retval; } function UpdateUserComputerName(newMachineName) { try { if (!CheckActiveX()) { return false; } output = msnmusax.Do("GETID", ""); if ("NAK" != output) { var newUpdateUserComputerNameEnv = updateUserComputerNameEnv.replace("#COMPUTERID#", output); newUpdateUserComputerNameEnv = newUpdateUserComputerNameEnv.replace("#MACHINENAME#", newMachineName); dom = postSoapRequest("UpdateComputerName", newUpdateUserComputerNameEnv, false); if (dom) { resNode = dom.selectSingleNode('//UpdateComputerNameResponse'); if (resNode) { if (resNode.text == "true") { return true; } } } } } catch (e) { //ifdef debug __mdbgout("Exception caught in UpdateUserComputerName()"); //endif } return false; } function IsIndividualized() { var ret = false; try { var _wver = msnmusax.Do("GETDRMVERSION", ""); var _wversplit = _wver.split("."); var _secver = msnmusax.Do("GETSECURITYVERSION", ""); var _secversplit = _secver.split("."); if( _wversplit.length == 4 && _secversplit.length == 4) { if( _wversplit[0] >= 10 ) { if( _secversplit[3] > 0 && ( _secversplit[0] > 2 || (_secversplit[0] == 2 && _secversplit[1] >= 3) ) ) { ret = true; } } else { if( _secversplit[3] > 0 && ( _secversplit[0] > 2 || (_secversplit[0] == 2 && _secversplit[1] >= 2) ) ) { ret = true; } } } } catch(e) { } return ret; } function DoIndiv() { var ret = 0; if( IsIndividualized() != true ) { dom = postSoapRequest("GetDate", getDateEnv, false); if (dom) { resNode = dom.selectSingleNode('//GetDateResult'); if (resNode) { var date = new Date(); var dateDiff = Math.abs(((date.getTime() / 1000) | 0) - parseInt(resNode.text)); // 4+ days off if( dateDiff > 345600 ) { alert("MSN Music is unable to complete the purchase because your computer's internal clock is set incorrectly. Please set the correct date and time and try again. Your credit card has not been charged."); ret = 2; redirectPage(CUSTOMERSERVICE_URL + "#indivtimeoff"); } } } if( ret == 0 ) { var axversion = msnmusax.Do("GETACTIVEXVERSION", ""); try { msnmusax.Do("INDIVIDUALIZE", "FORCE"); ret = 0 } catch(e) { ret = 4; // Synchronous indiv result redirectPage(CUSTOMERSERVICE_URL + "indivres="+e.number+"&" + "#indivfailure"); } } } return ret; } function OnCodeInstalled(subscribeToNewsletter) { var arg; if( subscribeToNewsletter == true ) { arg = "true:"; } else { arg = "false:"; } arg = arg + "false";//minelibrary var newOnCodeInstalledEnv = onCodeInstalledEnv.replace("#ARG#", arg); dom = postSoapRequest("OnCodeInstalled", newOnCodeInstalledEnv); if (dom) { resNode = dom.selectSingleNode('//OnCodeInstalledResponse'); if (resNode) { // TODO: succeeded } } } function DoAlert(str) { try { if (!CheckActiveX(true, false, false)) { return false; } msnmusax.Mbx(str, "MSN Music", 17); } catch(e) { return false; } } function DoConfirm(str) { var ret = false; try { if (!CheckActiveX(true, false, false)) { return false; } ret = (msnmusax.Mbx(str, "MSN Music", 52) == "6"); } catch(e) { } return ret; } // dialog for users sent to buy a song on the site from now playing function __ShowNotifyDialog(ele) { // insert the dialog HTML now if (!document.all["npdialog"]) { // there is quite a bit of thought in this HTML: the seemingly irrational position directive on the nhin (even the presence of nhin) // is to fool IE into believing nhin is outside of the filter, the filter was blocking the buttons from accepting clicks // do not adjust this HTML recklessly! ele.insertAdjacentHTML("afterEnd", "
"+
"
|
Loading Stations... |
" + msgStr + "
";
oAS.filters(0).Play();
var gt = window.setTimeout('HideNotify()', 5000);
}
else
{
// Skip and try the next one
NotifySongsCredited();
}
}
else
{
rewardNotifications = null;
}
}
catch(e)
{
// Clear rewards
rewardNotifications = null;
}
}
function HideNotify()
{
if(GE("awSpan"))
{
var oAS1 = GE("awSpan");
oAS1.filters(1).Apply();
oAS1.innerHTML = "";
oAS1.filters(1).Play();
// If there are any pending notifications, let animation play then do the next one
window.setTimeout('NotifySongsCredited()', 1000);
}
}
//general flying script from obj a to obj b with decrements mentioned.
//keeping it seperate from buy button script
//recommended values jump = 15;shrnkHt=0;shrnkWd=0;delay = 30;
var gTmr, flCSS, flOn;
function gFly(oSrc, oDest, jump, shrnkHt, shrnkWd, delay)
{
if(oSrc == null || oDest == null) return;
//if(flOn) return;
flOn = true;
var sLeft, sTop, sWide, sHt, fLeft, fTop, fWide, fHt;
//flying object
var doc = document.body;
var ifo = oSrc.cloneNode(true);
ifo.cssClass = oSrc.CssClass;
ifo.style.display = "none";
doc.insertBefore(ifo);
ifo.id = "fObjX";
//start params
sTop = calcDist(oSrc, "top");
sLeft = calcDist(oSrc, "left");
sWide = oSrc.offsetWidth;
sHt = oSrc.offsetHeight;
//finish params
fTop = calcDist(oDest, "top") + (oDest.offsetHeight/2);
fLeft = calcDist(oDest, "left") + (oDest.offsetWidth/2);
fWide = oDest.offsetWidth;
fHt = oDest.offsetHeight;
try
{
flCSS = fObjX.style;
flCSS.position = "absolute";
flCSS.overflow = "hidden";
flCSS.border = "1px SOLID #777";
flCSS.left = sLeft;
flCSS.top = sTop;
flCSS.width = sWide;
flCSS.height = sHt;
var LDecr = (fLeft - sLeft)/jump;
var TDecr = (fTop - sTop)/jump;
var WDecr = shrnkWd;
var HDecr = shrnkHt;
recrMove(WDecr, HDecr, LDecr, TDecr, 0, jump, delay)
}
catch(e){}
}
function recrMove(WDecr, HDecr, LDecr, TDecr, i, j, d)
{
flCSS.posTop += TDecr;
flCSS.posWidth -= WDecr;
flCSS.posHeight -= HDecr;
flCSS.posLeft += LDecr;
flCSS.display = "block";
if(flCSS.posHeight == 0) flCSS.posHeight = -1;
if(++i < j)
{
gTmr = window.setTimeout("recrMove(" + WDecr + ", " + HDecr + ", " + LDecr + ", " + TDecr + ", " + i + ", " + j + ")", d);
}
else
{
fClnUp();
}
}
function fClnUp()
{
window.clearTimeout(gTmr);
fObjX.removeNode(true);
flOn = false;
}
/*passalong & context menu*/
function ruTo(d)
{
switch(d)
{
case 1:
redirectPage("/customerservice/download");
break;
case 2 :
redirectPage("/customerservice/createplaylists");
break;
default:
return false;
}
}
function cmenu()
{
var o = event.srcElement;
var par = o.parentElement;
var sTop = calcDist(o, "top");
var sLeft = calcDist(o, "left");
var it = "";
var cm = GE('contextMenus');
if (typeof(cm) != "undefined")
{
cm.item = par.item;
cm.ctyp = par.ctyp;
cm.className = "pmenu";
cms = cm.style;
cms.top = sTop + 15;
//TODO:switch case erroring. will debug later.
if(cm.ctyp == 1)
{
it = soMn;
cms.left = sLeft - 65;
cms.width = 85;
}
else if(cm.ctyp == 2)
{
it = alMn;
cms.left = sLeft - 105;
cms.width = 125;
}
else if(cm.ctyp == 13)
{
it = plMn;
cms.left = sLeft - 125;
cms.width = 145;
}
if(typeof(it)!= "undefined" && it != "")
{
cms.visibility = "visible";
cm.innerHTML = it;//cm.objid + " - " + cm.objtype;
}
}
}
function hmenu()
{
var bl = GE('contextMenus');
if(typeof(bl) != "undefined")
{
bl.innerHTML = "";
bl.style.visibility = "hidden";
}
}
function sbud()
{
var o = event.srcElement;
var par = o.parentElement;
var sTop = calcDist(o, "top");
var sLeft = calcDist(o, "left");
var sWide = o.offsetWidth ? o.offsetWidth : 200;
var bl = GE('buddyList');
if(typeof(bl) != "undefined")
{
bl.item = par.item;
bl.ctyp = par.ctyp;
bl.className = "bmenu";
var bls = bl.style;
bls.left = sLeft + 1 + sWide;
bls.top = sTop;
bls.visibility = "visible";
}
}
function hbud()
{
var bl = GE('buddyList');
if(typeof(bl) != "undefined")
bl.style.visibility = "hidden";
}
function dbud()
{
var bl = GE('buddyList');
if(typeof(bl) != "undefined")
bl.style.visibility = "visible";
}
function addBud()
{
redirectPage("/user/contacts.aspx");
}
function sPA(eid, cid, ctyp)
{
var newEnv;
var retval = false;
if(emailRegex.test(eid))
{
newEnv = passalongEnv;
newEnv = newEnv.replace("#EMAIL#", eid);
newEnv = newEnv.replace("#CONTENTID#", cid);
newEnv = newEnv.replace("#CONTENTTYPE#", ctyp);
try
{
dom = postCustomSoapRequest("SendItemToUser", "http://entertainment.msn.com/services/", newEnv, PUBLICSERVICE_RELURL, false);
if (!dom)
retval = false;
else
{
resNode = dom.selectSingleNode('//SendItemToUserResult');
if (!resNode)
retval = false;
else if ("true" == resNode.text)
retval = true;
}
}
catch(e){}
}
return retval;
}
function rPA(pid)
{
var newEnv;
var retval = false;
if(typeof(pid)!= "undefined")
{
newEnv = removePassalongEnv;
newEnv = newEnv.replace("#PASSALONGID#", pid);
try
{
dom = postCustomSoapRequest("RemovePassalong", "http://entertainment.msn.com/services/", newEnv, USERINFOSERVICE_RELURL, false);
if (!dom)
retval = false;
else
{
resNode = dom.selectSingleNode('//RemovePassalongResponse');
if (!resNode)
retval = false;
else if ("true" == resNode.text)
retval = true;
}
}
catch(e){}
}
if (retval)
{
// Take user to Inbox page and trigger refresh
location.href = "/user/?stab=5";
}
else
{
// BUGBUG : display error msg?
}
return retval;
}
function flagPL()
{
var newEnv;
var retval = false;
try
{
var o = event.srcElement;
var par = o.parentElement;
newEnv = flagPlistEnv;
newEnv = newEnv.replace("#LISTID#", par.item);
dom = postCustomSoapRequest("FlagPlaylist", "http://entertainment.msn.com/services/", newEnv, PUBLICSERVICE_RELURL, false);
if (!dom)
retval = false;
else
{
resNode = dom.selectSingleNode('//FlagPlaylistResult');
if (!resNode)
retval = false;
else if ("true" == resNode.text)
retval = true;
}
}
catch(e){}
if(retval == true)
alert("Playlist marked as Obscene");
else
alert("Playlist could not be marked as Obscene");
}
function sendP(bm)
{
try
{
var o = event.srcElement;
var par = o.parentElement;
var eid;
if(bm && o.innerText)
{
o.backText = o.innerText;
eid = bm;
}
o.innerText = "Working...";
eval('var status = sPA(eid, par.item, par.ctyp);');
hbud();
hmenu();
if(status)
{
o.innerText = o.backText;
sPStat("Sent", "Sent to " + bm, o, false);
}
else
{
o.innerText = o.backText;
sPStat("Failed", "Failed to send to " + bm, o, true);
}
}
catch(e){}
}
//status of the passalong
function sPStat(txt1, txt2, obj, showAlways)
{
if(showAlways == false)
checkPrivacyCookie();
if(typeof(hidePrivacy) == "undefined" || hidePrivacy == false || showAlways == true)
{
if(GE('paPrivacy'))
{
var sTop = calcDist(obj, "top");
var sLeft = calcDist(obj, "left");
var o = GE('paPrivacy');
o.style.visibility = 'visible';
o.style.left = sLeft -100;
o.style.top = sTop;
var p1 = o.children[0];
var p2 = o.children[1];
var p3 = o.children[2];
var p4 = o.children[3];
if(typeof(p1)!= "undefined" && typeof(p2)!= "undefined")
{
p1.innerText = "";
p1.innerText = txt1;
p2.innerText = "";
p2.innerText = txt2;
}
if(typeof(p3)!= "undefined" && typeof(p4)!= "undefined")
{
if(txt1 == "Failed")
{
p3.style.display = 'none';
p4.style.display = 'none';
}
else
{
p3.style.display = 'block';
p4.style.display = 'block';
}
}
}
}
}
function hPrivacy()
{
var chk = GE('chPriv');
if(typeof(chk)!= "undefined")
{
if(chk.checked)
{
hidePrivacy = true; //backup if cookie fails
setPrivacyCookie(); //backup if setting fails
setPrivacySetting();
}
}
var o = GE('paPrivacy');
if(typeof(o)!= "undefined")
o.style.visibility = 'hidden';
}
function checkPrivacyCookie()
{
if(typeof(hidePrivacy) == "undefined" || hidePrivacy == true)
return false;
var pCkie = GetCkVal("paPrv");
if(pCkie != null && pCkie.length > 0 && pCkie != "undefined") hidePrivacy = (pCkie);
}
function setPrivacyCookie()
{
document.cookie = "paPrv=true;Path=/; domain=" + __getDocDomain();
}
function setPrivacySetting()
{
XmlHttpGet('http://' + document.location.hostname + '/user/paprivacy.aspx?hp=' + hidePrivacy);
}
function slvd(clj,btnClk,dfText1,dfText2)
{
var s=document.forms["search"];
if (s!=null && s.ss!=null)
{
if (s.ss.value!='' && s.ss.value!=dfText1 && s.ss.value!=dfText2)
{
if(btnClk && (event == null || event.button == 1))
{
if (clj)
{
f(s, 'cm=SEARCH&ce=SUBMIT');
}
else
{
s.submit();
}
}
else
{
s.submit();
}
}
else if (s.ss.value!='' && s.ss.value==dfText1 && dfText2!=null && dfText2!='')
{
s.ss.value=dfText2;
}
else if (s.ss.value=='' && dfText2!=null && dfText2!='')
{
s.ss.value=dfText2;
}
else if (s.ss.value=='' && dfText1!=null && dfText1!='')
{
s.ss.value=dfText1;
}
}
return false;
}
function blog()
{
var u=window.location.href
// Silly hoops to get what we want regardless of browser being used.
var desc = null;
try
{
desc = window.getSelection();
}
catch(e)
{
try
{
desc = document.getSelection();
}
catch(e)
{
try
{
var sel=document.selection.createRange();
sel.expand("word");
desc = sel.text;
}
catch(e)
{
}
}
}
var title = document.title;
if(typeof(desc) == "undefined" || desc == "")
desc = "Check it out on MSN Entertainment";
window.open("http://spaces.msn.com/BlogIt.aspx?Title="+escape(title)+"&SourceURL="+escape(u)+"&description="+escape(desc));
}
// Extend the string object
String.prototype.lTrim = function () {return this.replace(/^\s*/, "");}
String.prototype.rTrim = function () {return this.replace(/\s*$/, "");}
String.prototype.trim = function () {return this.rTrim().lTrim();}
String.prototype.endsWith = function(sEnd) {return (this.substr(this.length-sEnd.length)==sEnd);}
String.prototype.startsWith = function(sStart) {return (this.substr(0,sStart.length)==sStart);}
String.prototype.format = function()
{
var s = this;
for (var i=0; i < arguments.length; i++)
{
s = s.replace("{" + (i) + "}", arguments[i]);
}
return(s);
}
function chkPSTyp(o)
{
var val = o.options[o.selectedIndex].value;
var t = GE("psTxSp");
var c = GE("psCtSp");
if(typeof(c)!= "undefined" && typeof(t)!= "undefined")
{
if(val == "categoryplaylist")
{
c.style.display = "block";
t.style.display = "none";
}
else
{
c.style.display = "none";
t.style.display = "block";
}
}
}
function subPS()
{
var o = GE("catid");
var val = o.options[o.selectedIndex].value;
var txt = o.options[o.selectedIndex].text;
if(val != -1)
{
var form = document.forms["plsearch"];
if(typeof(form) != "undefined")
{
var tb = form.ss;
if(typeof(tb) != "undefined")
tb.value = txt;
form.submit();
}
}
}
function setTabCookie()
{
try
{
if(typeof(current_title) != "undefined" && null != current_title && null != current_title.contentType)
{
expSet = GMTStringPlus(10);
var ckStr = window.location.pathname + "|" + current_title.contentType + "|" + current_sort_params + "|" + current_page_params;
document.cookie = "tabcookie=" + ckStr + ";Path=/; expires=" + expSet + ";domain=" + __getDocDomain();
}
}
catch(e){}
}
function chkUsr()
{
if(!IsLoggedIn())
{
TrigLogIn('');
}
}
function omBuyTrack(id,type, state)
{
try
{
var obj = document.getElementById(id);
var _type = "";
var w=window;
if(type == "al")
_type = "album";
else if(type == "so")
_type = "song";
else if(type == "pl")
_type = "playlist";
var s = s_gi(w.s_account);
s.linkTrackVars = "eVar17,eVar18,eVar26,events";
s.linkTrackEvents = "scCheckout,event7,scOpen,event8,purchase,event9";
s.eVar17 = _type;
if(state == "buystart")
{
__CheckNoHassleCookie();
if(typeof(noHassle) != "undefined" && noHassle > 0)
{
s.eVar26 = "yes";
}
else
{
s.eVar26 = "no";
}
s.events = 'scOpen,event8';
}
else if(state == "buyconfirm")
{
s.events = 'scCheckout';
}
else if(state == "buycomplete")
{
s.eVar18 = "1";
s.events = 'purchase,event9';
}
else if(state == "buyfailed")
{
s.events = 'event7';
}
s.tl(true, 'o', id);
//s.t();
}
catch(e)
{
}
}
function Base64Encode(input)
{
// This code was adapted from Tyler Akins public domain base64 code.
// Base64 code from Tyler Akins -- http://rumkin.com
var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
var output = "";
var chr1, chr2, chr3;
var enc1, enc2, enc3, enc4;
var i = 0;
do
{
chr1 = input.charCodeAt(i++);
chr2 = input.charCodeAt(i++);
chr3 = input.charCodeAt(i++);
enc1 = chr1 >> 2;
enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
enc4 = chr3 & 63;
if (isNaN(chr2))
{
enc3 = enc4 = 64;
}
else if (isNaN(chr3))
{
enc4 = 64;
}
output = output + keyStr.charAt(enc1) + keyStr.charAt(enc2) + keyStr.charAt(enc3) + keyStr.charAt(enc4);
}
while (i < input.length);
return output;
}
function Base64Decode(input)
{
// This code was adapted from Tyler Akins public domain base64 code.
// Base64 code from Tyler Akins -- http://rumkin.com
var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
var output = "";
var chr1, chr2, chr3;
var enc1, enc2, enc3, enc4;
var i = 0;
// remove all characters that are not A-Z, a-z, 0-9, +, /, or =
input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
do
{
enc1 = keyStr.indexOf(input.charAt(i++));
enc2 = keyStr.indexOf(input.charAt(i++));
enc3 = keyStr.indexOf(input.charAt(i++));
enc4 = keyStr.indexOf(input.charAt(i++));
chr1 = (enc1 << 2) | (enc2 >> 4);
chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
chr3 = ((enc3 & 3) << 6) | enc4;
output = output + String.fromCharCode(chr1);
if (enc3 != 64)
{
output = output + String.fromCharCode(chr2);
}
if (enc4 != 64)
{
output = output + String.fromCharCode(chr3);
}
}
while (i < input.length);
return output;
}
var pn ;
function mhover(obj)
{
try{
pn = obj.className;
obj.className = pn + "_h";
}
catch(e){}
}
function mout(obj)
{
try{
obj.className = pn;
}
catch(e){}
}
function performSearch(searchType, searchTermControlId, formCode)
{
try
{
var control = document.getElementById(searchTermControlId);
if (control != null)
{
var searchTerm = control.value;
if (searchTerm.trim().length > 0)
{
if ((searchType == 'msn') )
{
// We don't need to remove special characters for MSN search.
searchTerm = escape(searchTerm);
location.href = 'http://search.msn.com/results.aspx?q=' + searchTerm + '&FORM=' + formCode;
}
else
{
// For Entertainment search, we need special characters removed. If we don't do this, a script injection
// exception is raised.
var removeChars = ['<', '>'];
var removeRegEx = new RegExp('(\\' + removeChars.join('|\\') + ')', 'g');
searchTerm = searchTerm.replace(removeRegEx, "");
control.value = searchTerm;
searchTerm = escape(searchTerm);
if (searchTerm.trim().length > 0)
{
if (searchType == 'entertainment')
{
//movie is default for ent type
location.href = '/search/movie/default.aspx?ss=' + searchTerm;
}
if (searchType == 'tv')
{
location.href = '/tv/search/search.aspx?st=' + searchTerm;
}
if (searchType == 'movies')
{
location.href = '/search/movie/default.aspx?ss=' + searchTerm;
}
if (searchType == 'music')
{
location.href = '/search/all/default.aspx?ss=' + searchTerm;
}
}
}
}
}
}
catch (e)
{
}
}
//TODO: Remove this when Fonzie pages are migrated to GrandPrix.
function performSearchOld(searchType, searchTermControlId)
{
try
{
var c = document.getElementById(searchTermControlId);
if (c == null)
return;
var searchTerm = c.value;
if (searchTerm.trim().length <= 0)
{
return;
}
if (searchType == 'msn')
{
//don't need to remove special chars for msn search
searchTerm = escape(searchTerm);
location.href = 'http://search.msn.com/results.aspx?q=' + searchTerm;
}
else
{
//for entertainment search, we need special characters removed
//(otherwise asp.net script injection prevention exception is raised)
var removeChars = ['<', '>'];
var removeRegEx = new RegExp('(\\' + removeChars.join('|\\') + ')', 'g');
searchTerm = searchTerm.replace(removeRegEx, "");
c.value = searchTerm;
if (searchTerm.trim().length <= 0)
{
return;
}
if (searchType == 'default entertainment')
{
location.href = '/search/movie/?ss=' + searchTerm;
}
else if (searchType == 'tv show')
{
location.href = '/tv/search/?scope=title&query=' + searchTerm;
}
}
}
catch (e)
{
}
}
function dvdlist_toggle(whole, link)
{
var parent = document.getElementById(whole);
if (parent != null)
{
if (parent.style.display == 'none')
{
parent.style.display = 'inline';
}
else
{
parent.style.display = 'none';
}
}
var link_o = document.getElementById(link);
if (link_o.src.indexOf("/i/grandprix/up.gif") >= 0)
{
link_o.src = "/i/grandprix/down.gif";
}
else
{
link_o.src = "/i/grandprix/up.gif";
}
}
function showtimes_askzip(a,b,c,d)
{
var parent = document.getElementById(a);
if ( parent != null)
{
parent.style.display = 'none';
}
parent = document.getElementById(c);
if ( parent != null)
{
parent.style.display = 'none';
}
parent = document.getElementById(b);
if ( parent != null)
{
parent.style.display = 'inline';
}
parent = document.getElementById(d);
if ( parent != null)
{
parent.style.display = 'none';
}
}
function setCookie(sName, sValue)
{
date = new Date();
date.setMonth(date.getMonth() + 1);
document.cookie = sName + "=" + escape(sValue) + "; expires=" + date.toGMTString();
}
function toggle(inlineLinkId, extendedTextId)
{
var target = document.getElementById(extendedTextId);
var parent = document.getElementById(inlineLinkId);
if ((target == null) || (parent == null)) return;
if (target.style.display == 'none')
{
target.style.display = 'inline';
parent.style.display = 'none';
}
else
{
target.style.display = 'none';
parent.style.display = 'inline';
}
}
function onImgErr(img)
{
img.src = "/i/celeb_75_75.jpg";
}
function onImgErr2(imageID)
{
var image = eval(imageID);
image.src = "/i/celeb_350_400.jpg";
image.style.height='400px';
image.style.width='350px';
}
function getQueryPart(url)
{
var queryPart = "";
var queryIndex = url.indexOf("?");
if (queryIndex >= 0)
{
queryPart = url.substr(queryIndex + 1);
}
else
{
var hashIndex = url.indexOf("#");
if (hashIndex >= 0)
{
queryPart = url.substr(hashIndex + 1);
}
}
return queryPart;
}
function parseQueryString (url)
{
if (url == null)
return "";
if (typeof(url) != 'string')
url = url.toString();
var query = getQueryPart(url);
if ((query) == null)
return;
return parseString(query, "&", "=");
}
function parseString(s, pairSeparator, keyValueSeparator)
{
pairSeparator = (pairSeparator == null) ? "&" : pairSeparator;
keyValueSeparator = (keyValueSeparator == null) ? "=" : keyValueSeparator;
var keyValues = s.split(pairSeparator);
var retValue = new Object();
for (var i = 0; i < keyValues.length; i++)
{
var keyValue = keyValues[i];
var keyValuePairs = keyValue.split(keyValueSeparator);
var key = keyValuePairs[0];
var value = keyValuePairs[1];
retValue[key] = value;
}
return retValue;
}
//Rotating feature code.
var agt = navigator.userAgent.toLowerCase();
var is_ie = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
var filterString = "DXImageTransform.Microsoft.Fade";
var enableFilter = is_ie;
function hover(e)
{
if ((e.className != null))
{
e.classNameSaved = e.className;
e.className = "snew";
}
}
function hoverout(e)
{
if (e.classNameSaved != null)
{
e.className = e.classNameSaved;
}
}
function isFilterDone(e)
{
if (e == null)
{
return true;
}
if (enableFilter)
{
var filter = getFilter(e);
if (filter.status == 2)
{
return false;
}
}
return true;
}
function getFilter(e)
{
if (!hasFilter(e))
{
e.style.filter = "progid:" + filterString + "(duration=.5,overlap=1.0)";
}
return e.filters.item(filterString);
}
function hasFilter(e)
{
if ((e.filters == null) || (e.filters.length <= 0))
{
return false;
}
return (e.filters.item(filterString) != null);
}
function fadeOut(e)
{
if (e == null)
{
return;
}
if (enableFilter)
{
// Make sure the filter is not playing.
var filter = getFilter(e);
if (filter.status != 2)
{
filter.Apply();
e.style.visibility = 'hidden';
filter.Play();
}
}
else
{
e.style.visibility = 'hidden';
}
}
function fadeIn(e)
{
if (e == null)
{
return;
}
if (enableFilter)
{
// Make sure the filter is not playing.
var filter = getFilter(e);
if (filter.status != 2)
{
filter.Apply();
e.style.visibility = 'visible';
filter.Play();
}
}
else
{
e.style.visibility = 'visible';
}
}
function getContentFrame(idPrefix, index)
{
var id = idPrefix + index;
return document.getElementById(id);
}
function rotateFeature(idPrefix, index, bAutoRotate)
{
var rotationInterval = eval(idPrefix + "_Interval");
var rfItemCount = eval(idPrefix + "_ItemCount");
var timerId = eval(idPrefix + "_TimerId");
//----------------------------------------------------------
//initialize global variables
//----------------------------------------------------------
//total number of best bet items
var itemCount = isNaN(rfItemCount) ? 0 : rfItemCount;
if (itemCount <= 0)
{
return;
}
//auto-rotation interval in seconds
var intervalSeconds = isNaN(rotationInterval) ? 5 : rotationInterval / 1000.0;
//----------------------------------------------------------
//normalize the input variables
//----------------------------------------------------------
if (index == null) index = 0;
if (bAutoRotate == null) bAutoRotate = false;
if (!bAutoRotate) enableFilter = false;
//----------------------------------------------------------
//cancel pending rotation if we were called with bAutoRotate = false
//----------------------------------------------------------
if (!bAutoRotate)
{
//when user clicks a button, this is set to false indicating
//we need the timer to stop. Because of this we need to cancel
//any existing timer that has already been set to go off.
if (typeof(timerId) != "undefined")
{
clearTimeout(timerId);
}
}
//----------------------------------------------------------
//show the chosen content panel
//----------------------------------------------------------
var fadeOutCtrl = null;
var fadeInCtrl = getContentFrame(idPrefix, index);
for (var i = 0; i < itemCount; i++)
{
var contentFrame = getContentFrame(idPrefix, i);
if (contentFrame.style.visibility != 'hidden')
{
//found the previous chosen one
fadeOutCtrl = contentFrame;
break;
}
}
//if we're in the middle of an animation... don't try to mess it up!!
if (!isFilterDone(fadeOutCtrl) || !isFilterDone(fadeInCtrl))
return false;
if (fadeInCtrl == fadeOutCtrl)
{
//do nothing... its already shown
}
else
{
fadeOut(fadeOutCtrl);
fadeIn(fadeInCtrl);
}
//----------------------------------------------------------
//highlight the chosen button
//----------------------------------------------------------
if (bAutoRotate && (intervalSeconds > 0))
{
var nextIndex = (index + 1) % itemCount;
eval(idPrefix + "_TimerId = setTimeout(\"rotateFeature('" + idPrefix + "', "+ nextIndex + ", true)\", "+ intervalSeconds * 1000 + ");");
}
var targetButtonId = idPrefix + 'Button' + index;
for (var i = 0; i < itemCount; i++)
{
var sId = idPrefix + 'Button' + i;
var cButton = document.getElementById(sId);
if (cButton != null)
{
if (cButton.id == targetButtonId)
{
cButton.className = 'bbButtonHL';
}
else
{
cButton.className = 'bbButton';
}
}
}
}
function getStyleRule(name)
{
if (!document.styleSheets)
return null;
var sheets = document.styleSheets;
for ( ss=0; ss< sheets.length; ss++ )
{
try
{
var theRules = new Array();
if (sheets[ss].rules)
{
theRules = sheets[ss].rules
}
else if (sheets[ss].cssRules)
{
theRules = sheets[ss].cssRules
}
else
{
return null;
}
for (i=0; i< theRules.length; i++ )
{
if ( theRules[i].selectorText == name )
{
return theRules[i];
}
}
}
catch(e)
{
}
}
return null;
}
function setPageProperty(name, value)
{
switch (name)
{
case 'bg_color':
document.body.style.backgroundColor = value;
break;
case 'bg_image':
document.body.style.backgroundImage = "url("+value+")";
break;
case 'bg_image_repeat':
document.body.style.backgroundRepeat = value;
break;
case 'bg_style':
document.body.style.background = value;
break;
case 'header_height':
var e = document.getElementById("topSpacingDiv");
if (e)
e.style.marginTop = value+"px";
break;
case 'body_color':
var e = document.getElementById("pageBody");
if (e)
e.style.backgroundColor = value;
break;
case 'body_image':
var e = document.getElementById("pageBody");
if (e)
e.style.backgroundImage = "url("+value+")";
break;
case 'body_image_repeat':
var e = document.getElementById("pageBody");
if (e)
e.style.backgroundRepeat = value;
break;
case 'body_style':
var e = document.getElementById("pageBody");
if (e)
e.style.background = value;
break;
case 'logo_image':
var e = document.getElementById("microsoftLogo");
if (e)
e.src = value;
break;
case 'header_menu_style':
var e = document.getElementById("pageHeaderMenu");
if (e)
e.style.background = value;
break;
case 'header_search_style':
var e = document.getElementById("pageHeaderSearch");
if (e)
e.style.background = value;
break;
case 'vertical_logo_style':
var e = document.getElementById("verticalLogo");
if (e)
e.style.background = value;
break;
case 'msn_logo_image':
var e = document.getElementById("msnLogo");
if (e)
e.src = value;
break;
case 'search_box_border':
if ( !searchBoxControlId )
break;
var e = document.getElementById(searchBoxControlId);
if (e)
e.style.border = value;
break;
case 'skin_ad_style':
var e = document.getElementById("skinAd");
if (e)
e.style.background = value;
break;
case 'body_border':
var e = document.getElementById("pageBody");
if (e)
e.style.border = value;
break;
case 'nav_selection_style':
var s = getStyleRule(".pageHeader_horizNavBarButtonSelected");
if (s)
s.style.background = value;
case 'header_border':
var e = document.getElementById("pageHeaderSearch");
if (e)
e.style.border = value;
var e = document.getElementById("pageHeaderMenu");
if (e)
e.style.border = value;
break;
}
}
function MovieHomeShowtimeClick(form, id, buttonid)
{
var oform = document.getElementById(form);
if (id == 'fGo')
{
var a = document.getElementById(buttonid);
a.value = 2;
}
oform.submit();
}
function MovieHomeShowtimeClickNoForm()
{
var dropDown = document.getElementById('famsel');
var id = dropDown.value;
window.location = "/movies/movie.aspx?m=" + id +"&mp=s";
}
if (typeof msn == "undefined") var msn = new Object();
msn.flashControl = function(swf, id, w, h, ver)
{
this.params = new Object();
this.variables = new Object();
this.attributes = new Array();
if(swf) { this.setAttribute('swf', swf); }
if(id) { this.setAttribute('id', id); }
if(w) { this.setAttribute('width', w); }
if(h) { this.setAttribute('height', h); }
}
msn.flashControl.prototype =
{
setAttribute: function(name, value)
{
this.attributes[name] = value;
},
getAttribute: function(name)
{
return this.attributes[name];
},
addParam: function(name, value)
{
this.params[name] = value;
},
getParams: function()
{
return this.params;
},
addVariable: function(name, value)
{
this.variables[name] = value;
},
getVariable: function(name)
{
return this.variables[name];
},
getVariables: function()
{
return this.variables;
},
getVariablePairs: function()
{
var variablePairs = new Array();
var key;
var variables = this.getVariables();
for(key in variables)
{
variablePairs[variablePairs.length] = key +"="+ variables[key];
}
return variablePairs;
},
getHTML: function()
{
var swfNode = "";
if (navigator.plugins && navigator.mimeTypes && navigator.mimeTypes.length)
{
swfNode = '