/* -- BEGIN SPHERE JS -- */      
Sphere = {}
Sphere.Tracker = new function() {
    this.track = function ( ele, site, area ) {
        if( !ele.href ) return;
        
        var imgurl = 'http://stats.sphere.com/widgets/sphereit/?action=click&siteid='+site+'&q='+area+'&url='+ele.href;
        var trackimg = new Image();
        trackimg.src = imgurl;
        wait(150);     

    }
}



Sphere.Widget = new function() {


    var SKELETON_MARKUP = '<iframe id="sphereiframeblock"></iframe><div class="widgetWrapper"><div class="roundTop"></div><div id="widget"><div class="headerBar"><div id="spherelink" class="spherelink">powered by <a href="http://www.sphere.com" id="SphereLogo"></a></div><h1></h1><div onclick="Sphere.Widget.close()" class="closeBtn" title="Close"></div></div><div id="sphere_widget_loading" class="loadingArea"><div><img src="http://www.sphere.com/widgets/sphereit/images/LoadingGraphic.gif" alt="loading" />We\'re getting you the good stuff...</div></div><div id="sphere_widget_content" class="contentArea"></div><div class="footerBar"><a target="_blank" href="http://www.sphere.com/tools?requestform=1" class="getThis">Are you a publisher or blogger? Get this Widget</a></div></div><div id="roundBot"></div></div>';

        var CONTENT_URL = 'http://www.sphere.com/widgets/sphereit/content?siteid=wsj';
        if(document.characterSet) CONTENT_URL += ('&cset='+escape(document.characterSet));
        CONTENT_URL += '&url=';
        var widget; var widgetContent; var widgetLoading;
        var content;
        
        

                
               if(document.getElementsByTagName('base').length>0)  { 
                if (window.addEventListener){
                  window.addEventListener('load', appendStylesheet, false); 
                } else if (window.attachEvent){
                  window.attachEvent('onload', appendStylesheet);
                }  
               } else {
                appendStylesheet();
            }
                
            
        if (Math.random() <= 0.1) {
            var imgurl = 'http://stats.sphere.com/widgets/sphereit/?action=page&siteid=wsj';
            var trackimg = new Image();
            trackimg.src = imgurl;
        }
        
         
        var fmRand = new String(Math.random());
        var fmRand = fmRand.substring(2,11);
        var imgurl2 = "http://dynamic.fmpub.net/adserver/adview.php?what=zone:411&n="+fmRand+"&source=WSJINLINE";
        var trackimg2 = new Image();
        trackimg2.src = imgurl2;        
                
        
                
    this.search = function( source ) {
        if( !content || (source && content.source!=source ) ) {
             requestContent( source );
             if( widget ){ widget.parentNode.removeChild(widget); content=null; widget=null; }
        }
        if( !widget ) draw();
        show();
        
        var reqimgurl = 'http://stats.sphere.com/widgets/sphereit/?action=display&siteid=wsj';
        var reqimg = new Image();
        reqimg.src = reqimgurl;
        
        if (reqimg.style) {
            // In Safari 2.0.x, reqimg has no style until it's appended, so skip this (fixed in Safari 3)
            reqimg.style.display = 'none'; 
            document.body.appendChild(reqimg);
        }
    
        return false;
    }
    
    this.close = function() {
        if( widget ) widget.style.display ='none';
    }

    this.processContent = function (incomingContent) {
        content = incomingContent;
        for(i=0;i<1000;i++){ test='444'};
        if( !widgetContent ) return;
        widgetContent.innerHTML = content.content;
        widgetContent.style.height = widgetLoading.clientHeight +'px';
        widgetLoading.style.display = 'none';
        widgetContent.style.display = 'block';
                    zoomToFull();
                
    }

            function requestContent( local ) {
            //alert("requestContent");
            Sphere.Widget.script = document.createElement('script');
            Sphere.Widget.script.src = CONTENT_URL + escape(local || location.href);
            setTimeout(function(){  document.body.appendChild(Sphere.Widget.script);}, 1);
        }
        
    function zoomToFull() {
        //alert("zoomToFull");
        Animator.add( {
            process: function() {
                if( widgetContent.clientHeight >= widgetContent.scrollHeight-20) {
                    widgetContent.style.height = widgetContent.scrollHeight+'px';
                    if( iecheck() ) { 
                      ieahack(widget.getElementsByTagName("a"));
                      document.getElementById("sphereiframeblock").style.height = (Number(widget.scrollHeight)-24)+'px';
                      document.getElementById("sphereiframeblock").style.display = 'block';
                      alphaBackgrounds();   
                    } 
                    center();
                    return false;
                }
                widgetContent.style.height = (widgetContent.clientHeight + 20) +'px';
                center();
                return true;
            }
        });
    }
    
    function ieahack( col ) {
        for( var i=0; i<col.length; i++) {
            col[i].style.position = "relative";
        }
    }
    function center() {
        if( !widget || (iecheck((document.compatMode=='BackCompat')?true:false)) ) return;
        windowHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
        windowWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;       
        widget.style.left = (windowWidth/2 - widget.scrollWidth/2) +'px';
        widget.style.top = (windowHeight/2 - widget.scrollHeight/2) +'px';
         
    }

    function show() {
        if( widget ) widget.style.display ='block';
        if( widget ) widget.style.visibility ='visible';
    }
        
    function draw() {
        
        if( SKELETON_MARKUP ) {
            widget = document.createElement( "div" );
            widget.id = "sphere_widget";
                widget.style.position = (iecheck((document.compatMode=='BackCompat')?true:false))?'absolute':'fixed';     
            widget.innerHTML = SKELETON_MARKUP;
            document.body.appendChild( widget );
            alphaBackgrounds();
            center();
            window.onresize = center;
        }
        //alert("end draw");
        widgetContent = document.getElementById('sphere_widget_content');
        widgetLoading = document.getElementById('sphere_widget_loading');

        if( content ) Sphere.Widget.processContent( content );
    }
        
    function appendStylesheet() {
        var stylesheet = document.createElement("link");
        stylesheet.rel = "stylesheet";
        stylesheet.type = "text/css";
           stylesheet.href = "http://online.wsj.com/sphere/widgets/sphereit/css?siteid=wsj";        
        stylesheet.media = "all";
        document.lastChild.firstChild.appendChild(stylesheet);
    }
    

} 

