﻿// Compatibility jump functions to avoid XSLT modifications begin

function jumpDirect(sDisplayMode, sSymbol, sTarget) {
	commonJump(sSymbol, null, sDisplayMode, null, null, null);
}

function setToEight(sTemp) {
	return sTemp;
}

function jumpWindow(sTemp, sSymbol) {
	commonJump(sSymbol, null, null, null, null, null);
}

function jumpCLang(sWord, sLang, iId) {
	var oRoot = getRoot();
	oRoot.searchWord(sWord, sLang, iId);
}

function jump(sDisplayMode, sSymbol, sTarget) {

	if (sSymbol == null) { // Old style sump
/*		sSymbol = sDisplayMode.substr(0, 4);
		if (sDisplayMode.length > 4) {
			sSymbol += '0' +sDisplayMode.substr(4);
			while (sSymbol.length < 14)
				sSymbol += '0';
		}
		commonJump(sSymbol);*/
//		alert(sSymbol);
		commonJump(sDisplayMode);
	} else{
		commonJump(sSymbol, null, sDisplayMode, null, null, null);
	}
}

function jumpMode(sDisplayMode, sMode, sSymbol, sTarget) {
	commonJump(sSymbol, null, sDisplayMode, sMode, null, null);
}

function jo(sSymbol) {
	commonJump(sSymbol, null, null, null, null, null);
}

function jumpLang(sLang, sSymbol, sEndSymbol) {
	commonJump(sSymbol, sEndSymbol, null, null, sLang.toLowerCase(), null);
}

function jumpLevel(sLevel, sSymbol, sEndSymbol, sEdition) {
	commonJump(sSymbol, sEndSymbol, null, null, null, sLevel.charAt(0), sEdition);
}

// Compatibility jump functions to avoid XSLT modifications end

function getRoot() {
	var iCycles = 0;
	var oParent;
	do {
		oParent = window.parent;
		if (oParent == null)
			oParent = window.opener;
		if (oParent.location.href.indexOf('htm') == -1 ||  oParent.location.href.indexOf('index.htm') != -1)
			return oParent;
		oParent = oParent.parent;
		iCycles++;
	} while (oParent != null && oParent != window && iCycles < 10);
	return null;
}

function commonJump(sSymbol, sEndSymbol, sDisplayeMode, sMode, sLang, sLevel, sEdition, bHilight, bSkipSymbol) {
	//alert('sDisplayMode = ' +sDisplayMode +', sSymbol = ' +sSymbol +', sMode = ' +sMode);
	var oRoot = getRoot();
	
	oRoot.goToSymbol(sSymbol, sEndSymbol, sDisplayeMode, sMode, sLang, sLevel, null, null, sEdition, bHilight, bSkipSymbol);

}

function closeSearch() {
	var oRoot = getRoot();
	oRoot.closeSearch();
}

function commonJumpToDef(sSymbol, sLang, sHash) {
	var oRoot = getRoot();
	oRoot.goToDef(sSymbol, sLang, sHash);
}

function commonJumpToIllu(sSymbol, iCount, iEdition) {
	var oRoot = getRoot();
	oRoot.goToIllu(sSymbol, iCount, iEdition);
}


function getValue(sName) {
//	alert(sName);
	var oItems = document.getElementsByName(sName);
	if (oItems.length == 0)
		return document.getElementById(sName).value;
	if (oItems.length == 1)
		return oItems[0].value;
	else
		for (var i = 0; i < oItems.length; i++) {
			if (oItems[i].checked)
				return oItems[i].value;
		}
	return '';
}

function setValue(sName, sValue) {
//		alert('name: ' +sName +', value: ' +sValue);
	var oItems = document.getElementsByName(sName);
	if (oItems.length == 0)
		document.getElementById(sName).value = sValue;
	if (oItems.length == 1)
		oItems[0].value = sValue;
	else
		for (var i = 0; i < oItems.length; i++) {
			if (oItems[i].value == sValue)
				oItems[i].checked = true;
		}
}

function getParam(sName, sURL) {
	if (sURL == null)
		var sURL = window.location.href;
		
	sURL = sURL.substr(sURL.indexOf('?') +1);
	var aParams = sURL.split('&');
	var aParam, aParam;
	for (var i = 0; i < aParams.length; i++) {
		aParam = aParams[i].split('=');
		if (aParam[0] == sName)
			return aParam[1];
	}
	return '';
}

function GetBookmark() {
	var sURL = window.location.href;
	var iPos = sURL.indexOf('#');
	if (iPos == -1)
		return '';
	else {
		return sURL.substr(iPos +1);
	}
}

function getCurrentYPos() {
	if (document.body && document.body.scrollTop)
		return document.body.scrollTop;
	if (document.documentElement && document.documentElement.scrollTop)
		return document.documentElement.scrollTop;
	if (window.pageYOffset)
		return window.pageYOffset;
	return 0;
}

