var countryCode = '';
var id = '';
var random='';


window.addEvent('domready', function(){
  //call function to manage all dom ready events
  init();
});

function init(){
  
    var pageUrl = window.location.href;
    if(pageUrl.split('http://www.discoverireland.com/').length > 1){
      var pageUrlwithoutBase = pageUrl.replace('http://www.discoverireland.com/', '');
    }
    else if(pageUrl.split('http://discoverireland.com/').length > 1){
      var pageUrlwithoutBase = pageUrl.replace('http://discoverireland.com/', '');
    }
    else if(pageUrl.split('http://172.16.10.77/').length > 1){
      var pageUrlwithoutBase = pageUrl.replace('http://172.16.10.77/', '');
    }    
    else{
      var pageUrlwithoutBase = pageUrl.split(':8080/')[1];   
    }
    countryCode = pageUrlwithoutBase.split('/')[0];
  
    flashRoutesMap();
    
    if($('mapHelpTrigger')){
      $('mapHelpTrigger').addEvent('click', function(){
          showElement('mapHelp');
      });
    }
    if($('mapHelpClose')){
      $('mapHelpClose').addEvent('click', function(){
          hideElement('mapHelp');
      });
    }

    if($('topNav')){
          
          $$('#routeLinks a').addEvent('mouseenter', function(){  
            
              var routeLinkId = this.id.split('routeLink')[1];
              var routeLinkArray = routeLinksData[(eval(routeLinkId))-1];
              
              var routeFrom = routeLinkArray[0];
              var routeFromCoords = routeLinkArray[1];
              var routeFromX = eval(routeFromCoords.split(',')[0]);
              var routeFromY = eval(routeFromCoords.split(',')[1]);
              
              var routeTo = routeLinkArray[2];
              var routeToCoords = routeLinkArray[3];
              var routeToX = eval(routeToCoords.split(',')[0]);
              var routeToY = eval(routeToCoords.split(',')[1]);
              
              var routeCharacter = routeLinkArray[4];      
                  
              routeMarkerHtml = document.createElement('div');
              routeMarkerHtml.className = 'routeMarker' ;
              routeMarkerHtml.setAttribute( 'id', 'routeMarkerFrom' );
              
              routeMarkerTopCorners = document.createElement('div');
              routeMarkerTopCorners.className = 'routeMarkerTopCorners clearfix' ;
              routeMarkerTopLeftCorner = document.createElement('div');
              routeMarkerTopLeftCorner.className = 'routeMarkerTopLeftCorner' ;
              routeMarkerTopRightCorner = document.createElement('div');
              routeMarkerTopRightCorner.className = 'routeMarkerTopRightCorner clearfix' ;
              routeMarkerTopCorners.appendChild(routeMarkerTopLeftCorner);
              routeMarkerTopCorners.appendChild(routeMarkerTopRightCorner);
              
              routeMarkerBody = document.createElement('div');
              routeMarkerBody.className = 'routeMarkerBody' ;
              routeMarkerBodyContent = document.createElement('div');
              routeMarkerBodyContent.className = 'routeMarkerBodyContent' ;
              routeMarkerBodyContent.appendChild(document.createTextNode(routeFrom));
              routeMarkerBody.appendChild(routeMarkerBodyContent);
              
              routeMarkerBottomCorners = document.createElement('div');
              routeMarkerBottomCorners.className = 'routeMarkerBottomCorners clearfix' ;      
              routeMarkerBottomLeftCorner = document.createElement('div');
              routeMarkerBottomLeftCorner.className = 'routeMarkerBottomLeftCorner' ; 
              routeMarkerBottomRightCorner = document.createElement('div');
              routeMarkerBottomRightCorner.className = 'routeMarkerBottomRightCorner clearfix' ;   
              routeMarkerBottomCorners.appendChild(routeMarkerBottomLeftCorner);
              routeMarkerBottomCorners.appendChild(routeMarkerBottomRightCorner);
              
              routeMarkerPointer = document.createElement('div');
              routeMarkerPointer.className = 'routeMarkerPointer clearfix' ; 
       
              routeMarkerHtml.appendChild(routeMarkerTopCorners);
              routeMarkerHtml.appendChild(routeMarkerBody);
              routeMarkerHtml.appendChild(routeMarkerBottomCorners);
              routeMarkerHtml.appendChild(routeMarkerPointer);
            
              $('map').appendChild(routeMarkerHtml);  
              var markerOffset = ($$('#routeMarkerFrom .routeMarkerBody')[0].getSize().x)/2;
              $('routeMarkerFrom').setStyle('width', ($$('#routeMarkerFrom .routeMarkerBody')[0].getSize().x) + 'px');
              $('routeMarkerFrom').setStyle('top', (routeFromX-markerOffset) + 'px');
              $('routeMarkerFrom').setStyle('left', routeFromY + 'px');
              
              if(routeTo != ''){
                
                routeMarkerHtml = document.createElement('div');
                routeMarkerHtml.className = 'routeMarker' ;
                routeMarkerHtml.setAttribute( 'id', 'routeMarkerTo' );
                
                routeMarkerTopCorners = document.createElement('div');
                routeMarkerTopCorners.className = 'routeMarkerTopCorners clearfix' ;   
                routeMarkerTopLeftCorner = document.createElement('div');
                routeMarkerTopLeftCorner.className = 'routeMarkerTopLeftCorner' ; 
                routeMarkerTopRightCorner = document.createElement('div');
                routeMarkerTopRightCorner.className = 'routeMarkerTopRightCorner clearfix' ;  
                routeMarkerTopCorners.appendChild(routeMarkerTopLeftCorner);
                routeMarkerTopCorners.appendChild(routeMarkerTopRightCorner);
                
                routeMarkerBody = document.createElement('div');
                routeMarkerBody.className = 'routeMarkerBody' ; 
                routeMarkerBodyContent = document.createElement('div');
                routeMarkerBodyContent.className = 'routeMarkerBodyContent' ;
                routeMarkerBodyContent.appendChild(document.createTextNode(routeTo)); 
                routeMarkerBody.appendChild(routeMarkerBodyContent);
                
                routeMarkerBottomCorners = document.createElement('div');
                routeMarkerBottomCorners.className = 'routeMarkerBottomCorners clearfix' ; 
                routeMarkerBottomLeftCorner = document.createElement('div');
                routeMarkerBottomLeftCorner.className = 'routeMarkerBottomLeftCorner' ;
                routeMarkerBottomRightCorner = document.createElement('div');
                routeMarkerBottomRightCorner.className = 'routeMarkerBottomRightCorner clearfix' ;
                routeMarkerBottomCorners.appendChild(routeMarkerBottomLeftCorner);
                routeMarkerBottomCorners.appendChild(routeMarkerBottomRightCorner);
                
                routeMarkerPointer = document.createElement('div');
                routeMarkerPointer.className = 'routeMarkerPointer clearfix' ; 
         
                routeMarkerHtml.appendChild(routeMarkerTopCorners);
                routeMarkerHtml.appendChild(routeMarkerBody);
                routeMarkerHtml.appendChild(routeMarkerBottomCorners);
                routeMarkerHtml.appendChild(routeMarkerPointer);
              
                $('map').appendChild(routeMarkerHtml);
                var markerOffset = ($$('#routeMarkerTo .routeMarkerBody')[0].getSize().x)/2;
                $('routeMarkerTo').setStyle('width', ($$('#routeMarkerTo .routeMarkerBody')[0].getSize().x) + 'px');
                $('routeMarkerTo').setStyle('top', (routeToX-markerOffset) + 'px');
                $('routeMarkerTo').setStyle('left', routeToY + 'px');          
                
              }
    
          });
          
          $$('#routeLinks a').addEvent('mouseleave', function(){  
            
            if( $('routeMarkerFrom') != null ){
              $('routeMarkerFrom').destroy();
            }         
        
            if( $('routeMarkerTo') != null ){
              $('routeMarkerTo').destroy();
            } 
    
          });     
          
    
    }

    if($('topNav')){
      $$('#routeLinks a').addEvent('click', function(){
      
          var scriptUrl = this.href.replace("fullPage=yes", "")
          
          ajaxDynamicContent(scriptUrl);
          return false;
      });
    }
    
    if($$('#page div.panelsScroller').length > 0){
      scrollPanelsSetup();
    }
    
    renderSifrFonts();  

}

