/*
  additional javascript added Dec'08
*/

var isIE = document.all ? true : false; //browser test
var isIE6 = (navigator.userAgent.toLowerCase().indexOf('msie 6') != -1) && (navigator.userAgent.toLowerCase().indexOf('msie 7') == -1);
var isChrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;
var isSafari = navigator.userAgent.toLowerCase().indexOf('safari') > -1;

var MENU_HEIGHT_MAX = 400;
var MENU_HEIGHT_MIN = 800;


function InitialisePage(region, landingContentFlag, menuID, landingFlag)
{
  	

  //extra initialisation for landing page
  	if(landingFlag)
  	{
  	   if(landingContentFlag == true)
  	   {
          if(menuID == "")
          {
            SwitchContentSubMenu('feature_preview');
          }
          else
          {
            SwitchNonSalesSubMenu(menuID);
          }
          EqualiseColumnHeightsV6Content();
       }
       else
       {
          StartHomePageTicker();
          
          // SizeSpotlight() does not work for some unknown reason.
          // (some image is not found but I have no idea why that image is not there)
          // The regoin selection fails if this function throws an error.
          // So I am commenting this out as a disaster recovery thing.
          //SizeSpotLight();
          //InitialiseTestimonials();
       }
      
    
    }
    else
    {

       EqualiseColumnHeights();
       
      //if there's a menu, set the first tab to active
      SwitchNonSalesSubMenu(menuID);
      
    }
    
    if(region == 'unknown')
    {
      ShowRegionSelector();
    }
    
    
}


var TimeToFade = 2000.0;

function StartHomePageTicker()
{
    var  tickerImage = document.getElementById('ticker_image');
    
    if(custArray && custArray.length > 0 && tickerImage)
    {
      tickerImage.style.opacity = '0';
      tickerImage.style.display = 'block';
      tickerImage.arrayID = 0;
      IncrementTicker(tickerImage);
    }
}

function IncrementTicker(tickerImage)
{
    if(custArray.length == tickerImage.arrayID)
       tickerImage.arrayID = 0;
    tickerImage.src = custArray[tickerImage.arrayID];
    tickerImage.arrayID += 1;
    fade(tickerImage);
}

function EqualiseColumnHeights()
{
      if(document.getElementById('contentMain'))
      {      
        var heightLeft = 0;
        if(document.getElementById('contentLeftInner'))
        {
          heightLeft = document.getElementById('contentLeftInner').scrollHeight;
        }
        var heightMid = document.getElementById('contentMiddle').scrollHeight;
        var heightRight = document.getElementById('contentRight').scrollHeight;
        var heightMainPnl = document.getElementById('contentMain').offsetHeight;

        
        if(heightLeft > heightRight)
        {
          heightRight = heightLeft;
        }
        
        //alert('heightMainPnl = ' + heightMainPnl);
        
        if(isIE6)
        {
          heightMainPnl = MENU_HEIGHT_MAX;
          var mainPnlClass = document.getElementById('contentMain').className;
          if(mainPnlClass.toLowerCase().indexOf('login') > -1)
          {
             //login panels are smaller
             heightMainPnl = MENU_HEIGHT_MAX / 2;
          }
        }
        var newHeight = (heightMid > heightRight ? (heightMid > heightMainPnl ? heightMid : heightMainPnl) : (heightRight > heightMainPnl ? heightRight : heightMainPnl));
        newHeight = newHeight > MENU_HEIGHT_MIN ? newHeight : MENU_HEIGHT_MIN;
        document.getElementById('contentMain').style.height = newHeight + 'px'; 	
  	  }
}

function EqualiseColumnHeightsForHiddenPanels()
{
      if(document.getElementById('contentMain'))
      {      
        
        var heightDivfix = document.getElementById('divfix_Download').scrollHeight + 238 ;//header panel and tabs added
        
        var newHeight = 0    
        newHeight = heightDivfix > MENU_HEIGHT_MIN ? heightDivfix : MENU_HEIGHT_MIN;
        document.getElementById('contentMain').style.height = newHeight + 'px';
         	
  	  }
}

