var mintSelected = 0;
var mintTotal = 0;
var mblnInProc = false;
var mblnInScroll = false;
var mobjSelected = null;
var mobjImgLd = null;
var mobjImg = null;
var mobjImgLnk = null;
var mobjText = null;
var mobjTextBtns = null;
var mobjList = null;
var mobjListBtns = null;
var mobjTextLoad = null;
var mobjScroll = null;
var mblnFirst = true;


function ChildLI()      //returns array of list items in the scroller
{
    var intLen = mobjScroll.childNodes.length;
    var arrLi = new Array();

    for(var intIndex = 0;intIndex<intLen; intIndex++)
    {   
        if(mobjScroll.childNodes[intIndex].tagName == 'LI')
        {
            arrLi.push(mobjScroll.childNodes[intIndex]);
        }
    }
    return arrLi;    
}
function GetIndex()      //locates the currently selected list item in the scroller
{
    var arrList = ChildLI();
    mintTotal = arrList.length;
    for(var intIndex = 0;intIndex<mintTotal; intIndex++)
    {
        if(arrList[intIndex] == mobjSelected.parentNode)
        {
            return intIndex;
        }
    }
    return 0;
}


function AddListHeader()
{
    var objH1 = document.createElement('h1');
    objH1.innerHTML = "Latest Websites by Nexus";
    mobjList.appendChild(objH1);    
}

function SelectByObj(obj)
{



    if((obj == mobjSelected) && (!mblnFirst))
    {
        return false;
    }

    var arrList = ChildLI();        
    mobjSelected = obj;
    var intIndex = GetIndex();        
    mobjSelected = null;
    
    for(var i=0;i<intIndex;i++)
    {
        var oLi1 = arrList[0];
        var oLi2 = arrList[i];

        mobjScroll.insertBefore(oLi2, oLi1);
    }
    
    SelectImage(obj, true);
    mblnFirst = false;

    return false;
}
function SelectImage(that, blnText)
{

    if(that == mobjSelected)
    {
        return false;
    }
    if(mblnInProc)
    {

        if(mobjSelected != null) 
        {
            mobjSelected.focus();
        }
        return false;
    }   

    mobjSelected = that;        
    mintSelected = GetIndex();  
    var imgsrc = unescape(gup('filename', that.childNodes[0].src)); //.substring(1);    
    if(mobjImgLd.src != imgsrc)
    {      
        mobjImgLd.src = imgsrc;        
    }
    if(mblnWeblink)
    {
        mobjImg.title = 'Visit the ' + that.childNodes[0].title + ' Website'; 
    }
    else
    {
        mobjImg.title = that.childNodes[0].title;
    }
    if((that.href!='') && (that.href!=document.location.href) && (document.location.href.indexOf(that.href) < 0))
    {
        mobjImgLnk.href = that.href;
        $('Visit').href = that.href;
		

    }
    else
    {
        mobjImgLnk.href = '#';
        mobjImgLnk.onclick = function() { return false; }
        mobjImgLnk.style.cursor = 'default';
    }
    if(blnText)
    {
        if(mobjText.hasChildNodes())
        {
            while(mobjText.childNodes.length >= 1)
            {
                mobjText.removeChild(mobjText.firstChild);
            }
        }   
                
        var objH1 = document.createElement('h1');
        objH1.innerHTML = that.childNodes[0].title;
        mobjText.appendChild(objH1);
        
        var objDiv = document.createElement('div');
        var objTxt = $(mobjSelected.id.replace('Lnk','Txt'));
        objDiv.innerHTML = objTxt.innerHTML;
        objDiv.style.display = 'none';
        mobjText.appendChild(objDiv);
        new Effect.Appear(objDiv, {duration: .6});
    
        mobjText.show();
        mobjTextBtns.show();
        
        mobjList.hide();
        mobjList.hide();

    }
    
   
    that.focus();
    
    mblnInProc = false;

    
    return false;

}
function AppearLd()
{
    
   if(mblnInProc != true)
   {

        mblnInProc = true;
        
        new Effect.Fade(mobjImg, {duration: .5});

        new Effect.Appear(mobjImgLd, {duration: .6, afterFinish: function() {
            mobjImg.src = mobjImgLd.src;
        } });    
   }
}
function HideLd()
{
   $('WebsiteLoading').style.display = 'block';


   new Effect.Appear(mobjImg, {duration: 0.01, afterFinish: function() {
          mobjImgLd.hide();
          mblnInProc = false;
   } });
}

function BackToList()
{
    mobjTextBtns.hide();
    mobjText.hide();
    mobjList.show();        
    //mobjListBtns.show();  
}

function doScrollLeft()
{

    if(mblnInScroll)
    {
        return false;
    }    
    mblnInScroll = true;

    var arrList = ChildLI();
    var oLi1 = arrList[0];
    var oLi2 = arrList[arrList.length-1];

    new Effect.Move(mobjScroll, {duration: 0.001, fps: 45 , x: -77, y: 0, transition: Effect.Transitions.sinoidal, afterFinish: function() {
        
        mobjScroll.insertBefore(oLi2, oLi1);
        
        new Effect.Move(mobjScroll, {duration: .5, fps: 45, x: 77, y: 0, transition: Effect.Transitions.sinoidal , afterFinish: function() {

                arrList = ChildLI();
                SelectImage(arrList[mintSelected].childNodes[0], true);
                
                mblnInScroll = false;
        } });
        
    } });	
}

