// (c)2004 SpellChecker.net,Inc.  All rights reserved.  www.SpellChecker.net
var spchver="1.1";
var sp_sh="http://www.spellchecker.net/spellcheck/";
var schema_url="";var spp_langs="";
var service_host=sp_sh,customerid="1:pZC2D3-5I18l-CRWEC1-vmjk23-IpfB02-NZJ1r2-MUEOX1-pTRDm3-d3I653-ic9IR3";
var hide="";
var doc_blank="/lf/blank.html";
var doc_blankform="/lf/blankform.html";
var doc_process="script/ssrv.cgi";
var is_window_opened=false,opened=false,formNum=-1;
var ctrlName='';
var isMSIE=(navigator.appName=='Microsoft Internet Explorer');
var isNN=navigator.appName=='Netscape';
var IsProxyVer=fIsProxyVer();
var botf,asc,spellWin,ssrv_host,port,ssrv,ssrvname,lang,ctrl,url,force_reload,intlang,ctrlObj,sp_i,sp_doc,sp_time,sp_old_doc_unload,sp_IsW98A4A5,sp_spw_name,sp_spw_params,sp_wurl,sp_asce,sp_iswopn;

function doSpell(p_lang,p_ctrl,p_url,p_force_reload,p_intlang,P_hide)
{
	if(isMSIE&&(parseInt (navigator.appVersion)< 4))
	{
		alert("Our SpellChecker feature does not support Internet Explorer 3.0.  However, it does support the following browsers:IE 4+,Netscape 4+.");
		return;
	}
	if(isNN&&isAppVer('3.0'))
	{
		alert('Sorry, currently we do not support Netscape Navigator 3.0, Internet Explorer 3.0.\nPlease upgrade your browser.');
		return;
	}
	
	lang=p_lang;
	ctrl=p_ctrl;
	url=p_url;
	force_reload=p_force_reload;
	intlang=p_intlang;
	hide=P_hide?P_hide:'';
	if(ctrl.constructor&&ctrl.constructor==String)
	{
		ctrlName=ctrl;
		formNum=-1;
		ctrlObj=eval(ctrl);
		wWidth=ctrlObj.clientWidth < wWidth?wWidth:ctrlObj.clientWidth;wHeight=(ctrlObj.clientHeight > wHeight?ctrlObj.clientHeight:wHeight);
	}
	else
	{
		sp_i=0;
		for(sp_i=0;sp_i < document.forms.length;sp_i++)
			if(document.forms[sp_i]==ctrl.form)
				break;
		if(sp_i==document.forms.length)
			formNum=-1;
		else
			formNum=sp_i;
		ctrlName=ctrl.name;
		ctrlObj=ctrl;
	}
	var tmp=ctrlObj.value?ctrlObj.value:ctrlObj.innerHTML;
	if(tmp==''||tmp==null)
	{
		alert('Nothing to check.');
		return;
	}
	
	var old_asc=asc;
	asc=(hide!='')&&!isHide('[s]');
	if(!isUsrAgent('AOL'))
		if(isMSIE&&asc&&!old_asc)
			is_window_opened=false;
	if(!asc&&sp_IsW98A4A5)
	{
		UnloadCW();
		changeUnload();
	}
	if(!sp_IsW98A4A5)
		sp_IsW98A4A5=IsW98A4A5();
	if(!sp_time)
		sp_time=getTime();
	changeUnload();
	CheckIE5Mac(url);
	if(is_window_opened)
		if(spellWin)
		{
			if(isMSIE)
			{
				if(sp_IsW98A4A5&&(asc!=old_asc)&&(spellWin))
				{
					UnloadCW();
					changeUnload();
				}
				else if(!asc)
					is_window_opened=false;
				else
				{
					if(parent.parent.document.location!=spellWin.opener.parent.parent.location)
					{
						is_window_opened=false;
						setNullOpener();
						closeSpellWin();
					}
					else if(!spellWin.frames)
						is_window_opened=false;
				}
			}
			else if(!asc)
			{
				is_window_opened=false;
			}
		}
		else if(!spellWin.frames)
			is_window_opened=false;
	if(is_window_opened)
		if(spellWin.frames)
			if(!isFEQ(5))
			{
				is_window_opened=false;
			}
	var wWidth=492,wHeight=(!isHide('[sw]'))?440:260;botf=167;
	var s='';
	if(lang=='')
		lang='en';
	if(window.name=='')
		window.name='sp_ch_opener_window';
	wndname=window.name;
	if(isHide('[eb]'))
		spellWin=window;
	else if(!is_window_opened)
	{
		sp_spw_name="spch"+getHostStr(document.location.host)+sp_time;
		sp_spw_params="width="+wWidth+",height="+wHeight+",toolbar=no,resizable=no";
		sp_wurl=getWindowURL();
		if(sp_IsW98A4A5&&spellWin&&(old_asc==asc)||isAppVer('Safari'))
			sp_wurl='';
		OpenSpellWin();
		if((isUsrAgent('MSIE 4.01')&&isUsrAgent('Windows NT'))||((isUsrAgent('MSIE 4.01')||isUsrAgent('MSIE 5.01'))&&isUsrAgent('Windows 95')))
		{
			if(!isFEQ(0))
				spellWin.close();
			setTimeout('ReopenSPW()',99);
			return;
		}
		spellWin.opener=window;
		if(!sp_IsW98A4A5)
		{
			if(spellWin.frames.length > 0)
			{
				if(asc)
				{
					if(asc==isFEQ(5))
					{
						if(isMSIE)
						{
							if(parent.parent.document.location!=spellWin.opener.parent.parent.location)
								setNullOpener();
						}
						else if(spellWin.qw!=parent.parent.document.location)
							if(spellWin.frames)
								spellWin.frames[4].parentOpen=false;
						if(isAppVer("Mac")&&(!isMSIE)&&!isAppVer('4.03')&&!isAppVer('4.08'))
						{;}
						else if(spellWin.qw!=parent.parent.document.location)
							OpenSW();
					}
				}
				if(asc!=isFEQ(5))
				{
					if(isAppVer("Mac")&&(!isMSIE)&&!isAppVer('4.03')&&!isAppVer('4.08'))
					{}
					else if(isAppVer('MSIE 4.01')&&!isUsrAgent('AOL'))
					{
						if(!asc&&isFEQ(5))
							setNullOpener();
					}
					else if(asc==isFEQ(4))
						OpenSW();
				}
				spellWin.opener=window;
			}
		}
		else
		{
			if(old_asc==asc)
				if(spellWin.frames)
				{
					if(spellWin.frames[4])
						if(spellWin.frames[4].parentOpen)
							spellWin.frames[4].parentOpen=false;
				}
			spellWin.opener=window;
		}
	}
	if(sp_IsW98A4A5&&asc&&is_window_opened)
		if(!spellWin.frames[4].parentOpen)
		{
			UnloadCW();
			sp_wurl=url;
			ReopenSpellWin();
		}
	spellWin.focus();
	sp_doc=spellWin.document;
	if(!(isUsrAgent('AOL 4')||isUsrAgent('AOL 5')))
	{
		if(!is_window_opened||!isHide('[dc]'))
		{
			sp_doc.location=getSPWU();
			return;
		}
		ChkFrm();
		return;
	}
	if(!is_window_opened||!isHide('[dc]'))
	{
		if(isHide('[ch]'))
			s='<script>\nvar cFlag=0;\nfunction uHandler(){if(cFlag==1){cFlag=0;open("'+url+'?cmd=terminate&txt_ctrl='+ctrl.name+'");}}\nfunction lHandler(){cFlag=1;}</script\><title>SpellChecker.net</title><frameset onload="lHandler()" onUnload="uHandler()" rows="30,*,'+botf+',0" frameborder="No" framespacing=0 border=0>';
		else
		{
			s='<title>SpellChecker.net</title><head><script>'+(asc?'var qw="'+parent.parent.document.location+'";':'');
			if(isUsrAgent('AOL')||asc)
				s+='var un=true;function dounload(){if(frames.length==5){if(frames[4].parentOpen||(frames[4].parentOpen!=null))frames[4].parentOpen=false;if(un){opener.is_window_opened=false;opener.spellWin=null}}}';
			s+='</script></head><frameset rows="30,*,'+botf+',0'+((sp_IsW98A4A5||asc)?',0':'')+'" frameborder="No" framespacing=0 border=0'+((asc||isUsrAgent('AOL'))?' onunload="dounload()"':'')+'>';
		}
		s+=getFrame("navbar","about:blank",2,0,"no","no",0)+getFrame("mid","about:blank",0,0,"auto","no",0)+getFrame("bot","about:blank",1,1,"auto","no",0)+getFrame("spellsuggestall","about:blank",1,1,"no","no",0);
		if(sp_IsW98A4A5||asc)
			s+=getFrame("unload","about:blank",1,1,"no","no",0);
		s+='</frameset\>';
		sp_doc.open();
		sp_doc.write(s);
		sp_doc.close();
		if(sp_IsW98A4A5||asc)
			sp_doc=spellWin.frames[4].document.location=url+'?cmd=unload';
		sp_doc=spellWin.frames[1].document;
		spellWin.opener=window;
	}
	if(sp_doc)
	{
		if(!is_window_opened||!isHide('[dc]'))
		{
			var s='<body><form name=frmSpell method=post action="'+service_host+doc_process+'" lang='+lang+'>'+getHCtrl('sp_asce',sp_asce?lang:'')+getHCtrl('slang',lang)+getHCtrl('intlang',intlang)+getHCtrl('text','')+getHCtrl('cmd','spell')+getHCtrl('trg_url',url)+getHCtrl('trg_wnd',wndname)+getHCtrl('txt_ctrl',(formNum!=-1)?(force_reload?'document.forms['+sp_i+'][\''+ctrlName+'\']':''):(force_reload?ctrlName:''))+getHCtrl('svc_time',(new Date()).getTime())+getHCtrl('statinfo','')+getHCtrl('customerid',customerid?customerid:'')+getHCtrl('schema_url',schema_url)+getHCtrl('spp_langs',spp_langs)+getHCtrl('hide',hide)+getHCtrl('ssrv_host',ssrv_host)+'</form><center><font face="Arial,Helvetica" size=3><b>Loading...</b><br>';
			if(isHide('[cp]'))
				s=s+'<a href="" onclick="parent.opener.parent.cTL.focus();parent.close()">Abort SpellChecker</a>&nbsp;&nbsp;<a href="" onclick="parent.opener.parent.cTL.form.submit();parent.opener.focus();document.location=\''+service_host+doc_process+'?ssrv_host='+ssrv_host+'&cmd=eos&customerid='+customerid+'&sessionid=0&hide='+hide+'\';return false">Send Without Checking</a>';
			s=s+'</font><center></center></body>';
			sp_doc.open();
			sp_doc.writeln(s);
			sp_doc.close();
		}
		var f_dst;
		if(!is_window_opened||!isHide('[dc]'))
			f_dst=sp_doc.forms[0];
		else
		{
			ChkFrm();
			return;
		}
		f_dst.text.value=ctrlObj.value?ctrlObj.value:ctrlObj.innerHTML;
		f_dst.submit();
	}
	is_window_opened=true;
}
				
