
// -----------------------------------------------------------------------------------
//	AdVent v 0.1 - 2007-11-20
//	by Sindre Wimberger - wimberger@echonet.at
//
// -----------------------------------------------------------------------------------
//
// AdVent.init(x1);
//
// Configuration
// x1 || CustomerID
// -----------------------------------------------------------------------------------
var AdVent = {	
	css: "http://adventkalender.echonet.at/assets/2009/js.css",
	iframe: "http://adventkalender.echonet.at/2009/diehelferwiens/iframe",
	opacity: "0.9",
	bgcolor: "68BBF1",
	closeClick: "true",
	host: 'http://adventkalender.echonet.at',
	init: function(autostart,fixed) {
        if (autostart) {
            AdVent.autostart = true;
        }
        if (fixed) {
            AdVent.fixed = true;
        }
		if (AdVent.$('adventstart') || AdVent.autostart) { // Wenn Startbutton oder Autostart
			AdVent.browserCheck();
			AdVent.CSSload();
			AdVent.create();
        }
		if (AdVent.$('adventstart')) { // Startbutton
			AdVent.starter = AdVent.$('adventstart');
			AdVent.starter.onclick = function() { AdVent.start(this); return false }
		}
		if (AdVent.$('adventstart2')) { // Startbutton 2
			AdVent.starter = AdVent.$('adventstart2');
			AdVent.starter.onclick = function() { AdVent.start(this); return false }
		}
		if (AdVent.autostart) { // Autostart
			 AdVent.start();
		}
	},
	CSSload: function() {	
  	if(!AdVent.$('adventcss')) {
		var headTag = document.getElementsByTagName("head")[0];
			// Insert style tag into header
			var tag = document.createElement("link");
      tag.id = 'adventcss';
			tag.rel = "stylesheet";
			tag.type = "text/css";
			tag.href = AdVent.css;
			headTag.appendChild(tag);			
    }
	},
	create: function() {
  	if(!AdVent.$('surveyoverlay')) {
		var objBody = document.getElementsByTagName("body").item(0);
		
		var objOverlay = document.createElement("div");
		objOverlay.setAttribute('id','adventoverlay');
		objOverlay.style.display = 'none';
		objBody.appendChild(objOverlay);
		
		var objAdvent = document.createElement("div");
		objAdvent.setAttribute('id','advent');
		objAdvent.style.display = 'none';


		if(!AdVent.fixed) {
      var objAdventClose = document.createElement("a");
      objAdventClose.setAttribute('id','adventclose');
      objAdventClose.setAttribute('href','#');
      objAdventClose.setAttribute('title','Adventkalender schliessen.');
      objAdventClose.innerHTML = "X";
      objAdventClose.onclick = function() { AdVent.end(); return false }
      objAdvent.appendChild(objAdventClose);	
    }
		
		var objAdventIframe = document.createElement("iframe");
		objAdventIframe.setAttribute('src',AdVent.iframe);
//		objAdventIframe.setAttribute('id','adventiframe');
		objAdventIframe.setAttribute('name','adventiframe');
		objAdventIframe.setAttribute('scrolling','no');
		objAdventIframe.setAttribute('frameBorder','0');
    objAdvent.appendChild(objAdventIframe);

		objBody.appendChild(objAdvent);	
   	}
	},
	start: function(ev) {	
		AdVent.hideSelectBoxes();
		AdVent.hideFlash();
		var arrayPageSize = AdVent.getPageSize();
		AdVent.setHeight('adventoverlay', arrayPageSize[1]);
//    AdVent.$('adventoverlay').width = arrayPageSize[0] +"px";
		AdVent.appear('adventoverlay');
    AdVent.startFlash();
		var arrayPageScroll = AdVent.getPageScroll();
		var AdventTop = arrayPageScroll[1] + (arrayPageSize[3] / 15);
    if (arrayPageSize[0] < 600) {
			AdVent.$('advent').style.left = "0";
			AdVent.$('advent').style.marginLeft = "0";
    } else {
			AdVent.$('advent').style.left = "50%";
			AdVent.$('advent').style.marginLeft = "-300px";
    }
		AdVent.setTop('advent', AdventTop);
		AdVent.show('advent');
    AdVent.$('adventclose').focus();
	},
	end: function() {
        if(!AdVent.fixed) {
            AdVent.starter.focus();
            AdVent.hide('advent');
            AdVent.fade('adventoverlay');
//            AdVent.$('adventoverlay').innerHTML = '';
//						AdVent.$('adventoverlay').removeChild(AdVent.$('adventoverlay').firstChild)
            AdVent.showSelectBoxes();
            AdVent.showFlash();
        }
	},
	addEvent:function( obj, type, fn ) {
		if (obj.addEventListener)
			obj.addEventListener( type, fn, false );
		else if (obj.attachEvent)
		{
			obj["e"+type+fn] = fn;
			obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
			obj.attachEvent( "on"+type, obj[type+fn] );
		}
	},	
	appear:function(element){
		AdVent.$(element).style.display = "block";
	},
	fade:function(element){
		AdVent.$(element).style.display = "none";
	},
	hide:function(element){
		AdVent.$(element).style.display = "none";
	},
	show:function(element){
		AdVent.$(element).style.display = "block";
	},
	startFlash:function(){
		var arrayPageSize = AdVent.getPageSize();
    var requiredMajorVersion = 9;
    var requiredMinorVersion = 0;
    var requiredRevision = 115;
    var hasRightVersion = AdVent.DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);
    if(hasRightVersion) {    
			if(AdVent.fixed) {
				AdVent.closeClick = 'false';
      }      
      AdVent.AC_FL_RunContent(
        'codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0',
        'width', arrayPageSize[0],
        'height', arrayPageSize[1],
        'src', 'http://adventkalender.echonet.at/assets/flash/SnowStorm',
        'quality', 'high',
        'pluginspage', 'http://www.macromedia.com/go/getflashplayer',
        'align', 'middle',
        'play', 'true',
        'loop', 'false',
        'scale', 'exactfit',
        'wmode', 'transparent',
        'flashvars', '&amp;screenWidth='+arrayPageSize[0]+'&amp;screenHeight='+arrayPageSize[1]+'&amp;opacity='+AdVent.opacity+'&amp;bgcolor='+AdVent.bgcolor+'&amp;closeClick='+AdVent.closeClick,
        'devicefont', 'false',
        'id', 'playground_xmas',
        'bgcolor', '#333',
        'name', 'playground_xmas',
        'menu', 'false',
        'allowFullScreen', 'false',
        'allowScriptAccess','always',
        'movie', 'http://adventkalender.echonet.at/assets/flash/SnowStorm',
        'salign', ''
      ); 
    } else {
    	var overlay = AdVent.$('adventoverlay');
    	overlay.style.backgroundColor = '#'+AdVent.bgcolor;
			if(!AdVent.fixed) {
				overlay.onclick = function() { AdVent.end(); }
     	  overlay.style.cursor = 'pointer';        
      }      
   	}
	},
	ControlVersion: function ()
  {
    var version;
    var axo;
    var e;
  
    // NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't in the registry
  
    try {
      // version will be set for 7.X or greater players
      axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
      version = axo.GetVariable("$version");
    } catch (e) {
    }
  
    if (!version)
    {
      try {
        // version will be set for 6.X players only
        axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
        
        // installed player is some revision of 6.0
        // GetVariable("$version") crashes for versions 6.0.22 through 6.0.29,
        // so we have to be careful. 
        
        // default to the first public version
        version = "WIN 6,0,21,0";
  
        // throws if AllowScripAccess does not exist (introduced in 6.0r47)		
        axo.AllowScriptAccess = "always";
  
        // safe to call for 6.0r47 or greater
        version = axo.GetVariable("$version");
  
      } catch (e) {
      }
    }
  
    if (!version)
    {
      try {
        // version will be set for 4.X or 5.X player
        axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
        version = axo.GetVariable("$version");
      } catch (e) {
      }
    }
  
    if (!version)
    {
      try {
        // version will be set for 3.X player
        axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
        version = "WIN 3,0,18,0";
      } catch (e) {
      }
    }
  
    if (!version)
    {
      try {
        // version will be set for 2.X player
        axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
        version = "WIN 2,0,0,11";
      } catch (e) {
        version = -1;
      }
    }
    
    return version;
  },

