﻿

function SetTarotHolderFinalPosition( Xwidth, Yheight) 
{ 
    var scrolledX, scrolledY; 
    if( self.pageYOffset ) 
    { 
        scrolledX = self.pageXOffset; 
        scrolledY = self.pageYOffset; 
    }
    else if( document.documentElement && document.documentElement.scrollTop ) 
    { 
        scrolledX = document.documentElement.scrollLeft; 
        scrolledY = document.documentElement.scrollTop; 
    } 
    else if( document.body ) 
    { 
        scrolledX = document.body.scrollLeft; 
        scrolledY = document.body.scrollTop; 
    } 


    var centerX, centerY; 
    if( self.innerHeight ) 
    { 
        centerX = self.innerWidth; 
        centerY = self.innerHeight; 
    } 
    else if( document.documentElement && document.documentElement.clientHeight ) 
    { 
        centerX = document.documentElement.clientWidth; 
    centerY = document.documentElement.clientHeight; 
    } 
    else if( document.body ) 
    { 
        centerX = document.body.clientWidth; 
        centerY = document.body.clientHeight; 
    } 
    
    animate_finalleft = scrolledX + (centerX - Xwidth) / 2; 
    animate_finaltop = scrolledY + (centerY - Yheight) / 2; 

    
} 





var Position = (function() {
  // Resolve a string identifier to an object
  // ========================================
  function resolveObject(s) {
    if (document.getElementById && document.getElementById(s)!=null) {
      return document.getElementById(s);
    }
    else if (document.all && document.all[s]!=null) {
      return document.all[s];
    }
    else if (document.anchors && document.anchors.length && document.anchors.length>0 && document.anchors[0].x) {
      for (var i=0; i<document.anchors.length; i++) {
        if (document.anchors[i].name==s) { 
          return document.anchors[i]
        }
      }
    }
  }
  
  var pos = {};
  pos.$VERSION = 1.0;
  
  // Set the position of an object
  // =============================
  pos.set = function(o,left,top) {
    if (typeof(o)=="string") {
      o = resolveObject(o);
    }
    if (o==null || !o.style) {
      return false;
    }
    
    // If the second parameter is an object, it is assumed to be the result of getPosition()
    if (typeof(left)=="object") {
      var pos = left;
      left = pos.left;
      top = pos.top;
    }
    
    o.style.left = left + "px";
    o.style.top = top + "px";
    return true;
  };
  
  // Retrieve the position and size of an object
  // ===========================================
  pos.get = function(o) {
    var fixBrowserQuirks = true;
      // If a string is passed in instead of an object ref, resolve it
    if (typeof(o)=="string") {
      o = resolveObject(o);
    }
    
    if (o==null) {
      return null;
    }
    
    var left = 0;
    var top = 0;
    var width = 0;
    var height = 0;
    var parentNode = null;
    var offsetParent = null;
  
    
    offsetParent = o.offsetParent;
    var originalObject = o;
    var el = o; // "el" will be nodes as we walk up, "o" will be saved for offsetParent references
    while (el.parentNode!=null) {
      el = el.parentNode;
      if (el.offsetParent==null) {
      }
      else {
        var considerScroll = true;
        /*
        In Opera, if parentNode of the first object is scrollable, then offsetLeft/offsetTop already 
        take its scroll position into account. If elements further up the chain are scrollable, their 
        scroll offsets still need to be added in. And for some reason, TR nodes have a scrolltop value
        which must be ignored.
        */
        if (fixBrowserQuirks && window.opera) {
          if (el==originalObject.parentNode || el.nodeName=="TR") {
            considerScroll = false;
          }
        }
        if (considerScroll) {
          if (el.scrollTop && el.scrollTop>0) {
            top -= el.scrollTop;
          }
          if (el.scrollLeft && el.scrollLeft>0) {
            left -= el.scrollLeft;
          }
        }
      }
      // If this node is also the offsetParent, add on the offsets and reset to the new offsetParent
      if (el == offsetParent) {
        left += o.offsetLeft;
        if (el.clientLeft && el.nodeName!="TABLE") { 
          left += el.clientLeft;
        }
        top += o.offsetTop;
        if (el.clientTop && el.nodeName!="TABLE") {
          top += el.clientTop;
        }
        o = el;
        if (o.offsetParent==null) {
          if (o.offsetLeft) {
            left += o.offsetLeft;
          }
          if (o.offsetTop) {
            top += o.offsetTop;
          }
        }
        offsetParent = o.offsetParent;
      }
    }
    
  
    if (originalObject.offsetWidth) {
      width = originalObject.offsetWidth;
    }
    if (originalObject.offsetHeight) {
      height = originalObject.offsetHeight;
    }
    
    return {'left':left, 'top':top, 'width':width, 'height':height
        };
  };
  
  // Retrieve the position of an object's center point
  // =================================================
  pos.getCenter = function(o) {
    var c = this.get(o);
    if (c==null) { return null; }
    c.left = c.left + (c.width/2);
    c.top = c.top + (c.height/2);
    return c;
  };
  
  return pos;
})();




