﻿// JScript File

// determine if this is safari
var wpIsSafari = (navigator.appVersion.toLowerCase().indexOf('safari') > -1);
//alert((navigator.appVersion.toLowerCase().indexOf('safari') > -1));

  // Create expanding titles for Legends with className 'EditorPartTitle'
  function CreateExpandingTitles() {
    var elements = document.getElementsByTagName("LEGEND");
    for (i=0; i<elements.length; i++) {
      if (elements[i].className && elements[i].className == "EditorPartTitle")
        elements[i].onclick = new Function("toggle(this);");
    }
  }


  // Call function CreateExpandingTitles on window onload
  if (window.addEventListener)
    window.addEventListener('load', CreateExpandingTitles, false);
  else if (window.attachEvent)
    window.attachEvent('onload', CreateExpandingTitles);
    
  if (window.addEventListener)
    window.addEventListener('load', liCorrectWPPadding, false);
  else if (window.attachEvent)
    window.attachEvent('onload', liCorrectWPPadding);
    
  if (window.addEventListener)
  {
    if (!wpIsSafari) { window.addEventListener('load', liLoadWPContent, false); }
    if (wpIsSafari) { window.addEventListener('load', liLoadWPContent, false);}
  }
  else if (window.attachEvent)
  {
    window.attachEvent('onload', liLoadWPContent);    
  }
   
  
  /*
    Iterates the DOM for the correct SPAN specification, forms the call to the AJAX handler based
    on SPAN attributes 
  */
  function liLoadWPContent()
  {
    //if (wpIsSafari) { alert('Safari - event fired'); }
    var oSpan = document.getElementsByTagName('SPAN');
    var i = 0;

    for (i=0; i<oSpan.length; i++)
    {
        if (oSpan[i].getAttribute('xcmPlaceholder') && oSpan[i].getAttribute('xcmPlaceholder') == 'true')
        {
            //alert(oSpan[i].getAttribute('id'));
            liLoadSingleWPContent(oSpan[i]);
        }
    }  
  }
  
  function liLoadSingleWPContent(oSpan)
  {
    var sMode = oSpan.getAttribute('xcmMode');   
    var sLimit = ((oSpan.getAttribute('xcmItemLimit') != null)?oSpan.getAttribute('xcmItemLimit'):'-1');
    var sCol = ((oSpan.getAttribute('xcmColumn') != null)?oSpan.getAttribute('xcmColumn'):'1');
    // override the column setting if the zone is the wpzRight zone
    if (oSpan.getAttribute('xcmWPZone') != null && oSpan.getAttribute('xcmWPZone').indexOf('wpzRight') > -1)
    {
        sCol = '2';
    }
    
    var sMacSaf = ((wpIsSafari)?'macsaf=true&':'');
             
    var sConUrl = sSiteRoot + 'Pages/PageContentHandler.ashx?' + sMacSaf + 'mode=' + sMode;
    var sXslUrl = sSiteRoot + 'Pages/PageContentHandler.ashx?' + sMacSaf + 'mode=';


    switch (sMode)
    {
        case 'default':
            sConUrl += '&pid=' + oSpan.getAttribute('xcmContentId') + '&csid=' + oSpan.getAttribute('id') + '&col=' + sCol;
            sXslUrl += 'xslcontent&pid=' + oSpan.getAttribute('xcmContentId');                
            break;
        case 'feature':
        case 'contenttype':
            // Parse out the href, make any necessary adjustments for the query string if present
            var sBaseUrl = document.location.href;
            sBaseUrl = ((sBaseUrl.indexOf('?') > -1)?sBaseUrl.substring(0,sBaseUrl.indexOf('?')):sBaseUrl);
            var aryUrl = sBaseUrl.replace(/.aspx/,'').split('_'); 
            var cid = ((aryUrl.length > 0)?aryUrl[aryUrl.length-1]:'-1');
            
            // correct for ShowMeMore
            if (document.location.href.toLowerCase().indexOf('showmemore.aspx') > -1) { cid = '-2'; }
            // correct for default.aspx, or if it's not an aspx file
            if (document.location.href.toLowerCase().indexOf('default.aspx') > -1 || document.location.href.toLowerCase().indexOf('.aspx') == -1) { cid = '-3'; }
            
            // format the content and xsl URL's
            sConUrl += '&cid=' + cid + '&ltid=' + oSpan.getAttribute('xcmTypeId') + '&csid=' + oSpan.getAttribute('id') + '&limit=' + sLimit + '&col=' + sCol;
            sXslUrl += 'xsllisting&ltid=' + oSpan.getAttribute('xcmTypeId');
            break;
        case 'singlelisting':
            sConUrl += '&ltid=' + oSpan.getAttribute('xcmListingId') + '&csid=' + oSpan.getAttribute('id') + '&limit=' + sLimit + '&col=' + sCol;
            sXslUrl += 'xsllisting&ltid=' + oSpan.getAttribute('xcmTypeId');
            break;            
    }
    // testing line below
    //alert(oSpan.id + '\n' + sConUrl + '\n' + sXslUrl);
//    if (sMode=='feature')
//    {
//        window.open(sConUrl); 
//        window.open(sXslUrl);
//    }
    liLoadTransformedXml(oSpan.id, sConUrl, sXslUrl);
  }
  
  function liShowEditFrame(sSpanId, sIframeId, bShow)
  {
   
    if (bShow && (document.getElementById(sIframeId) && document.getElementById(sSpanId)))
    {
        document.getElementById(sIframeId).src = sSiteRoot + 'Pages/Editor.aspx?sid=' + sSpanId;
        document.getElementById(sIframeId).style.display = 'inline';
    }
    
    if (!bShow && document.getElementById(sIframeId))
    {
        document.getElementById(sIframeId).src = sSiteRoot + 'Pages/blank.htm';
        document.getElementById(sIframeId).style.display = 'none';        
    }
  }
    
  /*
    This function corrects the problem with ASP2.0 Web Parts adding a padding
    of 5px to the container cell for a web part.
  */
  function liCorrectWPPadding()
  {
    var oTD = document.getElementsByTagName('TD');
    var i=0;
    
    for (i=0; i<oTD.length; i++)
    {
        try
        {
            if (oTD[i].hasChildNodes() && oTD[i].childNodes[0].tagName.toLowerCase() == 'div' && oTD[i].childNodes[0].id.indexOf('_wpMgr_') > -1)
            {
                    //alert(oTD[i].style);
                    var oPar = oTD[i].parentElement;
                    while (oPar.tagName.toLowerCase() != 'table') { oPar = oPar.parentElement; }
                    oPar.style.cellPadding='0px';

                    oTD[i].style.padding = '0px';
                    oTD[i].className = 'NoPad';
                    //alert(oTD[i].style.cellPadding);
            }    
        }
        catch (e) {}
    }
    liSetWpFrame();
    liSetExpandImage();
  }


  function toggle(titleElement) {
    // Find nextSibling's firstChild (i.e. DIV with class 'EditorPartStyleHidden')
    // For IE this is nextSibling.childNodes[0], but due to an error in current
    // version of FireFox (1.0.4) this is nextSibling.childNodes[1]
    var firstChild = (titleElement.nextSibling.childNodes[0].id)
      ? titleElement.nextSibling.childNodes[0] 
      : titleElement.nextSibling.childNodes[1];


    // Toggle image and show/hide EditorPart display 
    if (firstChild.style.display == "block") {
      firstChild.style.display = "none";
      titleElement.style.backgroundImage = 'url(' + sSiteRoot + 'images/WebParts/expand.gif)';
    } else {
      firstChild.style.display = "block";
      titleElement.style.backgroundImage = 'url(' + sSiteRoot + 'images/WebParts/collapse.gif)';
    }
  }
  
  var isIe = (navigator.appName.toLowerCase().indexOf('microsoft internet explorer') > -1);
  
  function liToggleAdminPanel(othis)
  {
    document.getElementById('divControlPanel').style.display=((document.getElementById('divControlPanel').style.display=='none')?'inline':'none'); 
    document.getElementById('wpPanel').style.width=((document.getElementById('divControlPanel').style.display=='none')?((isIe)?'14px':'21px'):((isIe)?'314px':'321px')); 

    // handle the IFRAM cover for the page
    liSetWpFrame();


    othis.src = ((othis.src.indexOf('dot.gif') > -1)?othis.src.replace(/\.gif/,'_ex.gif'):othis.src.replace(/_ex/,''));
  }
  
  function liSetWpFrame()
  {
    try
    {
        var oFrm = document.getElementById('wpFrameCover');    
        oFrm.style.display = document.getElementById('wpPanel').style.display;
        oFrm.style.width = parseInt(document.getElementById('wpPanel').offsetWidth)+'px';
        oFrm.style.height = parseInt(document.getElementById('wpPanel').offsetHeight)+'px';
    }
    catch (e) {}
  }
  
  function liSetExpandImage()
  {
    var oLg = document.getElementsByTagName('LEGEND');
    var i = 0;
    

    for (i=0; i<oLg.length; i++)
    {
        if (oLg[i].className.toLowerCase() == 'editorparttitle')
        {
            oLg[i].style.backgroundImage = 'url(' + sSiteRoot + 'images/WebParts/expand.gif)';
        }
    }
  }