Animator = new function() {
    var interval;
    var effects = [];
    
    this.add = function( effect ) {
        effects.push( effect );
        if( !interval ) start();
    }
    
    function remove() {
        effect = effects.pop();
        if( effect.after_process ) effect.after_process();
        if( effects.length==0 ) stop();
    }
            
    function start() {
        interval = setInterval(heartbeat, 1);
        //alert("Start Animator "+typeof(interval));
    }
    function stop() {
        //alert("stop animator");
        clearInterval( interval );
        interval = null;
    }
    
    function heartbeat() {
        if( effects.length==0 ) { stop(); return; }
        if( effects[0].process) {
            if( effects[0].process() ) effects[0].counter++;
            else remove();
        }
    }
}
function trace( val ) {
    var output = document.getElementById("output");
    if(output) output.innerHTML += (val + "<br/>");
}

function iecheck(inc_seven) {
    if (navigator.platform == "Win32" && navigator.appName == "Microsoft Internet Explorer" && window.attachEvent) {
        var rslt = navigator.appVersion.match(/MSIE (\d+\.\d+)/, '');
        var iever = (inc_seven)?(rslt != null && Number(rslt[1]) >= 5.5):(rslt != null && Number(rslt[1]) >= 5.5 && Number(rslt[1]) < 7 );
    }
    return iever;
}
function wait(ms){ var now=new Date();var exitTime=now.getTime()+ms;while(true){now=new Date();if(now.getTime()>exitTime){return;}}}

function alphaBackgrounds() {
   //alert('alphaBackgrounds()');
   if (navigator.platform == "Win32" && navigator.appName == "Microsoft Internet Explorer" && window.attachEvent) {
        var rslt = navigator.appVersion.match(/MSIE (\d+\.\d+)/, '');
        var itsAllGood = (rslt != null && Number(rslt[1]) >= 5.5 && Number(rslt[1]) < 7 );
        for (i=0; i<document.all.length; i++){
            var bg = document.all[i].currentStyle.backgroundImage;
            if (itsAllGood && bg!='none'){
                if (bg.match(/(_Bot|_Mid|_Top|_Btn|_alpha_)\.png/i) != null){
                    var mypng = bg.substring(5,bg.length-2);
                    document.all[i].style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+mypng+"', sizingMethod='scale')";
                    document.all[i].style.backgroundImage = "none";
                }
            }
        }
    }   
}
/* -- END SPHERE JS -- */      
