
/* filename:"share.js"
   function:operation about shopping cart 
     Date           Author      Changes        Comments   
                    panshm      Created              
   Copyright (c) 2000, Cybersoft Corporation 
*/

/*================Method=======================
  *1.var2Obj---------transfer a var to obj
  *2.isGreater---------judge whether the value is greater then the specific value
  *3.isLess----------judge whether the value is less then the specific value
  *4.compareDate------Num1>Num2 return:true;Num1<=Num2 return:false
  *5.isNumeric------judge whether the value is a number
  *6.isPrice-----judge whether the value is like #,###.00
  *7.isNull-----judge whether the value is null
  *8.isSpace----judge whether the value is space
  *9,setSelectionStatus---set the selection status
 *10.isInt----judge whether the value is integer
 *11.isDate----judge whether the value is date
 *12.isDate2---judge whether the value is date
 *13.isSelected----judge whether the selection is selected
 *14.isCharacter----judge whether a char is character
 *16.isNameCharacter-----judge whether the value is valid name
 *17.isEmail-----judge whether the value is valid email
 *18.isZIP----judge whether the value is zip
 *19.isDigitalString-----judge whether the value is digital
 *20.isEmpty-----judge whether the value is empty
 *21.trim-----trim
 *22.isDigital----judge whether the value is digital
 *23.isFload----judge whether the value is float
 *24.isTelephone---judge whether the value is valid tel no
 *25.jTrimStr---remove all space
 *26.transferDate----2000-6-10  to 6/10/2000 
 *27.transferDate2----9-9-2000
 *28.dateTransfer----2/18/2000 ----2000-2-18
 *29,isChecked----check if there is item checked
 *31,isLegalString---
 *=============================================*/

function var2Obj(val)
{
	this.value=val;
}


function isGreater(field,crit,limit)
{
	var Ret = (isNumeric(field,-1) ) ? (field.value > limit )  : false;
	if (!Ret)
		doCritCode(field,crit,"Value must be greater than "+limit);
	return(Ret);
}


function isLess(field,crit,limit)
{
	var Ret = (isNumeric(field,-1) ) ? (field.value < limit )  : false;
	if (!Ret)
		doCritCode(field,crit,"Value must be less than "+limit);
	return(Ret);
}


function isNumeric(field,crit,msg)
{
	var Ret = true;
	var NumStr="0123456789";
	var decUsed=false;
	var chr;
	for (i=0;i<field.value.length;++i)
	{
		chr=field.value.charAt(i);
		if (NumStr.indexOf(chr,0)==-1)
		{
			if ( (!decUsed) && chr==".")
			{
				decUsed=true;
			}
			else
			{
				Ret=false;
			}
		}
	}
	if (!Ret)
		doCritCode(field,crit,msg);
	return(Ret);
} 


function isLegalString(field,crit,msg)
{
	var Ret = true;
	var NumStr="#?+&'<>";
	var decUsed=false;
	var chr;
	for (i=0;i<field.value.length;++i)
	{
		chr=field.value.charAt(i);
		if (NumStr.indexOf(chr,0)!=-1)
		{	
			Ret=false;
			break;
		}
	}
	if (!Ret)
		doCritCode(field,crit,msg);
	return(Ret);
} 


function isPrice(field,crit,msg)
{
	var Ret = true;
	var NumStr="0123456789";
	var decUsed=false;
	var chr;
	for (i=0;i<field.value.length;++i)
	{
		chr=field.value.charAt(i);
		if (NumStr.indexOf(chr,0)==-1)
		{
			if ( (!decUsed) && chr==".")
			{
				decUsed=true;
			}
			else
			{
				Ret=false;
			}
		}
	}
	if(Ret)
	{
		if(decUsed&&(field.value.length-field.value.indexOf('.')<4))
		;
		else if(decUsed)
			Ret=false;
	}
	if (!Ret)
		doCritCode(field,crit,msg);
	return(Ret);
} 


