function clickage(val) {
	if (document.enter.text.value=='Enter text to be translated here') {document.enter.text.value='';}
	document.enter.text.value+=val;
	document.enter.text.focus();
}

function changeLanguageElements(val, controlKanaBox) {
	var elements=document.getElementById("toIso");
	if (controlKanaBox) {
		if (val=="ja") {document.getElementById("kana").style.visibility="visible";} else {document.getElementById("kana").style.visibility="hidden";}
	}
	val=fromIsoIndex(val);
	elements.length=languageName[val].length;
	for (i=0; i<languageName[val].length; i++) {
		elements[i].value=languageIso[val][i];
		elements[i].text=languageName[val][i];
	}
	document.getElementById("toIso").selectedIndex=0;
}

function fromIsoIndex(val) {
	for (i=0; i<fromIso.length; i++) {
		if (fromIso[i]==val) {return i;}
	}
	return false;
}

// Set hiragana unicode values
//var hiragana1 = new Array("\u3063","\u3042","\u3044","\u3046","\u3048","\u304A","\u304B","\u304C","\u304D","\u304E","\u304F","\u3050","\u3051","\u3052","\u3053","\u3054","\u3055","\u3056","\u3057","\u3058","\u3059","\u305A","\u305B","\u305C","\u305D","\u305E","\u305F","\u3060","\u3062","\u3064","\u3065","\u3066","\u3067","\u3068","\u3069","\u306A","\u306B","\u306C","\u306D","\u306E","\u306F","\u3070","\u3071","\u3072","\u3073","\u3074","\u3075","\u3076","\u3077","\u3078","\u3079","\u307A","\u307B","\u307C","\u307D","\u307E","\u307F","\u3080","\u3081","\u3082","\u3084","\u3086","\u3088","\u3089","\u308A","\u308B","\u308C","\u308D","\u308F","\u3092","\u3093","\u304D","\u304D","\u304D","\u304E","\u304E","\u304E","\u3057","\u3057","\u3057","\u3058","\u3058","\u3058","\u3061","\u3061","\u3061","\u306B","\u306B","\u306B","\u3072","\u3072","\u3072","\u3073","\u3073","\u3073","\u3074","\u3074","\u3074","\u307F","\u307F","\u307F","\u308A","\u308A","\u308A","\u3061")
//var hiragana1 = new Array(3063,3042,3044,3046,3048,304A,304B,304C,304D,304E,304F,3050,3051,3052,3053,3054,3055,3056,3057,3058,3059,305A,305B,305C,305D,305E,305F,3060,3062,3064,3065,3066,3067,3068,3069,306A,306B,306C,306D,306E,306F,3070,3071,3072,3073,3074,3075,3076,3077,3078,3079,307A,307B,307C,307D,307E,307F,3080,3081,3082,3084,3086,3088,3089,308A,308B,308C,308D,308F,3092,3093,304D,304D,304D,304E,304E,304E,3057,3057,3057,3058,3058,3058,3061,3061,3061,306B,306B,306B,3072,3072,3072,3073,3073,3073,3074,3074,3074,307F,307F,307F,308A,308A,308A,3061)
var hiragana1 = new Array(12387,12354,12356,12358,12360,12362,12363,12364,12365,12366,12367,12368,12369,12370,12371,12372,12373,12374,12375,12376,12377,12378,12379,12380,12381,12382,12383,12384,12386,12388,12389,12390,12391,12392,12393,12394,12395,12396,12397,12398,12399,12400,12401,12402,12403,12404,12405,12406,12407,12408,12409,12410,12411,12412,12413,12414,12415,12416,12417,12418,12420,12422,12424,12425,12426,12427,12428,12429,12431,12434,12435,12365,12365,12365,12366,12366,12366,12375,12375,12375,12376,12376,12376,12385,12385,12385,12395,12395,12395,12402,12402,12402,12403,12403,12403,12404,12404,12404,12415,12415,12415,12426,12426,12426,12385,12483,12450,12452,12454,12456,12458,12459,12460,12461,12462,12463,12464,12465,12466,12467,12468,12469,12470,12471,12472,12473,12474,12475,12476,12477,12478,12479,12480,12482,12484,12485,12486,12487,12488,12489,12490,12491,12492,12493,12494,12495,12496,12497,12498,12499,12500,12501,12502,12503,12504,12505,12506,12507,12508,12509,12510,12511,12512,12513,12514,12516,12518,12520,12521,12522,12523,12524,12525,12527,12530,12531,12461,12461,12461,12462,12462,12462,12471,12471,12471,12472,12472,12472,12481,12481,12481,12491,12491,12491,12498,12498,12498,12499,12499,12499,12500,12500,12500,12511,12511,12511,12522,12522,12522,12481)
var romaji= new Array("#","a","i","u","e","o","ka","ga","ki","gi","ku","gu","ke","ge","ko","go","sa","za","shi","ji","su","zu","se","ze","so","zo","ta","da","zi","tsu","zu","te","de","to","do","na","ni","nu","ne","no","ha","ba","pa","hi","bi","pi","fu","bu","pu","he","be","pe","ho","bo","po","ma","mi","mu","me","mo","ya","yu","yo","ra","ri","ru","re","ro","wa","wo","n","kya","kyu","kyo","gya","gyu","gyo","sha","shu","sho","ja","ju","jo","cha","chu","cho","nya","nyu","nyo","hya","hyu","hyo","bya","byu","byo","pya","pyu","pyo","mya","myu","myo","rya","ryu","ryo","chi","#","A","I","U","E","O","KA","GA","KI","GI","KU","GU","KE","GE","KO","GO","SA","ZA","SHI","JI","SU","ZU","SE","ZE","SO","ZO","TA","DA","ZI","TSU","ZU","TE","DE","TO","DO","NA","NI","NU","NE","NO","HA","BA","PA","HI","BI","PI","FU","BU","PU","HE","BE","PE","HO","BO","PO","MA","MI","MU","ME","MO","YA","YU","YO","RA","RI","RU","RE","RO","WA","WO","N","KYA","KYU","KYO","GYA","GYU","GYO","SHA","SHU","SHO","JA","JU","JO","CHA","CHU","CHO","NYA","NYU","NYO","HYA","HYU","HYO","BYA","BYU","BYO","PYA","PYU","PYO","MYA","MYU","MYO","RYA","RYU","RYO","CHI")
//var hiragana2 = new Array("","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","\u3083","\u3085","\u3087","\u3083","\u3085","\u3087","\u3083","\u3085","\u3087","\u3083","\u3085","\u3087","\u3083","\u3085","\u3087","\u3083","\u3085","\u3087","\u3083","\u3085","\u3087","\u3083","\u3085","\u3087","\u3083","\u3085","\u3087","\u3083","\u3085","\u3087","\u3083","\u3085","\u3087","")
var hiragana2 = new Array(-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,12419,12421,12423,12419,12421,12423,12419,12421,12423,12419,12421,12423,12419,12421,12423,12419,12421,12423,12419,12421,12423,12419,12421,12423,12419,12421,12423,12419,12421,12423,12419,12421,12423,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,12515,12517,12519,12515,12517,12519,12515,12517,12519,12515,12517,12519,12515,12517,12519,12515,12517,12519,12515,12517,12519,12515,12517,12519,12515,12517,12519,12515,12517,12519,12515,12517,12519,-1)
// End set hiragana unicode values

