function getOffsetTop(obj){
	var src=obj, oTop=0
	do{
		oTop+=src.offsetTop
		src=src.offsetParent
	}
	while(src)
	return oTop
}
function getOffsetLeft(obj){
	var src=obj, oLeft=0
	do{
		oLeft+=src.offsetLeft
		src=src.offsetParent
	}
	while(src)
	return oLeft
}

function nothing(){
	//alert("nothing");
}

function openpage_old(pageurl, pagename, pagewidth, pageheight) 
{                                          
	var attr;                                          
	attr="width="+pagewidth+",height="+pageheight+",scrollbars=yes,status=no,title=yes,toolbars=yes,resizable=yes"
	window.open(pageurl, pagename, attr);                                          
}

function openpage(pageurl, pagename, pagewidth, pageheight) 
{                                          
	var attr;                                          
	attr="width="+pagewidth+",height="+pageheight+",scrollbars=no,status=no,title=no,toolbars=yes,resizable=no"
	window.open(pageurl, pagename, attr);                                          
}

function openpagemedia(pageurl, pagename, pagewidth, pageheight) 
{                                          
	var attr;                                          
	attr="width="+pagewidth+",height="+pageheight+",scrollbars=no,status=no,title=no,toolbars=yes,resizable=no"
	window.open(pageurl, pagename, attr);                                          
}

function openvotepage(pageurl, pagename, pagewidth, pageheight) 
{                                          
	var attr;                                          
	attr="width="+pagewidth+",height="+pageheight+",scrollbars=yes,status=no,title=yes,toolbars=yes,resizable=no"
	window.open(pageurl, pagename, attr);                                          
}

function validate_email(strcheck) 
{ 
		var charcompare="@" ;
		for (var i=1;i<strcheck.length-1;i++) 
			if (strcheck.charAt(i)==charcompare) {return true;} 
		return false; 
} 
	
function isemail(email) 
{	
	var pos1,pos2,pos3
	pos1=email.indexOf("@");	
	pos2=email.indexOf(" ");
	pos3=email.indexOf(".");	
	if ((pos1 == -1) || (pos2!= -1) || (pos3 == -1)) return false;
	else return true;
}

function trim(text)
{
	pos1=0;
	pos2=text.length-1;
	for(i=0;i<=text.length-1;i++)
		if(text.substr(i,1)==" ") pos1=i;
		else break;
	for(i=length-1;i>=0;i--)
		if(text.substr(i,1)==" ") pos2=i;
		else break;
	if (pos2<pos1) return ""
	return text.substr(pos1,pos2-pos1)
}

function trimstring(strin)
{ 
	var strtemp;
	var i; 
	strtemp="";
	i=0;
	if (strin.charAt(i)!=" "){strtemp=strtemp+strin.charAt(i);}
	for (var i=1;i<strin.length-1;i++){
		if (strin.charAt(i)==" "){
			if (strin.charAt(i+1)!=" ") {strtemp=strtemp+strin.charAt(i)}
		}
		else {strtemp=strtemp+strin.charAt(i)} 
	}
	i=strin.length;
	if (strin.charAt(i)!=" "){strtemp=strtemp+strin.charAt(i)}
	return strtemp; 
} 
	
function trimfullstring(strin)
{ 
	var strtemp 
		strtemp="" 
		for (var i=0;i<strin.length;i++) 
			if (strin.charAt(i)!=" ") {strtemp=strtemp+strin.charAt(i)} 
		return strtemp; 
}

function IsNumberString(MyString)
{ 
	var checkOK = "0123456789"; 
	var checkStr = MyString ; 
	var allValid = true; 
	var decPoints = 0; 
	var allNum = ""; 
	if (checkStr.length<=0) { return (false); } 
	for (i = 0;  i < checkStr.length;  i++){ 
		ch = checkStr.charAt(i); 
		for (j = 0;  j < checkOK.length;  j++) 
			if (ch == checkOK.charAt(j)) 
				break; 
			if (j == checkOK.length) { 
				allValid = false; 
				break; 
			} 
			if (ch != ",") 
				allNum += ch; 
	} 
	if (!allValid) { return (false);} 
	return true; 
} 
	
