var LLdefaults = {
	layerIds : ['legalLayer', 'countryLayer'],
	layerBdIds : ['legalLayerBackground', 'countryLayerBackground'],
	edtModeId : 's4-ribbonrow',
	bodyOverflClassName: 'hideSiteOverflow'
};
var LLOBJ;
var LLID;

function checkLLayerDisplay() {
	for(var i=0; i<LLdefaults.layerIds.length; i++){
		var l = document.getElementById(LLdefaults.layerIds[i]);
		if(l!=null){
			LLOBJ = l;
			LLID = i;		
			return true;	
		}
	}
}
function setLLayerBackground(id){

	var layerBg = document.getElementById(LLdefaults.layerBdIds[id]);

	if(layerBg!=null){
		$(layerBg).find('iframe').remove()
		var csA = checkLLSiteActions();
		var oH = getLLHeight2WindowHeight()?getLLSiteAndBackgroundHeight()+100:$(document).height();
		if(csA)
			$('body').css({
				'margin-top':getSiteActionsMenuHeight(), 
				'position':'relative'
			});	
		$(layerBg).css({
			'height': oH,
			'z-index': csA?21:5000
		});  
		$(layerBg).append('<iframe style="height: '+oH+'px; width: 100%; z-index: 400000;filter: alpha(opacity=0);  position: relative" src="about:blank" id="layerBackgroundIframe" class="layerBackgroundIframe" frameborder="0"></iframe>'); 
	}
}
function changeLLWindowOverflow(disp){
	var $LLscrollelem = $.browser.msie?$('html'):$('body');
	$LLscrollelem.scrollTop();
	if(disp){		
		if(getLLHeight2WindowHeight()){
			$LLscrollelem.css({
				'height':getLLSiteAndBackgroundHeight()
			});
			$LLscrollelem.removeClass(LLdefaults.bodyOverflClassName);
		}else{
			$LLscrollelem.addClass(LLdefaults.bodyOverflClassName);
		}
	}else{
		if(checkLLSiteActions())
			$('body').removeAttr('style');
			
		$LLscrollelem.attr('class', '');
		$LLscrollelem.removeClass(LLdefaults.bodyOverflClassName);
	}
}
function setLLayerStyles(lobj){
	$(lobj).css({
		'top': getLLPosTop()
	});
}
function legalLayerInit(){
	
	if(checkLLayerDisplay()){	
		if($(LLOBJ).css('display') != 'none')	
		{
			setLLayerStyles(LLOBJ);
			changeLLWindowOverflow(true);
			setLLayerBackground(LLID);
		}
	}
	
	// add window resize event
	$(window).resize(function(){
		if(checkLLayerDisplay()){
			if($(LLOBJ).css('display') == 'block'){
				$(window).scrollTop(0);
				setLLayerBackground(LLID);
				changeLLWindowOverflow(true);
			}
		}
	});
	
	// add close layer event
	$('.securityHiddenLayerContent').find('.closeHiddenLayerLink').click(function(){
		changeLLWindowOverflow(false);
	});
}

function checkLLSiteActions(){
	if($('#'+LLdefaults.edtModeId).length>0)
		return true;
	else
		return false;
}
function getLLHeight2WindowHeight(){
	if(getLLContentHeight()+getLLPosTop()>$(window).height())
		return true;
	else 
		return false;
}
function getLLSiteAndBackgroundHeight(){
	return getSiteActionsMenuHeight()+getLLHeadHeight()+$('.outerWrapper').height();
}
function getSiteActionsMenuHeight(){
	return $('#'+LLdefaults.edtModeId).height();
}
function getLLHeadHeight(){
	return $('.head').height();
}
function getLLContentHeight(){
	if($('#legalNoticeLayer').length>0 && $('#legalNoticeLayer').height()>0)
		return $('#legalNoticeLayer').height();
	if($('#countryNoticeLayer').length>0 && $('#countryNoticeLayer').height()>0)	
		return $('#countryNoticeLayer').height();	
}
function getLLPosTop(){
	return checkLLSiteActions()?getLLHeadHeight()+getSiteActionsMenuHeight():getLLHeadHeight();
}

function showHideLayer(layerid, disp, noReturn) {

  if (!layerid || !disp)
    return;

  if (!$('*').find('#' + layerid).length)
    return;

  $('#' + layerid).displayLayer({
    disp: disp,
    defaultHeight: 450,
    minHeight: 200,
    layerWidth: 467,
    edtmodeClass: 'editorinput',
    layerFrame: 'fullPageLayer',
    innerLayerContent: 'fullPageHiddenLayerContent',
    layerBackground: 'fullPageLayerBackground',
    layerContent: 'layercontent',
    layerContentArea: 'contentarea'
  });
  if (noReturn)
    return false;
}

function hideLegalLayer() {
  
  if (!$('*').find('#legalLayer').length)
    return false;
    
  $('#legalLayer').css({
    'display': 'none'
  });
  $('#legalLayerBackground').css({
    'display': 'none'
  });
  
  changeLLWindowOverflow(false);
  
  return false;
  
}