function convert(strval){
//if (event.keyCode==13) {strval=strval.replace("\n","")}
	var word=strval;
	var syllables=0;
	var syllable="a";
	var lastsyllable="";
	var letter="";
	var kanastring="";
	letter=1;
	lastsyllable=0;
	while (letter<=word.length)
	{
		if (endOfSyllable(word.substring(letter-1,letter+2))) {
			syllable=word.substring(lastsyllable,letter)
			lastsyllable=letter
			kanastring+=tokana(syllable)
			}
		letter++
	}
	return unescape(kanastring);
//}
}

function tokana(strval)
{
	syllable1=strval.substring(0,2)
	syllable2=strval.substring(0,3)
	var kanachar;
	var kanaval1=66;
	var kanaval2=66;
	for (current=0;current<=210;current++)
	{
////	if (romaji[current]==syllable2) {kanachar=hiragana1[current] + hiragana2[current];}
	if (romaji[current]==syllable2) {kanaval1=hiragana1[current]; kanaval2=hiragana2[current];}
	// + hiragana2[current];}
	}
	upperCase=syllable2
	lowerCase=syllable2
	upperCase=upperCase.toUpperCase()
	lowerCase=lowerCase.toLowerCase()
	if (tsu(syllable2)) {
		switch (syllable2){
			case upperCase:
				kanaval1=hiragana1[105];kanaval2=-1;
				break;
			case lowerCase:
				kanaval1=hiragana1[0];kanaval2=-1;
				break;
			default:
				break;
				}
		}		
//	if (kanaval) {

//kanachar=unescape(String.fromCharCode(kanaval))
	kanachar=String.fromCharCode(kanaval1)
	if (kanaval2!=-1) {kanachar+=String.fromCharCode(kanaval2)}
//	}
//	if (!kanaval) {kanachar=""}
//	kanachar="a"
	return (kanachar);
}
function endOfSyllable(strvalue){
	lowerSyllable=strvalue
	lowerSyllable=lowerSyllable.toLowerCase()
	var letter1=lowerSyllable.substring(0,1);
	var letter2=lowerSyllable.substring(1,2);
	var letter3=lowerSyllable.substring(2,3);
	switch(letter1){
		case "a":
			return true;
		case "e":
			return true;
		case "i":
			return true;
		case "o":
			return true;
		case "u":
			return true;
		case "n":
			if (n(lowerSyllable))
				{return true}
		case letter2:
			if (letter1!="n") {return true;}
			else {return false}
		default:
			return false;
	}
}

function tsu(strvalue){
	lowerSyllable=strvalue
	lowerSyllable=lowerSyllable.toLowerCase()
	var letter1=lowerSyllable.substring(0,1);
	var letter2=lowerSyllable.substring(1,2);
	var letter3=lowerSyllable.substring(2,3);
	if (!endOfSyllable(letter1) && n(letter1) && !letter2 && lowerSyllable.length==1) {return true}
	else {return false}
}