function getObjectTop(sId) {
	var iY = 0;
	try {
	    var oObj = document.getElementsByName(sId)[0];
	    while (oObj != null && oObj != document.body && oObj.offsetTop != null) {
	    	iY += oObj.offsetTop;
	    	oObj = oObj.offsetParent;
	    }
    } catch (e) {
    	alert(e.message);
    }

	return iY;
}

function decodeSymbol(sSymbol) {
	var sData = sSymbol.substr(0, 4);
	if (sSymbol.length > 4) {
		sData += ' ' +Number(sSymbol.substr(4, 4));
		sTemp = sSymbol.substr(8);
		iPos = sTemp.length;
		while (iPos > 2 && sTemp.charAt(iPos -1) == '0')
			iPos--;
		var sTemp = String(sTemp.substr(0, iPos));
		switch (sTemp.length) {
			case 0:
				sTemp = '00';
				break;
			case 1:
				sTemp = '0' +sTemp;
				break;
		}
		sData += '/' +sTemp;
	}
	return sData;
}

function addZeros(iNum, iMinSize) {
	var sNum = String(iNum);
	while (sNum.length < iMinSize)
		sNum = '0' +sNum;
	return sNum;
}

function encodeSymbol(sSymbol) {
    //01234567890123
	//A01N0003040000
	sSymbol = sSymbol.replace(/ /g, '');
	var sData = sSymbol.substr(0, 4);
	var bError = false;

	switch (sSymbol.length) {
		case 0:
			break;
		case 1:
			bError = !sData.match(/^[A-H]/i);
			break;
		case 2:
			bError = true;
			break;
		case 3:
			bError = !sData.match(/^[A-H][0-9]{2}/i);
			break;
		case 4:
			bError = !sData.match(/^[A-H][0-9]{2}[A-Z]/i);
			break;
		case 14:
			bError = !sSymbol.match(/^[A-H][0-9]{2}[A-Z][0-9]{10}/i);
			sData = sSymbol;
			break;
		default:
			if (sSymbol.match(/^[A-H][0-9]{2}[A-Z][0-9]{5}/i)) {
				try {
					var iNum1 = Number(sSymbol.substr(4, 3));
					var sNum2 = sSymbol.substr(7, 2);
					var iNum2 = Number(sNum2);
					bError = isNaN(iNum1) || isNaN(iNum2);
					if (!bError) {
						sData += addZeros(iNum1, 4) +addZeros(sNum2, 2);
						while (sData.length < 14)
							sData += '0';
					}
				} catch(e) {
					bError = true;
				}
			} else {
				var iPos = sSymbol.indexOf('/');
				bError = iPos == -1;
				if (!bError) {
					try {
						var iNum1 = Number(sSymbol.substring(4, iPos));
						var sNum2 = sSymbol.substr(iPos +1);
						var iNum2 = Number(sNum2);
						bError = isNaN(iNum1) || isNaN(iNum2);
						if (!bError) {
							sData += addZeros(iNum1, 4) +addZeros(sNum2, 2);
							while (sData.length < 14)
								sData += '0';
						}
					} catch(e) {
						bError = true;
					}
				}
			}
			break;
	}

	if (bError){
			var v = sMsgInvalidIPCFormat;
			var e = new Error(v); // workaround: new Error(v) does not work
			e.message = v;
		throw e;
	}
	return sData.toUpperCase();
}


function swapThis(oThis, sSymbol) {
    commonJump(sSymbol);
//	alert(sSymbol);
/*	var oDiv = document.getElementById('idDiv_' +sSymbol);
	if (oThis.src.indexOf('plus') != -1) {
		oDiv.style.display = 'inline';
		oThis.src = 'images/minus.png';
	} else {
		oDiv.style.display = 'none';
		oThis.src = 'images/plus.png';
	}	*/
}

//Dimensions of BRIDGE popup
var bridge_width	= 350;
var bridge_height	= 410;
/**
 * @param string ipc entry
 * Open bridge popup window
 */
function linkPopup(ipc){
	var oRoot = getRoot();
	var sMenuLang = oRoot.gsMenuLang.toLowerCase();
	var x		= Math.round((screen.availWidth  - bridge_width) / 2);
	var y		= Math.round((screen.availHeight - bridge_height) / 2);
	window.open('popup_' +sMenuLang +'.htm?ipc='+ipc,"ibis_bridge_popup","left=" + x + ",top=" + y + "scrollbars=yes,width="+bridge_width+",height="+bridge_height);
}

function switchDiv(iId, bActive) {
	if (bActive == null)
		bActive = document.getElementById('idImg_' +iId).src.indexOf('plus') == -1;

	document.getElementById('idImg_' +iId).src = 'images/' +(bActive ? 'plus.png' : 'minus.png');
	document.getElementById('idDiv_' +iId).style.display = (bActive ? 'none' : 'inline');
}

function switchAllDivs(bActive) {
	var oDivs = document.getElementsByTagName('div');
	for (var i = 0; i < oDivs.length; i++) {
		var oDiv = oDivs[i]; // idDiv_id32A5008
		var sId = oDiv.id;
		if (sId.substr(0, 6) == 'idDiv_') {
			switchDiv(sId.substr(6), bActive);
		}
	}
}


