var BCBSettings = {};
BCBSettings.HeaderAnim = {};

var BCBMap = {};

$(function() {
	if($("body").hasClass("noJS")) { $("body").removeClass("noJS"); }
  $("body").addClass("jsEn");
	
	Cufon.replace(".din-font", { hover: true });

	$("div#header p.text-size-controls a").click(function(e) {
    $.getJSON(MIYOLib._conf.siteBaseURL+'/accessibility/textsize/' + $(this).attr("class") + '/?mode=ajax', function(data) {
     $("body")
       .removeClass("small")
       .removeClass("medium")
       .removeClass("large")
       .addClass(data.text_size);
    });

    e.preventDefault();
	});

	$("a[href^='http://']")
  	.not("[href^='http://"+MIYOLib._conf.siteBaseURLNoProt+"']")
  	.each(function() {
  			this.target = "_blank";
  	});
  
  $("a[href^='https://']")
  	.not("[href^='https://"+MIYOLib._conf.siteBaseURLNoProt+"']")
  	.each(function() {
  			this.target = "_blank";
  	});
  
  $("a.external").each(function() {
    this.target = "_blank";
  });

  $printLi = $('<li id="art-meta-print" class="icons"><a href="#" title="Print"><span class="accessibility">Print</span></a></li>')
  $printLi.find('a').click(function(e){
    window.print();
    e.preventDefault();
  });
  $cal = $('#art-meta-calendar');
  // .after( $printLi );

  if(typeof $cal[0] != "undefined") {
    $cal.after( $printLi );
  } else {
    $('.article-meta-links-list').prepend( $printLi );
  }

	BCBSettings.HeaderAnim.initHeaderAnimation();
  placeAudio();
	initExpandableSections();
	initGMaps();
	initialisePageTwitterModule();
});

BCBSettings.HeaderAnim.initHeaderAnimation = function () {
	$("#header-animation-holder").each(function() {
		BCBSettings.HeaderAnim.headAnimTarget = this;
		BCBSettings.HeaderAnim.headAnimTarget.viewAreaHeight = $(BCBSettings.HeaderAnim.headAnimTarget).outerHeight();
		BCBSettings.HeaderAnim.headAnimTarget.viewAreaWidth = $(BCBSettings.HeaderAnim.headAnimTarget).outerWidth();
		
		BCBSettings.HeaderAnim.headAnimTarget.$imageHolder = $(BCBSettings.HeaderAnim.headAnimTarget).find("#header-anim-imgs-hold");
		BCBSettings.HeaderAnim.headAnimTarget.$maskLayer = $(BCBSettings.HeaderAnim.headAnimTarget).find("#header-animation-mask");
		
		if(BCBSettings.HeaderAnim.headAnimTarget.$imageHolder.length > 0 && BCBSettings.HeaderAnim.headAnimTarget.$maskLayer.length > 0) {
			BCBSettings.HeaderAnim.headAnimTarget.maskEndPos = (-1 * (BCBSettings.HeaderAnim.headAnimTarget.$maskLayer.outerHeight() - BCBSettings.HeaderAnim.headAnimTarget.viewAreaHeight));
			
			BCBSettings.HeaderAnim.headAnimTarget.currImage = 1;
			BCBSettings.HeaderAnim.headAnimTarget.$imageSet = BCBSettings.HeaderAnim.headAnimTarget.$imageHolder.children("span");
			BCBSettings.HeaderAnim.headAnimTarget.imageCount = BCBSettings.HeaderAnim.headAnimTarget.$imageSet.length;
			BCBSettings.HeaderAnim.headAnimTarget.imgHolderReqWidth = (BCBSettings.HeaderAnim.headAnimTarget.imageCount * BCBSettings.HeaderAnim.headAnimTarget.viewAreaWidth);
			
			var curr_img_id = 1;
			BCBSettings.HeaderAnim.headAnimTarget.$imageSet.each(function() {
				$(this).css("display", "none");
				$(this).attr("id", "head-img-entr-"+curr_img_id);
				curr_img_id = curr_img_id + 1;
			});
			
			BCBSettings.HeaderAnim.headAnimTarget.$imageHolder.children("#head-img-entr-1").css("display", "block");
			
			BCBSettings.HeaderAnim.headAnimTarget.$maskLayer.animate(
				{
					top: BCBSettings.HeaderAnim.headAnimTarget.maskEndPos
				},
				18000,
				'linear',
				function () {
					BCBSettings.HeaderAnim.headSwapToNextImg()
				}
			);
		}
	});
}

