activeShadowBox = null;
var J = jQuery.noConflict();
function ShadowBox(settings){
  var $ = jQuery;
  var settings = $.extend({
    contentWidth:300,
    contentHeight:'auto',
    top: false,
    left: false,
    url: false,
    customContent: 'Custom content, change it in settings.',
    callType: 'POST',
    loadingMsg: 'Please wait, loading...'
  }, settings);
  this.contentDiv = null;
  this.closeButton = null;
  this.init = function(){
    if (activeShadowBox) activeShadowBox.remove();
    var tmpShadowBox = $(document.createElement('div')).addClass('shadow_box_container');
    var tmpTable = $(document.createElement('table')).attr({cellPadding:0,cellspacing:0});
    for (var i = 1; i <= 3; i++){
      var rowClass = '';
      switch(i){
        case 1: rowClass = 'first'; break;
        case 2: rowClass = 'second'; break;
        case 3: rowClass = 'third'; break;
      }
      var row = $(document.createElement('tr')).addClass(rowClass);
      for(j = 1; j <= 3; j++){
        switch(j){
          case 1: cellClass = 'first'; break;
          case 2: cellClass = 'second'; break;
          case 3: cellClass = 'third'; break;
        }
        var cell = $(document.createElement('td')).addClass(cellClass);
        row.append(cell);
        if (i == 2 && j == 2){
          this.contentDiv = $(document.createElement('div')).attr('id', 'shadowBoxContentBox').addClass('content').css({'width':settings.contentWidth, 'height':settings.contentHeight}).html(settings.loadingMsg);
          this.closeButton = $(document.createElement('div')).addClass('close');
          tmpShadowBox.append(this.closeButton);
          cell.append(this.contentDiv);
        }
      }
      tmpTable.append(row);
    }
    tmpShadowBox.append(tmpTable);
    $.extend(this, tmpShadowBox);
    this.css({
      top: settings.top ? settings.top : $(window).height() / 2 - 100 + $(window).scrollTop(),
      left: settings.left ? settings.left : $(window).width() / 2 - settings.contentWidth / 2
    })
    this.closeButton.bind('click', function(){
      tmpShadowBox.fadeOut(500, function(){
        tmpShadowBox.remove();
      })
    })
    document.body.appendChild(this.get(0));
    activeShadowBox = this;
  }
  this.init();

  this.initCall = function(){
    var tmpThis = this;
    $.ajax({
      url: settings.url,
      data: {fromShadow:1},
      type: settings.callType,
      success: function(data, status){
        tmpThis.contentDiv.html(data);
      }
    })
  }

  this.parseInitCallJson = function(){
    
  }

  this.innerCall = function(url, params){
    var tmpThis = this;
    var params = $.extend({fromShadow:1}, params)
    $.ajax({
      url: url,
      type: 'POST',
      data: params,
      success: function(data, status){
        tmpThis.contentDiv.html(data);
      }
    })
  }
  
  if (settings.url != false){
    this.initCall();
  }else{
    this.contentDiv.html(settings.customContent);
  }
}

function ShadowBoxConfirm(settings){
  var $ = jQuery;
  var settings = $.extend({
    contentWidth:300,
    top: false,
    left: false,
    url: false,
    customContent: 'Custom content, change it in settings.',
    callType: 'POST',
    loadingMsg: 'Please wait, loading...'
  }, settings);
  this.contentDiv = null;
  this.closeButton = null;
  this.init = function(){
    if (activeShadowBox) activeShadowBox.remove();
    var tmpShadowBox = $(document.createElement('div')).addClass('shadow_box_container');
    var tmpTable = $(document.createElement('table')).attr({cellPadding:0,cellspacing:0});
    for (var i = 1; i <= 3; i++){
      var rowClass = '';
      switch(i){
        case 1: rowClass = 'first'; break;
        case 2: rowClass = 'second'; break;
        case 3: rowClass = 'third'; break;
      }
      var row = $(document.createElement('tr')).addClass(rowClass);
      for(j = 1; j <= 3; j++){
        switch(j){
          case 1: cellClass = 'first'; break;
          case 2: cellClass = 'second'; break;
          case 3: cellClass = 'third'; break;
        }
        var cell = $(document.createElement('td')).addClass(cellClass);
        row.append(cell);
        if (i == 2 && j == 2){
          this.contentDiv = $(document.createElement('div')).addClass('content').css('width', settings.contentWidth).html(settings.loadingMsg);
          this.closeButton = $(document.createElement('div')).addClass('close');
          tmpShadowBox.append(this.closeButton);
          cell.append(this.contentDiv);
        }
      }
      tmpTable.append(row);
    }
    tmpShadowBox.append(tmpTable);
    $.extend(this, tmpShadowBox);
    this.css({
      top: settings.top ? settings.top : $(window).height() / 2 - 100 + $(window).scrollTop(),
      left: settings.left ? settings.left : $(window).width() / 2 - settings.contentWidth / 2
    })
    this.closeButton.bind('click', function(){
      tmpShadowBox.fadeOut(500, function(){
        tmpShadowBox.remove();
      })
    })
    document.body.appendChild(this.get(0));
    activeShadowBox = this;
  }
  this.init();
}