function n(strvalue){
	lowerSyllable=strvalue
	lowerSyllable=lowerSyllable.toLowerCase()
	var letter1=lowerSyllable.substring(0,1);
	var letter2=lowerSyllable.substring(1,2);
	var letter3=lowerSyllable.substring(2,3);
	switch(letter2){
		case "a":
			return false;
		case "e":
			return false;
		case "i":
			return false;
		case "o":
			return false;
		case "u":
			return false;
		default:
			return true;
	}
}

function HtmlDecode(s) 
{ 
      var out = ""; 
      if (s==null) return; 
      var l = s.length; 
      for (var i=0; i<l; i++) 
      { 
            var ch = s.charAt(i); 
            if (ch == '&') 
            { 
                  var semicolonIndex = s.indexOf(';', i+1); 
            if (semicolonIndex > 0) 
            { 
                        var entity = s.substring(i + 1, semicolonIndex); 
                        if (entity.length > 1 && entity.charAt(0) == '#') 
                        { 
                              if (entity.charAt(1) == 'x' || entity.charAt(1) == 'X') 
                                    ch = String.fromCharCode(eval('0'+entity.substring(1))); 
                              else 
                                    ch = String.fromCharCode(eval(entity.substring(1))); 
                        } 
                    else 
                      { 
                              switch (entity) 
                              { 
                                    case 'quot': ch = String.fromCharCode(0x0022); break; 
                                    case 'amp': ch = String.fromCharCode(0x0026); break; 
                                    case 'lt': ch = String.fromCharCode(0x003c); break; 
                                    case 'gt': ch = String.fromCharCode(0x003e); break; 
                                    case 'nbsp': ch = String.fromCharCode(0x00a0); break; 
                                    case 'iexcl': ch = String.fromCharCode(0x00a1); break; 
                                    case 'cent': ch = String.fromCharCode(0x00a2); break; 
                                    case 'pound': ch = String.fromCharCode(0x00a3); break; 
                                    case 'curren': ch = String.fromCharCode(0x00a4); break; 
                                    case 'yen': ch = String.fromCharCode(0x00a5); break; 
                                    case 'brvbar': ch = String.fromCharCode(0x00a6); break; 
                                    case 'sect': ch = String.fromCharCode(0x00a7); break; 
                                    case 'uml': ch = String.fromCharCode(0x00a8); break; 
                                    case 'copy': ch = String.fromCharCode(0x00a9); break; 
                                    case 'ordf': ch = String.fromCharCode(0x00aa); break; 
                                    case 'laquo': ch = String.fromCharCode(0x00ab); break; 
                                    case 'not': ch = String.fromCharCode(0x00ac); break; 
                                    case 'shy': ch = String.fromCharCode(0x00ad); break; 
                                    case 'reg': ch = String.fromCharCode(0x00ae); break; 
                                    case 'macr': ch = String.fromCharCode(0x00af); break; 
                                    case 'deg': ch = String.fromCharCode(0x00b0); break; 
                                    case 'plusmn': ch = String.fromCharCode(0x00b1); break; 
                                    case 'sup2': ch = String.fromCharCode(0x00b2); break; 
                                    case 'sup3': ch = String.fromCharCode(0x00b3); break; 
                                    case 'acute': ch = String.fromCharCode(0x00b4); break; 
                                    case 'micro': ch = String.fromCharCode(0x00b5); break; 
                                    case 'para': ch = String.fromCharCode(0x00b6); break; 
                                    case 'middot': ch = String.fromCharCode(0x00b7); break; 
                                    case 'cedil': ch = String.fromCharCode(0x00b8); break; 
                                    case 'sup1': ch = String.fromCharCode(0x00b9); break; 
                                    case 'ordm': ch = String.fromCharCode(0x00ba); break; 
                                    case 'raquo': ch = String.fromCharCode(0x00bb); break; 
                                    case 'frac14': ch = String.fromCharCode(0x00bc); break; 
                                    case 'frac12': ch = String.fromCharCode(0x00bd); break; 
                                    case 'frac34': ch = String.fromCharCode(0x00be); break; 
                                    case 'iquest': ch = String.fromCharCode(0x00bf); break; 
                                    case 'Agrave': ch = String.fromCharCode(0x00c0); break; 
                                    case 'Aacute': ch = String.fromCharCode(0x00c1); break; 
                                    case 'Acirc': ch = String.fromCharCode(0x00c2); break; 
                                    case 'Atilde': ch = String.fromCharCode(0x00c3); break; 
                                    case 'Auml': ch = String.fromCharCode(0x00c4); break; 
                                    case 'Aring': ch = String.fromCharCode(0x00c5); break; 
                                    case 'AElig': ch = String.fromCharCode(0x00c6); break; 
                                    case 'Ccedil': ch = String.fromCharCode(0x00c7); break; 
                                    case 'Egrave': ch = String.fromCharCode(0x00c8); break; 
                                    case 'Eacute': ch = String.fromCharCode(0x00c9); break; 
                                    case 'Ecirc': ch = String.fromCharCode(0x00ca); break; 
                                    case 'Euml': ch = String.fromCharCode(0x00cb); break; 
                                    case 'Igrave': ch = String.fromCharCode(0x00cc); break; 
                                    case 'Iacute': ch = String.fromCharCode(0x00cd); break; 
                                    case 'Icirc': ch = String.fromCharCode(0x00ce ); break; 
                                    case 'Iuml': ch = String.fromCharCode(0x00cf); break; 
                                    case 'ETH': ch = String.fromCharCode(0x00d0); break; 
                                    case 'Ntilde': ch = String.fromCharCode(0x00d1); break; 
                                    case 'Ograve': ch = String.fromCharCode(0x00d2); break; 
                                    case 'Oacute': ch = String.fromCharCode(0x00d3); break; 
                                    case 'Ocirc': ch = String.fromCharCode(0x00d4); break; 
                                    case 'Otilde': ch = String.fromCharCode(0x00d5); break; 
                                    case 'Ouml': ch = String.fromCharCode(0x00d6); break; 
                                    case 'times': ch = String.fromCharCode(0x00d7); break; 
                                    case 'Oslash': ch = String.fromCharCode(0x00d8); break; 
                                    case 'Ugrave': ch = String.fromCharCode(0x00d9); break; 
                                    case 'Uacute': ch = String.fromCharCode(0x00da); break; 
                                    case 'Ucirc': ch = String.fromCharCode(0x00db); break; 
                                    case 'Uuml': ch = String.fromCharCode(0x00dc); break; 
                                    case 'Yacute': ch = String.fromCharCode(0x00dd); break; 
                                    case 'THORN': ch = String.fromCharCode(0x00de); break; 
                                    case 'szlig': ch = String.fromCharCode(0x00df); break; 
                                    case 'agrave': ch = String.fromCharCode(0x00e0); break; 
                                    case 'aacute': ch = String.fromCharCode(0x00e1); break; 
                                    case 'acirc': ch = String.fromCharCode(0x00e2); break; 
                                    case 'atilde': ch = String.fromCharCode(0x00e3); break; 
                                    case 'auml': ch = String.fromCharCode(0x00e4); break; 
                                    case 'aring': ch = String.fromCharCode(0x00e5); break; 
                                    case 'aelig': ch = String.fromCharCode(0x00e6); break; 
                                    case 'ccedil': ch = String.fromCharCode(0x00e7); break; 
                                    case 'egrave': ch = String.fromCharCode(0x00e8); break; 
                                    case 'eacute': ch = String.fromCharCode(0x00e9); break; 
                                    case 'ecirc': ch = String.fromCharCode(0x00ea); break; 
                                    case 'euml': ch = String.fromCharCode(0x00eb); break; 
                                    case 'igrave': ch = String.fromCharCode(0x00ec); break; 
                                    case 'iacute': ch = String.fromCharCode(0x00ed); break; 
                                    case 'icirc': ch = String.fromCharCode(0x00ee); break; 
                                    case 'iuml': ch = String.fromCharCode(0x00ef); break; 
                                    case 'eth': ch = String.fromCharCode(0x00f0); break; 
                                    case 'ntilde': ch = String.fromCharCode(0x00f1); break; 
                                    case 'ograve': ch = String.fromCharCode(0x00f2); break; 
                                    case 'oacute': ch = String.fromCharCode(0x00f3); break; 
                                    case 'ocirc': ch = String.fromCharCode(0x00f4); break; 
                                    case 'otilde': ch = String.fromCharCode(0x00f5); break; 
                                    case 'ouml': ch = String.fromCharCode(0x00f6); break; 
                                    case 'divide': ch = String.fromCharCode(0x00f7); break; 
                                    case 'oslash': ch = String.fromCharCode(0x00f8); break; 
                                    case 'ugrave': ch = String.fromCharCode(0x00f9); break; 
                                    case 'uacute': ch = String.fromCharCode(0x00fa); break; 
                                    case 'ucirc': ch = String.fromCharCode(0x00fb); break; 
                                    case 'uuml': ch = String.fromCharCode(0x00fc); break; 
                                    case 'yacute': ch = String.fromCharCode(0x00fd); break; 
                                    case 'thorn': ch = String.fromCharCode(0x00fe); break; 
                                    case 'yuml': ch = String.fromCharCode(0x00ff); break; 
                                    case 'OElig': ch = String.fromCharCode(0x0152); break; 
                                    case 'oelig': ch = String.fromCharCode(0x0153); break; 
                                    case 'Scaron': ch = String.fromCharCode(0x0160); break; 
                                    case 'scaron': ch = String.fromCharCode(0x0161); break; 
                                    case 'Yuml': ch = String.fromCharCode(0x0178); break; 
                                    case 'fnof': ch = String.fromCharCode(0x0192); break; 
                                    case 'circ': ch = String.fromCharCode(0x02c6); break; 
                                    case 'tilde': ch = String.fromCharCode(0x02dc); break; 
                                    case 'Alpha': ch = String.fromCharCode(0x0391); break; 
                                    case 'Beta': ch = String.fromCharCode(0x0392); break; 
                                    case 'Gamma': ch = String.fromCharCode(0x0393); break; 
                                    case 'Delta': ch = String.fromCharCode(0x0394); break; 
                                    case 'Epsilon': ch = String.fromCharCode(0x0395); break; 
                                    case 'Zeta': ch = String.fromCharCode(0x0396); break; 
                                    case 'Eta': ch = String.fromCharCode(0x0397); break; 
                                    case 'Theta': ch = String.fromCharCode(0x0398); break; 
                                    case 'Iota': ch = String.fromCharCode(0x0399); break; 
                                    case 'Kappa': ch = String.fromCharCode(0x039a); break; 
                                    case 'Lambda': ch = String.fromCharCode(0x039b); break; 
                                    case 'Mu': ch = String.fromCharCode(0x039c); break; 
                                    case 'Nu': ch = String.fromCharCode(0x039d); break; 
                                    case 'Xi': ch = String.fromCharCode(0x039e); break; 
                                    case 'Omicron': ch = String.fromCharCode(0x039f); break; 
                                    case 'Pi': ch = String.fromCharCode(0x03a0); break; 
                                    case ' Rho ': ch = String.fromCharCode(0x03a1); break; 
                                    case 'Sigma': ch = String.fromCharCode(0x03a3); break; 
                                    case 'Tau': ch = String.fromCharCode(0x03a4); break; 
                                    case 'Upsilon': ch = String.fromCharCode(0x03a5); break; 
                                    case 'Phi': ch = String.fromCharCode(0x03a6); break; 
                                    case 'Chi': ch = String.fromCharCode(0x03a7); break; 
                                    case 'Psi': ch = String.fromCharCode(0x03a8); break; 
                                    case 'Omega': ch = String.fromCharCode(0x03a9); break; 
                                    case 'alpha': ch = String.fromCharCode(0x03b1); break; 
                                    case 'beta': ch = String.fromCharCode(0x03b2); break; 
                                    case 'gamma': ch = String.fromCharCode(0x03b3); break; 
                                    case 'delta': ch = String.fromCharCode(0x03b4); break; 
                                    case 'epsilon': ch = String.fromCharCode(0x03b5); break; 
                                    case 'zeta': ch = String.fromCharCode(0x03b6); break; 
                                    case 'eta': ch = String.fromCharCode(0x03b7); break; 
                                    case 'theta': ch = String.fromCharCode(0x03b8); break; 
                                    case 'iota': ch = String.fromCharCode(0x03b9); break; 
                                    case 'kappa': ch = String.fromCharCode(0x03ba); break; 
                                    case 'lambda': ch = String.fromCharCode(0x03bb); break; 
                                    case 'mu': ch = String.fromCharCode(0x03bc); break; 
                                    case 'nu': ch = String.fromCharCode(0x03bd); break; 
                                    case 'xi': ch = String.fromCharCode(0x03be); break; 
                                    case 'omicron': ch = String.fromCharCode(0x03bf); break; 
                                    case 'pi': ch = String.fromCharCode(0x03c0); break; 
                                    case 'rho': ch = String.fromCharCode(0x03c1); break; 
                                    case 'sigmaf': ch = String.fromCharCode(0x03c2); break; 
                                    case 'sigma': ch = String.fromCharCode(0x03c3); break; 
                                    case 'tau': ch = String.fromCharCode(0x03c4); break; 
                                    case 'upsilon': ch = String.fromCharCode(0x03c5); break; 
                                    case 'phi': ch = String.fromCharCode(0x03c6); break; 
                                    case 'chi': ch = String.fromCharCode(0x03c7); break; 
                                    case 'psi': ch = String.fromCharCode(0x03c8); break; 
                                    case 'omega': ch = String.fromCharCode(0x03c9); break; 
                                    case 'thetasym': ch = String.fromCharCode(0x03d1); break; 
                                    case 'upsih': ch = String.fromCharCode(0x03d2); break; 
                                    case 'piv': ch = String.fromCharCode(0x03d6); break; 
                                    case 'ensp': ch = String.fromCharCode(0x2002); break; 
                                    case 'emsp': ch = String.fromCharCode(0x2003); break; 
                                    case 'thinsp': ch = String.fromCharCode(0x2009); break; 
                                    case 'zwnj': ch = String.fromCharCode(0x200c); break; 
                                    case 'zwj': ch = String.fromCharCode(0x200d); break; 
                                    case 'lrm': ch = String.fromCharCode(0x200e); break; 
                                    case 'rlm': ch = String.fromCharCode(0x200f); break; 
                                    case 'ndash': ch = String.fromCharCode(0x2013); break; 
                                    case 'mdash': ch = String.fromCharCode(0x2014); break; 
                                    case 'lsquo': ch = String.fromCharCode(0x2018); break; 
                                    case 'rsquo': ch = String.fromCharCode(0x2019); break; 
                                    case 'sbquo': ch = String.fromCharCode(0x201a); break; 
                                    case 'ldquo': ch = String.fromCharCode(0x201c); break; 
                                    case 'rdquo': ch = String.fromCharCode(0x201d); break; 
                                    case 'bdquo': ch = String.fromCharCode(0x201e); break; 
                                    case 'dagger': ch = String.fromCharCode(0x2020); break; 
                                    case 'Dagger': ch = String.fromCharCode(0x2021); break; 
                                    case 'bull': ch = String.fromCharCode(0x2022); break; 
                                    case 'hellip': ch = String.fromCharCode(0x2026); break; 
                                    case 'permil': ch = String.fromCharCode(0x2030); break; 
                                    case 'prime': ch = String.fromCharCode(0x2032); break; 
                                    case 'Prime': ch = String.fromCharCode(0x2033); break; 
                                    case 'lsaquo': ch = String.fromCharCode(0x2039); break; 
                                    case 'rsaquo': ch = String.fromCharCode(0x203a); break; 
                                    case 'oline': ch = String.fromCharCode(0x203e); break; 
                                    case 'frasl': ch = String.fromCharCode(0x2044); break; 
                                    case 'euro': ch = String.fromCharCode(0x20ac); break; 
                                    case 'image': ch = String.fromCharCode(0x2111); break; 
                                    case 'weierp': ch = String.fromCharCode(0x2118); break; 
                                    case 'real': ch = String.fromCharCode(0x211c); break; 
                                    case 'trade': ch = String.fromCharCode(0x2122); break; 
                                    case 'alefsym': ch = String.fromCharCode(0x2135); break; 
                                    case 'larr': ch = String.fromCharCode(0x2190); break; 
                                    case 'uarr': ch = String.fromCharCode(0x2191); break; 
                                    case 'rarr': ch = String.fromCharCode(0x2192); break; 
                                    case 'darr': ch = String.fromCharCode(0x2193); break; 
                                    case 'harr': ch = String.fromCharCode(0x2194); break; 
                                    case 'crarr': ch = String.fromCharCode(0x21b5); break; 
                                    case 'lArr': ch = String.fromCharCode(0x21d0); break; 
                                    case 'uArr': ch = String.fromCharCode(0x21d1); break; 
                                    case 'rArr': ch = String.fromCharCode(0x21d2); break; 
                                    case 'dArr': ch = String.fromCharCode(0x21d3); break; 
                                    case 'hArr': ch = String.fromCharCode(0x21d4); break; 
                                    case 'forall': ch = String.fromCharCode(0x2200); break; 
                                    case 'part': ch = String.fromCharCode(0x2202); break; 
                                    case 'exist': ch = String.fromCharCode(0x2203); break; 
                                    case 'empty': ch = String.fromCharCode(0x2205); break; 
                                    case 'nabla': ch = String.fromCharCode(0x2207); break; 
                                    case 'isin': ch = String.fromCharCode(0x2208); break; 
                                    case 'notin': ch = String.fromCharCode(0x2209); break; 
                                    case 'ni': ch = String.fromCharCode(0x220b); break; 
                                    case 'prod': ch = String.fromCharCode(0x220f); break; 
                                    case 'sum': ch = String.fromCharCode(0x2211); break; 
                                    case 'minus': ch = String.fromCharCode(0x2212); break; 
                                    case 'lowast': ch = String.fromCharCode(0x2217); break; 
                                    case 'radic': ch = String.fromCharCode(0x221a); break; 
                                    case 'prop': ch = String.fromCharCode(0x221d); break; 
                                    case 'infin': ch = String.fromCharCode(0x221e); break; 
                                    case 'ang': ch = String.fromCharCode(0x2220); break; 
                                    case 'and': ch = String.fromCharCode(0x2227); break; 
                                    case 'or': ch = String.fromCharCode(0x2228); break; 
                                    case 'cap': ch = String.fromCharCode(0x2229); break; 
                                    case 'cup': ch = String.fromCharCode(0x222a); break; 
                                    case 'int': ch = String.fromCharCode(0x222b); break; 
                                    case 'there4': ch = String.fromCharCode(0x2234); break; 
                                    case 'sim': ch = String.fromCharCode(0x223c); break; 
                                    case 'cong': ch = String.fromCharCode(0x2245); break; 
                                    case 'asymp': ch = String.fromCharCode(0x2248); break; 
                                    case 'ne': ch = String.fromCharCode(0x2260); break; 
                                    case 'equiv': ch = String.fromCharCode(0x2261); break; 
                                    case 'le': ch = String.fromCharCode(0x2264); break; 
                                    case 'ge': ch = String.fromCharCode(0x2265); break; 
                                    case 'sub': ch = String.fromCharCode(0x2282); break; 
                                    case 'sup': ch = String.fromCharCode(0x2283); break; 
                                    case 'nsub': ch = String.fromCharCode(0x2284); break; 
                                    case 'sube': ch = String.fromCharCode(0x2286); break; 
                                    case 'supe': ch = String.fromCharCode(0x2287); break; 
                                    case 'oplus': ch = String.fromCharCode(0x2295); break; 
                                    case 'otimes': ch = String.fromCharCode(0x2297); break; 
                                    case 'perp': ch = String.fromCharCode(0x22a5); break; 
                                    case 'sdot': ch = String.fromCharCode(0x22c5); break; 
                                    case 'lceil': ch = String.fromCharCode(0x2308); break; 
                                    case 'rceil': ch = String.fromCharCode(0x2309); break; 
                                    case 'lfloor': ch = String.fromCharCode(0x230a); break; 
                                    case 'rfloor': ch = String.fromCharCode(0x230b); break; 
                                    case 'lang': ch = String.fromCharCode(0x2329); break; 
                                    case 'rang': ch = String.fromCharCode(0x232a); break; 
                                    case 'loz': ch = String.fromCharCode(0x25ca); break; 
                                    case 'spades': ch = String.fromCharCode(0x2660); break; 
                                    case 'clubs': ch = String.fromCharCode(0x2663); break; 
                                    case 'hearts': ch = String.fromCharCode(0x2665); break; 
                                    case 'diams': ch = String.fromCharCode(0x2666); break; 
                                    default: ch = ''; break; 
                              } 
                        } 
                        i = semicolonIndex; 
                  } 
            } 
            out += ch; 
      } 
      return out; 
} 

