var whitespace = " \t\n\r";
var decimalPointDelimiter = ".";
var defalulEmptyOK = false;


String.prototype.trim = function() {
    return this.replace(/(^ *)|( *$)/g, "");
}
String.prototype.ltrim = function() {
    return this.replace(/(^ *)/g, "");
}
String.prototype.rtrim = function() {
    return this.replace(/( *$)/g, "");
}

function cm_CheckEmail(control) {
    if ( control == null || (control.search(/(\S+)@(\S+)\.(\S+)/) == -1 )  ) 
        return false;
    else
        return true;
}

function cm_IsLetters( str ) {
    for( var i=0; i < str.length; i++) {
        var c=str.charAt(i);
        if(!(((c>='a') && (c<='z')) || ((c>='A') && (c<='Z'))) )
            return false;
    }
    return true;
}

function cm_IsNumerics(str) {
    for( var i=0; i < str.length; i++) {
        var c= str.charAt(i);
        if(!((c>='0') && (c<='9')) )
            return false;
    }
    return true;
}


function cm_IsPhone(str) {
    for( var i=0; i < str.length; i++) {
        var c= str.charAt(i);
        if(!( ((c>='0') && (c<='9')) || ( c == '-')  ) )
            return false;
    }
    return true;
}


function is_Empty(s) {
        return ((s == null) || (s.length == 0))
}

function is_null(control, displayname)
{
        if (control.value == "")
        {
                alert(" \""+displayname+"\" ?? ?? ???.");
                control.focus();
                return (true);
        }

        return (false);
}

                
        

function is_Hangul(str) {
        var retCode = 0;
        
        for (var i=0; str.length; i++) {
                var code = str.charCodeAt(i);
                var ch = str.substr(i,1).toUpperCase();

                code = parseInt(code);

                if(( ch<"0" || ch>"9" ) && ( ch<"A" || ch>"Z") && ((code>255) || (code<0))) {
                        return true;
                }
        }
        return false;
}

function is_Whitespace(s) {
        var i;
        if(isEmpty(s)) return true;
        
        for(i=0;i<s.length; i++) {
                var c=s.charAt(i);
                if(whitespace.indexOf(c) == -1) return ture;
        }
        return false;
}



function is_Integer(s) {
        var i;
        
        if(is_Empty(s))
                if(is_Integer.arguments.length == 1) return defaultEmpthOK;
                else return (is_Integer.arguments[1] == true);

        for(i=0;i<s.length; i++) {
                var c = s.charAt(i);
                
                if(!is_Digit(c)) return false;
        }
        return true;
}

function is_SignedInteger(s) {
        if(is_Empty(s))
                if(is_SignedInteger.argument.length == 1) return defaultEmptyOK;
                else return (is_SignedInteger.arguments[1] == true);

        else {
                var startPos = 0;
                var secondArg = defaultEmptyOK;
                
                if(is_SignedInteger.arguments.length >1)
                        secondArg = is_SignedInteger.arguments[1];

                if((s.charAt(0) == '-') || (s.charAt(0) == '+')) 
                        startPos = 1;
                return (is_Integer(s.substring(startPos,s.length),secondArg))
        }
}

function is_Alphabetic(s) {
        var i;
                
        if(is_Empty(s))
                if(is_Alphabetic.arguments.length ==1) return defaultEmptyOK;
                else return (is_Alphabetic.arguments[1] == true);

        for(i=0;i<s.length; i++) {
                var c=s.charAt(i);
                
                if(!is_Letter(c))
                return false;
        }
        return true;
}


function is_Alphanumeric(s) {
        var i;
        
        if(is_Empty(s)) 
                if(is_Alphanumeric.arguments.length == 1) return defaultEmptyOK;
                else return (isAlphanumeric.arguments[1] == true);
        
        for(i=0;i<s.length; i++) {
                var c = s.charAt(i);
                
                if(!(is_Letter(c) || is_Digit(c)) )
                return false;
        }
        return true;
}

function is_valid(control, displayname, okstring)
{
        if (is_null(control, displayname))
                return false;

        var checkStr = control.value;
        var allValid = true;
        for (i = 0;  i < checkStr.length;  i++)
        {
                ch = checkStr.charAt(i);
                for (j = 0;  j < okstring.length;  j++)
                        if (ch == okstring.charAt(j))
                                break;

                if (j == okstring.length)
                {
                        allValid = false;
                        break;
                }
        }

        if (!allValid)
        {
                alert("\""+displayname+"\" ? ??? ??? ??????.");
                control.focus();
                return (false);
        }

        return (true);
}
function is_valid_length(control, displayname, minlength)
{
        if (control.value.length < minlength)
        {
                alert("Please enter at least "+minlength+" characters in the \""+displayname+"\" field.");
                control.focus();
                return (false);
        }
        return (true);
}

function is_valid_index(control, displayname, invalidindex)
{
        if (control.selectedIndex == invalidindex)
        {
                alert("The first \""+displayname+"\" option is not a valid selection.  Please choose one of the other options.");
                control.focus();
                return (false);
        }

        return (true);
}

