//20120127_10:31


///*========================================================================================*/
//global

var NAVI;

var ID="finalworks-nine-global-navi";

var eigoaru=true;

var CURRENT_LANG="j";
	
var ON_COLOR=
{
		
	backgroundColor:"#FFF",
	color:"#123456",
	border:"1px solid #000"
	
};
	
var OFF_COLOR=
{
		
	backgroundColor:"#000",
	color:"#FFF",
	border:"none"
	
};


var finalworks_nine_navi= function(){
	function init(_params)
	{
		finalworks_nine_navi_start(_params,jQuery);
	}
	return{
		init:init
	}
	
}();

function finalworks_nine_navi_start(_params,$)
{
	$(document).ready
	(
	function() 
	{
		
	/*============================================================*/
	
	
	
	if(_params[1]==undefined)
	{
		eigoaru=true;
		
	}else
	{
		eigoaru=_params[1];
	}
	
	//trace(eigoaru)
	
	
	/*jsの置いてあるパス-------------------------*/
	var FP = ""+getJsPath("finalworks_nine_navi_min.js");
	if(FP=="./")FP = ""+getJsPath("finalworks_nine_navi.js");
	FP=FP.replace("js_common/","");  
	
	
	/*表示リストルート-------------------------*/
	
	var STAGE=$("#"+_params[0]);
	NAVI=new Navi(950,150);
	STAGE.append(NAVI.target);
	
	
	/*ナインのロゴ-------------------------*/
	
	NAVI.target.append($("<a>").attr("href","http://e-nine.com/").css({
		
			display:"block",
			position:"absolute",
			left:"1px",
			top:"7px"
		
		}).append($("<img>").attr("src",(FP+"img/navi/logo.png")).addClass("toumeidesu")));
		
		$(".toumeidesu").fixPng();
	
	/*Language-------------------------*/
	
	var HREF=location.href;
	var HREF_J;
	var HREF_E;
	var HREF_C;
		
		//var myPatern = new RegExp( /\.html|_e\.html|_c\.html/ );
		
		if(HREF.match("_c.html"))
		{
			CURRENT_LANG="c";
			
			HREF_J=HREF.replace("_c.html",".html");
			HREF_E=HREF.replace("_c.html","_e.html");
			HREF_C=HREF.replace("_c.html","_c.html");
			
		}else
		if(HREF.match("_e.html"))
		{
			CURRENT_LANG="e";
			
			HREF_J=HREF.replace("_e.html",".html");
			HREF_E=HREF.replace("_e.html","_e.html");
			HREF_C=HREF.replace("_e.html","_c.html");
			
			
		}else
		if(HREF.match("index.html"))
		{
			CURRENT_LANG="j";
			
			HREF_J=HREF.replace(".html",".html");
			HREF_E=HREF.replace(".html","_e.html");
			HREF_C=HREF.replace(".html","_c.html");
			
			
		}else
		if(HREF.match("index.php"))
		{
			CURRENT_LANG="j";
			
			HREF_J=HREF.replace("index.php","index.php");
			HREF_E=HREF.replace("index.php","index_e.php");
			HREF_C=HREF.replace("index.php","index_c.php");
			
			
		}else
		if(HREF.match("index_e.php"))
		{
			CURRENT_LANG="e";
			
			HREF_J=HREF.replace("index_e.php","index.php");
			HREF_E=HREF.replace("index_e.php","index_e.php");
			HREF_C=HREF.replace("index_e.php","index_c.php");
			
			
		}else
		if(HREF.match("information/english/"))
		{
				CURRENT_LANG="e";
				HREF_E="http://e-nine.com/information/english/";
				HREF_J="http://e-nine.com/information/";
		}else
		if(HREF.match("information/"))
		{
				CURRENT_LANG="j";
				HREF_E="http://e-nine.com/information/english/";
				HREF_J="http://e-nine.com/information/";
				
		}else
		if(HREF.match("contact/"))
		{
				CURRENT_LANG="j";
				HREF_E="http://e-nine.com/contact/index_e.php";
				HREF_J="http://e-nine.com/contact/index.php";
				
		}else
		if(HREF.match("contact/index_e.php"))
		{
				CURRENT_LANG="e";
				HREF_E="http://e-nine.com/contact/index_e.php";
				HREF_J="http://e-nine.com/contact/index.php";
				
		}else
		{
			CURRENT_LANG="j";
			HREF_J=HREF;
			HREF_E=HREF+"index_e.html";
			HREF_C=HREF+"index_c.html";
			
		}
	

	
	//英語ある場合のみ
	if(eigoaru==true)
	{
	
		NAVI.target.append($("<img>").css({
			
				display:"block",
				position:"absolute",
				//left:"680px",
				left:"748px",
				top:"10px"
			
			}).attr("src",(FP+"img/navi/language.png"))).addClass("toumeidesu");
			
		$(".toumeidesu").fixPng();
		
		//740,813,884
		var JPN=new LanguageBT(813,0,(FP+"img/navi/jap_def.jpg"),HREF_J);
		var ENG=new LanguageBT(884,0,(FP+"img/navi/eng_def.jpg"),HREF_E);
		//var CHI=new LanguageBT(884,0,(FP+"img/navi/chi_def.jpg"),HREF_C);
		NAVI.addChild(JPN);
		NAVI.addChild(ENG);
		//NAVI.addChild(CHI);
		
		if(CURRENT_LANG=="j")JPN.dead();
		if(CURRENT_LANG=="e")ENG.dead();
		if(CURRENT_LANG=="c")CHI.dead();
	
	
	}
	
	
	/*カテゴリーのボタン-------------------------*/
	
	
	var news_bt=new CategoryBT(0,53,FP+"img/navi/news_def.jpg");
	var blog_bt=new CategoryBT(84,53,FP+"img/navi/blog_def.jpg");
	var webstore_bt=new CategoryBT(172,53,FP+"img/navi/webstore_def.jpg");
	var coor_bt=new CategoryBT(315,53,FP+"img/navi/coordinate_def.jpg");
	var member_bt=new CategoryBT(481,53,FP+"img/navi/member_def.jpg");
	var press_bt=new CategoryBT(597,53,FP+"img/navi/press_def.jpg");
	var shop_bt=new CategoryBT(687,53,FP+"img/navi/shop_def.jpg");
	var fb_bt=new CategoryBT(777,53,FP+"img/navi/facebook_def.jpg");
	
	
	NAVI.addBT(news_bt);//0
	NAVI.addBT(blog_bt);//1
	NAVI.addBT(webstore_bt);//2
	NAVI.addBT(coor_bt);//3
	NAVI.addBT(member_bt);//4
	NAVI.addBT(press_bt);//5
	NAVI.addBT(shop_bt);//6
	NAVI.addBT(fb_bt);//7
	
	/*============================================================*/
	//日本語の場合
	
	if(CURRENT_LANG=="j")
	{
	
		news_bt.addBox("INFORMATION","http://e-nine.com/information/","_self");
		news_bt.addBox("NEW ARRIVAL","http://e-nine.com/newarrival/","_self");
		
		blog_bt.addBox("PRESS","http://nine-press.blogspot.com/","_blank");
		blog_bt.addBox("STAFF","http://ameblo.jp/nine-dxc/","_blank");
		
		webstore_bt.addBox("NINE","http://shop.e-nine.com/shopping/new","_self");
		webstore_bt.addBox("point nine","http://e-nine.com/pointnine/","_self");
		webstore_bt.addBox("Nine ground","http://e-nine.com/nineground/","_self");
		webstore_bt.addBox("IMPORT","http://e-nine.com/import/","_self");
		
		coor_bt.addURL("http://e-nine.com/coordinate/","_self");
		
		member_bt.addBox("INVITATION","http://e-nine.com/invitation/","_self");
		member_bt.addBox("WALLPAPER","http://e-nine.com/wallpaper/","_self");
		member_bt.addBox("PRESENT","http://e-nine.com/present/","_self");
		
		press_bt.addURL("http://e-nine.com/press/","_self");
		shop_bt.addURL("http://e-nine.com/shop/","_self");
		fb_bt.addURL("http://www.facebook.com/NINE.dxc","_blank");
	
	}else
	if(CURRENT_LANG=="e")
	{
	
	/*============================================================*/
	//英語の場合
		news_bt.addBox("INFORMATION","http://e-nine.com/information/english","_self");
		news_bt.addBox("NEW ARRIVAL","http://e-nine.com/newarrival/index_e.html","_self");
		
		blog_bt.addBox("PRESS","http://nine-press.blogspot.com/","_blank");
		blog_bt.addBox("STAFF","http://ameblo.jp/nine-dxc/","_blank");
		
		webstore_bt.addBox("NINE","http://shop.e-nine.com/shopping/new","_self");
		webstore_bt.addBox("point nine","http://e-nine.com/pointnine/index_e.html","_self");
		webstore_bt.addBox("Nine ground","http://e-nine.com/nineground/index_e.html","_self");
		webstore_bt.addBox("IMPORT","http://e-nine.com/import/index_e.html","_self");
		
		coor_bt.addURL("http://e-nine.com/coordinate/index_e.html","_self");
		
		member_bt.addBox("INVITATION","http://e-nine.com/invitation/index_e.html","_self");
		member_bt.addBox("WALLPAPER","http://e-nine.com/wallpaper/index_e.html","_self");
		member_bt.addBox("PRESENT","http://e-nine.com/present/index_e.html","_self");
		
		press_bt.addURL("http://e-nine.com/press/index_e.html","_self");
		shop_bt.addURL("http://e-nine.com/shop/index_e.html","_self");
		fb_bt.addURL("http://www.facebook.com/NINE.dxc","_blank");
	
	}
	
	/*============================================================*/
	
	
	}
	);

};