function ReopenSPW()
{
	sp_wurl=getSPWU();
	ReopenSpellWin();
}
function getSPWU()
{
	return url+'?cmd=frm&qw='+(asc?escape(parent.parent.document.location):'')+'&ctrlname='+(isHide('[ch]')?ctrl.name:'')+'&firstframeh=30&thirdframeh='+botf+'&fifthframe='+(sp_IsW98A4A5||asc?1:'')+'&docblank='+escape(service_host+doc_blank)+'&docblankform='+escape(service_host+doc_blankform)+'&hide='+hide;
}
function ChkFrm()
{
	if(!is_window_opened||!isHide('[dc]'))
		sp_doc=spellWin.frames[1].document;
	if(sp_doc)
	{
		var f_dst;
		if(!is_window_opened||!isHide('[dc]'))
			f_dst=sp_doc.forms[0];
		else
			f_dst=spellWin.frames[4].document.forms[0];
		f_dst.action=service_host+doc_process;
		if(sp_asce)
			f_dst.sp_asce.value=lang;
		f_dst.cmd.value='spell';
		f_dst.slang.value=lang;
		f_dst.intlang.value=intlang;
		f_dst.text.value=ctrlObj.value?ctrlObj.value:ctrlObj.innerHTML;
		f_dst.trg_url.value=url;
		f_dst.trg_wnd.value=wndname;
		if(formNum!=-1)
			f_dst.txt_ctrl.value=force_reload?'document.forms['+sp_i+'][\''+ctrlName+'\']':'';
		else
			f_dst.txt_ctrl.value=force_reload?ctrlName:'';
		f_dst.svc_time.value=(new Date()).getTime();
		f_dst.customerid.value=customerid?customerid:'';
		f_dst.schema_url.value=schema_url;
		f_dst.spp_langs.value=spp_langs;
		f_dst.hide.value=hide;
		if(f_dst.ssrv_host)
			f_dst.ssrv_host.value=ssrv_host;
		f_dst.submit();
	}
	is_window_opened=true;
}
function getFrame(name,src,mw,mh,scrl,fb,fs)
{
	return ' <frame name="'+name+'" src="'+src+'" marginwidth="'+mw+'" marginheight="'+mh+'" noresize scrolling="'+scrl+'" frameborder="'+fb+'" framespacing="'+fs+'">';
}
function getHostStr(s)
{
	var r=getSplitStr(s,".");
	r=getSplitStr(r,":");
	r=getSplitStr(r,"-");
	return r;
}
function getSplitStr(s,d)
{
	var r="";
	var a=s.split(d);
	for(var i=0;i<a.length;i++)
	{
		if(r!="")
			r=r+"_";
		r=r+a[i];
	}
	return r;
}
function getServerName(u)
{
	u=getSS(u,'//',2,true);
	u=getSS(u,'/',0,false);
	u=getSS(u,':',0,false);
	return u;
}
function getSS(s,e,p,r,a)
{
	var x=s.indexOf(e);
	if(x==-1)
	{
		if(a)
			return a;
		return s;
	}
	if(r)
		return s.substring(x+p);
	else
		return s.substring(p,x);
}
function CheckIE5Mac(url)
{
	if(IsProxyVer)
	{
		if(service_host==sp_sh)
		{
			if(!asc)
				ssrv_host=getServerName(service_host);
			var fval=url.split('/');
			service_host='';
			for(i=0;i<fval.length-1;i++)
			{
				if(service_host!='')
					service_host+='/';
				service_host+=fval[i];
			}
			ssrvname=fval[fval.length-1];
			service_host+='/';
		}
		doc_blank=ssrvname+"?doc=blank&ssrv_host="+ssrv_host;
		doc_blankform=ssrvname+"?doc=blankform&ssrv_host="+ssrv_host;
		doc_process=ssrvname;
	}
	else
	{
		ssrv_host='';
		port='';
		ssrv='';
		ssrvname='';
	}
}
function fIsProxyVer()
{
	return (!isAppVer("Safari")&&((isAppVer("MSIE 5")||isAppVer("MSIE 4.01"))&&isAppVer("Mac"))||isAppVer('4.5 ')||isAppVer('4.5;')||(navigator.userAgent.indexOf("Netscape6")!=-1));
}
function getWindowURL()
{
	if(isUsrAgent('Windows 98')&&isUsrAgent('MSIE 5.5')&&isUsrAgent('AOL 5.0'))
		return '';
	if((isUsrAgent('AOL 5.0')&&!isUsrAgent('MSIE 5.5'))||(isUsrAgent('AOL 5.0')&&!isUsrAgent('MSIE 5.0'))||(document.location.protocol=='https:'))
		return url;
	return '';
}
function getTime()
{
	if(sp_IsW98A4A5)
	{
		var t=new Date();
		return t.getTime();
	}
	return '';
}
function changeUnload()
{
	if(sp_IsW98A4A5&&!asc)
		if(sp_old_doc_unload==null)
			if(document.readyState=='complete')
			{
				if(!document.body.onunload)
					sp_old_doc_unload=0;
				else
					sp_old_doc_unload=document.body.onunload;
				document.body.onunload=new_unload;
			}
}
function UnloadCW()
{
	if(is_window_opened)
		if(spellWin)
		{
			if(spellWin.frames)
				spellWin.frames[4].parentOpen=false;
			spellWin.un=false;
			spellWin.close();
			is_window_opened=false;
			spellWin=null;
		}
}
function new_unload()
{
	UnloadCW();
	if(sp_old_doc_unload&&(sp_old_doc_unload!=0))
	{
		sp_old_doc_unload();
		document.body.onunload=sp_old_doc_unload;
	}
	sp_old_doc_unload=null;
}
function IsW98A4A5()
{
	return isUsrAgent('Windows 98')&&(isUsrAgent('AOL 4.0')||isUsrAgent('AOL 5.0'));
}
function getHCtrl(n,v)
{
	return '<input type=hidden name='+n+' value="'+v+'">';
}
function isUsrAgent(s)
{
	return navigator.userAgent.indexOf(s)!=-1;
}
function isAppVer(s)
{
	return navigator.appVersion.indexOf(s)!=-1;
}
function isHide(s)
{
	return hide.indexOf(s)!=-1;
}
function setNullOpener()
{
	spellWin.opener.is_window_opened=false;
	spellWin.opener.spellWin=null;
}
function closeSpellWin()
{
	spellWin.close();
	spellWin=null;
}
function OpenSpellWin()
{
	spellWin=window.open(sp_wurl,sp_spw_name,sp_spw_params);
}
function ReopenSpellWin()
{
	var nsw=window.open(sp_wurl,sp_spw_name,sp_spw_params);
	spellWin=nsw;
}
function OpenSW()
{
	closeSpellWin();
	OpenSpellWin();
	if(!isAppVer("Mac"))
		ReopenSpellWin();
}
function isFEQ(v)
{
	return spellWin.frames.length==v;
}