function initContent(){

     $$('#contentNav a').addEvent('click', function(){
          
	if(this.className == 'backToTop'){
	    pageScrollTop();
	    return false;
	 }
	 else if(this.className == 'backToTopNoImage'){
	 	    var scriptUrl = this.href.replace("fullPage=yes", "");		    
		     pageScrollTop();
		     ajaxDynamicContent(scriptUrl); 		  
	 	     return false;
	 }
	else{
	   var scriptUrl = this.href.replace("fullPage=yes", "")
	   ajaxDynamicContent(scriptUrl);
	   return false;
	}
     });
    
    $$('.itinerary a').addEvent('click', function(){
        var scriptUrl = this.href.replace("fullPage=yes", "");
        scriptUrl = scriptUrl.replace("&&", "&");
        ajaxDynamicContent(scriptUrl);
        return false;
    });
    
    $$('.pagination a').addEvent('click', function(){
        var scriptUrl = this.href.replace("fullPage=yes", "");
        scriptUrl = scriptUrl.replace("&&", "&");
        ajaxDynamicContent(scriptUrl);
        return false;
    });
    
    $$('.info-window a').addEvent('click', function(){
        var scriptUrl = this.href.replace("fullPage=yes", "");
        scriptUrl = scriptUrl.replace("&&", "&");
        alert(scriptUrl);
        ajaxDynamicContent(scriptUrl);
        return false;
    }); 
    

    $$('.videoCharacterDetails a').addEvent('click', function(){
        var scriptUrl = this.href.replace("fullPage=yes", "")
        ajaxDynamicContent(scriptUrl);
        return false;
    });
    
    
    renderSifrFonts();   

}