// JavaScript helper required to detect Flash Player PlugIn version information
	GetSwfVer: function (){
    // NS/Opera version >= 3 check for Flash plugin in plugin array
    var flashVer = -1;
    
    if (navigator.plugins != null && navigator.plugins.length > 0) {
      if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
        var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
        var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
        var descArray = flashDescription.split(" ");
        var tempArrayMajor = descArray[2].split(".");			
        var versionMajor = tempArrayMajor[0];
        var versionMinor = tempArrayMajor[1];
        var versionRevision = descArray[3];
        if (versionRevision == "") {
          versionRevision = descArray[4];
        }
        if (versionRevision[0] == "d") {
          versionRevision = versionRevision.substring(1);
        } else if (versionRevision[0] == "r") {
          versionRevision = versionRevision.substring(1);
          if (versionRevision.indexOf("d") > 0) {
            versionRevision = versionRevision.substring(0, versionRevision.indexOf("d"));
          }
        }
        var flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
      }
    }
    // MSN/WebTV 2.6 supports Flash 4
    else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;
    // WebTV 2.5 supports Flash 3
    else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;
    // older WebTV supports Flash 2
    else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;
    else if ( AdVent.isIE && AdVent.isWin && !AdVent.isOpera ) {
      flashVer = AdVent.ControlVersion();
    }	
    return flashVer;
  },
  DetectFlashVer: function (reqMajorVer, reqMinorVer, reqRevision)
  {
    versionStr = AdVent.GetSwfVer();
    if (versionStr == -1 ) {
      return false;
    } else if (versionStr != 0) {
      if(AdVent.isIE && AdVent.isWin && !AdVent.isOpera) {
        // Given "WIN 2,0,0,11"
        tempArray         = versionStr.split(" "); 	// ["WIN", "2,0,0,11"]
        tempString        = tempArray[1];			// "2,0,0,11"
        versionArray      = tempString.split(",");	// ['2', '0', '0', '11']
      } else {
        versionArray      = versionStr.split(".");
      }
      var versionMajor      = versionArray[0];
      var versionMinor      = versionArray[1];
      var versionRevision   = versionArray[2];
  
            // is the major.revision >= requested major.revision AND the minor version >= requested minor
      if (versionMajor > parseFloat(reqMajorVer)) {
        return true;
      } else if (versionMajor == parseFloat(reqMajorVer)) {
        if (versionMinor > parseFloat(reqMinorVer))
          return true;
        else if (versionMinor == parseFloat(reqMinorVer)) {
          if (versionRevision >= parseFloat(reqRevision))
            return true;
        }
      }
      return false;
    }
  },
	browserCheck:function(){
        AdVent.isIE  = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
        AdVent.isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
        AdVent.isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;
	},
	$:function(strId){
		return document.getElementById(strId);
	},
    AC_FL_RunContent:function(){    
      var ret = 
        AdVent.AC_GetArgs
        (  arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
         , "application/x-shockwave-flash"
        );
      AdVent.AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
    },
    AC_GetArgs:function(args, ext, srcParamName, classid, mimeType){
      var ret = new Object();
      ret.embedAttrs = new Object();
      ret.params = new Object();
      ret.objAttrs = new Object();
      var argslength = args.length;
      for (var i=0; i < argslength; i=i+2){
        var currArg = args[i].toLowerCase();    
    
        switch (currArg){	
          case "classid":
            break;
          case "pluginspage":
            ret.embedAttrs[args[i]] = args[i+1];
            break;
          case "src":
          case "movie":	
            args[i+1] = AdVent.AC_AddExtension(args[i+1], ext);
            ret.embedAttrs["src"] = args[i+1];
            ret.params[srcParamName] = args[i+1];
            break;
          case "onafterupdate":
          case "onbeforeupdate":
          case "onblur":
          case "oncellchange":
          case "onclick":
          case "ondblclick":
          case "ondrag":
          case "ondragend":
          case "ondragenter":
          case "ondragleave":
          case "ondragover":
          case "ondrop":
          case "onfinish":
          case "onfocus":
          case "onhelp":
          case "onmousedown":
          case "onmouseup":
          case "onmouseover":
          case "onmousemove":
          case "onmouseout":
          case "onkeypress":
          case "onkeydown":
          case "onkeyup":
          case "onload":
          case "onlosecapture":
          case "onpropertychange":
          case "onreadystatechange":
          case "onrowsdelete":
          case "onrowenter":
          case "onrowexit":
          case "onrowsinserted":
          case "onstart":
          case "onscroll":
          case "onbeforeeditfocus":
          case "onactivate":
          case "onbeforedeactivate":
          case "ondeactivate":
          case "type":
          case "codebase":
          case "id":
            ret.objAttrs[args[i]] = args[i+1];
            break;
          case "width":
          case "height":
          case "align":
          case "vspace": 
          case "hspace":
          case "class":
          case "title":
          case "accesskey":
          case "name":
          case "tabindex":
            ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];
            break;
          default:
            ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];
        }
      }
      ret.objAttrs["classid"] = classid;
      if (mimeType) ret.embedAttrs["type"] = mimeType;
      return ret;
    },
    AC_Generateobj:function(objAttrs, params, embedAttrs) 
    { 
      var str = '';
      if (AdVent.isIE && AdVent.isWin && !AdVent.isOpera)
      {
        str += '<object ';
        for (var i in objAttrs)
        {
          str += i + '="' + objAttrs[i] + '" ';
        }
        str += '>';
        for (var i in params)
        {
          str += '<param name="' + i + '" value="' + params[i] + '" /> ';
        }
        str += '</object>';
      }
      else
      {
        str += '<embed ';
        for (var i in embedAttrs)
        {
          str += i + '="' + embedAttrs[i] + '" ';
        }
        str += '> </embed>';
      }
    
	//      document.write(str);
    AdVent.$('adventoverlay').innerHTML = str;
    },
    AC_AddExtension:function(src, ext)
    {
      if (src.indexOf('?') != -1)
        return src.replace(/\?/, ext+'?'); 
      else
        return src + ext;
    },
	getPageScroll:function(){

	var yScroll;

	if (self.pageYOffset) {
		yScroll = self.pageYOffset;
	} else if (document.documentElement && document.documentElement.scrollTop){	 // Explorer 6 Strict
		yScroll = document.documentElement.scrollTop;
	} else if (document.body) {// all other Explorers
		yScroll = document.body.scrollTop;
	}

	arrayPageScroll = new Array('',yScroll) 
	return arrayPageScroll;
	},
	getPageSize:function(){
		
		var xScroll, yScroll;
		
		if (window.innerHeight && window.scrollMaxY) {	
			xScroll = document.body.scrollWidth;
			yScroll = window.innerHeight + window.scrollMaxY;
		} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
			xScroll = document.body.scrollWidth;
			yScroll = document.body.scrollHeight;
		} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
			xScroll = document.body.offsetWidth;
			yScroll = document.body.offsetHeight;
		}
		
		var windowWidth, windowHeight;
		if (self.innerHeight) {	// all except Explorer
			windowWidth = self.innerWidth;
			windowHeight = self.innerHeight;
		} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
			windowWidth = document.documentElement.clientWidth;
			windowHeight = document.documentElement.clientHeight;
		} else if (document.body) { // other Explorers
			windowWidth = document.body.clientWidth;
			windowHeight = document.body.clientHeight;
		}	
		if(yScroll < windowHeight){
			pageHeight = windowHeight;
		} else { 
			pageHeight = yScroll;
		}
		if(xScroll < windowWidth){	
			pageWidth = windowWidth;
		} else {
			pageWidth = xScroll;
		}
		arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight) 
		return arrayPageSize;
	},
	setHeight:function(element,h) {
   		element = AdVent.$(element);
    	element.style.height = h +"px";
	},
	setTop:function(element,t) {
	   	element = AdVent.$(element);
    	element.style.top = t +"px";
	},
	showFlash:function(){
		var flashObjects = document.getElementsByTagName("object");
    var flashObjectslength = flashObjects.length;
		for (i = 0; i < flashObjectslength; i++) {
			flashObjects[i].style.visibility = "visible";
		}
	
		var flashEmbeds = document.getElementsByTagName("embed");
		var flashEmbedslength = flashEmbeds.length;
		for (i = 0; i < flashEmbedslength; i++) {
			flashEmbeds[i].style.visibility = "visible";
		}
	},
	hideFlash:function(){
		var flashObjects = document.getElementsByTagName("object");
    var flashObjectslength = flashObjects.length;
		for (i = 0; i < flashObjectslength; i++) {
			flashObjects[i].style.visibility = "hidden";
		}
	
		var flashEmbeds = document.getElementsByTagName("embed");
		var flashEmbedslength = flashEmbeds.length;
		for (i = 0; i < flashEmbedslength; i++) {
			flashEmbeds[i].style.visibility = "hidden";
		}
	},
	showSelectBoxes:function (){
		var selects = document.getElementsByTagName("select");
    var selectslength = selects.length;;
		for (i = 0; i != selectslength; i++) {
			selects[i].style.visibility = "visible";
		}
	},
	hideSelectBoxes:function(){
		selects = document.getElementsByTagName("select");
    var selectslength = selects.length;;
		for (i = 0; i != selectslength; i++) {
			selects[i].style.visibility = "hidden";
		}
	}
};
AdVent.addEvent(window, 'load', function(){ AdVent.init('',''); });