function EqualiseColumnHeightsV6Content()
{
      try
      {
        if(document.getElementById('contentMain'))
        {      
          
          var heightDivfix = document.getElementById('divfix').scrollHeight;
          var heightMid = document.getElementById('contentMiddle').scrollHeight;
          var heightMenu = document.getElementById('sidenav').scrollHeight;
          var heightContent = document.getElementById('contentContainer').scrollHeight;
          var newHeight = 0;
  
          if(isIE6)
          {
            newHeight = heightContent;
          }
          else if(isIE)
          {
            newHeight = heightMid;
  
          }
          else
          {
            newHeight = heightDivfix;
          }
          newHeight = newHeight > heightMenu ? newHeight : heightMenu + 10;
          
          document.getElementById('contentMain').style.height =  newHeight + 'px'; 
          
          	
    	  }
  	  }
  	  catch(e)
  	  {
         var heightMid2 = document.getElementById('contentMiddle').scrollHeight;
         var heightMenu2 = document.getElementById('sidenav').scrollHeight;
         var newHeight2 = heightMid2;
         newHeight2 = newHeight2 > heightMenu2 ? newHeight2 : heightMenu2 + 10;
         newHeight2 = newHeight2 > MENU_HEIGHT_MIN ? newHeight2 : MENU_HEIGHT_MIN;
         document.getElementById('contentMain').style.height =  newHeight2 + 'px'; 
        
      }
}


function ShowExtraInfo(evnt, id)
{
    evnt=(window.event)?window.event:evnt;
    var hiddenInfo = document.getElementById('extraInfoPnl' + id);
    var btnPanel = document.getElementById('moreBtn' + id);
    if(hiddenInfo && btnPanel)
    {
      hiddenInfo.style.display = 'block';
      btnPanel.innerHTML = 'hide';
      btnPanel.style.padding = '3px 6px 3px 3px';
      btnPanel.onclick = new Function('event','HideExtraInfo(event,'+id+')');
    }

    EqualiseColumnHeightsForHiddenPanels();
    
    PreventPostBack(evnt);
}
function HideExtraInfo(evnt, id)
{
    evnt=(window.event)?window.event:evnt;
    var hiddenInfo = document.getElementById('extraInfoPnl' + id);
    var btnPanel = document.getElementById('moreBtn' + id);
    if(hiddenInfo && btnPanel)
    {
      hiddenInfo.style.display = 'none';
      btnPanel.innerHTML = 'show';
      if(isIE6)
      {
        btnPanel.style.padding = '3px 2px 3px 2px';
      }
      else
      {
        btnPanel.style.padding = '3px 3px 3px 3px';
      }      
      btnPanel.onclick = new Function('event','ShowExtraInfo(event,'+id+')');
    }   
    
    EqualiseColumnHeightsForHiddenPanels();
     
    PreventPostBack(evnt);
}
function PreventPostBack(evnt)
{
    if(isIE)
    {
        evnt.returnValue = false;
        return false;
    }
    else
    {            
        evnt.preventDefault();
        return false;
    }
    return true;
}

/***********************************version 6 javascript************************/

var SALES_CONTENT_TAB_LOOKUP = {
	'enhanced_features': 'sm1',
	'greater_savings':  'sm2',
	'feature_preview': 'sm3',
	'driver_performance':'sm8',
	'fuel_savings':'sm9',
	'fuel_theft':'sm10',
	'tacho_features':'sm4',
	'driver_infringement':'sm5',
  'tab1':'sm4',
	'tab2':'sm5',
	'tab3':'sm6',
  'tab4':'sm7'     	
}

function SwitchNonSalesSubMenu(callerID)
{
  var linksContainer = document.getElementById("linksContainer");
  if(linksContainer)
  {
    var links = linksContainer.getElementsByTagName('a');
    if(links && links.length > 0)
    {
      for(var kk = 0; kk < links.length; kk++)
      {
          if(links[kk].id == callerID)
          {
            links[kk].className = 'tabpoint_active'
          }
          else
          {
            links[kk].className = 'subtabs';
          }
      }    
    }
  }
}


function SwitchContentSubMenu(callerID)
{
  var linksContainer = document.getElementById("linksContainer");
  if(linksContainer)
  {
    var links = linksContainer.getElementsByTagName('a');
    if(links && links.length > 0)
    {
      for(var kk = 0; kk < links.length; kk++)
      {
          if(links[kk].id == SALES_CONTENT_TAB_LOOKUP[callerID])
          {
            links[kk].className = 'active'
          }
          else
          {
            links[kk].className = '';
          }
      }    
    }
  }
  
  var container = document.getElementById('contentContainer');
  if(container)
  {
   var divUnits = container.getElementsByTagName('div');
   if(divUnits && divUnits.length > 0)
   {
      for(var ii = 0; ii < divUnits.length; ii++)
      {
        if(divUnits[ii].id == callerID)
        {
          divUnits[ii].className = 'hidden_panel';
          divUnits[ii].className = 'v6_' + callerID;
        }
        else if(divUnits[ii].parentNode.id == 'contentContainer')
        {
          divUnits[ii].className = 'hidden_panel';
        }
      }
       EqualiseColumnHeightsV6Content();
   }   
  }
}

function ApplyIE6Filter(imageObj)
{
  if(isIE6)
  {
    var src = imageObj.src;
    imageObj.parentNode.style.width = imageObj.width;
    imageObj.parentNode.style.height = imageObj.height;
    imageObj.style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=0)";
    imageObj.parentNode.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, src='" + src + "')";
  }
}