// function to scroll page to main content area once loaded
function pageScroll(){
    
    var myFx = new Fx.Scroll(window, {
      
       	wait: false,
        duration: 1500,
        offset: {'x': 0, 'y': 490},
        transition: Fx.Transitions.Quad.easeInOut       
        
    }).toTop();
    
}

// function to scroll page to main content area once loaded
function pageScrollTop(){
    
    var myFx = new Fx.Scroll(window, {
      
           wait: false,
        duration: 1500,
        offset: {'x': 0, 'y': 0},
        transition: Fx.Transitions.Quad.easeInOut       
        
    }).toTop();
    
} 

// function to allow javascript to programmatically load a CSS stylesheet
function loadStylesheet( filename, media ){
  // ensure that the browser has all the DOM methods/properties we need
  if( !(document.getElementById) ||
    !(document.childNodes) ||
    !(document.createElement) ||
    !(document.getElementsByTagName) ){
    return;
  }

  // make a new link node to the stylesheet
  var link = document.createElement( "link" );
  link.href = filename;
  link.rel = "stylesheet";
  link.type = "text/css";
  link.media = media;

  // insert the stylesheet link into the document head
  document.getElementsByTagName('head')[0].appendChild(link);
}

// function to show a page element
function showElement(element) {
  $(element).style.display = 'block';
}

// function to hide a page element
function hideElement(element) {
  $(element).style.display = 'none';
}


function getEpisode( eId ) {

  id = eId;
  random = Math.random()*100000;
  ajaxDynamicContent('/' + countryCode + '/webisode/jsp/video/?id=' + id +'&random=' + random);  
  
}


