/*==============================================================================
 ---This notice MUST stay intact for legal use!---
 Original:		Transparency
 Created by:	8 Dimensions ©
 Web Site:		http://www.8dimensions.com

 1.0   12.2.2007 First version
==============================================================================*/

var
 transparencySupported=false;

function identifyTransparency() {
 if (document.images) {//old browsers not supported
   document.write('<span id="Dim8TransIdentSpan8978" style="display:none;position: absolute; filter:progid:DXImageTransform.Microsoft.alpha(opacity=0);opacity:0;-moz-opacity:0;-khtml-opacity:0;">.</div>');
   identifyTransparencyOnObject(document.getElementById('Dim8TransIdentSpan8978'));
	 }
}

function identifyTransparencyOnObject(in_Obj) {
 //identify what function to use for transparency
   if (in_Obj.filters&&in_Obj.filters[0]) { //IE
     if (typeof in_Obj.filters[0].opacity=="number") { //if IE6+
		   opacityFnc=_setOpacity_IE;
			 transparencySupported=true;
			 }
      else {//else if IE5.5-
		   opacityFnc=_setOpacity_OldIE;
			 transparencySupported=true;
			 }
     }
    else {
      if (in_Obj.style.opacity) {  //CSS3
       if (in_Obj.style.MozOpacity) {//it's Mozilla or Firefox, but Mozilla flickers in _css3Crossfade better to use_mozillaCrossfade
				 var l_TmpStr=navigator.userAgent;
				 var l_Pos=l_TmpStr.indexOf('rv:');
		     opacityFnc=_setOpacity_Mozilla;
 			   transparencySupported=true;
				 if (l_Pos!=-1) {
					 l_TmpStr=l_TmpStr.substring(l_Pos+3,l_TmpStr.length-1);
					 if (parseFloat(l_TmpStr)>=3.0) { //Not fully working in any Firefox yet, although from ver. 2.0 it works fine with images
		         opacityFnc=_setOpacity_CSS3;
			       transparencySupported=true;
						 }
					 }	
				 }
			 else {	
		    opacityFnc=_setOpacity_CSS3;
 			  transparencySupported=true;
				}
			 }
		  else if (in_Obj.style.MozOpacity) { //older Mozilla
		   opacityFnc=_setOpacity_Mozilla;
			 transparencySupported=true;
			 }
      else if (in_Obj.style.KhtmlOpacity) {//Konqueror
		    opacityFnc=_setOpacity_Konqueror;
			  transparencySupported=true;
				}
      }	
}

function fadeIn(in_Obj, in_CrossfadeDuration, in_FinishedProc,in_StartOpacity) {
 if (in_StartOpacity==undefined)
   in_StartOpacity=0;
 if (!in_Obj.dim8TrId) { //not yet faded, remember in array
   in_Obj.dim8TrId = fadingObjectsArray.length;
	 fadingObjectsArray[in_Obj.dim8TrId] = in_Obj; 
   }
	else { //clear time for case it's set
	 clearInterval(in_Obj.dim8TrTimer);
	 }
	  
 in_Obj.dim8TrLevel=in_StartOpacity;	 
 in_Obj.dim8TrUsed=in_StartOpacity;
 in_Obj.dim8TrDelta=((1-in_StartOpacity)*33)/in_CrossfadeDuration;
 setOpacity(in_Obj,in_StartOpacity);	 
 in_Obj.dim8TrTimer=setInterval("_stepUp("+in_Obj.dim8TrId+")",33); //set fading timer
 in_Obj.dim8TrFiniProc=in_FinishedProc;  	 
}

