﻿// Copyright (c) Microsoft Corporation.  All rights reserved. 
// Use of this code is governed by the Terms of Use located at: http://dev.live.com/contactscontrol/gadgettou.aspx
// and http://dev.live.com/spacescontrol/gadgettou.aspx

if("undefined"===typeof registerNamespace){
registerNamespace=function(K){
var rootObject=window;
var namespaceParts=K.split(".");
for(var i=0;i<namespaceParts.length;i++){
var currentPart=namespaceParts[i];
if(!rootObject[currentPart])rootObject[currentPart]=new Object();
rootObject=rootObject[currentPart];};};};
registerNamespace("Microsoft.Live.Platform");
Microsoft.Live.Platform.baseURL=
window.location.protocol+"//dev.live.com/scripts/base/v0.2/";
Microsoft.Live.Platform.scriptURL=Microsoft.Live.Platform.baseURL;
Microsoft.Live.Platform._load={
list:[],
onLoads:[],
onErrors:[],
loading:0};
Microsoft.Live.Platform.load=function(p_sourceFiles,p_onLoad,p_onError){
function appendReverse(a,b){
for(var i=b.length-1;i>=0;i--){
a.push(Microsoft.Live.Platform.expandURL("",b[i]));}}
var DL=Microsoft.Live.Platform._load;
if("string"===typeof p_sourceFiles){
DL.list.push(p_sourceFiles);}else{
appendReverse(DL.list,p_sourceFiles);}
if(p_onLoad){
DL.onLoads.push(p_onLoad);};
if(p_onError){
DL.onErrors.push(p_onError);};
if(!DL.loading){
loadNext();}
function loadNext(){
var DL=Microsoft.Live.Platform._load;
if(DL.list.length>0){
DL.loading=1;
var src=DL.list.pop();
if(src.indexOf("://")==0){
src=Microsoft.Live.Platform.expandURL("",src);}
var scripts=document.getElementsByTagName("script");
var scriptEl;
for(var i=0;i<scripts.length;i++){
scriptEl=scripts[i];
if(scriptEl.src==src){
if(scriptEl.readyState=="loaded"||scriptEl.readyState=="complete"){
DL=src=scripts=scriptEl=null;
loadNext();
return;}else{
Microsoft.Live.Platform.addEvent(scriptEl,"load",onLoad);
Microsoft.Live.Platform.addEvent(scriptEl,"error",onError);
Microsoft.Live.Platform.addEvent(scriptEl,"readystatechange",onReadyStateChange);
DL=src=scripts=scriptEl=null;
return;}}}
scripts=null;
scriptEl=document.createElement("script");
scriptEl.type="text/javascript";
Microsoft.Live.Platform.addEvent(scriptEl,"load",onLoad);
Microsoft.Live.Platform.addEvent(scriptEl,"error",onError);
Microsoft.Live.Platform.addEvent(scriptEl,"readystatechange",onReadyStateChange);
scriptEl.src=src;
document.getElementsByTagName('head')[0].appendChild(scriptEl);}else{
var fn;
var count=DL.list.length;
for(;DL.onLoads.length>0;){
fn=DL.onLoads.pop();
try{
fn();
if(DL.list.length>count){
loadNext();
return;};}catch(E){};}
DL.loading=0;}}
function onReadyStateChange(p_event){
if(!p_event){p_event=system.event;}
var scriptEl=p_event.srcElement;
if(scriptEl.readyState=="loaded"||scriptEl.readyState=="complete"){
removeEvents(scriptEl);
loadNext();}}
function onLoad(){
this.readyState="complete";
removeEvents(this);
loadNext();}
function onError(){
this.readyState="complete";
removeEvents(this);
var fn;
for(;Microsoft.Live.Platform._load.onErrors.length>0;){
fn=Microsoft.Live.Platform._load.onErrors.pop();
try{
fn(this);}catch(E){};}
loadNext();}
function removeEvents(p_scriptEl){
Microsoft.Live.Platform.removeEvent(p_scriptEl,"load",onLoad);
Microsoft.Live.Platform.removeEvent(p_scriptEl,"error",onError);
Microsoft.Live.Platform.removeEvent(p_scriptEl,"readystatechange",onReadyStateChange);}};
Microsoft.Live.Platform.loadFrom=function(p_baseURL,p_sourceFiles,p_onLoad,p_onError){
var newsrcs;
if("string"===typeof p_sourceFiles){
newsrcs=Microsoft.Live.Platform.expandURL(p_baseURL,p_sourceFiles);}else{
newsrcs=Microsoft.Live.Platform.expandURLs(p_baseURL,p_sourceFiles);}
Microsoft.Live.Platform.load(newsrcs,p_onLoad,p_onError);}
Microsoft.Live.Platform.using=function(p_moduleNames,p_onLoad,p_onError){
if("string"===typeof p_moduleNames){
p_moduleNames=[p_moduleNames];}
for(var i=0;i<p_moduleNames.length;i++){
p_moduleNames[i]=Microsoft.Live.Platform.scriptURL+p_moduleNames[i]+".js";}
Microsoft.Live.Platform.load(p_moduleNames,p_onLoad,p_onError);}
Microsoft.Live.Platform.uniqueID=function(prefix){
var id=prefix+Math.floor(Math.random()*1024*1024);
if(document.getElementById(id))
return uniqueID(prefix);
return id;};
Microsoft.Live.Platform.expandURL=function(baseURL,relURL){
var baseParts;
if(!baseURL||(baseURL.length==0)){
var tmp=window.location.protocol+"//"+window.location.host+window.location.pathname;
baseParts=tmp.split("/");
baseParts.pop();}else{
baseParts=baseURL.replace(/\\/g,"/").split("/");}
if((baseParts.length>0)&&(baseParts[baseParts.length-1].length==0)){
baseParts.pop();}
if(relURL&&(relURL.length>0)){
var relParts=relURL.replace(/\\/g,"/").split("/");
var s;
if(relParts.length>0){
s=relParts[0];
var root;
if((baseParts.length>=2)&&(baseParts[0].substr(baseParts[0].length-1)==":")&&(baseParts[1].length==0)){
root=3;}else{
root=1;}
if(s.length==0){
baseParts.length=root;
relParts.shift();}else if(s.substr(s.length-1)==":"){
return relParts.join("/");}
relParts.reverse();
for(;relParts.length>0;){
s=relParts.pop();
switch(s){
case ".":break;
case "..":if(baseParts.length>root){
baseParts.pop();}
break;
default:baseParts.push(s);break;}}}}
return baseParts.join("/");}
Microsoft.Live.Platform.expandURLs=function(baseURL,relURLs){
if(!relURLs)
return null;
var result=new Array(relURLs.length);
for(var i=0;i<relURLs.length;i++){
result[i]=Microsoft.Live.Platform.expandURL(baseURL,relURLs[i]);}
return result;}
Microsoft.Live.Platform.getCookie=function(cookie_name){
var results=document.cookie.match(cookie_name+'=(.*?)(;|$)');
if(results){
return(unescape(results[1]));}else{
return null;}}
Microsoft.Live.Platform.deleteCookie=function(cookie_name,cookie_path,cookie_domain){
var c=new Date(0);
document.cookie=cookie_name+"=;expires="+c.toGMTString()+";path="+cookie_path+";domain="+cookie_domain+";";}
Microsoft.Live.Platform.addEvent=function(p_el,p_eventName,p_callback){
if(p_el.addEventListener){
p_el.addEventListener(p_eventName,p_callback,false);}else if(p_el.attachEvent){
p_el.attachEvent("on"+p_eventName,p_callback);}}
Microsoft.Live.Platform.removeEvent=function(p_el,p_eventName,p_callback){
if(p_el.removeEventListener){
p_el.removeEventListener(p_eventName,p_callback,false);}else if(p_el.detachEvent){
p_el.detachEvent("on"+p_eventName,p_callback);}}
Microsoft.Live.Platform.format=function(){
var s=arguments[0];
var i;
for(i=1;i<arguments.length;i++){
s=s.replace("%"+i.toString(),arguments[i]);}
return s;}
Microsoft.Live.ArgumentException=function(message){
this.name="ArgumentException";
this.message=message;
Microsoft.Live.ArgumentException.prototype.toString=function(){
return this.name+": "+this.message;}};
Microsoft.Live.InvalidOperationException=function(message){
this.name="InvalidOperationException";
this.message=message;
Microsoft.Live.InvalidOperationException.prototype.toString=function(){
return this.name+": "+this.message;}};
if("undefined"===typeof window.XMLHttpRequest){
window.XMLHttpRequest=function(){
var progIDs=['MSXML2.XMLHttp.5.0','MSXML2.XMLHttp.4.0','MSXML2.XMLHTTP','Microsoft.XMLHTTP'];
for(var i=0;i<progIDs.length;i++){
try{
var xmlHttp=new ActiveXObject(progIDs[i]);
return xmlHttp;}
catch(ex){}}
return null;};}
if("undefined"===typeof window.location.replace){
window.location.replace=window.location.assign;}