function IsDoubleString(MyString)
{ 
	var checkOK = "0123456789."; 
	var checkStr = MyString ; 
	var allValid = true; 
	var decPoints = 0; 
	var allNum = ""; 
	if (checkStr.length<=0) { return (false); } 
	for (i = 0;  i < checkStr.length;  i++){ 
		ch = checkStr.charAt(i); 
		for (j = 0;  j < checkOK.length;  j++) 
			if (ch == checkOK.charAt(j)) 
				break; 
			if (j == checkOK.length) { 
				allValid = false; 
				break; 
			} 
			if (ch != ",") 
				allNum += ch; 
	} 
	if (!allValid) { return (false);} 
	return true; 
} 
	
function isDigit(c) 
{
	if((c=='0')||(c=='1')||(c=='2')||(c=='3')||(c=='4')||(c=='5')||(c=='6')||(c=='7')||(c=='8')||(c=='9'))
		return true;
	else
		return false;
}
	
function isPosInt(s)	
{
	var n;
	n = s.length
	if(n==0) return false;
		for(i=0;i<n;i++)
			if(!isDigit(s.charAt(i))) return false;
		return true;
}

function isPosReal(s)
{
	var dot;
	s = trim(s);
	dot =0;
	for(i=0;i<s.length;i++)
		if(!isDigit(s.charAt(i))) 
		{
			if(s.charAt(i)=='.') 
			{
				dot++;
				if(i==s.length-1) return false;
				if(dot>1) return false;
			}
			else return false;	
		}
	return true;
}

function isValidDate(strDate)
{
	 var m;
	 var d;
	 var y;
	 var i1;
	 var i2;
	 
	 strDate=trim(strDate);
	 if(strDate=="") return false;
	 i1 = strDate.indexOf("/")
	 if(i1<0) return false;
	 m = strDate.substring(0,i1)
	 i2= strDate.indexOf("/",i1+1)
	 if(i2<0) return false;
	 d = strDate.substring(i1+1,i2)
	 y = strDate.substring(i2+1)

	 if((m=="")||(d=="")||(y=="")) return false;
	 if((m==0)||(d==0)||(y==0)) return false;
	 if(!isPosInt(m))
	 	 return false;
	 else
	 	{	
		 m = parseInt(m);
		 if(m>12) return false;
	 	}

	 if(!isPosInt(y))
	 	 return false;
	 else
		{
		 y = parseInt(y)
		 if(y>9999) return false;
		}

	 if(!isPosInt(d))
	 	 return false;
	 else
		{
		 d = parseInt(d)
		 if((m==1)||(m==3)||(m==5)||(m==7)||(m==8)||(m==10)||(m==12))
			 if(d>31) return false;
	 	 if((m==4)||(m==6)||(m==9)||(m==11))
			if(d>30) return false;

		 if(m==2)
			{
			 if(d>29) return false;
			 if((y%4)!=0) // not a leap year
			 	if(d>28) return false;
			}
		}

	return true;
}

function isEmail(strEmail)
{
	var intlen;
	var ctmp;
	strEmail = trim(strEmail);
	if(strEmail=='') return false;
	intlen=strEmail.length;
	if(intlen<5) return false;
	if(strEmail.indexOf('@')==-1) return false;
	if(strEmail.indexOf('.')==-1) return false;
	if(intlen - strEmail.lastIndexOf('.') -1 > 3) return false; 
	if((strEmail.indexOf("_")!=-1) && (strEmail.lastIndexOf("_") > strEmail.lastIndexOf("@"))) return false;
	if(strEmail.lastIndexOf(".") <= strEmail.lastIndexOf("@")+1)  return false;
	if(strEmail.indexOf("@")!=strEmail.lastIndexOf("@")) return false;
	if(intlen -1 == strEmail.lastIndexOf('.')) return false;
	if(strEmail.charAt(strEmail.indexOf('@')+1)=='.') return false;
	if(strEmail.indexOf(" ")!=-1) return false;
	if(strEmail.indexOf("..")!=-1) return false;
 
	strEmail=strEmail.toLowerCase();
	for(intcnt=0;intcnt<intlen;intcnt++)
	{
		ctmp = strEmail.charAt(intcnt)
		if((!isDigit(ctmp))&& ((ctmp>'z')||(ctmp<'a')) && (ctmp!='-') && (ctmp!='.') && (ctmp!='@') && (ctmp!='_')) return false;
	}
	return true	;
}

