// 17NOV10





function isdefined(varobj) {
	if(typeof(varobj)=='undefined') return false;
	else return true;
}
function isempty(varobj) {
	if(typeof(varobj)=='undefined') return true;
	else if((varobj==null||varobj=='')&&varobj!=0) return true;
	else return false;
}
function isfunction(varobj) {
	if(typeof(varobj)=='function') return true;
	else return false;
}
function isobject(varobj) {
	if(typeof(varobj)=='undefined') return false;
	else if(typeof(varobj)=='object'&&varobj!=null&&varobj!='') return true;
	else return false;
}
/*Array.prototype.inArray=function(value) {
	for(var i=0;i<this.length;i++) if(this[i]===value) return true;
	return false;
};*/
function isinarray(ar,val) {
	var i=0; for(i=0;i<ar.length;i++) if(ar[i]===value) return true;
	return false;
}
function inheritclass(base,derived) {
	eval(derived+'.prototype=new '+base+'();');
	eval(derived+'.prototype.constructor='+derived+';');
}
function getfreeslot(slotsarray,dupid) {
	var c1=0;
	if(dupid) for(c1=0;c1<slotsarray.length;c1++) if(slotsarray[c1]==dupid) return c1;
	for(c1=0;c1<slotsarray.length;c1++) if(slotsarray[c1]==-1) return c1;
	return -1;
}





function isnewdata(d){
	if(typeof(d)!='object') return false; if(!d) return false;
	if(typeof(d.property_newdata)=='undefined') return false; if(!d.property_newdata) return false;
	if(d.property_newdata==1) return true;
}
function newdata(){
	var d=new Object();
	d.property_newdata=1;
	d.property_pnode='base';
	d.property_level=1;
	d.func_newlevel=datanewlevel;
	d.func_dellevel=datadellevel;
	return d;
}
function datanewlevel(key){
	var d=this; if(!d) return; if(typeof(key)!='string') return;
	if(typeof(d[key])!='undefined') return;
	d[key]=new Object();
	d[key].property_newdata=1;
	d[key].property_pnode=d;
	d[key].property_level=d[key].property_pnode.property_level+1;
	d[key].func_newlevel=datanewlevel;
	d[key].func_dellevel=datadellevel;
}
function datadellevel(key){
	var d=this; if(!d) return; if(typeof(key)!='string') return;
	if(typeof(d[key])=='undefined') return;
	for(var i in d[key]){ if(typeof(d[key][i])!='undefined') delete d[key][i]; }
	delete d[key];
}
/*var test=newdata();
test['test1']='test111';
test['test2']='test222';
test.func_newlevel('a');
test.a.func_newlevel('b');
test.a.b['aaa']='aaa123';
test.a.func_dellevel('b');
alert(typeof(test.a.b));
test.func_dellevel('a');
alert(typeof(test.a));
*/