function ApplyIE6LoginFix(imageObj)
{
  if(isIE6 && imageObj.src.indexOf('ie6') == -1)
  {
    var src = imageObj.src;
    imageObj.src = imageObj.src.substr(0, imageObj.src.length-4) + '_ie6.png';
    imageObj.onmouseout = null;
    imageObj.onmouseover = null;
  }
}

function submitloginform()  

{  

    if(document.f_lo.onsubmit &&  

    !document.f_lo.onsubmit())  

    {  
        alert('no f_lo');
        return;  

    }  

 document.f_lo.submit();  

} 


function SizeSpotLight()
{
  var spotlightPnl = document.getElementById('spotlight_pnl');
  var spotImgWidth = document.getElementById('spotlight_image').scrollWidth;
  var rightPnlWidth = document.getElementById('contentRight').scrollWidth;
  
  var pnlwidth = Math.min(spotImgWidth,rightPnlWidth);
  spotlightPnl.style.width = pnlwidth + 'px';
}

/*****************************fade in / fade out code ************************************/

function fade(element)
{
  if(element == null)
    return;
   
  if(element.FadeState == null)
  {
    if(element.style.opacity == null 
        || element.style.opacity == '' 
        || element.style.opacity == '1')
    {
      element.FadeState = 2;
    }
    else
    {
      element.FadeState = -2;
    }
  }
    
  if(element.FadeState == 1 || element.FadeState == -1)
  {
    element.FadeState = element.FadeState == 1 ? -1 : 1;
    element.FadeTimeLeft = TimeToFade - element.FadeTimeLeft;
  }
  else
  {
    element.FadeState = element.FadeState == 2 ? -1 : 1;
    element.FadeTimeLeft = TimeToFade;
    setTimeout("animateFade(" + new Date().getTime() + ",'" + element.id + "')", 33);
  }  
}

function animateFade(lastTick, eid)
{  
  var curTick = new Date().getTime();
  var elapsedTicks = curTick - lastTick;
  
  var element = document.getElementById(eid);
 
  if(element.FadeTimeLeft <= elapsedTicks)
  {
    element.style.opacity = element.FadeState == 1 ? '1' : '0';
    element.style.filter = 'alpha(opacity = ' 
        + (element.FadeState == 1 ? '100' : '0') + ')';
    if(element.arrayID > 0)
    {
      //fully visible so now time for fade-out
      element.FadeState = -1 * element.FadeState ;
      element.FadeTimeLeft = TimeToFade;
      element.arrayID = -1 * element.arrayID;
      setTimeout("animateFade(" + curTick + ",'" + eid + "')", 33);
      return;
    }
    else
    {
      //else go to the next image in the list
      element.arrayID *= -1;
      IncrementTicker(element);
    }
  }
 
  element.FadeTimeLeft -= elapsedTicks;
  var newOpVal = element.FadeTimeLeft/TimeToFade;
  if(element.FadeState == 1)
    newOpVal = 1 - newOpVal;

  element.style.opacity = newOpVal;
  element.style.filter = 'alpha(opacity = ' + (newOpVal*100) + ')';
  
  setTimeout("animateFade(" + curTick + ",'" + eid + "')", 33);
}
 /***********************page size calculators*********************/
 
function pageWidth() {return window.innerWidth != null? window.innerWidth : document.documentElement && document.documentElement.clientWidth ?       document.documentElement.clientWidth : document.body != null ? document.body.clientWidth : null;}
function pageHeight() {return  window.innerHeight != null? window.innerHeight : document.documentElement && document.documentElement.clientHeight ?  document.documentElement.clientHeight : document.body != null? document.body.clientHeight : null;}
function posLeft() {return typeof window.pageXOffset != 'undefined' ? window.pageXOffset :document.documentElement && document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ? document.body.scrollLeft : 0;}
function posTop() {return typeof window.pageYOffset != 'undefined' ?  window.pageYOffset : document.documentElement && document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ? document.body.scrollTop : 0;}
function posRight() {return posLeft()+pageWidth();} function posBottom() {return posTop()+pageHeight();}

 
/********************** region selector ***************************/

var isResizing = false;
var intervalID = null;

 function ShowRegionSelector()
 {
      var floatingPnl = document.getElementById('floating_panel');
      floatingPnl.style.display = 'block';
      floatingPnl.className = 'floating_panel';
      
      window.onresize = MoveDialogPanel;
      MoveDialogAfterResize();
      //window.blur();
      //window.location = '#floating_panel';
      if(isIE)
      {
        floatingPnl.focus();
      }
      else
      {
        //var contentPnl = document.getElementById('area_us');        
        //contentPnl.onfocus = function(){var x = 1;};
        //contentPnl.focus();
        //window.location.hash = '#area_us';
                floatingPnl.focus();
        
        //TO DO - does not seem to been any way to set focus on
        // splash without tabbing through background page first
      }
 }