function isNull(field,crit,msg)
{
	Text=""+field.value;
	if(Text.length)
	{
		for(var i=0;i<Text.length;i++)
		if(Text.charAt(i)!=" ")
		break;
		if(i>=Text.length)
		Ret=true;
		Ret=false;
	}
	else
		Ret=true;
	if (Ret)
		doCritCode(field,crit,msg);  
	return(Ret);
}

function isSpace(field)
{
	var Text=""+field.value;
	if(Text.length)
	{
		for(var i=0;i<Text.length;i++)
			if(Text.charAt(i)!=" ")
				break;
		if(i>=Text.length)
			field.value="";
	}
}
 
function doCritCode(field,crit,msg)
{
	if ( (-1!=crit) )
	{
		alert(msg)
		if (crit==1)
		{
			field.focus();  // focus does not work on certain netscape versions
			field.select();
		}
	}
}


function isInt(field,crit,msg){
	var Ret = true;
	var NumStr="0123456789";
	var chr;

	for (i=0;i<field.value.length;++i)
	{
		chr=field.value.charAt(i);
		if (NumStr.indexOf(chr,0)==-1)
		{
			Ret=false;
		}
	}
	if (!Ret)
		doCritCode(field,crit,msg);
	return(Ret);
}


function isDate(field,crit,msg){
	var Ret = false;
	var mark1;
	var mark2;
	var days;
    var y;
	var m;
	var d;
	if(field.value=="")
		return true;
	cd=new Date();

	if ( (mark1 = field.value.indexOf('-'))==-1)
		mark1=field.value.indexOf('-')
	if (mark1>-1)
	{
		if ( (mark2 = field.value.indexOf('-',mark1+1)) ==-1)
			mark2=field.value.indexOf('-',mark1+1);
		if ((mark2>-1)&&(mark2+1<field.value.length) )
		{
			y = parseInt(field.value.substring(0,mark1),10);
			m = parseInt(field.value.substring(mark1+1,mark2),10);
			d = parseInt(field.value.substring(mark2+1,field.value.length),10);

			year = new var2Obj(y);
			month = new var2Obj(m);
			day = new var2Obj(d);
			days = getDaysInMonth(month.value,year.value) + 1
			
			if (
				(isGreater(day,-1,0))&&(isLess(day,-1,days))&&
				(isGreater(month,-1,0))&&(isLess(month,-1,13))&&
				(isGreater(year,-1,1900))&&(isLess(year,-1,2500))
				)
				Ret=true;
		}
	}
	if (!Ret) doCritCode(field,crit,msg);

	return(Ret);
}



function isLeapYear (Year) {
  if (((Year % 4)==0) && ((Year % 100)!=0) || ((Year % 400)==0)) {
    return (true);
  } else { return (false); }
}


function getDaysInMonth(month,year)  {
  var days;
  if (month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month==12)  days=31;
  else if (month==4 || month==6 || month==9 || month==11) days=30;
  else if (month==2)  {
    if (isLeapYear(year)) { days=29; }
    else { days=28; }
  }
  return (days);
}
  

function doCrit(field,crit,msg)
{
	if ( (-1!=crit) )
	{
		alert(msg);
		if (crit==1)
		{
			field.focus();  // focus does not work on certain netscape versions
		}
	}
}


function isSelected(field,crit,msg)
{
	value=""+field.options[field.selectedIndex].value;
	if(value=="0")
		Ret=false;
	else
		Ret=true;
	if (!Ret)
		doCrit(field,crit,msg);  
	return(Ret);
}



function isCharacter( cCharacter )
{
	var sFormat = "_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
	
	if( sFormat.indexOf( cCharacter, 0 ) == -1 )
	{
		return false;
	}
	
	return true;
}