var isIE  = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;
// Major version of Flash required
var requiredMajorVersion = 10;
// Minor version of Flash required
var requiredMinorVersion = 0;
// Revision of Flash required
var requiredRevision = 2;


function InitTarotReader(obj, etype, fp, cap)
{

    cap = cap || false;
    if (obj.addEventListener) obj.addEventListener(etype, fp, cap);
    else if (obj.attachEvent) obj.attachEvent("on" + etype, fp)
    return;
}

var dw_Event = {
  
    add: function(obj, etype, fp, cap) {
    
    alert('event r');
        cap = cap || false;
        if (obj.addEventListener) obj.addEventListener(etype, fp, cap);
        else if (obj.attachEvent) obj.attachEvent("on" + etype, fp);
    }, 

    remove: function(obj, etype, fp, cap) {
        cap = cap || false;
        if (obj.removeEventListener) obj.removeEventListener(etype, fp, cap);
        else if (obj.detachEvent) obj.detachEvent("on" + etype, fp);
    }, 
    
    DOMit: function(e) { 
        e = e? e: window.event; //e is available when using attachEvent
        if (!e.target) e.target = e.srcElement;
        if (!e.preventDefault) e.preventDefault = function () { e.returnValue = false; return false; }
        if (!e.stopPropagation) e.stopPropagation = function () { e.cancelBubble = true; }
        return e;
    },
    
    getTarget: function(e) {
        e = dw_Event.DOMit(e); var tgt = e.target; 
        if (tgt.nodeType != 1) tgt = tgt.parentNode; // safari...
        return tgt;
    }
    
}






 




    






var animate_initialtop;
var animate_initialleft;
var animate_initialheight;
var animate_initialwidth;
var animate_currenttop;
var animate_currentleft;
var animate_currentheight;
var animate_currentwidth;
var animate_increment=10;
var animate_finaltop;
var animate_finalleft;
var animate_finalheight=600;
var animate_finalwidth=690;