var sGoToBookmark=null;

function realGoToBookmark(b2ndPass) {
	var sURL = window.location.href;
	var sBookmark=null;
	var sURLBookmark = getParam('hash');
	if (sURLBookmark == '')
		sURLBookmark = null;
//		alert(sURLBookmark);
/*			var iPos = sURL.indexOf('#');
		if (iPos != -1) {
			sURLBookmark = sURL.substr(iPos +1);
		}
*/

	if( sGoToBookmark != null && sGoToBookmark != '' ){
		sBookmark = 'ipc' + sGoToBookmark;

		if( sURLBookmark != null && sURLBookmark.indexOf('*') < 0 && sURLBookmark != sBookmark ){
			var sParSymbol=sURL.substring(sURL.indexOf("symbol=")+7);
			sParSymbol=sParSymbol.substring(0,sParSymbol.indexOf('&'));

			if( sParSymbol.indexOf('*') < 0 ){
				sURLBookmark = sURLBookmark.substring(3);
				if( sURLBookmark.length > 4 ){
						sURLBookmark = decodeSymbol(sURLBookmark);
				}
				alert('Symbol ' + sURLBookmark + ' does not exist in this view');
				}
				}
	}else{
		sBookmark = sURLBookmark;
	}
	if( sBookmark !=null) {
		if (document.getElementsByName(sBookmark).length != 0) {
    		var iOffset = getObjectTop(sBookmark);

    		showArrow(iOffset);

    		window.scrollTo(0, iOffset);
    	} else {
    		var sXML = getParam('xml');
    		if (sXML.indexOf('advanced') != -1) {
    			var bError = false;

    			while (true) {
    				switch (sBookmark.length) {
    					case 17:
    						//01234567890123456
    						//ipcA01B0003210000
    						if (sBookmark.substr(11) != '000000')
    							sBookmark = sBookmark.substr(0, 11) +'000000';
    						else
    							sBookmark = sBookmark.substr(0, 7);
    						break;
    					case 7:
    						sBookmark = sBookmark.substr(0, 6);
    						break;
    					case 6:
    						sBookmark = sBookmark.substr(0, 4);
    						break;
    					case 4:
    						bError = true;
    						break;
    				}

    				if (bError)
    					break;

    				if (document.getElementsByName(sBookmark).length != 0) {
			    		var iOffset = getObjectTop(sBookmark);
			    		
			    		showArrow(iOffset);
			    		
			    		window.scrollTo(0, iOffset);
			    		break;
			    	}
    			}

    			alert('This symbol does not exists.');
    		} else {
    			var sSymbol = GetBookmark().substr(3);
	    		if (confirm('This symbol does not exists. Do You want to verify the symbol in the advanced view?'))
		    		jumpLevel('advanced', sSymbol, '')
		    }
    	}
	}
}

function showArrow(iOffset) {
	var oDiv = document.getElementById('idArrow');
	oDiv.style.top = '' +iOffset +'px';
	oDiv.style.visibility = 'visible';
	setTimeout('hideArrow(8)', 500);
}

function hideArrow(iCount) {
	var oDiv = document.getElementById('idArrow');

	if (iCount % 2 == 0)
		oDiv.style.visibility = 'hidden';
	else
		oDiv.style.visibility = 'visible';
		
	if (iCount > 0)
		setTimeout('hideArrow(' +(iCount -1) +')', 500);
}

function goToBookmark(sSymbol)
{
	sBruteHash = getParam('bhash'); // If bhash found, it will override everything
	if (sBruteHash == '') {
		sGoToBookmark = sSymbol;
		setTimeout('realGoToBookmark(true)', 100);
	} else {
		sGoToBookmark = sBruteHash;
		setTimeout('goToPureBookmark()', 100);
	}
}

function goToPureBookmark() {
	var iOffset = getObjectTop(sGoToBookmark);
	if (iOffset != 0) {
		showArrow(iOffset);
		window.scrollTo(0, iOffset);
	}
}

function goToWordBookmark(b2ndPass)
{
	if (b2ndPass) {
		// word hash
		sHash = getParam('whash');
		if (sHash != '') {
			for (var i = sHash.length; i > 0 ; i--) {
				var iOffset = getObjectTop('cw' +sHash.substr(0, i));
				if (iOffset != 0) {
					window.scrollTo(0, iOffset);
					break;
				}
			}
		}
	} else
		setTimeout('goToWordBookmark(true)', 100);
}

function goToParent(sSymbol) {
	switch (sSymbol.length) {
		case 1:
			swapThis(this, '');
			break;
		case 3:
			swapThis(this, sSymbol.charAt(0));
			break;
		case 4:
			swapThis(this, sSymbol.substr(0, 3));
			break;
		default:
			swapThis(this, sSymbol.substr(0, 4));
			break;
	}
}