BCBSettings.HeaderAnim.headSwapToNextImg = function() {
	if(BCBSettings.HeaderAnim.headAnimTarget.$imageHolder.length > 0 && BCBSettings.HeaderAnim.headAnimTarget.$maskLayer.length > 0) {
		var prevImage = BCBSettings.HeaderAnim.headAnimTarget.currImage;
		var targetImage = (BCBSettings.HeaderAnim.headAnimTarget.currImage + 1);
		
		if(targetImage > BCBSettings.HeaderAnim.headAnimTarget.imageCount) {
			BCBSettings.HeaderAnim.headAnimTarget.currImage = 1;
			targetImage = 1;
		} else {
			BCBSettings.HeaderAnim.headAnimTarget.currImage = targetImage;
		}
		
		BCBSettings.HeaderAnim.headAnimTarget.$maskLayer.css("top", "0px");
		BCBSettings.HeaderAnim.headAnimTarget.$imageHolder.children("#head-img-entr-"+prevImage).fadeOut(1000);
		BCBSettings.HeaderAnim.headAnimTarget.$imageHolder.children("#head-img-entr-"+targetImage).fadeIn(1000);
		BCBSettings.HeaderAnim.headAnimTarget.$maskLayer.animate(
			{
				top: BCBSettings.HeaderAnim.headAnimTarget.maskEndPos
			},
			18000,
			'linear',
			function () {
				BCBSettings.HeaderAnim.headSwapToNextImg()
			}
		);
	}
}

function initExpandableSections() {
  $(".expandable-content").each(function() {
    var parentHold = this;
    parentHold.collapseOthers = false;
    
    if($(parentHold).hasClass("collapse-others")) {
      parentHold.collapseOthers = true;
      parentHold.$otherExpandables = $(parentHold).parent().find(".expandable-content");
    }
    
    parentHold.$blockHead = $(parentHold).find(".expand-trigger").not(".sub-expandable .expand-trigger")
      .css("cursor", "pointer")
      .hover(
        function () {
          if(!$(parentHold).hasClass("hovered")) {
            $(parentHold).addClass("hovered");
          }
        },
        function () {
          if($(parentHold).hasClass("hovered")) {
            $(parentHold).removeClass("hovered");
          }
        }
      )
      .click(function() {
        var headerRef = this;
        headerRef.originallyHadClass = true;
        
        if(!$(parentHold).hasClass("open")) {
          $(parentHold).find(".initial-content").css("display", "none");
          headerRef.originallyHadClass = false;
          
          if(parentHold.collapseOthers) {
            if(parentHold.$otherExpandables.length > 0) {
              parentHold.$otherExpandables.each(function() {
                var expandElement = this;
                
                if($(expandElement).hasClass("open")) {
                  $(expandElement).find(".expanded-content:first").slideToggle(600, function() {
                    $(expandElement).removeClass("open");
                    $(expandElement).find(".initial-content").css("display", "block");
                  });
                }
              });
            }
          }
        }
        
        $(parentHold).find(".expanded-content:first").slideToggle(600, function() {
          if(headerRef.originallyHadClass && $(parentHold).hasClass("open")) {
            $(parentHold).removeClass("open");
            $(parentHold).find(".initial-content").css("display", "block");
          } else if(!headerRef.originallyHadClass && !$(parentHold).hasClass("open")) {
            $(parentHold).addClass("open");
          }
        });
        
        return false;
      });
  });
  
  $(".sub-expandable").each(function() {
    var subExpandHold = this;
    subExpandHold.collapseOthers = false;

    if($(subExpandHold).hasClass("collapse-others")) {
      subExpandHold.collapseOthers = true;
      subExpandHold.$otherExpandables = $(subExpandHold).parent().find(".sub-expandable");
    }

    subExpandHold.$blockHead = $(subExpandHold).find(".expand-trigger")
      .css("cursor", "pointer")
      .hover(
        function () {
          if(!$(subExpandHold).hasClass("hovered")) {
            $(subExpandHold).addClass("hovered");
          }
        },
        function () {
          if($(subExpandHold).hasClass("hovered")) {
            $(subExpandHold).removeClass("hovered");
          }
        }
      )
      .click(function() {
        var subHeaderRef = this;
        subHeaderRef.originallyHadClass = true;

        if(!$(subExpandHold).hasClass("open")) {
          $(subExpandHold).find(".initial-content").css("display", "none");
          subHeaderRef.originallyHadClass = false;
          
          if(subExpandHold.collapseOthers) {
            if(subExpandHold.$otherExpandables.length > 0) {
              subExpandHold.$otherExpandables.each(function() {
                var expandElement = this;

                if($(expandElement).hasClass("open")) {
                  $(expandElement).find(".sub-expand-content:first").slideToggle(600, function() {
                    $(expandElement).removeClass("open");
                    $(expandElement).find(".initial-content").css("display", "block");
                  });
                }
              });
            }
          }
        }

        $(subExpandHold).find(".sub-expand-content:first").slideToggle(600, function() {
          if(subHeaderRef.originallyHadClass && $(subExpandHold).hasClass("open")) {
            $(subExpandHold).removeClass("open");
            $(subExpandHold).find(".initial-content").css("display", "block");
          } else if(!subHeaderRef.originallyHadClass && !$(subExpandHold).hasClass("open")) {
            $(subExpandHold).addClass("open");
          }
        });

        return false;
      });
  });
}