function ExpandFlashHolder()
{

    SetTarotHolderFinalPosition( animate_finalwidth, animate_finalheight) 

    var flashholderdiv = document.getElementById("tl_tarotreader_holder");  
          
    var no_limit_reached = 0;
    

    if(animate_currenttop - animate_increment <= animate_finaltop) 
    { 
        flashholderdiv.style.top = animate_finaltop + 'px';
        no_limit_reached++;
    }    
    else
    {
        flashholderdiv.style.top = animate_currenttop -  (animate_increment) + 'px';
        animate_currenttop-=  (animate_increment);    
    }
    
    if(animate_currentleft - animate_increment <= animate_finalleft) 
    { 
        flashholderdiv.style.left = animate_finalleft + 'px';
        no_limit_reached++;
    }   
    else
    {
        flashholderdiv.style.left = animate_currentleft -  animate_increment + 'px';
        animate_currentleft-=  animate_increment;    
    }        


    if(animate_currentwidth + animate_increment >= animate_finalwidth) 
    {
    
        flashholderdiv.style.width = animate_finalwidth + 'px';
        no_limit_reached++;
    }   
    else
    { 
        flashholderdiv.style.width = animate_currentwidth +  (animate_increment*2) + 'px';
        animate_currentwidth+=  animate_increment*2;    
    }             
    
 
    if(animate_currentheight + animate_increment >= animate_finalheight) 
    { 
        flashholderdiv.style.height = animate_finalheight + 'px';
        no_limit_reached++;

    }   
    else
    {
        flashholderdiv.style.height = animate_currentheight +  animate_increment*2 + 'px';
        animate_currentheight+=  animate_increment*2;    
    }       

    
    if(no_limit_reached == 4)
    {
        clearTimeout(t);        
        OnFlashHolderResizedComplete();
        return;        
    }
            
    t=setTimeout('ExpandFlashHolder()',30); 
    
    OnFlashHolderResized(animate_currentwidth, animate_currentheight);
    
    
    
 }



function ShrinkFlashHolder()
{
    
    var flashholderdiv = document.getElementById("tl_tarotreader_holder");  
          
    var no_limit_reached = 0;
    
    if(animate_currenttop + animate_increment >= animate_initialtop) 
    { 
        flashholderdiv.style.top = animate_initialtop + 'px';
        no_limit_reached++;
    }    
    else
    {
        flashholderdiv.style.top = animate_currenttop +  (animate_increment) + 'px';
        animate_currenttop+=  (animate_increment);    
    }
    
    if(animate_currentleft + animate_increment >= animate_initialleft) 
    { 
        flashholderdiv.style.left = animate_initialleft + 'px';
        no_limit_reached++;
    }   
    else
    {
        flashholderdiv.style.left = animate_currentleft +  animate_increment + 'px';
        animate_currentleft+=  animate_increment;    
    }        


    if(animate_currentwidth - animate_increment <= animate_initialwidth) 
    {
    
        flashholderdiv.style.width = animate_initialwidth + 'px';
        no_limit_reached++;
    }   
    else
    { 
        flashholderdiv.style.width = animate_currentwidth -  (animate_increment*2) + 'px';
        animate_currentwidth-=  animate_increment*2;    
    }             
    
 
    if(animate_currentheight - animate_increment <= animate_initialheight) 
    { 
        flashholderdiv.style.height = animate_initialheight + 'px';
        no_limit_reached++;

    }   
    else
    {
        flashholderdiv.style.height = animate_currentheight -  animate_increment*2 + 'px';
        animate_currentheight-=  animate_increment*2;    
    }       

    
    if(no_limit_reached == 4)
    {
        clearTimeout(t);       
        OnFlashHolderShrinkComplete();
        return;        
    }
               
    t=setTimeout('ShrinkFlashHolder()',30); 
    
    OnFlashHolderShrunk(animate_currentwidth, animate_currentheight);    
 }

function CreateFlashHolder()
{
    var targetdiv = document.getElementById("tl_tarotcardreader_placeholder");        
    var flashholderdiv = document.createElement('div');
    flashholderdiv.setAttribute('id','tl_tarotreader_holder');        
    flashholderdiv.style.width = targetdiv.offsetWidth + "px";
    flashholderdiv.style.height = targetdiv.offsetHeight + "px"; 
    flashholderdiv.style.position = "absolute";       
    flashholderdiv.style.backgroundColor = "#ffffff";
                
    var pos = Position.get(targetdiv);                                
    Position.set(flashholderdiv, pos.left, pos.top)
    
    animate_currentheight =  targetdiv.offsetHeight;   
    animate_currenttop = pos.top;
    animate_currentleft = pos.left;
    animate_currentwidth =  targetdiv.offsetWidth;   
    
    animate_initialheight =  animate_currentheight;   
    animate_initialtop = animate_currenttop;
    animate_initialleft = animate_currentleft;
    animate_initialwidth =  animate_currentwidth;
         
       
    document.body.appendChild(flashholderdiv);
    

    //ExpandFlashHolder();

}