function ajaxDynamicContent(scriptUrl){
  
  if(scriptUrl.split('video').length > 1){
    var pageType = 'video';
  }
  else if(scriptUrl.split('episode').length > 1){
    var pageType = 'episode';
    var scriptUrlQueryString = scriptUrl.split('?')[1];
    
  }
  else if(scriptUrl.split('bio').length > 1){
    var pageType = 'bio';
  }
  else if(scriptUrl.split('map').length > 1){
    var pageType = 'map';
  }
   else if(scriptUrl.split('blank').length > 1){
        var pageType = 'blank';
  }
  else{
    var pageType = '';
  }
  
  var dynamicContentRequest;
  
  try{
    // Firefox, Opera 8.0+, Safari
      dynamicContentRequest=new XMLHttpRequest();
    }
  catch (e){
    // Internet Explorer
    try{
        dynamicContentRequest=new ActiveXObject('Msxml2.XMLHTTP');
      }
    catch (e){
      try{
          dynamicContentRequest=new ActiveXObject('Microsoft.XMLHTTP');
        }
      catch (e){
          alert('Your browser does not support AJAX!');
        }
      }
    }
    
    dynamicContentRequest.onreadystatechange=function(){
    
      if(dynamicContentRequest.readyState==4){
 
      var dynamicContentRequestString = dynamicContentRequest.responseText;
      //alert(dynamicContentRequestString);
      
      var expMainTitle = '<h1>.*</h1>';
      var parsedH1 = new RegExp(expMainTitle).exec(dynamicContentRequestString).toString();   
      if(parsedH1 != ''){
        var parsedH1Stripped = parsedH1.replace('<h1>', '');
        parsedH1Stripped = parsedH1Stripped.replace('</h1>', '');
        var dynamicContentRequestStripped = dynamicContentRequestString.replace(parsedH1, '');
        $('mainPageHeading').innerHTML = parsedH1Stripped;
        $('mainPageHeading').style.left = '30px';
        $('mainPageHeading').removeClass('sIFR-replaced');
      }
      
      var expID = "<id>.*</id>";
      var parsedID = new RegExp(expID).exec(dynamicContentRequestString).toString();       
      if(parsedID != ''){
        var parsedIDStripped = parsedID.replace('<id>', '');
        parsedIDStripped = parsedIDStripped.replace('</id>', '');
        id = parsedIDStripped        
        dynamicContentRequestStripped = dynamicContentRequestStripped.replace(parsedID, '');        
      }
                
      var expWT = '<WTuri>.*</WTuri>';
          var parsedWT;
          try{
          parsedWT = new RegExp(expWT).exec(dynamicContentRequestString).toString(); 
          }catch(error){}
          if(parsedWT != ''){
          try{
            var parsedWTStripped = parsedWT.replace('<WTuri>', '');
            parsedWTStripped = parsedWTStripped.replace('</WTuri>', '');
            dynamicContentRequestStripped = dynamicContentRequestStripped.replace(parsedWT, '');
            parsedWT = parsedWTStripped 
            }catch(error){}
      }      
                          
      
      if(pageType == 'video'){
      	
        
        var expFlv = '<flv>.*</flv>';
        var parsedFlv = new RegExp(expFlv).exec(dynamicContentRequestStripped).toString();
        
        
        var parsedFlvStripped = parsedFlv.replace('<flv>', '');
        parsedFlvStripped = parsedFlvStripped.replace('</flv>', '');
        dynamicContentRequestStripped = dynamicContentRequestStripped.replace(parsedFlv, '');
        
        var expImage = '<image>.*</image>';
        var parsedImage = new RegExp(expImage).exec(dynamicContentRequestStripped).toString();
        var parsedImageStripped = parsedImage.replace('<image>', '');
        parsedImageStripped = parsedImageStripped.replace('</image>', '');
        //alert(parsedImageStripped);
        dynamicContentRequestStripped = dynamicContentRequestStripped.replace(parsedImage, '');
        
        var expTitle = '<title>.*</title>';
        var parsedTitle = new RegExp(expTitle).exec(dynamicContentRequestStripped).toString();
        var parsedTitleStripped = parsedTitle.replace('<title>', '');
        parsedTitleStripped = parsedTitleStripped.replace('</title>', '');
        dynamicContentRequestStripped = dynamicContentRequestStripped.replace(parsedTitle, '');
        

      }
      
      $('footer').style.display = 'block';

      
      $('dynamicContent').innerHTML = dynamicContentRequestStripped;
      
      initContent();
      
      if(pageType == 'map'){      
      	initMap();
      	showEpisodes();
      }
      
      if($('noFlashAlternativeCarousel')){
        flashCarousel(scriptUrlQueryString);
      }
      if($('noFlashAlternativeVideoPlayer')){
        flashVideoPlayer(parsedFlvStripped, parsedImageStripped, parsedTitleStripped);
      }
      if($$('#page div.panelsScroller').length > 0){
        //alert($$('#page div.panelsScroller').length);
        scrollPanelsSetup();
      }
    
      var windowHeight = window.getSize().y;
      var pageHeight = $('page').getSize().y;

      if( (pageHeight-windowHeight) < 490 ){
        var paddingAdjustment = 490 - (pageHeight-windowHeight);
        $('page').setStyle('height', (pageHeight+paddingAdjustment) + 'px');
      }


      
      if(pageType != 'blank')
      {
            pageScroll();
      }
      
      webtrendsAjaxCall(parsedWT);
      
    }
  }   
  
  if(dynamicContentRequest){

    dynamicContentRequest.open('GET', scriptUrl, true);
    dynamicContentRequest.send(null);
  }
 
}

