var putpat = {
    globals : {
        FLASH_NOTICE : null
    },

    flashNotice : function(text,animate) {
        if(text) {
          // Für Startseite (blendet den Start-Button wieder ein)
          $('#top_left #login_form #login_button').show();
        }
        
        if(animate === undefined) {
            animate = true;
        }

        text = text || putpat.info.flashNotice;
        if( !text ) { return; }

        var flash = 
            $("<div class='flash'>                  "+
              "  <div class='flash_components'>     "+
              "    <div class='flash_content'></div>"+
              "  </div>                             "+
              "</div>");
        flash.find(".flash_content").text(text);
        flash.disableSelection();
        function close() {
            flash.fadeOut(function(){
                $(this).remove();
            });
        }
        $('body').prepend(flash);
        flash.find(".close_button").click(close);

        if(animate) {
            flash.hide();
            flash.fadeIn('fast', function(){
	             setTimeout(close, 6000); 
            });
        }
        flash.css('cursor', 'pointer');
        putpat.info.flashNotice = null; 
    }
}

putpat.globals.INNER_CONTAINER_HEIGHT = 0;

function toggleLayers( layer0, layer1 ) {
	$(layer0).toggle();
	$(layer1).toggle();
}

function showSpamIntructionsFor(provider) {
  switch (provider) {
    case "gmx":
      text = liqr.util.tr('texts.email_whitelist_instructions_gmx');
      break;
    case "web.de":
      text = liqr.util.tr('texts.email_whitelist_instructions_webde');
      break;
    default:
      text = '';
  }
  
  if(text != '') {
	  liqr.ui.MessageDialog({
       message : text
    }).open();
	};
}

function showWebDeSpamInstructions() {
    showSpamIntructionsFor("web.de");
}

function showGMXSpamInstructions() {
    showSpamIntructionsFor("gmx");
}

function adjustSubselectors() {
    return;
    var subselectorDiv = $(".pane_tabss")
    var subselectorContainer = $(".pane_tabss_container")    
    var subselectors = $(".pane_tabss .pane_tabs");
    var width = 0;
    var zIndex = 1;
    var corner = $("<div class='pane_tabs_active_right_corner'></div>");
    subselectorDiv.find(".pane_tabs_active").after(corner);
    corner.css("position", "absolute");    
    subselectors.each(function(i,s) { 
        var sel = $(s);
        sel.css({
            "left" : width,
            "z-index" : zIndex
        });
        width+=sel.outerWidth()-5;
        if(sel.hasClass("pane_tabs_active")) {
            sel.css("z-index", 100);
            corner.css({
                "left" : width+4,
                "z-index" : 100
            });
            
            width+=corner.outerWidth();
        }

        zIndex+=1;
    });

    subselectorDiv.width(width);
    subselectorContainer.width(width+5);    
}

function roundRect(sel) {
  switch( sel.length ) {
  case 0:
    return;
  case 1:
    break;
  default:
    $.each(sel,function(i,el){
      roundRect($(el));
    })
    return;
  }
  var self = $(sel);


  if( !( self.css("position")=='absolute' || 
         self.css("position")=='relative') ) {
    self.css("position", "relative");
  }
  var rectWidth = self.outerWidth();
  
  if( self.attr("class").match(/pane_width_(\d+)/) ) {
      rectWidth = parseInt(RegExp.$1, 10 );
  }

  self.wrapInner("<div class='rounded_pane_wrapper'></div>");
  self.css("background-color", "transparent");
  var wrapper = self.find(".rounded_pane_wrapper");
  self.css("padding-bottom", 
    parseInt(self.css("padding-bottom"), 10 )+30); 

  var caps = {};
  var loadedImages = [];

  $.each(['top', 'middle', 'bottom'], function(i,pos){
      var cap = caps[pos] = $("<div></div>");
      // Auf der Startseite sollen die etwas dunkleren Grafiken verwendet werden
      var path = "/images/layout/" + ((window.location.pathname === '/') ? "index_" : "content_area_") +rectWidth+"_"+pos+".png"
      var img = $("<img />");
      img.load(function(){
          loadedImages.push($(this));
          cap.css({
            "z-index" : -1, 
            "position" : 'absolute'
          });
          
          cap.width(img.attr("width"));

          if( pos != 'middle') {
              cap.height(img.attr("height"));
              cap.css("background", "url("+path+") no-repeat");
          } else {
              cap.css("background", "url("+path+") repeat-y");                    
          }
          if(loadedImages.length == 3) {
            caps['middle'].css({
              top : caps['top'].height(),
              bottom : caps['bottom'].height()
            })
          }
      });

      img.attr("src", path);

  });
  caps['bottom'].css("bottom",0)          
  wrapper.before(caps['bottom']);                        
  wrapper.before(caps['middle']);        
  wrapper.before(caps['top']);

  return self;
};

function createRoundRects() {
    roundRect($(".rounded_pane"));        
}

function adjustNavigationBackground() {
    $(".outer_layout").before("<div id='navigation_background'></div>");
    var lastItem = $("#navigation .menu_item:last");
    var width = parseInt($(window).width(), 10) - 
                parseInt(lastItem.offset().left+lastItem.width(),10);
    if( width < 0 ) { 
        width = 0; 
    } else {
        width+=200
    }

    $("#navigation_background").width(width);
}

/* sets the cursor focus to the first available TextField by default */
function setInitialFocus() {
  focusField = $.find('input[type="text"]')[0];
  if(focusField != null) {
    focusField.focus();
  }
}


$(function(){
    createRoundRects();
    adjustSubselectors(); 

    if(putpat.Menu) {
        putpat.Menu();        
        $(".button").disableSelection();
        $(".main_menu_logout_link").click( function(){
            Putpat.logout();
            return false;
        }); 
    }
    
    putpat.flashNotice();
    setInitialFocus();
});

/**
 * Returns the Numeric Id, in case the id-attribute
 * is set and rails-like
 * $("<div id='user_78'></div>").extractId() => 78
 */

$.fn.extractId = function(attr) {
    return $.extractIdFromValue($(this).attr("id"));
}

/**
 * Extracts an ID from a Rails like DOM-Id
 * $.extractIdFromValue( "stoopid_user_89" ) => 89
 */
 
$.extractIdFromValue = function(val) {
    return parseInt(val.match(/(\d+)$/)[1],10);
}


/**
 * Submits the queried form as Ajax-request
 */

$.fn.ajaxSubmit = function(callback) {
    var form = $(this);
    
    callback = callback || function(){}
    $.ajax({
      data: $.param( $(form).serializeArray()), 
      dataType:'script',
      success: callback,
      type:(form.attr("method") || "post" ), 
      url:form.attr("action")
    })
}