/*========================================================================================*/
//Classes

	//Navi/*========================================================================================*/
	var Navi=function(_width,_height)
	{
		this.CATEGORY_BTS=[];
		var CATEGORY_BTS=this.CATEGORY_BTS;
		
		this.target=jQuery("<div>").css(
		{
			width:_width,
			height:_height,
			//backgroundColor:"#FFF",
			position:"absolute",
			top:"0px",
			left:"0px",
			margin:"0px",
			padding:"0px",
			zIndex:"2"
			
		});
		
		//リスナ
		$("body").bind("categorybtclicked",function(e,_tag){openNavi(_tag)});
		
		Navi.prototype.addChild=function(_target)
		{
			//表示リストに追加
			this.target.append(_target.target);
		
		}
	
		Navi.prototype.addBT=function(_target)
		{
			//表示リストに追加
			this.target.append(_target.target);
			this.CATEGORY_BTS.push(_target);
			
			
			//イベントリスナ
			//_target.target.bind("click",function(){$("body").trigger("categorybtclicked",[_target.tag])});
			
			//配列のずんばん
			_target.target.bind("click",function(){$("body").trigger("categorybtclicked",[(CATEGORY_BTS.indexOf(_target))])});
		}
		
	
		function openNavi(_tag)
		{
			
			var l=CATEGORY_BTS.length;
			
			for(var i=0;i<l;i++)
			{
				var target=CATEGORY_BTS[i];
				
				if(i==_tag)
				{
					target.open();	
					
				}else
				{
					target.close();	
				}
				
			}
		}
		
		
		function closeNavi(_tag)
		{
			
			this.CATEGORY_BTS[_tag].close();
				
		}
	
	}
	
	
	
	//CategoryBT/*========================================================================================*/
	var CategoryBT=function(_x,_y,_src)
	{
		//ぷろぱちー
		this.x=_x;
		this.y=_y;
		this.isOpen=false;
		this.hasChild=false;
		this.BTS=[];
		
		
		this.target=jQuery("<img>").css(
		{
			position:"absolute",
			top:_y,
			left:_x,
			display:"block",
			cursor:"pointer",
			zIndex:"3"
			
		}).attr("src",_src);
		
		
	
		CategoryBT.prototype.addURL=function(_href,_bs)
		{
			this.target.on("mouseover",function(){
	
				var kore=$(this).attr("src").replace("_def","_over");
				$(this).attr("src",kore);
				
				});
				
			this.target.on("mouseout",function(){
				
				var kore=$(this).attr("src").replace("_over","_def");
				$(this).attr("src",kore);
				
				});
				
			this.target.on("click",function(){window.open(_href,_bs)});
			
			this.hasChild=false;
		}
		
		
		CategoryBT.prototype.addBox=function(_text,_href,_bs)
		{
			
			this.target.on("mouseover",function(){$(this).fadeTo(0,0.6)});
			this.target.on("mouseout",function(){$(this).fadeTo(0,1)});
			
			var suji=this.BTS.length;
			var defY=this.y+24;
			var terY=suji*20+this.y+24;
			var box=new Box(this.x,defY,this.x,terY,_text,_href,_bs);
			//表示リストに追加
			NAVI.target.append(box.target);
			this.BTS.push(box);
			
			this.hasChild=true;
		}
		
		
		CategoryBT.prototype.open=function()
		{
			
			var l=this.BTS.length;
			
			
			if(this.isOpen==true)
			{
				for(var i=0;i<l;i++)
				{	
					this.BTS[i].target.stop().animate({top:""+(this.BTS[i].defY),opacity:"0"},200,function(){$(this).css("display","none")});
				}
			
				off(this.target);
				this.isOpen=false;
				
			}else
			{
				for(var i=0;i<l;i++)
				{	
					this.BTS[i].target.stop().animate({top:""+(this.BTS[i].terY),opacity:"1"},200).css("display","block");
				}
			
				on(this.target);
				this.isOpen=true;
			}
			
		}
		
		CategoryBT.prototype.close=function()
		{
			var l=this.BTS.length;
			for(var i=0;i<l;i++)
			{	
				this.BTS[i].target.stop().animate({top:""+(this.BTS[i].defY),opacity:"0"},200,function(){$(this).css("display","none")});
			}
			
			off(this.target);
			this.isOpen=false;
		}
		
		
		function on(_target)
		{
			//色かえ
			var kore=_target.attr("src").replace("_def","_over");
			_target.attr("src",kore);
			
		}
		
		function off(_target)
		{
			//色かえ
			var kore=_target.attr("src").replace("_over","_def");
			_target.attr("src",kore);
			
		}
		
	}
	
	
	//Box/*========================================================================================*/
	var Box=function(_defX,_defY,_terX,_terY,_moji,_href,_bs)
	{
		var moji=_moji;
		var href=_href;
		
		//ぷろぱちー
		this.x=_defX;
		this.y=_defY;
		this.defX=_defX;
		this.defY=_defY;
		this.terX=_terX;
		this.terY=_terY;
		
		//this.isOpen=false;
		
		
		//コンストラクタ
		
		this.target=jQuery("<div>").css(
		{
			//width:"100%",
			//height:"14px",
			paddingTop:"3px",
			paddingBottom:"3px",
			paddingRight:"6px",
			paddingLeft:"6px",
			backgroundColor:"#000",
			position:"absolute",
			left:_defX,
			top:_defY,
			//fontFamily:"FuturaStdLight",
			//color:"#FFF",
			textAlign:"center",
			//fontSize:"10px",
			//fontSize:"14px",
			//lineHeight:_height+"px",
			lineHeight:"11px",
			display:"none",
			textDecoration :"none",
			cursor:"pointer",
			zIndex:"1"
			
		}).attr("href",_href).attr("target",_bs).html(_moji).addClass(ID).css(OFF_COLOR)
		.fadeTo(0,0);
		
		//
		this.target.on("mouseover",function(){$(this).css(ON_COLOR)});
		this.target.on("mouseout",function(){$(this).css(OFF_COLOR)});
		this.target.on("click",function(){window.open(_href,_bs);});
		
		//パブリックメソッド
	
		Box.prototype.move=function(_x,_y)
		{
			this.x=_x;
			this.y=_y;
			
			this.target.css({
				
				left:_x,
				top:_y
				
				});
		}
	
	}
	
	//LanguageBT/*========================================================================================*/
	var LanguageBT=function(_x,_y,_src,_href)
	{
		
		//プロパティ
		this.x=_x;
		this.y=_y;
		this.src=_src;
		this.overSrc=_src.replace("_def","_over");
		this.href=_href;
		
		var src=this.src;
		var overSrc=this.overSrc;
		var href=this.href;
		
		this.target=jQuery("<img>").css(
		{
			position:"absolute",
			top:_y,
			left:_x,
			display:"block",
			cursor:"pointer"
			
		}).attr("src",this.src);
		
		var target=this.target;
		
		
		//マウスアクション
		this.target.on("mouseover",function(){target.attr("src",overSrc);});
		this.target.on("mouseout",function(){target.attr("src",src);});
		this.target.on("click",function(){window.open(href,"_self");});
		
		//パブリックメソッド
		
		
		LanguageBT.prototype.dead=function()
		{	
			this.target.off("mouseover");
			this.target.off("mouseout");
			this.target.off("click");
			this.target.css("cursor","auto");
			this.target.attr("src",this.overSrc);
		
		}
		
	}
	