////////////////
// Drop down ///
////////////////

    numMenus = 50;
    // MENU MOUSE OVER 
    function menuOver(itemName) {
        clearTimeout(timeOn);
        menuActive = 1;
    }// MENU MOUSE OUT 
    function menuOut(itemName) {
        if(document.layers) {
            menuActive = 0 ;
            timeOn = setTimeout("hideAllMenus()", 400);
        }
    }
    // SET BACKGROUND COLOR 
    function getImage(name) {
        if (document.layers) {
            return findImage(name, document);
        }
        return null;
    }
    
    function findImage(name, doc) {
        var i, img;
        for (i = 0; i < doc.images.length; i++)
            if (doc.images[i].name == name)
                return doc.images[i];
        for (i = 0; i < doc.layers.length; i++)
            if ((img = findImage(name, doc.layers[i].document)) != null) {
                img.container = doc.layers[i];
                return img;
            }
        return null;
    }
    
    function getImagePageLeft(img) {
        var x, obj;
        if (document.layers) {
            if (img.container != null)
                return img.container.pageX + img.x;
            else
                return img.x;
        }
        return -1;
    }
    
    function getImagePageTop(img) {
        var y, obj;
        if (document.layers) {
            if (img.container != null)
                return img.container.pageY + img.y;
            else
                return img.y;
        }
        return -1;
    }
    
    //document.write('<style> .menu{position: absolute;}</style>');
    var timeOn = null;
    document.onmouseover = hideAllMenus;
    document.onclick = hideAllMenus;
    window.onerror = null;
    
    function getStyleObject(objectId) {
        // cross-browser function to get an object's style object given its id
        if(document.getElementById && document.getElementById(objectId)) {
            // W3C DOM
            return document.getElementById(objectId).style;
        } else if (document.all && document.all(objectId)) {
            // MSIE 4 DOM
            return document.all(objectId).style;
        } else if (document.layers && document.layers[objectId]) {
            // NN 4 DOM.. note: this won't find nested layers
            return document.layers[objectId];
        } else {
            return false;
        }
    } // getStyleObject
    
    function changeObjectVisibility(objectId, newVisibility) {
        // get a reference to the cross-browser style object and make sure the object exists
        var styleObject = getStyleObject(objectId);
        if(styleObject) {
            styleObject.visibility = newVisibility;
            return true;
        } else {
            //we couldn't find the object, so we can't change its visibility
            return false;
        }
    } // changeObjectVisibility
    
    function showMenu(menuNumber, eventObj, labelID) {
      hideAllMenus();
      if(document.layers) {
        img = getImage("img" + menuNumber);
        x = getImagePageLeft(img);
        y = getImagePageTop(img);
        menuTop = y + 10; // LAYER TOP POSITION
        menuLeft = x + 20;
        eval('document.layers["menu'+menuNumber+'"].top="'+menuTop+'"');
        eval('document.layers["menu'+menuNumber+'"].left="'+menuLeft+'"');
      }
      eventObj.cancelBubble = true;
      var menuId = 'menu' + menuNumber;
      if(changeObjectVisibility(menuId, 'visible')) {
        changeObjectVisibility('f' + menuNumber, 'visible')
        return true;
      } else {
        return false;
      }
    }
    
    function hideAllMenus() {
        for(counter = 1; counter <= numMenus; counter++) {
          changeObjectVisibility('f' + counter, 'hidden');  
          changeObjectVisibility('menu' + counter, 'hidden');
        }
    }
    
    function arrangeFrames() {
      for(counter = 1; counter <= numMenus; counter++) {
        frame = document.getElementById('f' + counter);
        if (frame) frame.height = (getDim(document.getElementById('lr' + counter)).y - frame.offsetTop)+17;
      }
    }
    
    function moveObject(objectId, newXCoordinate, newYCoordinate) {
        // get a reference to the cross-browser style object and make sure the object exists
        var styleObject = getStyleObject(objectId);
        if(styleObject) {
            styleObject.left = newXCoordinate;
            styleObject.top = newYCoordinate;
            return true;
        } else {
            // we couldn't find the object, so we can't very well move it
            return false;
        }
    } // moveObject
    
    // ***********************
    // hacks and workarounds *
    // ***********************
    
    // initialize hacks whenever the page loads
    window.onload = initializeHacks;
    
    // setup an event handler to hide popups for generic clicks on the document
    function initializeHacks() {
        arrangeFrames();
        // this ugly little hack resizes a blank div to make sure you can click
        // anywhere in the window for Mac MSIE 5
        if ((navigator.appVersion.indexOf('MSIE 5') != -1) 
            && (navigator.platform.indexOf('Mac') != -1)
            && getStyleObject('blankDiv')) {
            window.onresize = explorerMacResizeFix;
        }
        resizeBlankDiv();
        // this next function creates a placeholder object for older browsers
        createFakeEventObj();
    }
    
    function createFakeEventObj() {
        // create a fake event object for older browsers to avoid errors in function call
        // when we need to pass the event object to functions
        if (!window.event) {
            window.event = false;
        }
    } // createFakeEventObj
    
    function resizeBlankDiv() {
        // resize blank placeholder div so IE 5 on mac will get all clicks in window
        if ((navigator.appVersion.indexOf('MSIE 5') != -1) 
            && (navigator.platform.indexOf('Mac') != -1)
            && getStyleObject('blankDiv')) {
            getStyleObject('blankDiv').width = document.body.clientWidth - 20;
            getStyleObject('blankDiv').height = document.body.clientHeight - 20;
        }
    }
    
    function explorerMacResizeFix () {
        location.reload(false);
    }
    
    function mClk(src){ 
	if(event.srcElement.tagName=='TD')
            src.children.tags('A')[0].click();
    }
    
    function getDim(el){
	      for (var lx=0,ly=0;el!=null;
		      lx+=el.offsetLeft,ly+=el.offsetTop,el=el.offsetParent);
	      return {x:lx,y:ly}
    }
	
	
	