function showCountryLayer() {

  if (!$('*').find('#countryLayer').length)
    return false;
    
  $('#countryLayer').css({
    'display': 'block'
  });
  $('#countryLayerBackground').css({
    'display': 'block'
  });

  setLLayerStyles($('#countryLayer'));
  changeLLWindowOverflow(true);  
  setLLayerBackground(1);    
    
  return false;
  
}

function hideCountryLayer() {
  
  if (!$('*').find('#countryLayer').length)
    return false;
    
  $('#countryLayer').css({
    'display': 'none'
  });
  $('#countryLayerBackground').css({
    'display': 'none'
  });
  
  changeLLWindowOverflow(false);
  
  return false;
  
}

(function($){

$.fn.displayLayer = function(settings){
    
    var defaults = {	
      disp:'none',
      defaultHeight: 0,
      minHeight: 0,
      layerWidth: 0,
      edtmodeClass: 'ms-SPZoneLabel',
      layerFrame:'',
      innerLayerContent:'',
      layerBackground: '',
      layerContent: '',
      layerContentArea: '',
      siteOverflowClass: 'hideSiteOverflow',
      ie6IframeClass:'layerBackgroundIframe',
      ie6IframeID:'layerBackgroundIframe'
    };		
        
    var options = $.extend(defaults, settings);
    
    var $layerobj = $(this);	
    var edtmode = $('.'+options.edtmodeClass).length>0?true:false;
    	
    // default objects
    var $scrollelem        = $.browser.msie?$('html'):$('body');
    var $layerFrame        = $('.'+options.layerFrame);
    var $innerLayerContent = $('.'+options.innerLayerContent);
    var $layerBg           = $('.'+options.layerBackground);
    var $layerContent      = $layerobj.find('.'+options.layerContent);
    var $layerContentArea  = $layerContent.find('div.'+options.layerContentArea);

    // Detect IE6 (boolean).
    var $IE6 = typeof document.addEventListener !== 'function' && !window.XMLHttpRequest;
    
    this.each(function(){			
            
      if(getWindowHeight()>$innerLayerContent.height()){
        if(!edtmode){
          if(options.disp=='block' && !$scrollelem.hasClass(options.siteOverflowClass))
            $scrollelem.addClass(options.siteOverflowClass);
          else
            $scrollelem.removeClass(options.siteOverflowClass);
        }	
      }	
            
      function setLayerStyles(){
        $layerContent.css({'overflowX' : edtmode?'visible':'hidden'});
        
        $layerBg.css({
          height: $(document).height()
        });

        var layerContentHeight = $layerContentArea.height();
        
        if(layerContentHeight>getWindowHeight() && options.defaultHeight>getWindowHeight()){
          $layerContent.css({
            overflowY : 'scroll',
            overflowX : 'hidden',
            height    : options.minHeight,
            width     : options.layerWidth
          });					
        }else if(layerContentHeight>options.defaultHeight){
          $layerContent.css({
            overflowY : 'scroll',
            overflowX : 'hidden',
            height    : options.defaultHeight,
            width     : options.layerWidth
          });					
        }else{
          $layerContent.css({
            overflowY : edtmode?'scroll':'hidden',
            overflowX : 'hidden',
            height    : edtmode?options.defaultHeight:layerContentHeight, //:options.minHeight,
            width	  : options.layerWidth
          });	
        }
        $layerFrame.css({
          top: edtmode?getTopPos()+100:getTopPos()
        });
		if (edtmode) {
		  $layerBg.css({
		    'z-index' : '21'
		  });
		  $layerFrame.css({
		    'z-index' : '22'
		  });
		  
		}
      }
      
      function setLayerContent(){
        if(options.disp=='block'){
          $layerFrame.append($layerobj);					
          $layerBg.append('<iframe style="height: 100%; width: 100%; z-index: 4000;filter: alpha(opacity=0);" src="about:blank" id="'+options.ie6IframeID+'" class="'+options.ie6IframeClass+'" frameborder="0"></iframe>');
        }else{
          $layerFrame.remove($layerobj);										
          $('#'+options.ie6IframeID).remove();
        }
      }			
      
      function layerDisplay(){
        //set layer block/non
        $layerFrame.css({
          display:options.disp
        });
        $layerobj.css({
          display:options.disp
        });
        $layerBg.css({
          display: options.disp		  
        });					
      }
      layerDisplay();			
      setLayerContent();
      setLayerStyles();			
    });
    
    function getScollPos(){
      // get scroll position	
      if(document.defaultView)
        return document.defaultView.pageYOffset;
      else
        return document.documentElement.scrollTop;
    }
    
    function getTopPos(){
	  return getScollPos()+(getWindowHeight()-$layerobj.height())/2;
    }
    
    function getWindowHeight(){
      return $(window).height();
    }

  };	
})(jQuery);
