




$(function(){

 
 $(window).hashchange(function(){
  checkUrl();
 });
 
 checkUrl();

 Shadowbox.init();

 setupEvents();
 
 for(i in pages){
  preloadImage('http://www.jagex.com/img/jgs/careers/layout/'+pages[i].backgroundImage);
 }
 
 
 preloadImage(Array('http://www.jagex.com/img/jgs/careers/icons/facebook-small.png','http://www.jagex.com/img/jgs/careers/icons/twitter-small.png','http://www.jagex.com/img/jgs/careers/icons/stumble-small.png','http://www.jagex.com/img/jgs/careers/icons/digg-small.png'));
 
})



 function changePicture(pictureid,doFade){

  if($("#PicturePrimary").css("display") == "none") {
   
   ObjectIn = $("#PicturePrimary");
   ObjectOut = $("#PictureSecondary");
  }
  else {
   
   ObjectIn = $("#PictureSecondary");
   ObjectOut = $("#PicturePrimary");
  }

  ObjectIn.attr('src', '/img/jgs/careers/pictures/'+pictures[pictureid][pFilename]+'.jpg');
  if(doFade){
   setTimeout(function(){pictureFade(ObjectIn,ObjectOut,pictureid)}, 250)
   
   textTimeout = (((500/2)+(500/2))/2).toFixed(0);
   setTimeout(function(){pictureText(ObjectIn,pictureid)}, textTimeout)
  }
  else{
   ObjectOut.hide();
   ObjectIn.show();
   pictureText(ObjectIn,pictureid);
  }
 }



 function pictureFade(ObjectIn,ObjectOut,pictureid){

  ObjectOut.fadeOut(500);
  ObjectIn.fadeIn(500);
 }



 function pictureText(ObjectIn,pictureid){

  $("#ViewerInfo").text(pictures[pictureid][pCaption]);
  ObjectIn.attr('alt', pictures[pictureid][pName]);
  ObjectIn.attr('title', pictures[pictureid][pName]);
 }



 function checkUrl(){

  if($(location).attr('href').indexOf('#') != -1){
   split_url = $(location).attr('href').split('#');
   if(split_url[1].indexOf('~') != -1){
    split_url = split_url[1].split('~');
    anchor_url = split_url[1];
    split_url = split_url[0];
   }
   else {
    anchor_url = false;
    split_url = split_url[1];
   }
   split_url = split_url.split('/');
   page = split_url[1];
   if(page != currentPage){
    if(split_url.length > 2){
     loadPage(page, anchor_url, checkUrl);
    }
    else {
     loadPage(page, anchor_url);
    }
   }
   else if(split_url.length > 2 && currentSubPage != split_url[split_url.length-1]){
    loadSubPage(page,split_url[split_url.length-1]);
   }
   else if(anchor_url){
    anchorScroll(anchor_url);
   }
   else if(page == currentPage && currentSubPage != '') {
    loadPage(page, anchor_url);
   }
  }
  else {
   newBannerImage(pages['home'].backgroundImage);
  }
 }



 function loadPage(_tab, _anchor, _callback){

  
  if(typeof pages[_tab] != 'undefined'){
   tid = pages[_tab].tabId;
   var $this = $("a.Tab:eq("+tid+")");
   $this.parent().children("a.Tab").removeClass("TabSelected");
   $this.addClass("TabSelected");
   currentPage = _tab;
   currentSubPage = '';
 
   $.ajax({
    url: '/careers/ajax/content.ws?t='+tid,
    success: function(data) {
     $('.BoxBody').html(data);
     setupEvents();
     newBannerImage(pages[currentPage].backgroundImage);
     if(pages[currentPage].titleString != ''){
      changePageTitle('Careers at Jagex Games Studio - '+pages[currentPage].titleString);
     }
     else {
      changePageTitle('Careers at Jagex Games Studio');
     }
     if(_callback){
      _callback();
     }
     else if(_anchor) {
      anchorScroll(_anchor);
     }
    },
    error: function() {
     alert('Ajax Failed');
    }
   });
  }
  else {
   return404();
  }
 }



 function loadSubPage(_page, _sub_page){

  if(_page == 'life-at-jagex'){
   var page_url = 'life.ws?lt='+_sub_page;
  }
  else if(_page == 'vacancies'){
   var error = 'The job you are looking for may have moved to our new careers provider, go to the vacancies tab for a full listing.';
  }
  
  if(typeof page_url != 'undefined'){
   
try{pageTracker._trackPageview("/js/jgs/careers-1.js/careers/'+page_url+'")}catch(x){}; try{_pageTracker._trackPageview("/js/jgs/careers-1.js/careers/'+page_url+'")}catch(x){}

   currentSubPage = _sub_page;
   
   $.ajax({
    url: '/careers/ajax/'+page_url,
    success: function(data) {
     if(data == ''){
      return404();
     }
     else {
      $('#ContentDisplay').html(data);
      setupEvents();
      $('.SubNav a').removeClass('NavSelected');
      $('.SubNav a[class='+_sub_page+']').addClass('NavSelected');
     }
    },
    error: function() {
     alert('Ajax Failed');
    }
   });
  }
  else {
   typeof error != 'undefined' ? return404(error) : return404();
  }
 }



 function return404(_message){

  
try{pageTracker._trackPageview("/js/jgs/careers-1.js/careers/404")}catch(x){}; try{_pageTracker._trackPageview("/js/jgs/careers-1.js/careers/404")}catch(x){}

  
  $("a.Tab").removeClass("TabSelected");
  newBannerImage('bgHead_404.jpg');
  var url = '/careers/ajax/404.ws';
  if(typeof _message != 'undefined'){
   url = url+'?m='+_message;
  }
  $.ajax({
   url: url,
   success: function(data) {
    currentPage = '404';
    $('.BoxBody').html(data);
    changePageTitle('Careers at Jagex Games Studio - 404');
   },
   error: function() {
    alert('Ajax Failed');
   }
  });
 }



 function enableVideos(){

  if (swfobject.hasFlashPlayerVersion(flashVer)){
   var vidHTML="<h4>Videos</h4>";
   for (i=0;i<videos.length;i++){
    var vidHTML=vidHTML+"<a href='?v="+i+"' class='VidSelect'><img src='http://www.jagex.com/img/jgs/careers/videos/"+videos[i][vFilename]+"_thumb.jpg' alt='"+videos[i][vName]+" - "+videos[i][vCaption]+"' title='"+videos[i][vName]+" - "+videos[i][vCaption]+"' /></a>";
   }
   var vidHTML=vidHTML+"<br class='clear'/>";
   var conHTML="<span id='VideoViewer'> </span>";

   $('#Selector').prepend(vidHTML);
   $('#Viewer').append(conHTML);
   
   swfobject.embedSWF(
    "http://www.jagex.com/img/jgs/careers/videos/player/player.swf?1",
    "VideoViewer",
    "568",
    "378",
    flashVer,
    "",
    {
     skinPath: "http://www.jagex.com/img/jgs/careers/videos/player/skin.swf",
     videoPath: "http://www.jagex.com/img/jgs/careers/videos/Jagex_Trailer.flv"
    },
    {
     allowScriptAccess: "always",
     wmode: "opaque"
    }
   );
   $("#PictureViewer").fadeOut("fast");
  }
 }



 function setupEvents(){

  enableVideos();

  
  Shadowbox.setup();
  
  $("a.PicSelect").unbind('click').click(function(ev){
    ev.preventDefault();
    pictureid = $("a.PicSelect").index($(this));
    if($("#PictureViewer:visible").length){
     changePicture(pictureid,true);
    }
    else{
     $("#VideoViewer").get(0).vidControl("pause");
     changePicture(pictureid,false);
     $("#PictureViewer").fadeIn();
    }
   }
  );

  $("a.VidSelect").unbind('click').click(function(ev){
    ev.preventDefault();
    videoid = $("a.VidSelect").index($(this));
    if($("#PictureViewer:visible").length){
     $("#PictureViewer").fadeOut("fast",function(){
      $("#VideoViewer").get(0).setVideo("http://www.jagex.com/img/jgs/careers/videos/"+videos[videoid][vFilename]+".flv");
      $("#VideoViewer").get(0).vidControl("play"); 
     });
    }
    else {
     $("#VideoViewer").get(0).setVideo("http://www.jagex.com/img/jgs/careers/videos/"+videos[videoid][vFilename]+".flv");
     $("#VideoViewer").get(0).vidControl("play"); 
    }
   }
  );
  
  replaceAnchors();
  replaceUrls();
 }



 function replaceAnchors(){

  $("a[href^=#]").each(function(){
      $(this).attr('href','#/'+currentPage+'~'+$(this).attr('href').substr(1,$(this).attr('href').length));
  });
 }



 function anchorScroll(_anchor){

  $('html, body').animate({scrollTop: $('a[name='+_anchor+']').offset().top}, 0);
 }



 function newBannerImage(_image_name){

  fadeInLength = 'medium';
  if($('#Banner img').length == 0){
   $('#Banner').html('<img src="" title="" alt="" />');
   $('#Banner img').css('display','none');
   fadeInLength = 'slow';
  }
  if($('#Banner img').css('display') == 'none'){
   $('#Banner img').attr('src','http://www.jagex.com/img/jgs/careers/layout/'+_image_name);
   $('#Banner img').stop().fadeIn(fadeInLength, function(){
    $('#Banner').css('background-image','none');
   });
  }
  else {
   $('#Banner').css('background-image','url(http://www.jagex.com/img/jgs/careers/layout/'+_image_name+')');
   $('#Banner img').stop().fadeOut(fadeInLength, function(){
    $('#Banner').html('');
   });
  }
 }



 function preloadImage(_image){

  if(isArray(_image)){
   for(i=0;i<=_image.length-1;i++){
    (new Image()).src = _image[i];
   }
  }
  else {
   (new Image()).src = _image;
  }
 }



 function changePageTitle(_string){

  _string = stripHtml(_string);
  if(document.title != _string){
   document.title = _string;
  }
 }



 function stripHtml(_string){

  stripped_string = _string.replace(/<(?:.|\s)*?>/ig,'');
  return stripped_string;
 }



 function isArray(_obj){

  return _obj.constructor == Array;
 }