/******************************************************************************
save this file as astrack.js and place 
<script src="/astrack.js" type="text/javascript"></script>
at the end of your page code (after the last AdSense ad unit)

You must already have the UrchinTracker installed to use this.
 
Modified with permission from Jim Rotherford's Adsense Pepper
(http://www.digitalmediaminute.com/) 

© SeoBook.com. For updates see http://www.seobook.com/archives/001370.shtml 
You are allowed to use this but you should keep this copyright notice here

******************************************************************************/
function as_click () {
	urchinTracker ('/asclick');
}

// incredibly funky onload add-event scripting, for all browsers

		 if(typeof window.addEventListener != 'undefined')
		 {
		 	//.. gecko, safari, konqueror and standard
		 	window.addEventListener('load', adsense_init, false);
		 }
		 else if(typeof document.addEventListener != 'undefined')
		 {
		 	//.. opera 7
		 	document.addEventListener('load', adsense_init, false);
		 }
		 else if(typeof window.attachEvent != 'undefined')
		 {
		 	//.. win/ie
		 	window.attachEvent('onload', adsense_init);
		 }

		 //** remove this condition to degrade older browsers
		 else
		 {
		 	//.. mac/ie5 and anything else that gets this far

		 	//if there's an existing onload function
		 	if(typeof window.onload == 'function')
		 	{
		 		//store it
		 		var existing = onload;

		 		//add new onload handler
		 		window.onload = function()
		 		{
		 			//call existing onload function
		 			existing();

		 			//call adsense_init onload function
		 			adsense_init();
		 		};
		 	}
		 	else
		 	{
		 		//setup onload function
		 		window.onload = adsense_init;
		 	}
		 }
