function getFileName()
{
	var temp = unescape(window.location);
	var temp1 = temp.split("/");
	return temp1[temp1.length - 1];
}

function WM_readCookie(name)
{
	if(document.cookie == '')
		return "false";
	else
		return unescape(WM_getCookieValue(name));
}

function WM_getCookieValue(name)
{
	var firstChar,lastChar;
	var theBigCookie = document.cookie;
	firstChar = theBigCookie.indexOf(name);
	if(firstChar != -1)
	{
		firstChar += name.length + 1;
		lastChar = theBigCookie.indexOf(';', firstChar);
		if(lastChar == -1) 
			lastChar = theBigCookie.length;
		return theBigCookie.substring(firstChar, lastChar);

	}
	else
	{
		return "false";
	}
}


function isElementSymble(elementTemp)
{
	for(var i=0; i < 103; i++)
	{
		if(element[i].name == elementTemp)
		{
			return true;
		}
	}
	return false;
}

function isGroupName(elementTemp)
{
	for(var i=20; i < GROUPNUMBER; i++)
	{
		if(GroupName[i] == elementTemp)
		{
			return true;
		}
	}
	return false;
}

function isAminioAcidSymble(elementTemp)
{
	for(var i=0; i < 19; i++)
	{
		if(GroupName[i] == elementTemp)
		{
			return true;
		}
	}
	return false;
}

function isFirstUpperOtherLower()
{
	var temp = RemoveSpace(document.groupname.T1.value);
	for(var i=0; i < temp.length; i++)
	{
		if(!isupper(temp.charAt(0)))
		{
			return false;
		}
		if((!islower(temp.charAt(i)))&&i!=0)
		{
			return false;
		}
	}
	return true;
}

function isIsotopeSymble(tempIsotope, tempMass)
{
	for(var i=0; i < 103; i++)
	{
		if(element[i].name == tempIsotope)
		{
			for(var j=0; j < element[i].isotope_number; j++)
			{
				if(element[i].isotope_mw[j] == tempMass)
					return true;
			}
			return false;
		}
	}
}

function readCookiesData(cookieName)
{
	if(WM_readCookie(cookieName)=="false")
		return;
	var temp = WM_readCookie(cookieName);
	var temp1 = temp.split("/");
	if(yourGroupNumber!=0)
		yourGroupNumber = 0;
	for(var i = 0; i < temp1.length; i++)
	{
		var temp2 = temp1[i].split("#N");
		GroupName[GROUPNUMBER+yourGroupNumber] = temp2[0];
		GroupName1[GROUPNUMBER+yourGroupNumber] = temp2[1];
		aaFormula[GROUPNUMBER+yourGroupNumber] = temp2[2];
		yourGroupNumber++;
	}	
}

function writeDataToCookie()
{
	now=new Date();
	now.setTime(now.getTime() + 1000*60*60*24*365);
	var theCookie = "";
	for(var i= GROUPNUMBER; i < GROUPNUMBER + yourGroupNumber - 1; i++)
	{
			theCookie += GroupName[i] +  "#N" + GroupName1[i] + "#N" + aaFormula[i] + "/";
	}
	theCookie += GroupName[i+1] +  "#N" + GroupName1[i+1] + "#N" + aaFormula[i+1] + ";expires="+ now.toGMTString();
	document.cookie = "yourGroup=" + theCookie;
}

function writeArrayDataToCookie(tempArrayCode, tempArrayName, tempArrayFormula, beginNumber, endNumber)
{
	now=new Date();
	now.setTime(now.getTime() + 1000*60*60*24*365);
	var theCookie = "";
	for(var i= beginNumber; i < endNumber; i++)
	{
			theCookie += tempArrayCode[i] +  "#N" + tempArrayName[i] + "#N" + tempArrayFormula[i] + "/";
	}
	theCookie += tempArrayCode[i] +  "#N" + tempArrayName[i] + "#N" + tempArrayFormula[i] + ";expires="+ now.toGMTString();
	document.cookie = "yourGroup=" + theCookie;
}

function isYourGroup(elementTemp)
{
	if(WM_readCookie("yourGroup") == "false")
		return false;
	else
	{
		readCookiesData("yourGroup");
		for(var i = GROUPNUMBER; i < GROUPNUMBER + yourGroupNumber; i++)
		{
			if(GroupName[i] == elementTemp)
			{
				var existGroup = new Array(2);
				existGroup[0] = GroupName1[i];
				existGroup[1] = aaFormula[i]; 
				existGroup[2] = i;
				return existGroup;
			}
		}
	}
	return false;
}