if(! Array.indexOf) {
  Array.prototype.indexOf = function(o)
  {
    for(var i in this) {
      if(this[i] == o) {
        return i;
      }
    }
    return -1;
  }
}

/*========================================================================================*/
	
	
function trace()
{
	//console.log(arguments);
}


/*========================================================================================*/

var Tweener= function(){
	
	function tween(target,duration,params)
	{
		tween_start__________(target,duration,params);
	}
	return{
		
		tween:tween
	}
	
}();

function tween_start__________(_target,_duration,_params)
{
		
		
		var FPS=30;
		var TARGET=_target;
		//これで割り込み処理
		clearInterval(TARGET.TIMER);
		TARGET.isOreTween=true;
		var DURATION=Math.round(_duration*FPS);
		var PARAMS=_params;
		var time=0;
		var ONUPDATE=function(){};
		var ONCOMPLETE=function(){};
		var EASING=easing["none"];
		var HASH={};

		for (var i in PARAMS)
		{
		  
			  if(i=="onUpdate")
			  {
				ONUPDATE=PARAMS[i]; 
			  }
			  else if(i=="onComplete")
			  {
				ONCOMPLETE=PARAMS[i]; 
			  }
			  else if(i=="easing")
			  {
				EASING=easing[PARAMS[i]]; 
			  }
			  else
			  {
				HASH[i]=[TARGET[i],(PARAMS[i]-TARGET[i])]; 
			  }
		  
		}
		
		var TIMER=setInterval(step,1000/FPS);
		TARGET.TIMER=TIMER;
		
				
		function step()
		{
			time++;
			
			for(var i in HASH)
			{
				TARGET[i]=EASING(time,HASH[i][0],HASH[i][1],DURATION);
				//console.log("aaa");
			}
	
					
			//実行するやーつ
			ONUPDATE();
					
			if(time==DURATION)
			{
				TARGET.isOreTween=false;
				clearInterval(TIMER);
				ONCOMPLETE();
			}
		}
		
	
	
}


