// ==================================================================== =
// Lot's of code here lifted and modified from the mighty Lightbox. Gerard
// Gualberto =
// ====================================================================


function showFloater(element, focus_element, use_grow){
  var use_grow = (use_grow == null) ? true : use_grow;
	var sn = document.getElementById(element);
	if (sn==null){return;}
	setUp();
	center(element);
	Element.setStyle('overlay', {height: getHeight()});
	if(use_grow) {
	  new Effect.Appear('overlay', { duration: 0.3, from: 0.0, to: 0.8, queue: 'front' });
  	new Effect.Grow(element, {direction: 'center', duration: 0.3, queue: 'end'});
	} else {
	  new Effect.Appear('overlay', { duration: 0.3, from: 0.0, to: 0.8 });
	  new Effect.Appear(element, { duration: 0.3 });	  
	}
	//focus stuff...
	if(focus_element==null){ 
		//if we don't specify a field to focus on we'll look for the first field in the first form
		forms = $(element).getElementsByTagName("form");
		if(forms.length > 0){
			theForm = forms[0];
			setTimeout("Form.focusFirstElement(theForm);",1500);
		}
	}else{
		setTimeout("Field.focus('"+focus_element+"')",1500);
	}
	return false;
}

function hideFloater(element, use_shrink){
  var use_shrink = (use_shrink == null) ? true : use_shrink;
  tearDown();
	var sn = document.getElementById(element);
	if (sn==null){return;}
	if(use_shrink) {
	  new Effect.Shrink(element, { direction: 'center', duration: 0.2, queue: 'front' });
  	new Effect.Fade('overlay', { duration: 0.2, queue: 'end'});
	} else {
	  new Effect.Fade(element, { duration: 0.3 });
  	new Effect.Fade('overlay', { duration: 0.3 });
	}
	if($('errorExplanation')!=null){
		new Effect.Shrink('errorExplanation', {direction: 'center', duration: 0.2});
	}
	return false;
}

var visible_ads = [];

function setUp(){
	//sets up the page to ready for the floater
	// var objBody = document.getElementsByTagName("body").item(0);
	// var objOverlay = document.createElement("iframe");
	// objOverlay.setAttribute('id','overlay');
	// objOverlay.setAttribute('src','/floater_system.html');
	// objOverlay.setAttribute('scrolling','no');
	// objOverlay.setAttribute('frameborder','0');
	// objOverlay.style.display = 'none';
	// objBody.appendChild(objOverlay);
	
	var body = $$('body').first();
	if(!$('overlay')) {
    overlay = Builder.node('iframe', { id:'overlay', src:'/floater_system.html', scrolling:'no', frameborder:'0', style:'display:none;' });
    body.appendChild(overlay);
	}

      visible_ads = $$('.flash_ad').select(function(i) { return i.visible()});
      visible_ads.each(function(i) { i.style.visibility = 'hidden'; });
}

function tearDown() {
  visible_ads = visible_ads || [];
  visible_ads.each(function(i) { i.style.visibility = ''; });
}


function center(element){
    try{
        element = document.getElementById(element);
    }catch(e){
        return;
    }

    var my_width  = 0;
    var my_height = 0;

    if ( typeof( window.innerWidth ) == 'number' ){
        my_width  = window.innerWidth;
        my_height = window.innerHeight;
    }else if ( document.documentElement && 
             ( document.documentElement.clientWidth ||
               document.documentElement.clientHeight ) ){
        my_width  = document.documentElement.clientWidth;
        my_height = document.documentElement.clientHeight;
    }
    else if ( document.body && 
            ( document.body.clientWidth || document.body.clientHeight ) ){
        my_width  = document.body.clientWidth;
        my_height = document.body.clientHeight;
    }

    element.style.position = 'absolute';
    element.style.zIndex   = 999999;

    var scrollY = 0;

    if ( document.documentElement && document.documentElement.scrollTop ){
        scrollY = document.documentElement.scrollTop;
    }else if ( document.body && document.body.scrollTop ){
        scrollY = document.body.scrollTop;
    }else if ( window.pageYOffset ){
        scrollY = window.pageYOffset;
    }else if ( window.scrollY ){
        scrollY = window.scrollY;
    }

    var elementDimensions = Element.getDimensions(element);

    var setX = ( my_width  - elementDimensions.width  ) / 2;
    var setY = ( my_height - elementDimensions.height ) / 2 + scrollY;

    setX = ( setX < 0 ) ? 0 : setX;
    setY = ( setY < 0 ) ? 0 : setY;
		
    element.style.left = setX + "px";
    element.style.top  = setY + "px";
}