function isEmail( sValue )
{
	var iFirstIndex = 0;
	var iSecondIndex = sValue.indexOf( '@' );
	if( iSecondIndex == -1 )
	{
		return false;
	}

	var sTemp = sValue.substring( iFirstIndex, iSecondIndex );
	if( isNameCharacter( sTemp ) == false )
	{
		return false;
	}
	
	iSecondIndex = sValue.indexOf( '.' );
	if( iSecondIndex == -1 || sValue.substring( sValue.length-1, sValue.length ) == '.' )
	{
		return false;
	}
	else if(  sTemp.length == sValue.length - 2 )	// The last two characters are '@' and '.'
	{
		return false;
	}
	else
	{
		var sTempValue = sValue;
		iSecondIndex = sValue.indexOf( '@' );
		while( iSecondIndex != -1 )
		{
			iFirstIndex = iSecondIndex + 1;
			sTempValue = sTempValue.substring( iFirstIndex, sTempValue.length );	// The right section of value
			iSecondIndex = sTempValue.indexOf( '.' );
			//document.write( "sTempValue=" + sTempValue + "<br>" );
			sTemp = sTempValue.substring( 0, iSecondIndex );
			//document.write( "sTemp=" + sTemp + "<br>" );
			if( isNameCharacter( sTemp ) == false )
			{
				return false;
			}
		}
		
		if( isNameCharacter( sTempValue ) == false )
		{
			return false;
		}
	}
	
	return true;
} 


function isZIP( sValue )
{
	if( sValue == null )
	{
		return false;
	}
	
	if( sValue.length != 6 )
	{
		return false;
	}
	else
	{
		for( i = 0; i < 6; i ++ )
		{
			if( isDigital( sValue.charAt( i ) ) == false )
			{
				return false;
			}
		}
	}
	
	return true;
} 


function isDigitalString( sValue )
{
	if( sValue == null )
	{
		return false;
	}

	for( i = 0; i < sValue.length; i ++ )
	{
		if( isDigital( sValue.charAt( i ) ) == false )
		{
			return false;
		}
	}
}


function isEmpty(his)
{
   flag = true;
   for(var i=0;i<his.length;i++)
   {
      if(his.charAt(i)!=" ")
      { 
         flag = false; 
         break;
      }
   }
   return flag;
}


function trim(his)
{
   Pos_Start = -1;
   for(var i=0;i<his.length;i++)
   {
     if(his.charAt(i)!=" ")
      {
         Pos_Start = i;
         break; 
      }
   }
   Pos_End = -1;
   for(var i=his.length-1;i>=0;i--)
   {
     if(his.charAt(i)!=" ")
      {
         Pos_End = i; 
         break; 
      }
   }
   Str_Return = ""
   if(Pos_Start!=-1 && Pos_End!=-1)
   {   
		for(var i=Pos_Start;i<=Pos_End;i++)
		{
			   Str_Return = Str_Return + his.charAt(i); 
		}
   }
   return Str_Return;
}  


function jTrimStr(str)
{
  var i=0;
  var j;

  var len=str.length;
  trimstr="";
  while(i<len)
  {
    if(str.charAt(i)!=" ")
	  {
	    trimstr=trimstr+str.charAt(i);
	  }
	 i++;
  }
  return(trimstr);
 }


function isDigital(str)   
{
  for(ilen=0;ilen<str.length;ilen++)
  {
    if(str.charAt(ilen) < '0' || str.charAt(ilen) > '9' )
    {
       return false;
    }   
  }
  return true;
}


function isFload(str)   
{
  flag_Dec = 0
  for(ilen=0;ilen<str.length;ilen++)
  {
    if(str.charAt(ilen) == '.')
    {
       flag_Dec++;
	   if(flag_Dec > 1)
          return false;
       else
          continue;
    }         
    if(str.charAt(ilen) < '0' || str.charAt(ilen) > '9' )
    {
       return false;
    }   
  }
  return true;
}


function isTelephone(str)   
{
  for(ilen=0;ilen<str.length;ilen++)
  {
    if(str.charAt(ilen) < '0' || str.charAt(ilen) > '9' )
    {
		if((str.charAt(ilen)!='-')&&(str.charAt(ilen)!='*'))
        return false;
    }   
  }
  return true;
}
  

function transferDate(str)
{
  var m=4;
  var strlen=str.length
  var n=strlen-1;
  while (n>=strlen-2)
  {
   if(str.charAt(n)=="-")
    {
      break;
    }
   n=n-1
  }
  trimstr=str.substring(m+1,n)+"/"+ str.substring(n+1,strlen)+"/"+str.substring(0,m) 
  return(trimstr)
}