function showGroupList()
{
	readCookiesData("yourGroup");
	if(yourGroupNumber==0)
		return msg1;
	var groupList = "<center><table border=1 width=100% height=45 bordercolorlight=#C0C0C0 bordercolordark=#FFFFFF cellpadding=2 cellspacing=0>";
	groupList += msg2;
	var j = 1;
	for(var i = GROUPNUMBER; i < GROUPNUMBER + yourGroupNumber; i++)
	{
		groupList += "<tr onmouseover=javascript:style.backgroundColor='#FCE4C5' onmouseout=javascript:style.backgroundColor='#FDEBD2'><td width=5% height=16><font size='2'>";
		groupList += j;
		groupList += "</font></td> <td width='8%' height='16'><font size='2'>";
		groupList += "<p><input type=checkbox name='C";
		groupList += j;
		groupList += "' value='";
		groupList += j;
		groupList += "'  onClick = 'selectItem(" + j + ")'></p>";
		groupList += "</font></td> <td width='15%' height='16'><font size='2'>";
		groupList += GroupName[i];
		groupList += "</font></td> <td width='42%' height='16'><font size='2'>";
		groupList += GroupName1[i]+"&nbsp";
		groupList += "</font></td> <td width='30%' height='16'><font size='2'>";
		groupList += aaFormula[i];
		groupList += "</font></td></tr>";
		j++;
	}
	groupList += "</table></center>";
	groupList += msg3;
	return groupList;
}


function checkValid()
{
	var beginChar=0, endChar=0, elementTemp="";
	var groupCode = RemoveSpace(document.groupname.T1.value);
	var groupName = document.groupname.T2.value;
	if(groupName == "")
		groupName = " ";
	var groupFormula = RemoveSpace(document.groupname.T3.value);
	Formula_length=groupFormula.length;
	var num1=0, num2=0;

	if(RemoveSpace(document.groupname.T1.value)=="")
	{
		document.groupname.T1.value="";
		alert(msg4);
		document.groupname.T1.focus();
		return;
	}
	
	if(!isFirstUpperOtherLower())
	{
		alert(msg5);
		document.groupname.T1.focus();
		return;
	}	
	
	if(isElementSymble(RemoveSpace(document.groupname.T1.value)))
	{
		alert(msg6+RemoveSpace(document.groupname.T1.value)+msg9);
		document.groupname.T1.focus();
		return;
	}	
	if(isGroupName(RemoveSpace(document.groupname.T1.value)))
	{
		alert(msg7+RemoveSpace(document.groupname.T1.value)+msg9);
		document.groupname.T1.focus();
		return;
	}	
	if(isAminioAcidSymble(RemoveSpace(document.groupname.T1.value)))
	{
		alert(msg8+RemoveSpace(document.groupname.T1.value)+msg9);
		document.groupname.T1.focus();
		return;
	}	
	
	if(RemoveSpace(document.groupname.T3.value)=="")
	{
		document.groupname.T3.value="";
		alert(msg10);
		document.groupname.T3.focus();
		return;
	}
	for(i=0;i<Formula_length;i++)
	{
		if(groupFormula.charAt(i)=='[')
			num1++;
		if(groupFormula.charAt(i)==']')
			num2++;	
	}
	if(num1!=num2)
	{
		alert(msg11);	 
		document.groupname.T3.focus();
		return;
	}
	for(i=0;i<Formula_length;i++)
	{
		if(!isupper(groupFormula.charAt(0))&&groupFormula.charAt(0)!="[")
		{
			alert(msg12);
			document.groupname.T3.focus();
			return;
		}
		if(isupper(groupFormula.charAt(i)))
		{
			beginChar = i;
			while(islower(groupFormula.charAt(i+1)))
			{i++;}			
			elementTemp = groupFormula.substring(beginChar,i+1);
			if(!isElementSymble(elementTemp))
			{
				alert("\""+elementTemp+msg13);
				document.groupname.T3.focus();
				return;
			}
			continue;
		}
		if(groupFormula.charAt(i)=="[")
		{
			beginChar = i + 1;
			while(groupFormula.charAt(i+1)!="]")
			i++;
			var j=0, tempMass="", tempSymble = "";
			var temp = groupFormula.substring(beginChar,i+1);
			while(isdigit(temp.charAt(j)))
			{
				tempMass += temp.charAt(j);
				j++;
			}
			if(!isupper(temp.charAt(j)))
			{
				alert(msg14+temp+msg15);
				document.groupname.T3.focus();
				return;
			}
			while(isalpha(temp.charAt(j)))
			{
				tempSymble += temp.charAt(j);
				j++;			
			}
			if(!isIsotopeSymble(tempSymble, tempMass))
			{
				alert(msg16 +temp+ msg17);
				document.groupname.T3.focus();
				return;			
			}
			i= i + 1;
		}
		if(isdigit(groupFormula.charAt(i))||groupFormula.charAt(i) == "]")
		{
			continue;
		}
		else
		{
			alert(msg12);
			document.groupname.T3.focus();
			return;
		}
	}
	
	if(isYourGroup(groupCode))
	{
		var existGroup = new Array(2);
		existGroup = 	isYourGroup(groupCode);	
		for(var i=0; i<3;i++)
		if(confirm(msg18+RemoveSpace(document.groupname.T1.value)+msg19+existGroup[0]+msg20+existGroup[1]+msg21+groupName+msg20+groupFormula+")?"))
		{
			GroupName1[existGroup[2]] = groupName;
			aaFormula[existGroup[2]] = groupFormula;
			writeArrayDataToCookie(GroupName, GroupName1, aaFormula, GROUPNUMBER, GROUPNUMBER + yourGroupNumber -1);
			window.open(getFileName(),'_self');
			return;
		}
		else
		{
			document.groupname.T1.focus()
			return;
		}
	}	
	var previousCookie = "";
	if(WM_readCookie("yourGroup") == "false")
	{
		previousCookie = "";
	}
	else
	{
		previousCookie = WM_readCookie("yourGroup");
	}
	now=new Date();
	now.setTime(now.getTime() + 1000*60*60*24*365);
	var theCookie = groupCode + "#N" + groupName + "#N" + groupFormula + ";expires="+ now.toGMTString();
	if(previousCookie == "")
		document.cookie = "yourGroup=" + theCookie;
	else
		document.cookie = "yourGroup=" + previousCookie+ "/" + theCookie;
	window.open(getFileName(),'_self');
}