//イージングの種類
// t: current time, b: begInnIng value, c: change In value, d: duration
		var easing=
		{
			
		none:function(t, b, c, d)
		{
			return c*t/d + b;
		},
	
		easeInQuad: function (t, b, c, d)
		{
			return c*(t/=d)*t + b;
		},
		
		easeOutQuad: function (t, b, c, d)
		{
			return -c *(t/=d)*(t-2) + b;
		},
		easeInOutQuad: function (t, b, c, d)
		{
			if ((t/=d/2) < 1) return c/2*t*t + b;
			return -c/2 * ((--t)*(t-2) - 1) + b;
		},
		easeInCubic: function (t, b, c, d)
		{
			return c*(t/=d)*t*t + b;
		},
		easeOutCubic: function (t, b, c, d)
		{
			return c*((t=t/d-1)*t*t + 1) + b;
		},
		easeInOutCubic: function (t, b, c, d) 
		{
			if ((t/=d/2) < 1) return c/2*t*t*t + b;
			return c/2*((t-=2)*t*t + 2) + b;
		},
		easeInQuart: function (t, b, c, d) 
		{
			return c*(t/=d)*t*t*t + b;
		},
		easeOutQuart: function (t, b, c, d) 
		{
			return -c * ((t=t/d-1)*t*t*t - 1) + b;
		},
		easeInOutQuart: function (t, b, c, d)
		{
			if ((t/=d/2) < 1) return c/2*t*t*t*t + b;
			return -c/2 * ((t-=2)*t*t*t - 2) + b;
		},
		easeInQuint: function (t, b, c, d) 
		{
			return c*(t/=d)*t*t*t*t + b;
		},
		easeOutQuint: function (t, b, c, d) 
		{
			return c*((t=t/d-1)*t*t*t*t + 1) + b;
		},
		easeInOutQuint: function (t, b, c, d) 
		{
			if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;
			return c/2*((t-=2)*t*t*t*t + 2) + b;
		},
		easeInSine: function (t, b, c, d)
		 {
			return -c * Math.cos(t/d * (Math.PI/2)) + c + b;
		},
		easeOutSine: function (t, b, c, d) 
		{
			return c * Math.sin(t/d * (Math.PI/2)) + b;
		},
		easeInOutSine: function (t, b, c, d) 
		{
			return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;
		},
		easeInExpo: function (t, b, c, d) 
		{
			return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;
		},
		easeOutExpo: function (t, b, c, d) 
		{
			return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;
		},
		easeInOutExpo: function (t, b, c, d) 
		{
			if (t==0) return b;
			if (t==d) return b+c;
			if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;
			return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;
		},
		easeInCirc: function (t, b, c, d)
		{
			return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;
		},
		easeOutCirc: function (t, b, c, d)
		{
			return c * Math.sqrt(1 - (t=t/d-1)*t) + b;
		},
		easeInOutCirc: function (t, b, c, d) 
		{
			if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;
			return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;
		},
		easeInElastic: function (t, b, c, d) 
		{
			var s=1.70158;var p=0;var a=c;
			if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;
			if (a < Math.abs(c)) { a=c; var s=p/4; }
			else var s = p/(2*Math.PI) * Math.asin (c/a);
			return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
		},
		easeOutElastic: function (t, b, c, d) 
		{
			var s=1.70158;var p=0;var a=c;
			if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;
			if (a < Math.abs(c)) { a=c; var s=p/4; }
			else var s = p/(2*Math.PI) * Math.asin (c/a);
			return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
		},
		easeInOutElastic: function (t, b, c, d) 
		{
			var s=1.70158;var p=0;var a=c;
			if (t==0) return b;  if ((t/=d/2)==2) return b+c;  if (!p) p=d*(.3*1.5);
			if (a < Math.abs(c)) { a=c; var s=p/4; }
			else var s = p/(2*Math.PI) * Math.asin (c/a);
			if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
			return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b;
		}
	
	}
	
	
	function getJsPath(jsFileName)
	{
		
    var path = "./";
    var target;
    var scripts = document.getElementsByTagName("script");

    if(jsFileName && scripts){
        for(var i=0; i<scripts.length; i++){
            //match()でパラメータとして渡されたファイル名が設定されているscript要素を検索する
            //引数を正規表現オブジェクトにへ変換
            if(scripts[i].src.match(new RegExp(jsFileName, "i"))){
                target = scripts[i].src;
                break;
             }
        }
        //パスを取り出す
        if(target){
            path = target.match(/.*\//g);
            path = path ? path : "./";
        }
    }
    return path;
}
	
	
	
	
	
	
	
	
	
/**
* DD_belatedPNG: Adds IE6 support: PNG images for CSS background-image and HTML <IMG/>.
* Author: Drew Diller
* Email: drew.diller@gmail.com
* URL: http://www.dillerdesign.com/experiment/DD_belatedPNG/
* Version: 0.0.8a
* Licensed under the MIT License: http://dillerdesign.com/experiment/DD_belatedPNG/#license
*
* Example usage:
* DD_belatedPNG.fix('.png_bg'); // argument is a CSS selector
* DD_belatedPNG.fixPng( someNode ); // argument is an HTMLDomElement
**/

/*
PLEASE READ:
Absolutely everything in this script is SILLY.  I know this.  IE's rendering of certain pixels doesn't make sense, so neither does this code!
*/

/**
* jquery.belatedPNG: Adds IE6/7/8 support: PNG images for CSS background-image and HTML <IMG/>.
* Author: Kazunori Ninomiya
* Email: Kazunori.Ninomiya@gmail.com
* Version: 0.0.4
* Licensed under the MIT License: http://dillerdesign.com/experiment/DD_belatedPNG/#license
*
* Example usage:
* $('.png_bg').fixPng();
**/
(function($){var doc=document;var DD_belatedPNG={ns:'DD_belatedPNG',imgSize:{},delay:10,nodesFixed:0,createVmlNameSpace:function(){if(doc.namespaces&&!doc.namespaces[this.ns]){doc.namespaces.add(this.ns,'urn:schemas-microsoft-com:vml')}},createVmlStyleSheet:function(){var screenStyleSheet,printStyleSheet;screenStyleSheet=doc.createElement('style');screenStyleSheet.setAttribute('media','screen');doc.documentElement.firstChild.insertBefore(screenStyleSheet,doc.documentElement.firstChild.firstChild);if(screenStyleSheet.styleSheet){var selector=!doc.documentMode||doc.documentMode<8?this.ns+'\\:*':this.ns+'\\:shape, '+this.ns+'\\:fill';screenStyleSheet=screenStyleSheet.styleSheet;screenStyleSheet.addRule(selector,'behavior:url(#default#VML);');screenStyleSheet.addRule(this.ns+'\\:shape','position:absolute;');screenStyleSheet.addRule('img.'+this.ns+'_sizeFinder',['behavior:none','border:none','position:absolute','z-index:-1','top:-10000px','visibility:hidden'].join(';'));this.screenStyleSheet=screenStyleSheet;printStyleSheet=doc.createElement('style');printStyleSheet.setAttribute('media','print');doc.documentElement.firstChild.insertBefore(printStyleSheet,doc.documentElement.firstChild.firstChild);printStyleSheet=printStyleSheet.styleSheet;printStyleSheet.addRule(selector,'display: none !important;');printStyleSheet.addRule('img.'+this.ns+'_sizeFinder','display: none !important;')}},readPropertyChange:function(){var el,display,v;el=event.srcElement;if(!el.vmlInitiated){return}var propName=event.propertyName;if(propName.search('background')!=-1||propName.search('border')!=-1){DD_belatedPNG.applyVML(el)}if(propName=='style.display'){display=(el.currentStyle.display=='none')?'none':'block';for(v in el.vml){if(el.vml.hasOwnProperty(v)){el.vml[v].shape.style.display=display}}}if(propName.search('filter')!=-1){DD_belatedPNG.vmlOpacity(el)}},vmlOpacity:function(el){if(el.currentStyle.filter.search('lpha')!=-1){var trans=el.currentStyle.filter;trans=parseInt(trans.substring(trans.lastIndexOf('=')+1,trans.lastIndexOf(')')),10)/100;el.vml.color.shape.style.filter=el.currentStyle.filter;el.vml.image.fill.opacity=trans}},handlePseudoHover:function(el){setTimeout(function(){DD_belatedPNG.applyVML(el)},1)},applyVML:function(el){el.runtimeStyle.cssText='';this.vmlFill(el);this.vmlOffsets(el);this.vmlOpacity(el);if(el.isImg){this.copyImageBorders(el)}},attachHandlers:function(el){var self,handlers,handler,moreForAs,a,h;self=this;handlers={resize:'vmlOffsets',move:'vmlOffsets'};if(el.nodeName=='A'){moreForAs={mouseleave:'handlePseudoHover',mouseenter:'handlePseudoHover',focus:'handlePseudoHover',blur:'handlePseudoHover'};for(a in moreForAs){if(moreForAs.hasOwnProperty(a)){handlers[a]=moreForAs[a]}}}for(h in handlers){if(handlers.hasOwnProperty(h)){handler=function(){self[handlers[h]](el)};el.attachEvent('on'+h,handler)}}el.attachEvent('onpropertychange',this.readPropertyChange)},giveLayout:function(el){el.style.zoom=1;if(el.currentStyle.position=='static'){el.style.position='relative'}},copyImageBorders:function(el){var styles,s;styles={'borderStyle':true,'borderWidth':true,'borderColor':true};for(s in styles){if(styles.hasOwnProperty(s)){el.vml.color.shape.style[s]=el.currentStyle[s]}}},vmlFill:function(el){if(!el.currentStyle){return}else{var elStyle,noImg,lib,v,img,imgLoaded;elStyle=el.currentStyle}for(v in el.vml){if(el.vml.hasOwnProperty(v)){el.vml[v].shape.style.zIndex=elStyle.zIndex}}el.runtimeStyle.backgroundColor='';el.runtimeStyle.backgroundImage='';noImg=true;if(elStyle.backgroundImage!='none'||el.isImg){if(!el.isImg){el.vmlBg=elStyle.backgroundImage;el.vmlBg=el.vmlBg.substr(5,el.vmlBg.lastIndexOf('")')-5)}else{el.vmlBg=el.src}lib=this;if(!lib.imgSize[el.vmlBg]){img=doc.createElement('img');lib.imgSize[el.vmlBg]=img;img.className=lib.ns+'_sizeFinder';img.runtimeStyle.cssText=['behavior:none','position:absolute','left:-10000px','top:-10000px','border:none','margin:0','padding:0'].join(';');imgLoaded=function(){this.width=this.offsetWidth;this.height=this.offsetHeight;lib.vmlOffsets(el)};img.attachEvent('onload',imgLoaded);img.src=el.vmlBg;img.removeAttribute('width');img.removeAttribute('height');doc.body.insertBefore(img,doc.body.firstChild)}el.vml.image.fill.src=el.vmlBg;noImg=false}el.vml.image.fill.on=!noImg;el.vml.image.fill.color='none';el.vml.color.shape.style.backgroundColor=elStyle.backgroundColor;el.runtimeStyle.backgroundImage='none';el.runtimeStyle.backgroundColor='transparent'},vmlOffsets:function(el){var thisStyle,size,fudge,makeVisible,bg,bgR,dC,altC,b,c,v;thisStyle=el.currentStyle;size={'W':el.clientWidth+1,'H':el.clientHeight+1,'w':this.imgSize[el.vmlBg].width,'h':this.imgSize[el.vmlBg].height,'L':el.offsetLeft,'T':el.offsetTop,'bLW':el.clientLeft,'bTW':el.clientTop};fudge=(size.L+size.bLW==1)?1:0;makeVisible=function(vml,l,t,w,h,o){vml.coordsize=w+','+h;vml.coordorigin=o+','+o;vml.path='m0,0l'+w+',0l'+w+','+h+'l0,'+h+' xe';vml.style.width=w+'px';vml.style.height=h+'px';vml.style.left=l+'px';vml.style.top=t+'px'};makeVisible(el.vml.color.shape,(size.L+(el.isImg?0:size.bLW)),(size.T+(el.isImg?0:size.bTW)),(size.W-1),(size.H-1),0);makeVisible(el.vml.image.shape,(size.L+size.bLW),(size.T+size.bTW),(size.W),(size.H),1);bg={'X':0,'Y':0};if(el.isImg){bg.X=parseInt(thisStyle.paddingLeft,10)+1;bg.Y=parseInt(thisStyle.paddingTop,10)+1}else{for(b in bg){if(bg.hasOwnProperty(b)){this.figurePercentage(bg,size,b,thisStyle['backgroundPosition'+b])}}}el.vml.image.fill.position=(bg.X/size.W)+','+(bg.Y/size.H);bgR=thisStyle.backgroundRepeat;dC={'T':1,'R':size.W+fudge,'B':size.H,'L':1+fudge};altC={'X':{'b1':'L','b2':'R','d':'W'},'Y':{'b1':'T','b2':'B','d':'H'}};if(bgR!='repeat'){c={'T':(bg.Y),'R':(bg.X+size.w),'B':(bg.Y+size.h),'L':(bg.X)};if(bgR.search('repeat-')!=-1){v=bgR.split('repeat-')[1].toUpperCase();c[altC[v].b1]=1;c[altC[v].b2]=size[altC[v].d]}if(c.B>size.H){c.B=size.H}el.vml.image.shape.style.clip='rect('+c.T+'px '+(c.R+fudge)+'px '+c.B+'px '+(c.L+fudge)+'px)'}else{el.vml.image.shape.style.clip='rect('+dC.T+'px '+dC.R+'px '+dC.B+'px '+dC.L+'px)'}},figurePercentage:function(bg,size,axis,position){var horizontal,fraction;fraction=true;horizontal=(axis=='X');switch(position){case'left':case'top':bg[axis]=0;break;case'center':bg[axis]=0.5;break;case'right':case'bottom':bg[axis]=1;break;default:position.search('%')!=-1?bg[axis]=parseInt(position,10)/100:fraction=false}bg[axis]=Math.ceil(fraction?((size[horizontal?'W':'H']*bg[axis])-(size[horizontal?'w':'h']*bg[axis])):parseInt(position,10));if(bg[axis]%2===0){bg[axis]++}return bg[axis]},fixPng:function(el){var lib,els,nodeStr,v,e;if(el.nodeName=='BODY'||el.nodeName=='TD'||el.nodeName=='TR'){return}el.isImg=false;if(el.nodeName=='IMG'){if(el.src.toLowerCase().search(/\.png$/)!=-1){el.isImg=true;el.style.visibility='hidden'}else{return}}else if(el.currentStyle.backgroundImage.toLowerCase().search('.png')==-1){return}lib=DD_belatedPNG;el.vml={color:{},image:{}};els={shape:{},fill:{}};for(v in el.vml){if(el.vml.hasOwnProperty(v)){for(e in els){if(els.hasOwnProperty(e)){nodeStr=lib.ns+':'+e;el.vml[v][e]=doc.createElement(nodeStr)}}el.vml[v].shape.stroked=false;if(el.nodeName=='IMG'){var width=el.width/96*72;var height=el.height/96*72;el.vml[v].fill.type='tile';el.vml[v].fill.size=width+'pt,'+height+'pt'}else if(el.currentStyle){var elStyle=el.currentStyle;if(elStyle.backgroundImage!='none'){var vmlBg=elStyle.backgroundImage;var img=doc.createElement("img");img.src=vmlBg.substr(5,vmlBg.lastIndexOf('")')-5);var run=img.runtimeStyle;var mem={w:run.width,h:run.height};run.width='auto';run.height='auto';w=img.width;h=img.height;run.width=mem.w;run.height=mem.h;var width=w/96*72;var height=h/96*72;el.vml[v].fill.type='tile';el.vml[v].fill.aspect='atleast';el.vml[v].fill.size=width+'pt,'+height+'pt'}}el.vml[v].shape.appendChild(el.vml[v].fill);el.parentNode.insertBefore(el.vml[v].shape,el)}}el.vml.image.shape.fillcolor='none';el.vml.color.fill.on=false;lib.attachHandlers(el);lib.giveLayout(el);lib.giveLayout(el.offsetParent);el.vmlInitiated=true;lib.applyVML(el)}};try{doc.execCommand("BackgroundImageCache",false,true)}catch(r){}DD_belatedPNG.createVmlNameSpace();DD_belatedPNG.createVmlStyleSheet();$.extend($.fn,{fixPng:function(){if([,]!=0){$.each(this,function(){DD_belatedPNG.fixPng(this)})}return this}})})(jQuery);
	