function adsense_init () {

	if (document.all) {  //ie

		var el = document.getElementsByTagName("iframe");
	
		for(var i = 0; i < el.length; i++) {
			if(el[i].src.indexOf('googlesyndication.com') > -1) {

				el[i].onfocus =  as_click;
			}
		}
	
	} else {   // firefox
	
		window.addEventListener('beforeunload', doPageExit, false);
		window.addEventListener('mousemove', getMouse, true);
	
	}
		
}

//for firefox
var px;
var py;

function getMouse(e) {
	px=e.pageX;
	py=e.clientY;
}

function findY(obj) {
	var y = 0;
	while (obj) {
		y += obj.offsetTop;
		obj = obj.offsetParent;
	}
	return(y);
}

function findX(obj) {
	var x = 0;
	while (obj) {
		x += obj.offsetLeft;
		obj = obj.offsetParent;
	}
	return(x);
}

function doPageExit(e) {

	ad = document.getElementsByTagName("iframe");
	for (i=0; i<ad.length; i++) {
		var adLeft = findX(ad[i]);
		var adTop = findY(ad[i]);
		var inFrameX = (px > (adLeft - 10) && px < (parseInt(adLeft) + parseInt(ad[i].width) + 15));
		var inFrameY = (py > (adTop - 10) && py < (parseInt(adTop) + parseInt(ad[i].height) + 10));
		
		if (inFrameY && inFrameX) {

			urchinTracker('/asclick');
		
		}
	}

}

//end for firefox