function initialisePageTwitterModule() {
	$("#twitter-meta-module-hold").each(function() {
  	var twitModuleContainer = this;

  	// Scroll content parts
  	twitModuleContainer.$scrollArea = $('#twitter-meta-content-hold', twitModuleContainer);
  	twitModuleContainer.$scrollContent = $('#twitter-module-entry-list', twitModuleContainer);
		
		twitModuleContainer.currWidth = 0;
		
		twitModuleContainer.$scrollContent.children("li").each(function() {
			twitModuleContainer.currWidth = twitModuleContainer.currWidth + $(this).outerWidth(true);
		});
		
		twitModuleContainer.$scrollContent.width(twitModuleContainer.currWidth);

  	twitModuleContainer.entryCount =  twitModuleContainer.$scrollContent.children("li").length;
  	twitModuleContainer.normEntryWidth = twitModuleContainer.$scrollContent.children("li:not(.small-entries-col)").filter(":first").outerWidth(true);

  	twitModuleContainer.$previousTrigger = $(".prev-entries", twitModuleContainer);
  	twitModuleContainer.$nextTrigger = $(".more-entries", twitModuleContainer);

  	twitModuleContainer.triggerLeftAnimation;
  	twitModuleContainer.triggerRightAnimation;

  	twitModuleContainer.moveEntriesLeft = function() {
  	  var currLeftShift = twitModuleContainer.$scrollContent.position().left;
  		var contentWidthDisplay = currLeftShift;

  		if(contentWidthDisplay < 0) {
  			contentWidthDisplay = -1 * contentWidthDisplay;
  		}

  		contentWidthDisplay = contentWidthDisplay + twitModuleContainer.$scrollArea.width();

  		if(twitModuleContainer.$scrollContent.width() > contentWidthDisplay) {
  			var newLeft = (contentWidthDisplay - twitModuleContainer.$scrollArea.width()) + twitModuleContainer.normEntryWidth;

  			if((newLeft + twitModuleContainer.$scrollArea.width()) > twitModuleContainer.$scrollContent.width()) {
  			  newLeft = twitModuleContainer.$scrollContent.width() - twitModuleContainer.$scrollArea.width();
  			}

  			twitModuleContainer.$scrollContent.animate({
  				left: ((-1 * newLeft)) + 'px'
  			}, 500, function () {
  			});
  		}
  	}

  	twitModuleContainer.moveEntriesRight = function() {
  	  var currLeftShift = twitModuleContainer.$scrollContent.position().left;
  		var contentWidthDisplay = currLeftShift;

  		if(contentWidthDisplay < 0) {
  			contentWidthDisplay = -1 * contentWidthDisplay;
  		}

  		contentWidthDisplay = contentWidthDisplay + twitModuleContainer.$scrollArea.width();

  		if(currLeftShift < 0) {
  			var newLeft = (contentWidthDisplay - twitModuleContainer.$scrollArea.width()) - twitModuleContainer.normEntryWidth;

  			if(newLeft < 0) {
  			  newLeft = 0;
  			}

  			twitModuleContainer.$scrollContent.animate({
  				left: ((-1 * newLeft)) + 'px'
  			}, 500, function () {
  			});
  	  }
  	}

  	twitModuleContainer.$nextTrigger.click(function() {
  		return false;
  	});

  	twitModuleContainer.$nextTrigger.mousedown(function() {
  	  twitModuleContainer.moveEntriesLeft();

  		twitModuleContainer.triggerLeftAnimation = setInterval(twitModuleContainer.moveEntriesLeft, 550);
  	});

  	twitModuleContainer.$nextTrigger.mouseup(function() {
  	  clearInterval(twitModuleContainer.triggerLeftAnimation);
  	});

  	twitModuleContainer.$previousTrigger.click(function() {
  		return false;
  	});

  	twitModuleContainer.$previousTrigger.mousedown(function() {
  	  twitModuleContainer.moveEntriesRight();

  		twitModuleContainer.triggerRightAnimation = setInterval(twitModuleContainer.moveEntriesRight, 550);
  	});

  	twitModuleContainer.$previousTrigger.mouseup(function() {
  	  clearInterval(twitModuleContainer.triggerRightAnimation);
  	});
  });
}