function doScrollRight()
{
    if(mblnInScroll)
    {
        return false;
    }

    mblnInScroll = true;

    var arrList = ChildLI();
    var oLi1 = arrList[0];
    var oLi2 = arrList[arrList.length-1];        

    new Effect.Move(mobjScroll, {duration: .5, fps: 45, x: -77, y: 0, transition: Effect.Transitions.sinoidal, afterFinish: function() {
        
        new Effect.Move(mobjScroll, {duration: 0.001, fps: 45, x: 77, y: 0, transition: Effect.Transitions.sinoidal , afterFinish: function() {
                
                mobjScroll.appendChild(oLi1);
                arrList = ChildLI();
                SelectImage(arrList[mintSelected].childNodes[0], true);              
              
                mblnInScroll = false;  
              
        } });
        
    } });			

}
function gup( name, url )
{
    name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
    var regexS = "[\\?&]"+name+"=([^&#]*)";  
    var regex = new RegExp( regexS );  
    var results = regex.exec( url );  
    if( results == null ) 
    {  
        return ""; 
    }
    else    
    {
        return results[1];
    }
}

function AjaxLoader()
{
    new Ajax.Request(mstrAjaxXML, { 
        method:'get',
        onSuccess: function(transport)
                   {
                      var response = transport.responseXML;
                      
                      var mode_check = response.getElementsByTagName("metadata");
                      if(mode_check.length==1) 
                      {
                          var markers = response.getElementsByTagName("item");
                          for (var i = 0; i < markers.length; i++) 
                          {
                              var title = GetXmlNodeText(markers[i].getElementsByTagName("title")[0]);
                              var desc  = GetXmlNodeText(markers[i].getElementsByTagName("description")[0]);
                              var url   = GetXmlNodeText(markers[i].getElementsByTagName("url")[0]);
                              var pic   = GetXmlNodeText(markers[i].getElementsByTagName("screenshot")[0]);

                              if(title) {
                                CreateItem(i, title, desc, url, pic);
                              }

                          }
                      }
$('WebsiteLoading').removeClassName('elInvisibleTrue');   
                      var obj = mobjScroll.getElementsByTagName('A');
                      if(obj.length>0)
                      {
					  try {
                          SelectImage(obj[0], false); 
						  }
						  catch(ex) { alert(ex.message);}
                      }
 
                      
                      
                   },     
        onFailure: function()
                   { 
                      alert('Error. Unable to obtain a list of Websites.');
                   } 
    });
    
    
}


function doScrollUp()
{
    
    var intHeight = mobjList.getHeight();
    var intScroll = mobjList.scrollHeight;

    if(intScroll>=intHeight)
    {
        
        mobjList.scrollTop = mobjList.scrollTop - 35;
    }
    
}
function doScrollDown()
{
    
    var intHeight = mobjList.getHeight();
    var intScroll = mobjList.scrollHeight;

    if(intScroll>=intHeight)
    {
        mobjList.scrollTop += 35;
    }
    
}

function CreateItem(index, title, desc, url, pic)
{

    index = index;
    
    // description text
    var objTxt = document.createElement('div');
    objTxt.id = 'Txt'+index;
    objTxt.innerHTML = desc;
    mobjTextLoad.appendChild(objTxt);
    
    // image scroller
    var objLi = document.createElement('li');
    var objA = document.createElement('a');
    objA.id = 'Lnk'+index;
    objA.href = url;
    objA.onclick = function() { SelectImage(this, true); return false; }
    var objImg = document.createElement('img');
    objImg.src = MiWeb.resolveUrl('~/th.ashx?filename=' + pic + '&width=77&height=46&aspect=1&cache=1&filter=0&threshold=0&zoom=0&bevel=0&border=0&el=0&wn=0.55');
    objImg.title = title; 
    objImg.alt = title;       
 
    objA.appendChild(objImg);
    objLi.appendChild(objA);
    mobjScroll.appendChild(objLi);
    
    // website list
    var objLi = document.createElement('li');
    var objA = document.createElement('a');
    objA.href = 'javascript:;';
    objA.id = 'Newlnk'+index;
    objA.onclick = function() { 
        var id = this.id.replace('Newlnk', 'Lnk');
        return SelectByObj($(id)) 
    }
    objA.innerHTML = title;
    objLi.appendChild(objA);
    mobjList.appendChild(objLi);
    
}
function LoadCSS(strFile)
{
    var oLink = document.createElement('link');
    oLink.href = strFile; 
    oLink.rel = 'stylesheet'; 
    oLink.type = 'text/css'; 
    document.body.appendChild(oLink);   
}


    
function initScroll()
{
    
    //LoadCSS(mstrAppPath+'_themes/xos/dev_scroller/dev_scroller.css');
    
    mobjImgLd = $('ImgLoader');
    mobjImg = $('PreviewImage');
    
    mobjText = $('WebsiteText');
    mobjList = $('WebsiteList');    

    mobjTextBtns = $('WebsiteTextTools');
    mobjListBtns = $('WebsiteListTools');    
    
    mobjTextLoad = $('TextLoader');
    
    mobjText.hide();
    mobjTextBtns.hide();
    
    mobjListBtns.hide(); 
    
    if(!mblnWeblink)
    {
        $('Visit').hide();
    }
    
    mobjImgLnk = $('PreviewLink');

    addEvent(mobjImgLd, 'load', AppearLd);
    addEvent(mobjImg, 'load', HideLd);
    
    mobjScroll = $('ScrollThumbs');
    
    mobjList.removeChild(mobjList.childNodes[0]);
    mobjScroll.removeChild(mobjScroll.childNodes[0]);
    
    AjaxLoader();

}
document.observe('dom:loaded', initScroll);
//addEvent(window, 'load', init);