// Javascript Utilities Functions
// Poly Songfack <poly@polystreet.com>

function showDate() {
        var d=new Date();
        var weekday=new Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday");
        var monthname=new Array("January","February","March","April","May","June","July","August","September","October","November","December");
        document.write(weekday[d.getDay()] + ", ");
        document.write(monthname[d.getMonth()] + " ");
        document.write(d.getDate() + ", ");
        document.write(d.getFullYear());
}


function trim(str) {
        if (str=="") return str;
        else {
                while (str.charAt(0) ==" ") str=str.substring(1,str.length);
                if (str=="") return str;
                while (str.charAt(str.length) ==" ") str=str.substring(0,(str.length-1));
                return str;
        }
}

function validateObj(obj,msg) {
        val=trim(obj.value);
        obj.value=val;
        if (val=="") {
                alert(msg);
                obj.focus();
                return false;
        }
        return true;
}

function validateEObj(obj,msg,emsg) {
        str=trim(obj.value);
        if (! validateObj(obj,msg)) return false;
        if ((str.length <7) || (str.indexOf("@")<1) || (str.lastIndexOf(".") < (str.lastIndexOf("@")+1))) {
                alert(emsg);
                obj.focus();
                return false;
        }
        return true;
}

function objLength(obj,l,msg) {
        str=trim(obj.value);
        if (str.length <l) {
                alert(msg);
                obj.focus();
                return false;
        }
        return true;
}

function objMatch(obj1,obj2,msg) {
        if (obj1.value !=obj2.value) {
                alert(msg);
                obj1.focus();
                return false;
        }
        return true;
}

function alphaNum(obj,msg) {
        validCh="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890_";
        str=obj.value;
        badOne=0;
        i=0;
        while (i<str.length && (badOne==0)) {
                ch=str.charAt(i);
                if (validCh.indexOf(ch)==-1) {
	     badOne=1;
                }
                i++;
        }

        if ( badOne==1) {
                alert(msg);
                obj.focus();
                return false;
        }
        return true;
}

function validateAll(thisForm) {
        if (! validateObj(thisForm.sName,"No Sender Name! ")) return false;
        if (! validateEObj(thisForm.sEmail,"No sender Email! ","Sender Email does not appear valid! ")) return false;
        if (! validateObj(thisForm.rName,"No Recipient Name! ")) return false;
        if (! validateEObj(thisForm.rEmail,"No Recipient Email! ","Recipient Email does not appear valid! ")) return false;
        if (! validateObj(thisForm.eSubject,"No Email Subject! ")) return false;
        if (! validateObj(thisForm.eText,"No Email Text! ")) return false;
        return true;
}

function validateSender(thisForm) {
        if (! validateObj(thisForm.sName,"No Sender Name! ")) return false;
        if (! validateEObj(thisForm.sEmail,"No sender Email! ","Sender Email does not appear valid! ")) return false;
        if (! validateObj(thisForm.eSubject,"No Email Subject! ")) return false;
        if (! validateObj(thisForm.eText,"No Email Text! ")) return false;
        return true;
}

function validateReg(thisForm) {
        if (! validateObj(thisForm.cLogin,"Please enter User Name! ")) return false;
        if (! objLength(thisForm.cLogin,3,"User Name should be at least 3 characters! ")) return false;
        if (! alphaNum(thisForm.cLogin,"User Name can only be alpha-numeric characters! ")) return false;
        if (! validateObj(thisForm.cPass,"Please enter password! ")) return false;
        if (! objLength(thisForm.cPass,3,"Password should be at least 3 characters! ")) return false;
        if (! objMatch(thisForm.cPass,thisForm.cPass2,"Does not match password")) return false;
        if (! validateEObj(thisForm.cEmail,"Please enter email! ","Email does not appear valid! ")) return false;
        if (! validateObj(thisForm.cZip,"Please enter Zip or Postal Code!")) return false;
        if (! validateObj(thisForm.cQuestion,"Please provide secret question! ")) return false;
        if (! validateObj(thisForm.cAnswer,"Please provide secret answer! ")) return false;
        return true;
}