function initGMaps() {
	if($("#bcb-gmap-holder").length > 0) {
  	// Now do the map magic
  	var map_script = document.createElement("script");
  	map_script.type = "text/javascript";
  	map_script.src = "http://maps.google.com/maps/api/js?v=3.2&sensor=false&callback=mapsInit";
  	document.body.appendChild(map_script);
	}
}

function mapsInit() {
  BCBMap.overlayDiv = $('#map-overlay-holder');
  BCBMap.mapDiv = document.getElementById("bcb-gmap-holder");
  BCBMap.bounds = new google.maps.LatLngBounds();
  BCBMap.markers = [];
  BCBMap.bcb = new google.maps.LatLng(53.32610, -2.23187);
  BCBMap.styles = [
    {featureType: "all",            elementType: "geometry", stylers: [{ saturation: -100 }]},
    {featureType: "road.highway",   elementType: "geometry", stylers: [{ visibility: "on" }, { hue: "#ff32a2" }, { saturation: 92 }]},
    {featureType: "road.arterial",  elementType: "geometry", stylers: [{ visibility: "on" }, { hue: "#ff32a2" }, { saturation: 60 }]},
    {featureType: "road.local",     elementType: "geometry", stylers: [{ visibility: "on" }, { hue: "#ff32a2" }, { saturation: 30 }]}
  ];
  BCBMap.type = new google.maps.StyledMapType(BCBMap.styles, {name: 'BCBMap'});

  BCBMap.options = {
    center: BCBMap.bcb,
    mapTypeId: google.maps.MapTypeId.ROADMAP,
    panControl: false,
    zoom: 16,
    zoomControl: true,
    zoomControlOptions: {
      position: google.maps.ControlPosition.RIGHT_BOTTOM
    },

    disableDefaultUI: false,
    mapTypeControl: false,
    mapTypeId: 'BCBMap',
    streetViewControl: false
  };
  BCBMap.map = new google.maps.Map(BCBMap.mapDiv, BCBMap.options);
  BCBMap.map.mapTypes.set('BCBMap', BCBMap.type);

  BCBMap.showInfo = function(e, images, checkins, title) {
    BCBMap.overlayDiv.show();

    picsHolder = $('#map-images-holder');
    textHolder = $('#map-text-holder');

    var mx = e.clientX;
    var my = e.clientY;
    my += $(window).scrollTop();

    if(checkins=='N/A') {
      textHolder.html( title );
    } else {
      var peorple = (checkins==1) ? 'person is' : 'people are';
      textHolder.html(title+'<span>'+checkins+' '+ peorple +' here</span>');
    }
    picsHolder.html(images);
    BCBMap.overlayDiv.css({
      left: (mx-72)+'px',
      top: (my-152)+'px'
    }).show();
  
  }

  BCBMap.noInfo = function() {
    BCBMap.overlayDiv.hide('');
  }

  // BCBMap.bcbMarker = new google.maps.Marker({
  //   position: BCBMap.bcb,
  //   map: BCBMap.map,
  //   title: "BCB",
  //   icon: 'images/site/gmap-marker-black.png'
  // });

  setTimeout('addVenuesToMap()', 1000);
}

function placeAudio() {
  $(".audio-player-hold").each(function () {
    var audPlayHold = this;
    audPlayHold.$barHold = $(audPlayHold).children(".audio-player-bar-hold");
    audPlayHold.$fileHold = $(audPlayHold).find(".audio-download-button:last");
    
    if(audPlayHold.$barHold.length > 0 && audPlayHold.$fileHold.length > 0) {
      audPlayHold.$playerTarg = audPlayHold.$barHold.children(":first");
      if(audPlayHold.$playerTarg.length > 0) {
        audPlayHold.playerTargID = audPlayHold.$playerTarg.attr('id');
        audPlayHold.playerTargFile = audPlayHold.$fileHold.attr('href');
        
        if(audPlayHold.playerTargFile) {
          jwplayer(audPlayHold.playerTargID).setup({
        		flashplayer: "/js/jwplayer/player.swf",
        		file: '/'+audPlayHold.playerTargFile,
        		skin: "/js/jwplayer/glow/glow.zip",
        		controlbar: 'bottom',
        		'width': 240,
        		'height': 21
        	});
    	  }
      }
    }
  });
}