function removeParam(sURL, sParam) {
	var iPos = sURL.indexOf('&' +sParam +'=');
	if (iPos == -1)
		iPos = sURL.indexOf('?' +sParam +'=');
	
	if (iPos != -1) {
		var iEndPos = sURL.indexOf('&', iPos +1);
		if (iEndPos == -1)
			iEndPos = sURL.indexOf('#', iPos +1);
		if (iEndPos == -1)
			sURL = sURL.substr(0, iPos);
		else
			sURL = sURL.substr(0, iPos) +sURL.substr(iEndPos);
	}
	return sURL;
}

function changeParam(sURL, sParam, sValue) {
	var iPos = sURL.indexOf('&' +sParam +'=');
	if (iPos == -1)
		iPos = sURL.indexOf('?' +sParam +'=');
	
	if (iPos != -1) {
		var iEndPos = sURL.indexOf('&', iPos +1);
		if (iEndPos == -1)
			iEndPos = sURL.indexOf('#', iPos +1);
		if (iEndPos == -1)
			sURL = sURL.substr(0, iPos +sParam.length +2) +sValue;
		else
			sURL = sURL.substr(0, iPos +sParam.length +2) +sValue +sURL.substr(iEndPos);
	}
	return sURL;
}

function goPage(sDir, sSymbol) {
	var sURL = window.location.href;

	sURL = changeParam(sURL, 'dir', sDir);
	sURL = changeParam(sURL, 'symbol', sSymbol);
	sURL = removeParam(sURL, 'hash', sSymbol);
	
	window.location.href = sURL;
}