function transferDate2(str)
{
  var m=4;
  var strlen=str.length
  var n=strlen-1;
  while (n>=strlen-2)
  {
   if(str.charAt(n)=="-")
    {
      break;
    }
   n=n-1
  }
  trimstr=str.substring(m+1,n)+"-"+ str.substring(n+1,strlen)+"-"+str.substring(0,m) 
  return(trimstr)
}
 

	function dateTransfer(strdate)
	{

		var pos1,pos2,end;
		var para1,para2,para3;
		var newdate;
		end=strdate.length;
		pos1=strdate.indexOf("/",0);
		pos2=strdate.indexOf("/",pos1+1);
		para1=strdate.substring(0,pos1);
		para2=strdate.substring(pos1+1,pos2);
		para3=strdate.substring(pos2+1,end);
		newdate=para3+"-"+para1+"-"+para2;		
		return(newdate);
	}


function getCookieVal(offset)
{
	var endstr=document.cookie.indexOf(";",offset)
	if(endstr==-1)
	{
	 endstr=document.cookie.length
	}
	return unescape(document.cookie.substring(offset,endstr))
}	


function getCookie(name)
{
   var arg=name+"="
   var alen=arg.length
   var clen=document.cookie.length
   var I=0
   while(I<clen)
   {
      var j=I+alen
	  if(document.cookie.substring(I,j)==arg)
	  {
	     return getCookieVal(j)
	  }
	  I=document.cookie.indexOf("",I)+1
	  if(I==0) break
   }
   return null
}


function compareDate(Num1,Num2)
{
		var pos1,pos2,end;
		var para1,para2,para3,para4,para5,para6;

		end=Num1.length;
		pos1=Num1.indexOf("-",0);
		pos2=Num1.indexOf("-",pos1+1);
		para1=Num1.substring(0,pos1);
		para2=Num1.substring(pos1+1,pos2);
		para3=Num1.substring(pos2+1,end);
		para1=parseInt(para1,10);
		para2=parseInt(para2,10);
		para3=parseInt(para3,10);
		end=Num2.length;
		pos1=Num2.indexOf("-",0);
		pos2=Num2.indexOf("-",pos1+1);
		para4=Num2.substring(0,pos1);
		para5=Num2.substring(pos1+1,pos2);
		para6=Num2.substring(pos2+1,end);
		
		para4=parseInt(para4,10);
		para5=parseInt(para5,10);
		para6=parseInt(para6,10);

		if(para1>para4)
		{
			return true;
		}
		else if(para1==para4)
		{
			if(para2>para5)
			{
				return true;
			}
			else if(para2==para5)
			{
				if(para3>para6)
				{
					return true;
				}
			}
		}
		return false;
	
}

function isChecked(theForm, field, msg){
  with(theForm){
    if( field.length == null ){
      if( !field.checked ){
        alert(msg);
        return false;
      }
    }else{
      var len = field.length;
      var i = 0;
      var val = 0;
      for(i = 0; i < len; i++){
        if( field[i].checked )
          val++;
      }

      if( val < 1){
        alert(msg);
        return false;
      }
    }
    return true;
  }
}


function setSelectionStatus(field, val){
  for (var i = 0; i < field.options.length; i++) {
    if (field.options[i].value == val){
      field.selectedIndex = i;
    }
  }
}

function invalidNameCharacter( cCharacter )
{
	var sFormat = "()[]{}<>\/|=+':;,.";
	
	if( sFormat.indexOf( cCharacter, 0 ) == -1 )
	{
		return false;
	}
	
	return true;
}


function isNameCharacter( sValue )
{
	if( sValue == null )
	{
		return false;
	}
	
	for( i = 0; i < sValue.length; i ++ )
	{
		var cCharacter = sValue.charAt( i );
		if( invalidNameCharacter( cCharacter ) == true )
		{
			return false;
		}
	}
	
	return true;
}

function isValidPassword( sValue ){
	for( i = 0; i < sValue.length; i ++ )
	{
		var cCharacter = sValue.charAt( i );
		if( isCharacter( cCharacter ) == false && isDigital( cCharacter ) == false )
		{
			return false;
		}
	}
	
	return true;
}