function tl_on_pageloaded_tarotcardreader()
{
    CreateFlashHolder();    
 
    var hasRightVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);
 
           if(hasRightVersion) 
            {  
                AC_FL_RunContent(
	                                'codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,2,0',
	                                'width', '460',
	                                'height', '400',
	                                'src', 'controller',
	                                'quality', 'high',
	                                'pluginspage', 'http://www.adobe.com/go/getflashplayer',
	                                'align', 'middle',
	                                'play', 'true',
	                                'loop', 'true',
	                                'scale', 'showall',
	                                'wmode', 'window',
	                                'devicefont', 'false',
	                                'id', 'controller',
	                                'bgcolor', '#ffffff',
	                                'name', 'controller',
	                                'menu', 'true',
	                                'allowFullScreen', 'false',
	                                'allowScriptAccess','sameDomain',
	                                'movie', 'controller',
	                                'salign', ''
	                                );
        } 
        else
        {  
	        var alternateContent =      'Alternate HTML content should be placed here.'
		                                + 'This content requires the Adobe Flash Player.'
		                                + '<a href="http://www.adobe.com/go/getflashplayer/">Get Flash</a>';
    		
            document.write(alternateContent); 
        }

}
function ControlVersion()
{
	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
function GetSwfVer(){
	// 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 ( isIE && isWin && !isOpera ) {
		flashVer = ControlVersion();
	}	
	return flashVer;
}
// When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available
function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision)
{
	versionStr = GetSwfVer();
	if (versionStr == -1 ) {
		return false;
	} else if (versionStr != 0) {
		if(isIE && isWin && !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;
	}
}
function AC_AddExtension(src, ext)
{
  if (src.indexOf('?') != -1)
    return src.replace(/\?/, ext+'?'); 
  else
    return src + ext;
}
function AC_Generateobj(objAttrs, params, embedAttrs) 
{ 
  var str = '';
  if (isIE && isWin && !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);
    
  document.getElementById("tl_tarotreader_holder").innerHTML = str;
  
  
  
  
  
  
}
function AC_FL_RunContent(){
  var ret = 
    AC_GetArgs
    (  arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
     , "application/x-shockwave-flash"
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}
function AC_SW_RunContent(){
  var ret = 
    AC_GetArgs
    (  arguments, ".dcr", "src", "clsid:166B1BCA-3F9C-11CF-8075-444553540000"
     , null
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}
function AC_GetArgs(args, ext, srcParamName, classid, mimeType){
  var ret = new Object();
  ret.embedAttrs = new Object();
  ret.params = new Object();
  ret.objAttrs = new Object();
  for (var i=0; i < args.length; 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] = 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;
}
function getFlashMovieObject(movieName)
{
  if (window.document[movieName]) 
  {
      return window.document[movieName];
  }
  if (navigator.appName.indexOf("Microsoft Internet")==-1)
  {
    if (document.embeds && document.embeds[movieName])
      return document.embeds[movieName]; 
  }
  else // if (navigator.appName.indexOf("Microsoft Internet")!=-1)
  {
    return document.getElementById(movieName);
  }
}

/*resizing functions*/
function ResizeFlashStage()
{
    ExpandFlashHolder();    
}
function ShrinkFlashStage()
{
    ShrinkFlashHolder();    
}

function OnFlashHolderResized(width, height)
{

    var object = getFlashMovieObject("controller");
    object.width = width;
    object.height = height;

}

function OnFlashHolderShrunk(width, height)
{

    var object = getFlashMovieObject("controller");
    object.width = width;
    object.height = height;

}

function OnFlashHolderResizedComplete()
{

    var object = getFlashMovieObject("controller");
    object.StageResized();
    object.width = animate_finalwidth;
    object.height = animate_finalheight;

}

function OnFlashHolderShrinkComplete()
{

    var object = getFlashMovieObject("controller");
    object.StageShrunk();
    object.width = animate_initialwidth;
    object.height = animate_initialheight;

}