// temporal solution
var advancedsub=",a,a01,a01b,a01c,a01d,a01f,a01g,a01h,a01j,a01k,a01l,a01m,a01n,a01p,a21,a21b,a21c,a21d,a22,a22b,a22c,a23,a23b,a23c,a23d,a23f,a23g,a23j,a23k,a23l,a23n,a23p,a24,a24b,a24c,a24d,a24f,a41,a41b,a41c,a41d,a41f,a41g,a41h,a42,a42b,a42c,a43,a43b,a43c,a43d,a44,a44b,a44c,a45,a45b,a45c,a45d,a45f,a46,a46b,a46d,a47,a47b,a47c,a47d,a47f,a47g,a47h,a47j,a47k,a47l,a61,a61b,a61c,a61d,a61f,a61g,a61h,a61j,a61k,a61l,a61m,a61n,a61p,a61q,a62,a62b,a62c,a62d,a63,a63b,a63c,a63d,a63f,a63g,a63h,a63j,a63k,a99,a99z,b,b01,b01b,b01d,b01f,b01j,b01l,b02,b02b,b02c,b03,b03b,b03c,b03d,b04,b04b,b04c,b05,b05b,b05c,b05d,b06,b06b,b07,b07b,b07c,b08,b08b,b09,b09b,b09c,b21,b21b,b21c,b21d,b21f,b21g,b21h,b21j,b21k,b21l,b22,b22c,b22d,b22f,b23,b23b,b23c,b23d,b23f,b23g,b23h,b23k,b23p,b23q,b24,b24b,b24c,b24d,b25,b25b,b25c,b25d,b25f,b25g,b25h,b25j,b26,b26b,b26d,b26f,b27,b27b,b27c,b27d,b27f,b27g,b27h,b27j,b27k,b27l,b27m,b27n,b28,b28b,b28c,b28d,b29,b29b,b29c,b29d,b29k,b29l,b30,b30b,b31,b31b,b31c,b31d,b31f,b32,b32b,b41,b41b,b41c,b41d,b41f,b41g,b41j,b41k,b41l,b41m,b41n,b42,b42b,b42c,b42d,b42f,b43,b43k,b43l,b43m,b44,b44b,b44c,b44d,b44f,b60,b60b,b60c,b60d,b60f,b60g,b60h,b60j,b60k,b60l,b60m,b60n,b60p,b60q,b60r,b60s,b60t,b60v,b60w,b61,b61b,b61c,b61d,b61f,b61g,b61h,b61j,b61k,b61l,b62,b62b,b62c,b62d,b62h,b62j,b62k,b62l,b62m,b63,b63b,b63c,b63g,b63h,b63j,b64,b64b,b64c,b64d,b64f,b64g,b65,b65b,b65c,b65d,b65f,b65g,b65h,b66,b66b,b66c,b66d,b66f,b67,b67b,b67c,b67d,b68,b68b,b68c,b68f,b68g,b81,b81b,b81c,b82,b82b,b99,b99z,c,c01,c01b,c01c,c01d,c01f,c01g,c02,c02f,c03,c03b,c03c,c04,c04b,c05,c05b,c05c,c05d,c05f,c05g,c06,c06b,c06c,c06d,c06f,c07,c07b,c07c,c07d,c07f,c07g,c07h,c07j,c07k,c08,c08b,c08c,c08f,c08g,c08h,c08j,c08k,c08l,c09,c09b,c09c,c09d,c09f,c09g,c09h,c09j,c09k,c10,c10b,c10c,c10f,c10g,c10h,c10j,c10k,c10l,c10m,c10n,c11,c11b,c11c,c11d,c12,c12c,c12f,c12g,c12h,c12j,c12l,c12m,c12n,c12p,c12q,c12r,c12s,c13,c13c,c13d,c13f,c13g,c13h,c13j,c13k,c14,c14b,c14c,c21,c21b,c21c,c21d,c22,c22b,c22c,c22f,c23,c23c,c23d,c23f,c23g,c25,c25b,c25c,c25d,c25f,c30,c30b,c40,c40b,c99,c99z,d,d01,d01b,d01c,d01d,d01f,d01g,d01h,d02,d02g,d02h,d02j,d03,d03c,d03d,d03j,d04,d04b,d04c,d04d,d04g,d04h,d05,d05b,d05c,d06,d06b,d06c,d06f,d06g,d06h,d06j,d06l,d06m,d06n,d06p,d06q,d07,d07b,d21,d21b,d21c,d21d,d21f,d21g,d21h,d21j,d99,d99z,e,e01,e01b,e01c,e01d,e01f,e01h,e02,e02b,e02c,e02d,e02f,e03,e03b,e03c,e03d,e03f,e04,e04b,e04c,e04d,e04f,e04g,e04h,e05,e05b,e05c,e05d,e05f,e05g,e06,e06b,e06c,e21,e21b,e21c,e21d,e21f,e99,e99z,f,f01,f01b,f01c,f01d,f01k,f01l,f01m,f01n,f01p,f02,f02b,f02c,f02d,f02f,f02g,f02k,f02m,f02n,f02p,f03,f03b,f03c,f03d,f03g,f03h,f04,f04b,f04c,f04d,f04f,f15,f15b,f15c,f15d,f16,f16b,f16c,f16d,f16f,f16g,f16h,f16j,f16k,f16l,f16m,f16n,f16p,f16s,f16t,f17,f17b,f17c,f17d,f21,f21h,f21k,f21l,f21s,f21v,f21w,f21y,f22,f22b,f22d,f22g,f23,f23b,f23c,f23d,f23g,f23h,f23j,f23k,f23l,f23m,f23n,f23q,f23r,f24,f24b,f24c,f24d,f24f,f24h,f24j,f25,f25b,f25c,f25d,f25j,f26,f26b,f27,f27b,f27d,f28,f28b,f28c,f28d,f28f,f28g,f41,f41a,f41b,f41c,f41f,f41g,f41h,f41j,f42,f42b,f42c,f42d,f99,f99z,g,g01,g01b,g01c,g01d,g01f,g01g,g01h,g01j,g01k,g01l,g01m,g01n,g01p,g01r,g01s,g01t,g01v,g01w,g02,g02b,g02c,g02f,g03,g03b,g03c,g03d,g03f,g03g,g03h,g04,g04b,g04c,g04d,g04f,g04g,g05,g05b,g05d,g05f,g05g,g06,g06c,g06d,g06e,g06f,g06g,g06j,g06k,g06m,g06n,g06q,g06t,g07,g07b,g07c,g07d,g07f,g07g,g08,g08b,g08c,g08g,g09,g09b,g09c,g09d,g09f,g09g,g10,g10b,g10c,g10d,g10f,g10g,g10h,g10k,g10l,g11,g11b,g11c,g12,g12b,g21,g21b,g21c,g21d,g21f,g21g,g21h,g21j,g21k,g99,g99z,h,h01,h01b,h01c,h01f,h01g,h01h,h01j,h01k,h01l,h01m,h01p,h01q,h01r,h01s,h01t,h02,h02b,h02g,h02h,h02j,h02k,h02m,h02n,h02p,h03,h03b,h03c,h03d,h03f,h03g,h03h,h03j,h03k,h03l,h03m,h04,h04b,h04h,h04j,h04k,h04l,h04m,h04n,h04q,h04r,h04s,h05,h05b,h05c,h05f,h05g,h05h,h05k,h99,h99z,";
var coresub=",a,a01,a01b,a01c,a01d,a01f,a01g,a01h,a01j,a01k,a01l,a01m,a01n,a01p,a21,a21b,a21c,a21d,a22,a22b,a22c,a23,a23b,a23c,a23d,a23f,a23g,a23j,a23k,a23l,a23n,a23p,a24,a24b,a24c,a24d,a24f,a41,a41b,a41c,a41d,a41f,a41g,a41h,a42,a42b,a42c,a43,a43b,a43c,a43d,a44,a44b,a44c,a45,a45b,a45c,a45d,a45f,a46,a46b,a46d,a47,a47b,a47c,a47d,a47f,a47g,a47h,a47j,a47k,a47l,a61,a61b,a61c,a61d,a61f,a61g,a61h,a61j,a61k,a61l,a61m,a61n,a61p,a61q,a62,a62b,a62c,a62d,a63,a63b,a63c,a63d,a63f,a63g,a63h,a63j,a63k,a99,a99z,b,b01,b01b,b01d,b01f,b01j,b01l,b02,b02b,b02c,b03,b03b,b03c,b03d,b04,b04b,b04c,b05,b05b,b05c,b05d,b06,b06b,b07,b07b,b07c,b08,b08b,b09,b09b,b09c,b21,b21b,b21c,b21d,b21f,b21g,b21h,b21j,b21k,b21l,b22,b22c,b22d,b22f,b23,b23b,b23c,b23d,b23f,b23g,b23h,b23k,b23p,b23q,b24,b24b,b24c,b24d,b25,b25b,b25c,b25d,b25f,b25g,b25h,b25j,b26,b26b,b26d,b26f,b27,b27b,b27c,b27d,b27f,b27g,b27h,b27j,b27k,b27l,b27m,b27n,b28,b28b,b28c,b28d,b29,b29b,b29c,b29d,b30,b30b,b31,b31b,b31c,b31d,b31f,b32,b32b,b41,b41b,b41c,b41d,b41f,b41g,b41j,b41k,b41l,b41m,b41n,b42,b42b,b42c,b42d,b42f,b43,b43k,b43l,b43m,b44,b44b,b44c,b44d,b44f,b60,b60b,b60c,b60d,b60f,b60g,b60h,b60j,b60k,b60l,b60m,b60n,b60p,b60q,b60r,b60s,b60t,b60v,b60w,b61,b61b,b61c,b61d,b61f,b61g,b61h,b61j,b61k,b61l,b62,b62b,b62c,b62d,b62h,b62j,b62k,b62l,b62m,b63,b63b,b63c,b63g,b63h,b63j,b64,b64b,b64c,b64d,b64f,b64g,b65,b65b,b65c,b65d,b65f,b65g,b65h,b66,b66b,b66c,b66d,b66f,b67,b67b,b67c,b67d,b68,b68b,b68c,b68f,b68g,b81,b81b,b81c,b82,b82b,b99,b99z,c,c01,c01b,c01c,c01d,c01f,c01g,c02,c02f,c03,c03b,c03c,c04,c04b,c05,c05b,c05c,c05d,c05f,c05g,c06,c06b,c06c,c06d,c06f,c07,c07b,c07c,c07d,c07f,c07g,c07h,c07j,c07k,c08,c08b,c08c,c08f,c08g,c08h,c08j,c08k,c08l,c09,c09b,c09c,c09d,c09f,c09g,c09h,c09j,c09k,c10,c10b,c10c,c10f,c10g,c10h,c10j,c10k,c10l,c10m,c11,c11b,c11c,c11d,c12,c12c,c12f,c12g,c12h,c12j,c12l,c12m,c12n,c12p,c12q,c12s,c13,c13c,c13d,c13f,c13g,c13h,c13j,c13k,c14,c14b,c14c,c21,c21b,c21c,c21d,c22,c22b,c22c,c22f,c23,c23c,c23d,c23f,c23g,c25,c25b,c25c,c25d,c25f,c30,c30b,c40,c40b,c99,c99z,d,d01,d01b,d01c,d01d,d01f,d01g,d01h,d02,d02g,d02h,d02j,d03,d03c,d03d,d03j,d04,d04b,d04c,d04d,d04g,d04h,d05,d05b,d05c,d06,d06b,d06c,d06f,d06g,d06h,d06j,d06l,d06m,d06n,d06p,d06q,d07,d07b,d21,d21b,d21c,d21d,d21f,d21g,d21h,d21j,d99,d99z,e,e01,e01b,e01c,e01d,e01f,e01h,e02,e02b,e02c,e02d,e02f,e03,e03b,e03c,e03d,e03f,e04,e04b,e04c,e04d,e04f,e04g,e04h,e05,e05b,e05c,e05d,e05f,e05g,e06,e06b,e06c,e21,e21b,e21c,e21d,e21f,e99,e99z,f,f01,f01b,f01c,f01d,f01k,f01l,f01m,f01n,f01p,f02,f02b,f02c,f02d,f02f,f02g,f02k,f02m,f02n,f02p,f03,f03b,f03c,f03d,f03g,f03h,f04,f04b,f04c,f04d,f04f,f15,f15b,f15c,f15d,f16,f16b,f16c,f16d,f16f,f16g,f16h,f16j,f16k,f16l,f16m,f16n,f16p,f16s,f16t,f17,f17b,f17c,f17d,f21,f21h,f21k,f21l,f21s,f21v,f22,f22b,f22d,f22g,f23,f23b,f23c,f23d,f23g,f23h,f23j,f23k,f23l,f23m,f23n,f23q,f23r,f24,f24b,f24c,f24d,f24f,f24h,f24j,f25,f25b,f25c,f25d,f25j,f26,f26b,f27,f27b,f27d,f28,f28b,f28c,f28d,f28f,f28g,f41,f41a,f41b,f41c,f41f,f41g,f41h,f41j,f42,f42b,f42c,f42d,f99,f99z,g,g01,g01b,g01c,g01d,g01f,g01g,g01h,g01j,g01k,g01l,g01m,g01n,g01p,g01r,g01s,g01t,g01v,g01w,g02,g02b,g02c,g02f,g03,g03b,g03c,g03d,g03f,g03g,g03h,g04,g04b,g04c,g04d,g04f,g04g,g05,g05b,g05d,g05f,g05g,g06,g06c,g06d,g06e,g06f,g06g,g06j,g06k,g06m,g06n,g06q,g06t,g07,g07b,g07c,g07d,g07f,g07g,g08,g08b,g08c,g08g,g09,g09b,g09c,g09d,g09f,g09g,g10,g10b,g10c,g10d,g10f,g10g,g10h,g10k,g10l,g11,g11b,g11c,g12,g12b,g21,g21b,g21c,g21d,g21f,g21g,g21h,g21j,g21k,g99,g99z,h,h01,h01b,h01c,h01f,h01g,h01h,h01j,h01k,h01l,h01m,h01p,h01q,h01r,h01s,h01t,h02,h02b,h02g,h02h,h02j,h02k,h02m,h02n,h02p,h03,h03b,h03c,h03d,h03f,h03g,h03h,h03j,h03k,h03l,h03m,h04,h04b,h04h,h04j,h04k,h04l,h04m,h04n,h04q,h04r,h04s,h05,h05b,h05c,h05f,h05g,h05h,h05k,h99,h99z,";