function fadeOut(in_Obj, in_CrossfadeDuration, in_FinishedProc,in_StartOpacity) {
 if (in_StartOpacity==undefined)
   in_StartOpacity=1;
 if (!in_Obj.dim8TrId) { //not yet faded, remember in array
   in_Obj.dim8TrId = fadingObjectsArray.length;
	 fadingObjectsArray[in_Obj.dim8TrId] = in_Obj; 
   }
	else { //clear time for case it's set
	 clearInterval(in_Obj.dim8TrTimer);
	 }
	  
	 
 in_Obj.dim8TrLevel=in_StartOpacity;	 
 in_Obj.dim8TrUsed=in_StartOpacity;
 in_Obj.dim8TrDelta=((in_StartOpacity)*33)/in_CrossfadeDuration;
 setOpacity(in_Obj,in_StartOpacity);
 in_Obj.dim8TrTimer=setInterval("_stepDown("+in_Obj.dim8TrId+")",33); //set fading timer
 in_Obj.dim8TrFiniProc=in_FinishedProc;  	 
}

function setOpacity(in_Obj, in_Opacity) {
 opacityFnc(in_Obj, in_Opacity); 
}

//=== Private declarations======================================================
var
 opacityFnc;
var
 fadingObjectsArray = new Array();
 
function _stepUp(in_ObjId) {
 var l_Obj=fadingObjectsArray[in_ObjId];
 
 l_Obj.dim8TrLevel+=l_Obj.dim8TrDelta;
 if (l_Obj.dim8TrLevel>=1) {//fully visible
   clearInterval(l_Obj.dim8TrTimer);
   setOpacity(l_Obj, 1);
	 //call finishing function
	 if (l_Obj.dim8TrFiniProc)
	   l_Obj.dim8TrFiniProc(l_Obj);
   }
	else {
	 if (l_Obj.dim8TrLevel-l_Obj.dim8TrUsed>=0.01) { //change opacity level in case at least a percent change
     setOpacity(l_Obj, l_Obj.dim8TrLevel);
	   l_Obj.dim8TrUsed=l_Obj.dim8TrLevel;
	   } 	   
	 } 
} 

function _stepDown(in_ObjId) {
 var l_Obj=fadingObjectsArray[in_ObjId];
 
 l_Obj.dim8TrLevel-=l_Obj.dim8TrDelta;
 if (l_Obj.dim8TrLevel<=0) {//fully visible
   clearInterval(l_Obj.dim8TrTimer);
   setOpacity(l_Obj, 0);
	 //call finishing function
	 if (l_Obj.dim8TrFiniProc)
	   l_Obj.dim8TrFiniProc(l_Obj);
   }
	else {
	 if (l_Obj.dim8TrUsed-l_Obj.dim8TrLevel>=0.01) { //change opacity level in case at least a percent change
     setOpacity(l_Obj, l_Obj.dim8TrLevel);
	   l_Obj.dim8TrUsed=l_Obj.dim8TrLevel;
	   } 	   
	 } 
} 

function _setOpacity_CSS3(in_Obj, in_Opacity) {
 in_Obj.style.opacity=in_Opacity;
}

function _setOpacity_IE(in_Obj, in_Opacity) {
 var l_Opacity = Math.round(in_Opacity*100);
 in_Obj.filters[0].opacity=l_Opacity;
}

function _setOpacity_OldIE(in_Obj, in_Opacity) {
 var l_Opacity = Math.round(in_Opacity*100);
 in_Obj.style.filter="alpha(opacity="+l_Opacity+")";
}

function _setOpacity_Mozilla(in_Obj, in_Opacity) {
 if (in_Opacity>=0.9999999) 
   in_Obj.style.MozOpacity=0.9999999; //prevent flickering
  else
   in_Obj.style.MozOpacity=in_Opacity;
 
}

function _setOpacity_Konqueror(in_Obj, in_Opacity) {
 in_Obj.style.KhtmlOpacity=in_Opacity; 
}

function _setOpacity_Unsupported(n_Obj, in_Opacity) {
 if (n_Obj.style.visibility=="hidden") {
   if (in_Opacity>0)
     l_obj.style.visibility="visible";
   }
	else {
   if (in_Opacity=0)
     n_Obj.style.visibility="hidden";
	 } 
}
 