/*
 * IE PNG Fix v1.4
 *
 * Copyright (c) 2006 Takashi Aida http://www.isella.com/aod2/
 *
 */

// IE5.5+ PNG Alpha Fix v1.0RC4
// (c) 2004-2005 Angus Turnbull http://www.twinhelix.com

// This is licensed under the CC-GNU LGPL, version 2.1 or later.
// For details, see: http://creativecommons.org/licenses/LGPL/2.1/

if (typeof IEPNGFIX == 'undefined') {
//--============================================================================

var IEPNGFIX = {
	blank:  'http://www.isella.com/aod2/images/blank.gif',
	filter: 'DXImageTransform.Microsoft.AlphaImageLoader',

	fixit: function (elem, src, method) {
		if (elem.filters[this.filter]) {
			var filter = elem.filters[this.filter];
			filter.enabled = true;
			filter.src = src;
			filter.sizingMethod = method;
		}
		else {
			elem.style.filter = 'progid:' + this.filter +
				'(src="' + src + '",sizingMethod="' + method + '")';
		}
	},

	fixwidth: function(elem) {
		if (elem.currentStyle.width == 'auto' &&
			elem.currentStyle.height == 'auto') {
			elem.style.width = elem.offsetWidth + 'px';
		}
	},

	fixchild: function(elem, recursive) {
		if (!/MSIE (5\.5|6\.|7\.)/.test(navigator.userAgent)) return;

		for (var i = 0, n = elem.childNodes.length; i < n; i++) {
			var childNode = elem.childNodes[i];
			if (childNode.style) {
				if (childNode.style.position) {
					childNode.style.position = childNode.style.position;
				}
				else {
					childNode.style.position = 'relative';
				}
			}
			if (recursive && childNode.hasChildNodes()) {
				this.fixchild(childNode, recursive);
			}
		}
	},

	fix: function(elem) {
		if (!/MSIE (5\.5|6\.|7\.)/.test(navigator.userAgent)) return;

		var bgImg =
			elem.currentStyle.backgroundImage || elem.style.backgroundImage;

		if (elem.tagName == 'IMG') {
			if ((/\.png$/i).test(elem.src)) {
				this.fixwidth(elem);
				this.fixit(elem, elem.src, 'scale');
				elem.src = this.blank;
				elem.runtimeStyle.behavior = 'none';
			}
		}
		else if (bgImg && bgImg != 'none') {
			if (bgImg.match(/^url[("']+(.*\.png)[)"']+$/i)) {
				var s = RegExp.$1;
				this.fixwidth(elem);
				elem.style.backgroundImage = 'none';
				this.fixit(elem, s, 'scale'); // crop | image | scale

				if (elem.tagName == 'A' && elem.style) {
					if (!elem.style.cursor) {
						elem.style.cursor = 'pointer';
					}
				}

				this.fixchild(elem);
				elem.runtimeStyle.behavior = 'none';
			}
		}
	},

	hover: function(elem, hvImg) {
		var bgImg = elem.style.backgroundImage;

		if (!bgImg && elem.currentStyle) bgImg = elem.currentStyle.backgroundImage;

		if (elem.tagName == 'IMG' && hvImg) {
			var image = elem.src;
			elem.onmouseover = function() {
				elem.src = hvImg;
				IEPNGFIX.fix(elem);
			};
			elem.onmouseout = function() {
				elem.src = image;
				IEPNGFIX.fix(elem);
			};
		}
		else if (bgImg && bgImg != 'none' && hvImg) {
			elem.onmouseover = function() {
				elem.style.backgroundImage = 'url(' + hvImg + ')';
				IEPNGFIX.fix(elem);
			};
			elem.onmouseout = function() {
				elem.style.backgroundImage = bgImg;
				IEPNGFIX.fix(elem);
			};
		}

		IEPNGFIX.fix(elem);
	}
};

//--============================================================================
} // end if (typeof IEPNGFIX == 'undefined')



function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}




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

 Author : http://www.yomotsu.net
 created: 2007/11/20
 Licensed under the GNU Lesser General Public License version 2.1
 
 “ü—Í‚³‚ê‚½ƒeƒLƒXƒg‚ðŽ©“®‚Å”¼Šp‚É•ÏŠ·‚·‚éƒXƒNƒŠƒvƒgB
 Ž©“®‚Å”¼Šp‚É•ÏŠ·‚µ‚½‚¢input—v‘fA‚Ü‚½‚Ítextarea—v‘f‚Ìclass‘®«‚Éuasciiv‚ð“ü‚ê‚Ä‚­‚¾‚³‚¡B

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


var yomotsuReplaceChar = {

	conf : {
		asciiChar : ["!","&quot;","#","$","%","&amp;","\'","(",")","*","+",",","-",".","/","0","1","2","3","4","5","6","7","8","9",":",";","&gt;","=","&lt;","?","@","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","[","\\","]","^","_","`","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","{","|","}","~"],
		multibyteChar : ["I","h","”","","“","•","f","i","j","–","{","C","|","D","^","‚O","‚P","‚Q","‚R","‚S","‚T","‚U","‚V","‚W","‚X","F","G","„","","ƒ","H","—","‚`","‚a","‚b","‚c","‚d","‚e","‚f","‚g","‚h","‚i","‚j","‚k","‚l","‚m","‚n","‚o","‚p","‚q","‚r","‚s","‚t","‚u","‚v","‚w","‚x","‚y","m","","n","O","Q","M","‚","‚‚","‚ƒ","‚„","‚…","‚†","‚‡","‚ˆ","‚‰","‚Š","‚‹","‚Œ","‚","‚Ž","‚","‚","‚‘","‚’","‚“","‚”","‚•","‚–","‚—","‚˜","‚™","‚š","o","b","p","P"]
	},

	main : function (){
		input = document.getElementsByTagName("input");
		for(i=0;i<input.length;i++){
			yomotsuReplaceChar.replacing(input[i])
		}
		
		textarea = document.getElementsByTagName("textarea");
		for(i=0;i<textarea.length;i++){
			yomotsuReplaceChar.replacing(textarea[i])
		}
	},

	replacing : function (element){
		asciiChar = yomotsuReplaceChar.conf.asciiChar;
		multibyteChar = yomotsuReplaceChar.conf.multibyteChar;
		if(element.className.match(/\bascii/)){
			element.onblur = function(){
				for(i=0;i<asciiChar.length;i++){
					re = new RegExp(multibyteChar[i],"g");
					this.value = this.value.replace(re,asciiChar[i]);
				}
			}
		}
	},
	
	addEvent : function(){
			try {
			window.addEventListener('load', yomotsuReplaceChar.main, false);
		} catch (e) {
			window.attachEvent('onload', yomotsuReplaceChar.main);
		}
	}
	
}

yomotsuReplaceChar.addEvent();