function mayBeValid( sSymbol,bIsCore )
{

	var sToBeChecked;

	if( sSymbol.length > 4 ){
		sSymbol=sSymbol.substring(0,4);
	}

	return (bIsCore?coresub:advancedsub).indexOf(","+sSymbol+",") >= 0;

}  // mayBeValid

function jumpWord(sWord) {
	var oRoot = getRoot();
	oRoot.searchWord(sWord);
}

function cwPager(iPos) {
	var sURL = window.location.href;

	sURL = removeParam(changeParam(sURL, 'pos', iPos), 'whash');

//	prompt('', sURL);

	window.location.href = sURL;
}

function reduceChars(sString) {
	var aSource = [
		[ 'E', '\\%C3\\%89' ],
		[ 'A', '\\%C3\\%81' ], 
		[ 'I', '\\%C3\\%8D' ],
		[ 'O', '\\%C5\\%90' ],
		[ 'O', '\\%C3\\%96' ],
		[ 'O', '\\%C3\\%93' ],
		[ 'U', '\\%C5\\%B0' ],
		[ 'U', '\\%C3\\%9C' ],
		[ 'U', '\\%C3\\%9A' ]
	];
	sString = encodeURI(sString);
	for (var i = 0; i < aSource.length; i++) {
		sString = sString.replace(new RegExp(aSource[i][1], 'g'), aSource[i][0]);
	}
}