function isnum(val) {
	if(typeof(val)=='undefined') return false;
	else if(val==''||val==null||isNaN(val)) return false;
	else return true;
}
function iseven(num) {
	if(num%2) return false;
	else return true;
}
function isfloat(num) {
	if(isNaN(num)||num.indexOf(".")<0) return false;
	else if(parseFloat(num)) return true;
	return false;
}
function isinrange(num,lbound,ubound) {
	if(num>=lbound&&num<=ubound) return true;
	else return false;
}
var lastrandno=-1;
function getrandnov1(minno,maxno) {
	var thisrandno=Math.floor((maxno-(minno-1))*Math.random())+minno;
	while (thisrandno==lastrandno) thisrandno=Math.floor((maxno-(minno-1))*Math.random())+minno;
	lastrandno=thisrandno;
	return thisrandno;
}
function getrandno(minno,maxno) {
	var tempresult=0;
	var tempcounter1=0;
	// prevent duplicated no and out of range
	while(tempresult==0||tempresult==lastrandno||tempresult<minno||tempresult>maxno){
		tempcounter1=Math.abs(Math.round(Math.random()*(10-1))+1);
		for(var i=0;i<tempcounter1;i++) tempresult=Math.abs(Math.round(Math.random()*(maxno-minno))+minno);
	}
	lastrandno=tempresult; // update last generated no
	return tempresult;
}
function getdate(){
	var d=new Date();
	return d.getDate();
}
function getdatedd(){
	var dd=getdate()+'';
	if(dd.length==1) dd='0'+dd;
	return dd;
}
function getmonth(){
	var d=new Date();
	return d.getMonth()+1;
}
function getmonthmm(){
	var mm=getmonth()+'';
	if(mm.length==1) mm='0'+mm;
	return mm;
}
function getmonthmmm(){
	var m=getmonth(); var mmm='';
	if(m==1) mmm='JAN';
	else if(m==2) mmm='FEB';
	else if(m==3) mmm='MAR';
	else if(m==4) mmm='APR';
	else if(m==5) mmm='MAY';
	else if(m==6) mmm='JUN';
	else if(m==7) mmm='JUL';
	else if(m==8) mmm='AUG';
	else if(m==9) mmm='SEP';
	else if(m==10) mmm='OCT';
	else if(m==11) mmm='NOV';
	else if(m==12) mmm='DEC';
	return mmm;
}
function getyear(){
	var d=new Date();
	return d.getFullYear();
}





