var stdShadowboxWidth = 555;
var stdShadowboxHeight = 275;

/**
 * JavaScript shadowbox.js
 * @version 1.0
 * @Created: 2011-01-10
 * @Author: Oscar Engström, http://www.engstream.se/
 *
 * Comment to this document:
 * Functionality to help speed up and make the work with Shadowbox more easy
 */
sbPlayerLoaded = false;

$(document).ready(function(){
  //Initialize
  performerShadowbox.init();
});

var performerShadowbox = {
  init: function(){
    $(".closeDialogue").live('click', function(ev){
      ev.preventDefault();
      performerShadowbox.close();
    });
  },

  stdOpen: function(html, height, width){
    if(!height){
      height = stdShadowboxHeight;
    }
    if(!width){
      width = stdShadowboxWidth;
    }

    if(Shadowbox.isOpen()){
      if(sbPlayerLoaded){
        if($("#sb-player").hasClass('html')){
          $("#sb-player").html(html);
          performerShadowbox.resize(width, height);
        }
      } else {
        var t = setTimeout(function(){
          performerShadowbox.stdOpen(html, height, width);
        }, 1000);
      }
    } else  {
      Shadowbox.open( {player:'html', content: html, height: height, width: width, options: { onOpen: function(){sbPlayerLoaded = false;}, onFinish: function(){sbPlayerLoaded = true; performerShadowbox.stdRender();}, enableKeys: false } } );
    }
  },

  /*
    Resize shadowbox-window to custom width and height
   */
  resize: function(width, height){
    if(!height){
      height = stdShadowboxHeight;
    }
    if(!width){
      width = stdShadowboxWidth;
    }
    var sbWidth = $("#sb-player").width();
    var sbLeft = $("#sb-wrapper").position().left;

    if(sbWidth < width){
      var adjustLeft = (width - sbWidth)/2;
      sbLeft = sbLeft - adjustLeft;
    } else {
      var adjustLeft = (sbWidth - width)/2;
      sbLeft = sbLeft + adjustLeft;
    }

    var adjustTop = parseInt(($(window).height() - height - $("#sb-title").height() - $("#sb-info-inner").height())/2);
    $("#sb-wrapper").animate({width: width + 'px', left: sbLeft + 'px'});
    $("#sb-wrapper-inner").animate({height: height + 'px'});
    $("#sb-wrapper").animate({top: adjustTop + 'px'});

    return true;
  },

  showDialogue: function(template, width, height){
    if(!height){
      height = stdShadowboxHeight;
    }
    if(!width){
      width = stdShadowboxWidth;
    }

    var data = new Object();
        data.action = 'getDialogue';
        data.template = template;

        var dataString = $.toJSON(data);

        $.post('ajax/template.php', {data: dataString}, function(res){
            var obj = $.evalJSON(res);
            if(obj.success == 1){
              performerShadowbox.stdOpen(obj.tpl, height, width);
            } else {
              //Could not get template
            }
        });
  },

  showError: function(errorHeadline, errorMessage, width, height){
    if(!height){
      height = stdShadowboxHeight;
    }
    if(!width){
      width = stdShadowboxWidth;
    }

    var data = new Object();
        data.action = 'getErrorDialogue';
        data.errorHeadline = errorHeadline;
        data.errorMessage = errorMessage;

        var dataString = $.toJSON(data);

        $.post('ajax/template.php', {data: dataString}, function(res){
            var obj = $.evalJSON(res);
            if(obj.success == 1){
              performerShadowbox.stdOpen(obj.tpl, height, width);
            } else {
              //Could not get template
            }
        });
  },

  stdRender: function(){
    $("a.button").wrButton();
    //Run again, if player not loaded first time
    var runAgain = setTimeout(function(){
      $("a.button").wrButton();
    }, 500);
    var runAgain = setTimeout(function(){
      $("a.button").wrButton();
    }, 1000);
    var runAgain = setTimeout(function(){
      $("a.button").wrButton();
    }, 2000);
  },

  close: function(){
    Shadowbox.close();
  }
}