function flashRoutesMap(){
  var flashvars = {
       xml_url: "/" + countryCode + "/webisode/jsp/flashXml/",
      preloader_url :  "/shared/webisodes/assets/img/loading/" + countryCode + "/preloader.swf?" + Math.random()*100000,
      performance_mode: "clickandstop"
  }     
  var params = {
      wmode: "transparent",
      menu: "false",
      bgcolor: "#000000"
  }    
  var attributes = {}   
  swfobject.embedSWF( "/shared/webisodes/assets/flash/TIRoutesMap.swf" , "noFlashAlternativeRoutesMap" , "980" , "655" , "9.0.115" , "/shared/webisodes/assets/flash/resources/expressInstall.swf" , flashvars , params , attributes );
  
}

function flashCarousel(queryString){

  var flashvars = {
      datasource: "/" + countryCode + "/webisode/jsp/episodecarousel/?" + queryString.replace('&','%26') 
  }
  

  var params = {
      wmode: "transparent",
      menu: "false",
      bgcolor: "#000000"
  }    
  var attributes = {}   
  swfobject.embedSWF( "/shared/webisodes/assets/flash/TICarousel.swf?" + Math.random()*100000 , "noFlashAlternativeCarousel" , "460" , "218" , "9.0.115" , "/shared/webisodes/assets/flash/resources/expressInstall.swf" , flashvars , params , attributes );
  
}

function flashVideoPlayer(videoUrl, imageUrl, videoTitle){
  
  var flashvars = {
      video_url: videoUrl,
      image_url: imageUrl,
      video_title: videoTitle,
      autostart: "false"     
  } 
  
  
  var params = {
      movie: "/shared/webisodes/assets/flash/TIVideoPlayer.swf",
      allowFullScreen: "true",
      menu: "false",
      bgcolor: "#000000"
  }    
  
  var attributes = {}   
  swfobject.embedSWF( "/shared/webisodes/assets/flash/TIVideoPlayer.swf?"+ Math.random()*100000, "noFlashAlternativeVideoPlayer" , "590" , "333" , "9.0.115" , "/shared/webisodes/assets/flash/resources/expressInstall.swf" , flashvars , params , attributes );
  
}

function renderSifrFonts(){
  
  sIFR.activate(rockwell);
      
  sIFR.replace(rockwell, {
    selector: 'h1',
    wmode: 'transparent',
    css: [
      '.sIFR-root { color: #ffffff; }'
      ,'em { color: #acd267; }'
    ]
  });
  
  sIFR.replace(rockwell, {
    selector: '.activityOverviewDetails h2',
    wmode: 'transparent',
    css: '.sIFR-root { color: #59ad40; }'
  });
  
  sIFR.replace(rockwell, {
    selector: '.videoCharacterDetails h3',
    wmode: 'transparent',
    css: '.sIFR-root { color: #ffffff; text-align: right; }'
  });
  
  sIFR.replace(rockwell, {
    selector: '.activityOverviewDetails h3',
    wmode: 'transparent',
    css: '.sIFR-root { color: #ffffff; }'
  });
  
  sIFR.replace(rockwell, {
    selector: '.colRight h3',
    wmode: 'transparent',
    css: '.sIFR-root { color: #ffffff; }'
  });
  
    sIFR.replace(rockwell, {
      selector: '.colRight span.sifr',
      wmode: 'transparent',
      css: '.sIFR-root { color: #ffffff; }'
  });
  
  

  
}

function webtrendsAjaxCall(parsedWT)
{		
	dcsMultiTrack("WT.webisode",parsedWT,"DCS.dcsuri",parsedWT);		
}


function flashWebtrendsTrack(){
	var dcsTrackCall
	var currentURL = window.location.href
	if (!(currentURL.substring(currentURL.length-1)=='/')) { currentURL += '/' }
	var dcsTrackCall = " dcsMultiTrack('DCS.dcsuri', '" + currentURL
	for (var i=0;i<arguments.length;i++){
		if (!(typeof(arguments[i])=='undefined')) {
			if (i==0) 
				dcsTrackCall += escape(arguments[i]) 
			else
				dcsTrackCall += "/" + escape(arguments[i])
		}
	}	
	dcsTrackCall += "')"; 
	eval(dcsTrackCall);
}