function MoveDialogPanel()
{

  if(intervalID == null)
  {
    intervalID = setInterval("MoveDialogAfterResize()", 200);

  }
  isResizing = true;  
}

 function MoveDialogAfterResize()
 {

     if(isResizing)
     {
        isResizing = false;
     }
     else
     {
        if(intervalID != null)
        {
          clearInterval(intervalID);
          intervalID = null;
        }
        var dialogContentPnl = document.getElementById('dialog_content_pnl');
        var pgHeight =  pageHeight();
        var marginTop = pgHeight - dialogContentPnl.offsetHeight;

        if(marginTop < 2)
        {
          marginTop = 0;
        }
        else
        {
          marginTop /= 2;
        }
        dialogContentPnl.style.marginTop = marginTop + 'px';

        if(isIE6)
        {
          var floatingPnl = document.getElementById('floating_panel');
          floatingPnl.style.height = document.body.offsetHeight + 'px';
        }
   
     }
 }
 
 function worldmaphover(mapType)
 {
    var imgEU = document.getElementById('worldmap_eu');
    var imgUS = document.getElementById('worldmap_us');
    var imgNeutral = document.getElementById('worldmap_neither');
    var imgMain = document.getElementById('worldmap_main');
    
    if(mapType=="eu")
    {
      imgMain.src = imgEU.src;
    }
    else if(mapType=="us")
    {
      imgMain.src = imgUS.src;
    }
    else
    {
      imgMain.src = imgNeutral.src;
    }
    
 }
 
 /********************** testimonials ***************************/
 
 var testInterval = null;
 var testCount = 1;
 
 
function InitialiseTestimonials()
{
  
  var testImg = document.getElementById('testim_image1'); 
  var testPnl = document.getElementById('testim_pnl1');
  var testImg2 = document.getElementById('testim_image2'); 
  var testPnl2 = document.getElementById('testim_pnl2');
  var testLnk1 = document.getElementById('testim_lnk1');
  var testLnk2 = document.getElementById('testim_lnk2');  
  
  
  testImg.style.display = 'block';  
  testImg.src = testImArray[0];
  testImg2.style.display = 'block';  
  testImg2.src = testImArray[1];
   
  testPnl.style.width = testImg.offsetWidth + 'px';
  testPnl.style.height = testImg.offsetHeight + 'px';
  testPnl.style.overflow = 'hidden';
  testPnl2.style.width = 0 + 'px';
  testPnl2.style.height = testImg.offsetHeight + 'px';
  testPnl2.style.overflow = 'hidden';
  
  testLnk1.href = testLinkArray[0];
  testLnk2.href = testLinkArray[1];
      
  testInterval = setInterval("SwitchTestimonial()", 20);
  

}

function StartTestTransition()
{
  clearInterval(testInterval);
  testInterval= setInterval("SwitchTestimonial()", 20);
}

function SwitchTestimonial()
{
    var testPnl = document.getElementById('testim_pnl1');
    var testPnl2 = document.getElementById('testim_pnl2');
    var testImg1 = document.getElementById('testim_image1');
    var testImg2 = document.getElementById('testim_image2');
    var testLnk1 = document.getElementById('testim_lnk1');
    var testLnk2 = document.getElementById('testim_lnk2');
       
    if(testPnl.offsetWidth == 0)
    { 
      clearInterval(testInterval);
      var tmp = testPnl.id;
      testPnl.id = testPnl2.id;
      testPnl2.id = tmp;
      
      tmp = testImg1.id;
      testImg1.id = testImg2.id;
      testImg2.id = tmp;     
      
      tmp = testLnk1.id;
      testLnk1.id = testLnk2.id;
      testLnk2.id = tmp;
      
      
      var testParent = testPnl.parentNode;
      testParent.removeChild(testPnl);
      testParent.appendChild(testPnl);
      testInterval= setInterval("StartTestTransition()", 5000);
      testCount++;
      if(testCount == testImArray.length)
      {
        testCount = 0;  
      }
      testImg1.src = testImArray[testCount];
      testLnk1.href = testLinkArray[testCount];        
    }
    else
    { 
      testPnl.style.width = Math.max(0,testPnl.offsetWidth - 30) + 'px';
      testPnl2.style.width = Math.min(testImg1.offsetWidth,testPnl2.offsetWidth + 30) + 'px';
    }
      
}

 /*****************************************************************************/
 
 function SubmitCitrixForm()
 {
    document.CitrixForm.submit(); 
 }