function isstring(varobj) {
	if(typeof(varobj)=='string'&&varobj) return true;
	else return false;
}
function isinstring(str,strsearch) {
	if(str.search(strsearch)!=-1) return true;
	else return false;
}
function getsubstrlr(str,start,len) {
	return str.substr(start-1,len);
}
function getsubstrrl(str,start,len) {
	return str.substr(str.length-start-(len-1),len);
}
function getstrreplace(str,find,replacewith,param) {
	var findregexp=new RegExp(find,param);
	return str.replace(findregexp,replacewith);
	findregexp=null;
}
function fixsquote(input) {
	return input.replace(/'/g,'&prime;');
}
function fixdquote(input) {
	return input.replace(/"/g,'&quot;');
}
function fixcr(input) { // Converts carriage returns to <BR> for display in HTML
	var output='';
	for (var i=0;i<input.length;i++) {
		if ((input.charCodeAt(i)==13)&&(input.charCodeAt(i+1)==10)) { i++; output+='<BR>'; }
		else { output+=input.charAt(i); }
	}
	return output;
}
//messages is combined this way:
//entry name + "=" + message text + (entry name+"EnD")
//e.g. "EntrY1=msg1EntrY1EnDEntrY2=msg2EntrY2EnDEntrY3=msg3EntrY3EnD"
function makemsg(/*param list...*/) {
	var ar=arguments; var entry=''; var msg=''; var compound='';
	for(var c1=0;c1<ar.length;c1++){
		entry=ar[c1].substr(0,ar[c1].indexOf('='));
		msg=ar[c1].substr(entry.length+1,ar[c1].length-entry.length-1);
		compound=compound+entry+'='+msg+entry+'EnD';
	}
	return compound;
}
function extractmsg(msg,entry) {
	var startpos=0; var endpos=0;
	var startentry=entry+'=';
	var endentry=entry+'EnD';
	startpos=msg.indexOf(startentry)+startentry.length;
	endpos=msg.indexOf(endentry);
	return msg.substr(startpos,endpos-startpos);
}
function extractfileext(path) {
	return path.substring(path.lastIndexOf('.')+1,path.length);
}





function isele(varobj) {
	if(typeof(varobj)=='object'&&varobj) if(typeof(varobj.style)!='undefined') return true;
	return false;
}
function eleexists(eleid) {
	if(!eleid) return false;
	else return document.getElementById(eleid);
}
function getverifyele(varobj) {
	if(typeof(varobj)=='string') return document.getElementById(varobj);
	else if(isele(varobj)) return varobj;
	else return false;
}
function getelebyid(eleid) {
	return document.getElementById(eleid);
}
function getelebyidkw(kw,tag) {
	var ele=new Array();
	if(!tag) tag='*'; var t=document.getElementsByTagName(tag);
	for(var i in t) if(t[i].id) if(t[i].id.search(kw)!=-1) ele.push(t[i]);
	return ele;
}
/*
The dollar functions is a simple way to grab an element quickly. So instead of document.getElementById('a');, you'd simply just do this instead:$('a');
And if you wanted a whole collection of elements, you can simply do this: $('a','b',obj,obj2,'c','d');
*/
//function $(/*param list...*/) {
function getelebyidlist(/*param list...*/) {
	var elements=new Array();
	var i=0; for(i=0;i<arguments.length;i++) {
		var element=arguments[i];
		if(typeof(element)=='string') element=document.getElementById(element);
		if(typeof(element)!='object') continue;
		if(!element) continue;
		if(arguments.length==1) return element;
		elements.push(element);
	}
	return elements;
}
function geteleallid(vele){
// DON'T put any <input name='id'........ inside a form, or you can never get that form.id !
	var elelist=new Object();
	var allele=document.getElementsByTagName('*'); if(!allele){ alert("document.getElementsByTagName('*') FAILED, will call 'geteleallidv2' instead"); return geteleallidv2(vele); }
	for(var i in allele){ if(typeof(allele[i].id)!='undefined'){ if(allele[i].id){
		if(vele) elelist[allele[i].id]=newvele(allele[i]);
		else elelist[allele[i].id]=allele[i];
	}}}
	return elelist;
}
function geteleallidv2(vele){ // in case browser does'nt support getElementByTagName('*')...
	var allele=0; var elelist=new Object(); var taglist=new Object();
	taglist[1]='font';
	taglist[2]='span';
	taglist[3]='a';
	taglist[4]='img';
	taglist[5]='div';
	taglist[6]='table';
	taglist[7]='tr';
	taglist[8]='td';
	taglist[9]='form';
	taglist[10]='input';
	taglist[11]='textarea';
	taglist[12]='iframe';
	for(var t in taglist){
		allele=document.getElementsByTagName(taglist[t]);
		for(var i in allele){ if(typeof(allele[i].id)!='undefined'){ if(allele[i].id){
			if(vele) elelist[allele[i].id]=newvele(allele[i]);
			else elelist[allele[i].id]=allele[i];
		}}}
	}
	delete taglist;
	return elelist;
}
function getelebyname(elename) {
	return document.getElementsByName(elename);
}
function getelebytag(tag) {
	return document.getElementsByTagName(tag);
}
/*
This function was spawned from developers needing a quick and elegant way of grabbing elements by a className
Simply add a class name to the beginning of the funciton and the 2nd and 3rd arguments are optional and the magic is done for you!
*/
function getelebyclass(searchClass,node,tag) {
	var classElements=new Array();
	if(node==null) node=document;
	if(tag==null) tag='*';
	var els=node.getElementsByTagName(tag);
	var elsLen=els.length;
	var pattern=new RegExp('(^|\\\\s)'+searchClass+'(\\\\s|$)');
	for(i=0,j=0;i<elsLen;i++){
		if(pattern.test(els[i].className)){
			classElements[j]=els[i];
			j++;
		}
	}
	return classElements;
}
function getallele() {
	return document.getElementsByTagName('*');
}
function MM_findObj(n,d) { //v4.01 from macromedia/adobe...
  var p,i,x; if(!d) d=document;
  if((p=n.indexOf("?"))>0&&parent.frames.length){ d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p); }
  if(!(x=d[n])&&d.all) x=d.all[n];
  for(i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x&&d.getElementById) x=d.getElementById(n);
  return x;
}
function finddupid() {
	var allele=document.getElementsByTagName('*');
	for(var c1=0;c1<allele.length;c1++) {
		for(var c2=0;c2<allele.length;c2++) {
			if(c1!=c2&&allele[c1].id&&allele[c2].id&&allele[c1].id==allele[c2].id) {
				debugmsg("DUP ID FOUND: <br>"+
						"<b>"+allele[c1].id+"</b><br>"+
						allele[c1].innerHTML+"<br>"+
						"<b>"+allele[c2].id+"</b><br>"+
						allele[c2].innerHTML);
				//alert('DUP ID FOUND: '+allele[c1].id);
				return;
			}
		}
	}
	debugmsg('[ NO DUP ID FOUND ]');
	//alert('[ NO DUP ID FOUND ]');
}





function isnewele(ele) {
	if(!isobject(ele)) return false;
	else if(!isdefined(ele.eletype)) return false;
	else if(ele.eletype>=1) return true;
	return false;
}

function newele(ele) {
	if(typeof(ele)=='undefined') return false;
	else if(typeof(ele)=='string') ele=document.getElementById(ele);
	if(!ele) return false;
	if(typeof(ele.eletype)!='undefined') return ele;
	ele.eletype=1;

	ele.isfont=eleisfont;
	ele.isa=eleisa;
	ele.isimg=eleisimg;
	ele.isspan=eleisspan;
	ele.isdiv=eleisdiv;
	ele.istable=eleistable;
	ele.istr=eleistr;
	ele.istd=eleistd;
	
	ele.getatt=elegetatt;
	ele.addatt=eleaddatt;
	ele.setatt=elesetatt;
	ele.swapatt=eleswapatt;
	
	ele.getclass=elegetclass;
	ele.setclass=elesetclass;
	ele.swapclass=eleswapclass;
	
	ele.getstyle=elegetstyle;
	ele.addstyle=eleaddstyle;
	ele.setstyle=elesetstyle;
	ele.swapstyle=eleswapstyle;
	
	ele.addevent=eleaddevent;
	ele.removeevent=eleremoveevent;
	ele.removeeventbyk=eleremoveeventbyk;
	ele.removeallevent=eleremoveallevent;
	
	ele.gethtml=elegethtml;
	ele.addhtml=eleaddhtml;
	ele.sethtml=elesethtml;
	ele.swaphtml=eleswaphtml;
	
	ele.getelebyname=elegetelebyname;
	ele.getelebytag=elegetelebytag;
	ele.addnode=eleaddnode;
	ele.copynode=elecopynode;
	ele.emptynode=eleemptynode;
	ele.removenode=eleremovenode;
	
	return ele;
}

function eleisfont(ele) {
	if(!ele) ele=this; else if(typeof(ele)=='string') ele=document.getElementById(ele);
	if(ele.tagName.toLowerCase()=='font') return true;
	else return false;
}
function eleisa(ele) {
	if(!ele) ele=this; else if(typeof(ele)=='string') ele=document.getElementById(ele);
	if(ele.tagName.toLowerCase()=='a') return true;
	else return false;
}
function eleisimg(ele) {
	if(!ele) ele=this; else if(typeof(ele)=='string') ele=document.getElementById(ele);
	if(ele.tagName.toLowerCase()=='img') return true;
	else return false;
}
function eleisspan(ele) {
	if(!ele) ele=this; else if(typeof(ele)=='string') ele=document.getElementById(ele);
	if(ele.tagName.toLowerCase()=='span') return true;
	else return false;
}
function eleisdiv(ele) {
	if(!ele) ele=this; else if(typeof(ele)=='string') ele=document.getElementById(ele);
	if(ele.tagName.toLowerCase()=='div') return true;
	else return false;
}
function eleistable(ele) {
	if(!ele) ele=this; else if(typeof(ele)=='string') ele=document.getElementById(ele);
	if(ele.tagName.toLowerCase()=='table') return true;
	else return false;
}
function eleistr(ele) {
	if(!ele) ele=this; else if(typeof(ele)=='string') ele=document.getElementById(ele);
	if(ele.tagName.toLowerCase()=='tr') return true;
	else return false;
}
function eleistd(ele) {
	if(!ele) ele=this; else if(typeof(ele)=='string') ele=document.getElementById(ele);
	if(ele.tagName.toLowerCase()=='td') return true;
	else return false;
}

function elegetatt(att,ele) {
	if(!ele) ele=this; else if(typeof(ele)=='string') ele=document.getElementById(ele);
	return ele.getAttribute(att);
}
function eleaddatt(att,val,ele) {
	if(!ele) ele=this; else if(typeof(ele)=='string') ele=document.getElementById(ele);
	var natt=document.createAttribute(att);
	natt.nodeValue=val;
	ele.setAttributeNode(natt); 
}
function elesetatt(att,val,ele) {
	if(!ele) ele=this; else if(typeof(ele)=='string') ele=document.getElementById(ele);
	if(ele.getAttribute(att)==null||ele.getAttribute(att)==''||!ele.getAttribute(att)) eleaddatt(att,val,ele);
	else ele.setAttribute(att,val);
}
function eleswapatt(att,thatele,ele) {
	if(!ele) ele=this; else if(typeof(ele)=='string') ele=document.getElementById(ele);
	if(typeof(thatele)=='string') thatele=document.getElementById(thatele); if(!thatele) return;
	var thisatt=elegetatt(att,ele);
	elesetatt(att,elegetatt(att,thatele),ele);
	elesetatt(att,thisatt,thatele);
}

function elegetclass(ele) {
	if(!ele) ele=this; else if(typeof(ele)=='string') ele=document.getElementById(ele);
	if(typeof(ele.className)!='undefined') return ele.className;
	else if(ele.getAttribute('class').length>ele.getAttribute('className').length) return ele.getAttribute('class');
	else if(ele.getAttribute('className').length>=ele.getAttribute('class').length) return ele.getAttribute('className');
}
function elesetclass(classname,ele) {
	if(!ele) ele=this; else if(typeof(ele)=='string') ele=document.getElementById(ele);
	if(typeof(ele.className)!='undefined') ele.className=classname;
	else { ele.setAttribute('className',classname); ele.setAttribute('class',classname); }
}
function eleswapclass(thatele,ele) {
	if(!ele) ele=this; else if(typeof(ele)=='string') ele=document.getElementById(ele);
	if(typeof(thatele)=='string') thatele=document.getElementById(thatele); if(!thatele) return;
	var thisclass=elegetclass(ele);
	elesetclass(elegetclass(thatele),ele);
	elesetclass(thisclass,thatele);
}

function elegetstyle(ele) {
	if(!ele) ele=this; else if(typeof(ele)=='string') ele=document.getElementById(ele);
	if((isie()||isopr())&&typeof(ele.style.cssText)!='undefined') return ele.style.cssText;
	else return ele.getAttribute('style');
}
function eleaddstyle(styletext,ele) {
	if(!ele) ele=this; else if(typeof(ele)=='string') ele=document.getElementById(ele);
	var ostyletext='';
	if((isie()||isopr())&&typeof(ele.style.cssText)!='undefined') ostyletext=ele.style.cssText; else ostyletext=ele.getAttribute('style');
	if(ostyletext) if(ostyletext.substring(ostyletext.length-1)!=';') ostyletext+=';';
	if((isie()||isopr())&&typeof(ele.style.cssText)!='undefined') ele.style.cssText=ostyletext+styletext; else ele.setAttribute('style',ostyletext+styletext);
}
function elesetstyle(styletext,ele) {
	if(!ele) ele=this; else if(typeof(ele)=='string') ele=document.getElementById(ele);
	if((isie()||isopr())&&typeof(ele.style.cssText)!='undefined') ele.style.cssText=styletext;
	else ele.setAttribute('style',styletext);
}
function eleswapstyle(thatele,ele) {
	if(!ele) ele=this; else if(typeof(ele)=='string') ele=document.getElementById(ele);
	if(typeof(thatele)=='string') thatele=document.getElementById(thatele); if(!thatele) return;
	var thisstyle=elegetstyle(ele);
	elesetstyle(elegetstyle(thatele),ele);
	elesetstyle(thisstyle,thatele);
}

function elegethtml(ele) {
	if(!ele) ele=this; else if(typeof(ele)=='string') ele=document.getElementById(ele);
	return ele.innerHTML;
}
function eleaddhtml(html,ele) {
	if(!ele) ele=this; else if(typeof(ele)=='string') ele=document.getElementById(ele);
	ele.innerHTML+=html;
}
function elesethtml(html,ele) {
	if(!ele) ele=this; else if(typeof(ele)=='string') ele=document.getElementById(ele);
	eleemptynode(ele);
	ele.innerHTML=html;
}
function eleswaphtml(thatele,ele) {
	if(!ele) ele=this; else if(typeof(ele)=='string') ele=document.getElementById(ele);
	if(typeof(thatele)=='string') thatele=document.getElementById(thatele); if(!thatele) return;
	if(ele.innerHTML==thatele.innerHTML) return;
	var thishtml=ele.innerHTML;
	ele.innerHTML=thatele.innerHTML;
	thatele.innerHTML=thishtml;
}

function elegetelebyname(elename,ele) {
	if(!ele) ele=this; else if(typeof(ele)=='string') ele=document.getElementById(ele);
	return ele.getElementsByName(elename);
}
function elegetelebytag(tag,ele) {
	if(!ele) ele=this; else if(typeof(ele)=='string') ele=document.getElementById(ele);
	return ele.getElementsByTagName(tag);
}
function eleaddnode(pele,bele,tag/*,param list...*/) {
	if(!pele) pele=this; else if(typeof(pele)=='string') pele=document.getElementById(pele);
	if(bele) if(typeof(bele)=='string') bele=document.getElementById(bele);
	var ar=arguments; var att=''; var val='';
	var nele=0;
	if(tag=='text'&&ar[3]&&ar[3]!='') nele=document.createTextNode(ar[c3]);
	if(tag!='text'){ nele=document.createElement(tag); var c1=0;
		for(c1=3;c1<ar.length;c1++){ if(ar[c1].search('=')!=-1){
			att=ar[c1].substr(0,ar[c1].indexOf('='));
			val=ar[c1].substr(att.length+1,ar[c1].length-att.length-1);
			if(att.toLowerCase()=='style'&&isie()&&nele.style.cssText!=null) nele.style.cssText=val;
			if(!(att.toLowerCase()=='style'&&isie())) {
				if(nele.getAttribute(att)==null||nele.getAttribute(att)==''||!nele.getAttribute(att)) {
					var natt=0; natt=document.createAttribute(att); natt.nodeValue=val; nele.setAttributeNode(natt);
				} else nele.setAttribute(att,val);
			}
		}}
	}
	if(bele) pele.insertBefore(nele,bele);
	else pele.appendChild(nele);
}
/*function insertAfter(parent,node,referenceNode) {
	parent.insertBefore(node,referenceNode.nextSibling);
}*/
function elecopynode(tp,bele,newid,removeoele,ele) {
	if(!ele) ele=this; else if(typeof(ele)=='string') ele=document.getElementById(ele);
	if(typeof(tp)=='string') tp=document.getElementById(tp);
	var eleclone=ele.cloneNode(true);
	if(newid&&newid!='') {
		if(eleclone.getAttribute('id')==null||eleclone.getAttribute('id')==''||!eleclone.getAttribute('id')) {
			var nid=0; nid=document.createAttribute('id'); nid.nodeValue=newid; eleclone.setAttributeNode(nid);
		} else eleclone.setAttribute('id',newid);
	}
	if(bele){ if(typeof(bele)=='string') bele=document.getElementById(bele);
		tp.insertBefore(eleclone,bele);
	} else tp.appendChild(eleclone);
	var op=0; if(ele.parentNode) op=ele.parentNode; else if(ele.parentElement) op=ele.parentElement;
	if(op&&removeoele) op.removeChild(ele);
}
function eleemptynode(ele) {
	if(!ele) ele=this; else if(typeof(ele)=='string') ele=document.getElementById(ele);
	if(ele.hasChildNodes()) while(ele.childNodes.length>0) ele.removeChild(ele.firstChild);
}
function eleremovenode(ele) {
	if(!ele) ele=this; else if(typeof(ele)=='string') ele=document.getElementById(ele);
	var pele=0; if(ele.parentNode) pele=ele.parentNode; else if(ele.parentElement) pele=ele.parentElement;
	if(pele&&ele) pele.removeChild(ele);
}





var BrowserDetect={
	init: function() {
		this.browser=this.searchString(this.dataBrowser)||"An unknown browser";
		this.version=this.searchVersion(navigator.userAgent)||this.searchVersion(navigator.appVersion)||"an unknown version";
		this.OS=this.searchString(this.dataOS)||"an unknown OS";
	},
	searchString: function(data) {
		for(var i=0;i<data.length;i++) {
			var dataString=data[i].string;
			var dataProp=data[i].prop;
			this.versionSearchString=data[i].versionSearch||data[i].identity;
			if(dataString) { if(dataString.indexOf(data[i].subString)!=-1) return data[i].identity;
			} else if(dataProp) return data[i].identity;
		}
	},
	searchVersion: function(dataString) {
		var index=dataString.indexOf(this.versionSearchString);
		if(index==-1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{
			string: navigator.userAgent,
			subString: "Chrome",
			identity: "Chrome"
		},
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari",
			versionSearch: "Version"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]
};
var iever=-1;
function isie() {
	if(iever==-1) {
		BrowserDetect.init();
		iever=BrowserDetect.browser=='Explorer'?BrowserDetect.version:false;
	}
	return iever;
}
var nsver=-1;
function isns() {
	if(nsver==-1) {
		BrowserDetect.init();
		nsver=BrowserDetect.browser=='Netscape'?BrowserDetect.version:false;
	}
	return nsver;
}
var ffver=-1;
function isff() {
	if(ffver==-1) {
		BrowserDetect.init();
		ffver=BrowserDetect.browser=='Firefox'?BrowserDetect.version:false;
	}
	return ffver;
}
var safver=-1;
function issaf() {
	if(safver==-1) {
		BrowserDetect.init();
		safver=BrowserDetect.browser=='Safari'?BrowserDetect.version:false;
	}
	return safver;
}
var chrmver=-1;
function ischrm() {
	if(chrmver==-1) {
		BrowserDetect.init();
		chrmver=BrowserDetect.browser=='Chrome'?BrowserDetect.version:false;
	}
	return chrmver;
}
var oprver=-1;
function isopr() {
	if(oprver==-1) {
		BrowserDetect.init();
		oprver=BrowserDetect.browser=='Opera'?BrowserDetect.version:false;
	}
	return oprver;
}





function getcookie(name){
	var start=document.cookie.indexOf(name+"=");
	var len=start+name.length+1;
	if((!start)&&(name!=document.cookie.substring(0,name.length))) return null;
	if(start==-1) return null;
	var end=document.cookie.indexOf(';',len);
	if(end==-1) end=document.cookie.length;
	return unescape(document.cookie.substring(len,end));
}
function setcookie(name,value,expires,path,domain,secure){
	var today=new Date();
	today.setTime(today.getTime());
	if(expires) expires=expires*1000*60*60*24;
	var expires_date=new Date(today.getTime()+(expires));
	document.cookie=name+'='+escape(value)+
		((expires)?';expires='+expires_date.toGMTString():'')+//expires.toGMTString()
		((path)?';path='+path:'')+
		((domain)?';domain='+domain:'')+
		((secure)?';secure':'');
}
function removecookie(name,path,domain){
	if(getCookie(name)) document.cookie=name+'='+
		((path)?';path='+path:'')+
		((domain)?';domain='+domain:'')+
		';expires=Thu, 01-Jan-1970 00:00:01 GMT';
}
function getcookiev1(name){
    var cookies=document.cookie.split(';');
    for(var i=0;i<cookies.length;i++){
        var cookie=cookies[i].replace(/^\s+/,'');
        if(cookie.indexOf(name+'=')==0) return cookie.substring(name.length+1);
    }
    return null;
}
function setcookiev1(name,value,days){
	var exp='';
    if(days){
        (time=new Date()).setTime(new Date().getTime()+days*24*60*60*1000);
        exp='; expires='+time.toGMTString();
    }
    document.cookie=name+"="+value+exp+"; path=/";
}
function removecookiev1(name){
    writeCookie(name,"",-1);
}