function validateLogin(thisForm) {
        if (! validateObj(thisForm.cLogin,"Please enter User Name! ")) return false;
        if (! objLength(thisForm.cLogin,3,"No such customer in our system! ")) return false;
        if (! alphaNum(thisForm.cLogin,"No such customer in our system! ")) return false;
        if (! validateObj(thisForm.cPass,"Please enter password! ")) return false;
        if (! objLength(thisForm.cPass,3,"This password is not valid! ")) return false;
        return true;
}

function validateRegEmail(thisForm) {
        if (! validateEObj(thisForm.cEmail,"Please enter email! ","Email does not appear valid! ")) return false;
        return true;
}

function rndUp(number) {
        return Math.ceil(number*Math.pow(10,2))/Math.pow(10,2);
}

function doProduct(aux1,aux2,price,cs) {
        temp1=aux1.value;
        temp2=rndUp(temp1*price);
        temp3=(temp2-Math.ceil(temp2))*100;
        temp3=Math.abs(temp3);
        if (temp3 < 0.99) {
                temp4=temp2+".00";
        }
        else {
                temp5=(Math.abs(temp2*10 - Math.ceil(temp2*10)))*10;
                if (temp5 < 0.99) {
                        temp4=temp2+"0";
                }
                else{
                        temp4=temp2;
                }
        }
        aux2.value=cs+temp4;
}

function doTotal(aux1,price,cs,tot) {
        temp1=aux1.value;
	  temp100=aux1.defaultValue;
	  temp200=(tot.value);
	  temp300=parseFloat(temp200.substring(1));
        temp2=rndUp(temp300+(temp1-temp100)*price);
        temp3=(temp2-Math.ceil(temp2))*100;
        temp3=Math.abs(temp3);
        if (temp3 < 0.99) {
                temp4=temp2+".00";
        }
        else {
                temp5=(Math.abs(temp2*10 - Math.ceil(temp2*10)))*10;
                if (temp5 < 0.99) {
                        temp4=temp2+"0";
                }
                else{
                        temp4=temp2;
                }
        }
        tot.value=cs+temp4;
	  aux1.defaultValue=aux1.value;
}



function isEmpty(s) {
        return ((s == null) || (s.length == 0))
}

function isDigit (c){
        return ((c >= "0") && (c <= "9"))
}

function isInteger (s) {
        var i;
        var defaultEmptyOK=true;

        if (isEmpty(s))
        if (isInteger.arguments.length == 1) return defaultEmptyOK;
      else return (isInteger.arguments[1] == true);

      // Search through string's characters one by one
      // until we find a non-numeric character.
      // When we do, return false; if we don't, return true.

        for (i = 0; i < s.length; i++) {
                // Check that current character is number.
            var c = s.charAt(i);
                if (!isDigit(c)) return false;
        }

        // All characters are numbers.
        return true;
}


function nocheck(aux,x2,x3,cs) {
      temp=aux.value;
      message1="Quantity must be between a positive number. Please check your input.";
      if ((isInteger(temp)) && (temp >= 0)) {
            doProduct(aux,x2,x3,cs);
            return;
      }
      else {
                alert(message1);
                aux.value=aux.defaultValue;
                aux.select();
                return;
        }
}

function check(cx,aux,x2,x3,cs,vd) {
	cx.value=1;
      temp=aux.value;
      message1="Quantity must be between a positive number. Please check your input.";
      if ((isInteger(temp)) && (temp >= 0)) {
        	doProduct(aux,x2,x3,cs);
		doTotal(aux,x3,cs,vd);
            return;
      }
      else {
                alert(message1);
                aux.value=aux.defaultValue;
                aux.select();
                return;
        }
}


function pdrop(cx,qx,dx,px,x2,x3,cs,vd,pv) {
	cx.value=1;
	if (dx.value==dx.defaultValue) {
		dx.value=px;
		qx.value=0;
		doProduct(qx,x2,x3,cs);
		doTotal(qx,x3,cs,vd);
	}
	else {
		dx.value=dx.defaultValue;
		qx.value=pv;
		doProduct(qx,x2,x3,cs);
		doTotal(qx,x3,cs,vd);
	}
}