function isZip(str)
{
	str=trim(str);
	if(str=='') return false;
	if(str.length!=5) return false;
	if(!isPosInt(str)) return false;
	return true;
}

/*
	getFileName
	receive a full path file name, return only the file name
	ex: input = C:\Windows\myfile.txt
	output = myfile.txt
*/
function getFileName(str)
{
	var bpos
	var filename
	if((str=='')||(str.indexOf("\\")==-1)) return(str);
	bpos = str.lastIndexOf("\\");
	filename = str.substring(bpos+1,str.length)
	return(filename);
}

/* 
	getFileType
	receive a full path file name, return only the file extension
	ex: input = C:\Windows\myfile.txt
	output = txt
*/
function getFileType(str)
{
	var filename;
	var fileext;
	var dotpos;
	fileext ='';
	filename = getFileName(str);
	dotpos = filename.lastIndexOf(".");
 
	if(dotpos!=-1)
	{
		fileext = filename.substring(dotpos+1,filename.length);
		fileext = fileext.toLowerCase();
	}
	else
	{
		fileext = '';
	}
	return(fileext);
}

function validate_periodtime(form) 
{
	var dayfrom, monthfrom, yearfrom;
	var dayto, monthto, yearto;
	var datefrom, dateto;
	var ValidateDate;
	ValidateDate=true;
	dayfrom=parseInt(form.dayfrom.options[form.dayfrom.selectedIndex].value);
	monthfrom=parseInt(form.monthfrom.options[form.monthfrom.selectedIndex].value);
	yearfrom=parseInt(form.yearfrom.options[form.yearfrom.selectedIndex].value);
	dayto=parseInt(form.dayto.options[form.dayto.selectedIndex].value);
	monthto=parseInt(form.monthto.options[form.monthto.selectedIndex].value);
	yearto=parseInt(form.yearto.options[form.yearto.selectedIndex].value);
	switch (monthfrom) {
		case 4:
		case 6:
		case 9:
		case 11:
			if (dayfrom==31) ValidateDate=false;
			break;
		case 2:
			if (dayfrom>28) {
				if (dayfrom==29) {
					if ((yearfrom % 4)!=0) ValidateDate=false;
				}
				else ValidateDate=false;
			}
	}

	if (ValidateDate==false) {
		alert("The date is invalid...");
		form.dayfrom.focus();
		return false; 
	}

	switch (monthto) {
		case 4:
		case 6:
		case 9:
		case 11:
			if (dayto==31) ValidateDate=false;
			break;
		case 2:
			if (dayto>28) {
				if (dayto==29) {
					if ((yearto % 4)!=0) ValidateDate=false;
				}
				else ValidateDate=false;
			}
	}
	
	if (ValidateDate==false){
		alert("The date is invalid...");
		form.dayto.focus();
		return false;
	}
	
	datefrom=monthfrom + '/' + dayfrom + '/' + yearfrom;
	dateto=monthto + '/' + dayto + '/' + yearto;
	
	if (yearfrom < yearto) return true;
	if (yearfrom > yearto) {ValidateDate=false;}
	if (yearfrom == yearto){
		if (monthfrom < monthto) return true;
		if (monthfrom > monthto) {ValidateDate=false;}
		if (monthfrom == monthto){
			if (dayfrom <= dayto) return true;
			if (dayfrom > dayto) {ValidateDate=false; }
		}
	}
		
	if (ValidateDate==false){
		alert('From: ' + datefrom+' > To: '+dateto+' ?? ');
		return false;
	}

}

function showhide(objshowhide, textshowhide)
{
	var g=document.all(objshowhide); 
	var x=document.all(textshowhide); 
		var w=this.offsetWidth;
		if (g.style.display!='none') 
		{
			g.style.display='none';
			x.innerHTML='(show)';
		} 
		else 
		{
			g.style.display='block';
			x.innerHTML='(Hide)';
		}
}