function change_area(obj_area, dir)
{
        var h = 4;
        var r;
        r = obj_area.rows;
        c = obj_area.cols;

        if ( dir == "up" && obj_area.rows > 0 )
                r -= h;

        if ( dir == "down" )
                r += h;

        if ( dir == "right" )
                c += h;

        if ( dir == "left" && obj_area.cols > 0 )
                c -= h;

        if ( r > 0 )
                obj_area.rows = r;
        if ( c > 0 )
                obj_area.cols = c;

        obj_area.focus();
        //alert(obj_area + " " + dir + " " + obj_area.rows + ", " + obj_area.cols);

}

function showHideLayer(name, show) {
        if(name == '') {
                return;
        }
        
        if(navigator.appName == "Netscape") {
                if(show == 1) {
                        document.layers[name].visibility = 'show';
                } else {
                        document.layers[name].visibility = 'hide';
                }
        } else {
                if(show == 1) {
                        document.all[name].style.visibility = 'visible';
                } else {
                        document.all[name].style.visibility = 'hidden';
                }
        }
}

function setCookie(name, value) {
        var argc = setCookie.arguments.length;
        var argv = setCookie.arguments;
        var expires = (argc>2) ? argv[2]:null;
        var path = (argc>3) ? argv[3]:null;
        var domain = (argc>4) ? argv[4]:null;
        var secure = (argc>5) ? argv[5]:false;
        
        document.cookie = name + "=" + value + ((expires==null) ? "":(";expires=" + expires.toGMTString())) + ((path==null) ? "":(";path=" +path)) + ((domain==null) ? "":(";domain=" + domain)) + ((secure==true) ? ";secure":"");
}

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 getCookieVal(offset) {
        var endstr = document.cookie.indexOf(";", offset);
        if(endstr == -1) endstr = document.cookie.length;
        var result = document.cookie.substring(offset, endstr);
        return result;
}

function delCookie(name) {
        var today = new Date();
        today.setTime(today.getTime() -1);
        var value = getCookie(name);
        if(value != "") 
                document.cookie = name + "=" + value + ";expires=" + today.toGMTString();
}

function slt_radio(control, displayname) {
        var slt = false;
        for(var i=0; i<control.length; i++) {
                if(control[i].checked == true) {
                        slt = true;
                }
        }
        if(slt == false)
                alert (displayname + "?(?) ?????");
        return slt;
}

function checkLogin(formName)
{
	if(formName.email.value=="")
	{
		alert("Check your email address");
		formName.email.focus();
		return false;
		
	}
	if(formName.pass.value=="")
	{
		alert("Check your Password");
		formName.pass.focus();
		return false;
		
	}
		return true;
}

