function getFlashVersion(){
    var fv = Browser.Plugins.Flash.version;
    return fv;
}

     
function getFileExtension(fileName){
    var fileExtension = null;    
    var dotIndex = fileName.lastIndexOf(".");
    
    if(dotIndex !== -1){
      var fileExtension = fileName.substr((dotIndex+1));
    }
    
    return fileExtension;
}
  
  
function correctFile(fileExtension){
    var extensionAllowed = new Array("jpg","png","gif","swf");
    
    for(var i=0;i<extensionAllowed.length;i++){
        if(extensionAllowed[i] === fileExtension){
          return true;
        }
    }
    return false;
}


function addHttp(wwwAddress){
  var pattern = /^(http[s]?):\/\/{1}/;
  if(!(pattern.test(wwwAddress))){
    wwwAddress = 'http://'+ wwwAddress;
  }
  return wwwAddress;
}


var config = {
  imgPath : "_images/",
  flashPath : "./",
  imageCloseSrc : "close.gif",
  cookieTimeLife : 7, // days
  cookieName : "multipleRun",
  cookieValue : "multipleRun"
}


function runTopLayer(fileName,topLayerHref,multipleRun){
  
  var multipleRun = (multipleRun === undefined) ? true : multipleRun;
  
  if( correctFile(getFileExtension(fileName) && getFileExtension(config.imageCloseSrc) ) ){
    if(multipleRun){
      createTopLayer(config.imgPath,config.flashPath,fileName,config.imageCloseSrc,topLayerHref);
    }
    else{
      if( isCookieEnabled() ){
        if( !(getCookie(config.cookieName)) ){
          setCookie(config.cookieName, config.cookieValue, config.cookieTimeLife);
          createTopLayer(config.imgPath,config.flashPath,fileName,config.imageCloseSrc,topLayerHref);
        }
      }
    }
  }
  
}



function createTopLayer(imgPath,flashPath,fileName,imageCloseSrc,topLayerHref){

    window.addEvent('domready', function(){
        
        var topLayer = new Element('div',{
            'id' : 'topLayer',
            'styles': {
              'position' : 'absolute',
              'z-index' : '10000'
            }
        });
        
        var topLayerFlash = new Element('div',{
            'id' : 'topLayerFlash',
            'styles': {
              'position' : 'relative',
              'z-index' : '100000'
            }
        });
        
      	var topLayerLinkType = (topLayerHref === undefined) ? 'div' : 'a';      	
      	var topLayerLink = new Element(topLayerLinkType,{
            'id' : 'topLayerLink',
            'styles': {
              'display' : 'block',
              'position' : 'absolute',
              'top' : 0,
              'left' : 0,
              'z-index' : '1000000',
              'outline': '0px',
              'background' : 'transparent url('+ imgPath +'pix.gif)'
            }
        });
        
        if( topLayerLinkType == 'a'){
          topLayerLink.setProperties({
            'target' : '_blank',
            'href' : addHttp(topLayerHref)
          });
        }


      	var topLayerClose = new Element('div',{
            'id' : 'topLayerClose',
            'styles': {
              'position' : 'absolute',
              'top' : '0px',
              'z-index' : '10000000',
              'cursor' : 'pointer',
              'background' : 'transparent url('+ imgPath + imageCloseSrc +') no-repeat center'
            }
        });
      
      
      
        var closeImage = new Asset.image(imgPath + imageCloseSrc,{
          onload : function(){
            topLayerClose.setStyles({
              'width' : this.width,
              'height' : this.height
            });
          }
        });
        

        switch( getFileExtension(fileName) ){
          case 'swf' : {
              var myRequest = new Request({
                method: 'post',
                url: '_getFlashDimensions.php',
                evalResponse: true,
                onSuccess : function(responseText, responseXML){

                    var screenSize = window.getSize();
                    var screenPosition = document.getScroll();
                    
                    
                    var topLayerTop = screenPosition.y + ((screenSize.y - flashHeight)/2);
                    var topLayerLeft = ((screenSize.x - flashWidth)/2);
                    
  
                    topLayer.setStyles({
                      'top' : topLayerTop,
                      'left' : topLayerLeft,
                      'width' : flashWidth,
                      'height' : flashHeight
                    });
                    
                    topLayerFlash.setStyles({
                      'width' : flashWidth,
                      'height' : flashHeight
                    });
                    
                                
                    topLayerClose.setStyles({
                      'right' :  0
                      //'left' : (flashWidth - closeImage.width)
                    });
                    
                    topLayerLink.setStyles({
                      'width' : flashWidth,
                      'height' : flashHeight
                    });
                    
                    topLayer.inject(document.body,'top');
                    topLayerFlash.inject(topLayer);
                    topLayerLink.inject(topLayer);
                    topLayerClose.inject(topLayer);

                    var mySwiff = new Swiff(flashPath + fileName, {
                        id : 'myFlashBanner',
                        width : flashWidth,
                        height : flashHeight,
                        container : topLayerFlash,
                        params: {
                            wmode: 'transparent',
                            bgcolor: '#ffffff'
                        },
                        vars: {
                            myVariableString: 'hello'
                        }
                
                    });

                    topLayerClose.addEvent('click', function(event) {
                      event.stop();
                      topLayer.destroy();
                    });
                    
                    topLayer.tween('top', topLayerTop);
                    
                }
              });
              
              myRequest.send('flashFileName='+ flashPath + fileName);

              break;
          }
          default : {
              var topImage = new Asset.image(imgPath + fileName, {
            		id : 'topImage',
            		alt : '',
                onload : function(){
                  var screenSize = window.getSize();
                  var screenPosition = document.getScroll();
                  
                  
                  var topLayerTop = screenPosition.y + ((screenSize.y - this.height)/2);
                  var topLayerLeft = ((screenSize.x - this.width)/2);
                  

                  topLayer.setStyles({
                    'top' : topLayerTop,
                    'left' : topLayerLeft
                  });
                  
                              
                  topLayerClose.setStyles({
                    'left' : (this.width - closeImage.width)
                  });
                  
                  topLayerLink.setStyles({
                    'width' : this.width,
                    'height' : this.height,
                    'background' : 'transparent url('+ imgPath + fileName +') no-repeat center'
                  });
                  
                  topLayer.inject(document.body,'top');
                  topLayerClose.inject(topLayer);
                  topLayerLink.inject(topLayer);
          
                  
                  topLayerClose.addEvent('click', function(event) {
                    event.stop();
                    topLayer.destroy();
                  });
                  
                  topLayer.tween('top', topLayerTop);
                }
                
            	});
              break;
          }
        }
      
      
        window.addEvent('scroll', function() {
        	if (topLayer) {
            var screenSize = window.getSize();
            var screenPosition = document.getScroll();
            var topLayerTop = screenPosition.y + ((screenSize.y - topLayerLink.getStyle('height').toInt() )/2);
        		topLayer.tween('top', topLayerTop);
        	}
        });
      
    
    });
}