function deleteAllGroups()
{
	if(!confirm(msg22)) return;
	now=new Date();
	now.setTime(now.getTime() + 1000*0.1);
	var theCookie = ";expires="+ now.toGMTString();
	document.cookie = "yourGroup=" + theCookie;
	yourGroupNumber = 0;
	window.open(getFileName(),'_self');
}

function deleteCookie()
{
	var j = 0, selectItem = false, deleteAllItem = true;
	for(var i = 0; i < yourGroupNumber; i++)
	{
		if(!eval("document.groupname.C"+(i+1)+".checked"))
		{
			GroupName[GROUPNUMBER + j] = GroupName[GROUPNUMBER + i];
			GroupName1[GROUPNUMBER + j] = GroupName1[GROUPNUMBER + i];
			aaFormula[GROUPNUMBER + j] = aaFormula[GROUPNUMBER + i];
			j++;	
			deleteAllItem = false;
		}
		else
		{
			//eval("document.groupname.C"+(i+1)+".checked = false");		
			selectItem = true;
		}
	}
	if(!selectItem)
	{
		alert(msg23);
		return;
	}
	if(!deleteAllItem)
	{
		if(!confirm(msg24)) return;		
	}
	if(deleteAllItem)
	{
		deleteAllGroups();
		return;
	}
	yourGroupNumber = j;
	for(i = 0; i < yourGroupNumber; i++)
		eval("document.groupname.C"+(i+1)+".checked = false");			
	writeArrayDataToCookie(GroupName, GroupName1, aaFormula, GROUPNUMBER, GROUPNUMBER + yourGroupNumber -1);
	window.open(getFileName(),'_self');	
}

function selectItem(checkBoxIndex)
{
	var checkItem = false;
	if(eval("document.groupname.C" + checkBoxIndex + ".checked"))
	{
		document.groupname.T1.value = GroupName[GROUPNUMBER + (eval("document.groupname.C" + checkBoxIndex + ".value") - 1)];
		document.groupname.T2.value = GroupName1[GROUPNUMBER + (eval("document.groupname.C" + checkBoxIndex + ".value") - 1)];
		document.groupname.T3.value = aaFormula[GROUPNUMBER + (eval("document.groupname.C" + checkBoxIndex + ".value") - 1)];
	}
	else
	{
		for(var i = yourGroupNumber; i > 0 ; i--)
		{
			if(eval("document.groupname.C" + (i) + ".checked"))
			{
				document.groupname.T1.value = GroupName[GROUPNUMBER + i - 1];
				document.groupname.T2.value = GroupName1[GROUPNUMBER + i - 1 ];
				document.groupname.T3.value = aaFormula[GROUPNUMBER + i - 1];
				return;
			}
		}		
		document.groupname.T1.value = "";
		document.groupname.T2.value = "";
		document.groupname.T3.value = "";	
		hideImg();	
	}
}

function modifyItem()
{
	var j = 0, selectItem = false;
	for(var i = 0; i < yourGroupNumber; i++)
	{
		if(eval("document.groupname.C"+(i+1)+".checked"))
		{
			selectItem = true;
			break;
		}
	}
	if(!selectItem)
	{
		alert(msg25);
		return false;
	}	
	document.groupname.T2.focus();
	showImg();
}

function showImg()
{
	window.document.groupname.img_name.width = "45";
	window.document.groupname.img_name.height = "11";
	document.groupname.img_mf.width = "45";
	document.groupname.img_mf.height = "11";
}

function hideImg()
{
	document.groupname.img_name.width = 1;
	document.groupname.img_name.height = 1;
	document.groupname.img_mf.width = 1;
	document.groupname.img_mf.height = 1;
}

function firstFunction()
{
	document.groupname.T1.focus();
}