function validateForm(formName) 
{
	var name="";
	var reg=/(1|1-)?([0-9]{3})-?([0-9]{3})-?([0-9]{4})$/;
	
	var reg2=/^([0-9]){2}(\/|-){1}([0-9]){2}(\/|-)([0-9]){4}$/;
	
	for(i=0; i<formName.elements.length; i++)
	{
		name=formName.elements[i].name;
		
		if(name=="userId" && (formName.elements[i].value=="" || formName.elements[i].value.search(/^[A-Za-z0-9]+$/) == -1))
		{
		    alert('UserId is empty or have prohibited characters');
	        formName.elements[i].focus();
	        return false ;
	    }
	    
		if(name=="password" && (formName.elements[i].value==""))
		{
		    alert('Password is empty');
	        formName.elements[i].focus();
	        return false ;
	    }
	    
	    if(name=="password" && formName.elements[i].value.search(/^[A-Za-z0-9]+$/) == -1) 
	    {
			alert('Your Password have incorect charactrers!');
			formName.elements[i].focus();
	        return false;
	    }
		
		if(name=="rPassword" && formName.elements[i].value!=formName.password.value) //password input must be defined
		{
		    alert('Password does not match');
	        formName.elements[i].focus();
	        return false ;
	    }
	    
	   if ( name=="fName" && (formName.elements[i].value.length == 0 ||  formName.elements[i].value.trim() == "" )) {
	        alert('First name is empty');
	        formName.elements[i].focus();
	        return false ;
	       
	    }  
	    
	    if(name=="fName" && formName.elements[i].value.search(/^[A-Za-z \s]+$/)== -1) {
			alert('First Name must have letters!');
			formName.elements[i].focus();
	        return false;
	    }
		
		if((name=="cardHolder" || name=="shipname") && formName.elements[i].value.search(/^[A-Za-z \s]+$/)== -1) {
			alert('Name must have letters!');
			formName.elements[i].focus();
	        return false;
	    }
	    
		if((name=="cardHolder" || name=="shipname") && (formName.elements[i].value.length == 0 ||  formName.elements[i].value.trim() == "" )) {
			alert('Name must have letters!');
			formName.elements[i].focus();
	        return false;
	    }
	    
	    
	   if ( name=="lName" && (formName.elements[i].value.length == 0 ||  formName.elements[i].value.trim() == "" ) )
	   {
	        alert('Last name is empty');
	        formName.elements[i].focus();
	        return false ;
	       
	    }  
	    
	    if(name=="lName" && formName.elements[i].value.search(/^[A-Za-z \s]+$/)== -1) {
			alert('Last Name must have letters!');
			formName.elements[i].focus();
	        return false;
	    }
	    
	    // A divided phone xxx-xxx-xxxx
	    if( name=="phone_1" && (formName.elements[i].value.length < 3 || !cm_IsNumerics(formName.elements[i].value) ) )
	    {
	        alert('Check Phone digits!');
	        formName.elements[i].focus();
	        return false;
	    }
	    
	    if( name=="phone_2" && (formName.elements[i].value.length < 3 || !cm_IsNumerics(formName.elements[i].value) ) )
	    {
	        alert('check phone digits!');
	        formName.elements[i].focus();
	        return false;
	    }
	
	    if( name=="phone_3" && (formName.elements[i].value.length < 4 || !cm_IsNumerics(formName.elements[i].value) ) ){
	        alert('check phone digits!');
	        formName.elements[i].focus();
	        return false;
	    }
		
			
	    if( (name=="shipphone" || name=="phone" )&& !( formName.elements[i].value.match(reg)))
	    {
	        alert('Check phone digits!');
	        formName.elements[i].focus();
	        return false;
	    }
	    
	    if( (name=="dob" )&& (formName.elements[i].value != '') && !( formName.elements[i].value.match(reg2)))
	    {
	        alert('Check Date of Birth !');
	        formName.elements[i].focus();
	        return false;
	    }

	    var emailFilter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	    
	    if(name=="email" && emailFilter.test(formName.elements[i].value) == false )
	    {
		    alert('Email is invalid');
	        formName.elements[i].focus();
	        return false ;
	    }
	    
	    if(name=="rEmail" && formName.elements[i].value!=formName.email.value) //email must exist
	    {
		    alert('Email does not match');
	        formName.elements[i].focus();
	        return false ;
	    }
	    
	    
	    if ( (name=="address1" ||name=="shipaddress1" )&& (formName.elements[i].value.length == 0 ||  formName.elements[i].value.trim() == "" ))
	    {
	        alert('Please enter Address to proceed!');
	        formName.elements[i].focus();
	        return false ;
	    }   
	  
		if((name=="address1" || name=="shipaddress1") && formName.elements[i].value.search(/[^'"]+$/) == -1) 
		{
			alert('Address have incorect charactrers!');
			formName.elements[i].focus();
	        return false;
	    }
	    if ( (name=="address2"  || name=="shipaddress2")&& formName.elements[i].value.length != 0 && (formName.elements[i].value.search(/[^'"]+$/) == -1 ))
		{
	        alert('Address have incorect charactrers!');
	        formName.elements[i].focus();
	        return false ;
	    }      
	  
	    if ( (name=="city" || name=="shipcity")&& (formName.elements[i].value.length == 0 ||  formName.elements[i].value.trim() == "" ) ){
	        alert('Please enter City to proceed!');
	        formName.elements[i].focus();
	        return false ;
	    }
	    
	    if((name=="city" || name=="shipcity")&&formName.elements[i].value.search(/^[A-Za-z \s]+$/) == -1) 
	    {
			alert('City Name must be letters!');
			formName.elements[i].focus();
	        return false;
	    }
	       
	    
	    if ( (name=="state" ||name=="shipstate" )&& formName.elements[i].value == "" ) {
	        alert('Please select State to proceed!');
	        formName.elements[i].focus();
	        return false ;
	    }   
	    
	    if ( (name=="zip" ||name=="shipzip") && formName.elements[i].value.trim() == "" ) {
	        alert('Please enter Zip Code to proceed!');
	        formName.elements[i].focus();
	        return false ;
	    }  
	    
	    if( (name=="zip" || name=="shipzip") && (formName.elements[i].value.length != 5 || !cm_IsNumerics(formName.elements[i].value) ) )
	    {
	        alert('Zip code should be 5 digit numbers!');
	        formName.elements[i].focus();
	        return false;
	    }
      
	    if(name=="termAgree" && formName.elements[i].checked && (formName.elements[i].value!="y"))
		{
			alert("You must read and agree with our Terms & Conditions before being able to proceed");
			return false;
		}
		
		if(name=="chk_termAgree" && !formName.elements[i].checked )
		{
			alert("You must read and agree with our Terms & Conditions before being able to proceed");
			return false;
		}

		//*****************************Login**************************************
		
		if(name=='logEmail'&& formName.elements[i].value=="")
		{
			alert("You must enter your email before procced");
			return false;
		}
		
		if(name=='logPass'&& formName.elements[i].value=="")
		{
			alert("You must enter your Password before procced");
			return false;
		}
		
		if(name=='toCity'&& formName.elements[i].value=="")
		{
			alert("You must select a City before procced");
			return false;
		}
		//*************************************************************************
		
	}
    return true;

}