function getTextFromServer(plsqlfunction){
	try{
		var request;
		try{
			request = new ActiveXObject("Msxml2.XMLHTTP");
		}catch(e){
			request = new XMLHttpRequest();
		}
		openstr = plsqlfunction;
		request.open("POST",openstr,false);
		request.send("");
		var ret = request.responseText;
		request = null;
	}catch(e){
		ret=null;
		alert(e)
	}
	return ret;
}

function getDOMFromServer(sURL) {
	var oResult = null;
	try {
		var oRequest = null;
		if (window.ActiveXObject)
			oRequest = new ActiveXObject('Microsoft.XMLHTTP');

		if (window.XMLHttpRequest)
			oRequest = new XMLHttpRequest();

		if (oRequest != null) {
			oRequest.open('GET', sURL, false);
			oRequest.send('');
			oResult = oRequest.responseXML;
		}
	} catch(e) {
		alert(e.message);
	}
	return oResult;
}

function showExportList() {
	var sURL = 'exportlist.php?edition=20060101';
	window.location.href = sURL;
}

function doEdit(sMapFileName) {
	var oRoot = getRoot();
	oRoot.startEdit(sMapFileName);
}

function jumpHitBySeq(sSeq) {
	var oRoot = getRoot();
	oRoot.goToHitBySeq(sSeq);
}

function localJumpToDef(sName) {
	if (sName.charAt(0) == '#')
		sName = sName.substr(1);
	document.getElementById('idDiv_GLOSSARY').style.display = 'inline';
	document.getElementById('idImg_GLOSSARY').src = 'images/minus.png';

	var iOffset = getObjectTop(sName);
	window.scrollTo(0, iOffset);
}

function jumpRCL(sDisplayMode, sSymbol, sSymbol2) {
	if( sDisplayMode == '20000101' ){
			// jump to IPC7!
		jumpIPC7('EN' ,sSymbol);
		return;
	}
	try {
		var sHash = (sSymbol2 == '' ? sSymbol : sSymbol2);

		var oRoot = getRoot();
		var sURL = oRoot.sRCLURL;


		if (sHash.length == 8)
			sHash += '000000';

		sURL = removeParam(sURL, 'hash') +'&hash=' +sHash;
		//alert(sURL);

		oRoot.sRCLURL = sURL;
		oRoot.document.getElementById('idSymbol2').value = decodeSymbol(sHash);
		jump(sDisplayMode, sSymbol);
	} catch(e) {
		alert(e.message);
	}
}

function commonSearchRCL(sEdition1, sEdition2, sLevel, sSymbol, sView) {
	//alert('sDisplayMode = ' +sDisplayMode +', sSymbol = ' +sSymbol +', sMode = ' +sMode);
	var oRoot = getRoot();
	sLevel = sLevel.toLowerCase();
	oRoot.searchRCL(sEdition1, sEdition2, sLevel, sSymbol, sView);
}

function goToRCLBookmark(b2ndPass)
{
	if (b2ndPass) {
		// word hash
		sHash = getParam('hash');
		var iOffset = getObjectTop(sHash);
		window.scrollTo(0, iOffset);
/*		if (sHash != '') {
			for (var i = sHash.length; i > 0 ; i--) {
				var iOffset = getObjectTop(sHash.substr(0, i));
				if (iOffset != 0) {
					window.scrollTo(0, iOffset);
					break;
				}
			}
		}*/
	} else
		setTimeout('goToRCLBookmark(true)', 100);
}

//-------------------------------------------
// Hilight 2008.11.19 Zedas
//-------------------------------------------

function initNormalRender(sSymbol, sBack) {
	// Hilight

	var oRoot = getRoot();
	var sHitSet = oRoot.getHitSet();
	if (sHitSet != '') {	
		//alert(sHitSet);
		document.body.innerHTML = hilightHTMLWords(document.body.innerHTML, sHitSet);
	}
		
	goToBookmark(sSymbol, sBack)
}

function cleanupWord(sWord) {
	return sWord.replace(/[ÀÁÂÃÄÅÆĀĂĄ]/gi, 'A')
			.replace(/[ÇĆĈĊČ]/gi, 'C')
			.replace(/[ÈÉÊËĒĔĖĘĚ]/gi, 'E')
			.replace(/[ÌÍÎÏĨĪĬĮİ]/gi, 'I')
			.replace(/[ÒÓÔÕÖŌŎŐŒ]/gi, 'O')
			.replace(/[ÙÚÛÜŨŪŬŮŰŲ]/gi, 'U')
			.replace(/[ÑŃŅŇ]/gi, 'N')
			.replace(/[Ĥ]/gi, 'H')
			.replace(/[Ĵ]/gi, 'J')
			.replace(/[Ķ]/gi, 'K')
			.replace(/[ĹĻĽĿŁ]/gi, 'L')
			.replace(/[ŔŖŘ]/gi, 'R')
			.replace(/[ŚŜŞŠ]/gi, 'S')
			.replace(/[ŢŤŦ]/gi, 'T')
			.replace(/[Ŵ]/gi, 'W')
			.replace(/[ŶŸ]/gi, 'Y')
			.replace(/[ŹŻŽ]/gi, 'Z')
//			.replace(/['`]/gi, '_')
			.replace(/[ «»]/gi, '');;
}

function hilightHTMLWords(sBody, sHitSet) {
	sHitSet = cleanupWord(sHitSet.toUpperCase()).replace(/[^A-Z*]/g, ' ');
	//alert(sHitSet);
	var aHits = sHitSet.split(' ');

	if (aHits.length > 0) {
		var sHiBody = cleanupWord(sBody.toUpperCase());
    	var sText, sWord, oSubExp, bFound;
    	
		for (var i = 0; i < aHits.length; i++) {
			sWord = aHits[i];
			if (sWord.length > 1) {
				if (sWord.charAt(sWord.length -1) == '*')
					sWord = sWord.substr(0, sWord.length -1);
				else
					sWord += '(\\b|\')';
					
				if (sWord.charAt(0) == '*')
					sWord = sWord.substr(1);
				else
					sWord = '(\\b|\')' +sWord;
				
				//alert('word: ' +sWord);

				var oRegExp = new RegExp(sWord, 'gim');
				var aPos = [];
				while ((aArr = oRegExp.exec(sHiBody)) != null) {
					aArr.lastIndex = oRegExp.lastIndex;
					aPos.push(aArr);
				}

				while (aPos.length > 0) {
					var aArr = aPos.pop();
					
					var iPos1 = sBody.lastIndexOf('>', aArr.index);
					var iPos2 = sBody.lastIndexOf('<', aArr.index);
					
					if (iPos1 > iPos2) {
						sBody = sBody.substr(0, aArr.index) +'<span class="hl">' 
							+sBody.substring(aArr.index, aArr.lastIndex) +'</span>' +sBody.substr(aArr.lastIndex);
						sHiBody = sHiBody.substr(0, aArr.index) +'<span class="hl">' 
							+sHiBody.substring(aArr.index, aArr.lastIndex) +'</span>' +sHiBody.substr(aArr.lastIndex);
					}
				}	
			}
		}
	}
	
	return sBody;
}
