// 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 showRandImage(base,ext,total,text) {
	num=Math.round(Math.random()*total)+1;
	document.write("<img src=\""+base+num+"."+ext+"\" border=0 alt=\""+text+"\">");
}


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 validateObjDef(obj,msg) {
        val=trim(obj.value);
        obj.value=val;
        if (val=="") {
                alert(msg);
                obj.focus();
                obj.value=obj.defaultValue;
                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 validateEObj2(obj,emsg) {
        str=trim(obj.value);
        if (str.length >0) {
		if ((str.length <7) || (str.indexOf("@")<1) || (str.lastIndexOf(".") < (str.lastIndexOf("@")+1))) {
			alert(emsg);
			obj.focus();
			return false;
		}
	}
        return true;
}

function validateEObjDef(obj,msg,emsg) {
        str=trim(obj.value);
        if (! validateObjDef(obj,msg)) return false;
        if ((str.length <7) || (str.indexOf("@")<1) || (str.lastIndexOf(".") < (str.lastIndexOf("@")+1))) {
                alert(emsg);
                obj.value=obj.defaultValue;
                obj.focus();
                return false;
        }
        return true;
}

function validateUrlObj(obj,msg,urlmsg) { // does not accept empty URL field
        str=trim(obj.value);
        if (! validateObjDef(obj,msg)) return false;
        return validateUrlObj2(obj,urlmsg);
} 

function validateUrlObj2(obj,urlmsg) {  // accepts empty URL field
        str=trim(obj.value);
	if (str.length > 0) {
		var regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;
    		if (! regexp.test(str)) {
			alert(urlmsg);
			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 objLengthDef(obj,l,msg) {
        str=trim(obj.value);
        if (str.length <l) {
                alert(msg);
                obj.value=obj.defaultValue;
                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 objMatchDef(obj1,obj2,msg) {
        if (obj1.value !=obj2.value) {
                alert(msg);
                obj1.value=obj1.defaultValue;
                obj1.focus();
                return false;
        }
        return true;
}

function validateRadioObj(obj,val,msg1,msg2) {
        myOption = -1;
        for (i=0; i<obj.length; i++) {
                if (obj[i].checked) {
                        myOption = i;
                }
        }
        if (myOption == -1) {
                alert(msg1);
                return false;
        }

        if (obj[myOption].value ==val) {
                return true;

        }
        else {
                alert(msg2);
                return false;
        }
}

function validateAbsInt(obj) {
    if (parseInt(obj.value)) {
        obj.value=Math.abs(parseInt(obj.value));
    }
    else {
    	if (parseInt(obj.defaultValue)) {
		obj.value=Math.abs(parseInt(obj.defaultValue));
	}
        else obj.value=0;
    }
}



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 validateAdminLogin(thisForm) {
	if (! validateEObj(thisForm.cLogin,"Please enter email! ","Email does not appear to be valid! ")) 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 validateAdminEmail(thisForm) {
        if (! validateEObj(thisForm.cLogin,"Please enter email! ","Email does not appear 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 toInt(obj) {
    if (parseInt(obj.value)) {
        obj.value=parseInt(obj.value);
    }
    else {
        obj.value=0;
    }

}

function toNum(obj) {
    if (parseFloat(obj.value)) {
       obj.value = parseFloat(obj.value);
    }
    else {
      obj.value=0.00;
   }
}

function toDollars(obj) {
    // There is the neat toFixed(2) function in javascript 1.5
    // but it won't work for olther browsers...

    temp2 = 0;
    if (parseFloat(obj.value)) {
        temp1 = parseFloat(obj.value);
        temp2 =  rndUp(temp1);
    }
    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;
            }
    }
    obj.value=temp4;
}






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);
	}
}

function showDiv(div_id) {
    // show the requested div
    // document.getElementById(div_id).style.display = '';

     var myWindow;

     if (is_getElementById()) {
        // DOM3 = IE5, NS6
     	myWindow = document.getElementById(div_id);
     	if (document.getElementById(div_id).style.display) {
     		myWindow.style.display = ''
     	}
     	else {
     	    myWindow.style.visibility = 'visible';
     	}
     }
     else {
     	myWindow = document.div_id;
        if (is_nav4 () || is_safari ()){
            // Netscape 4
     	    myWindow.visibility = 'visible';
        }
        else {
            // IE 4
     		myWindow.style.visibility = 'visible';
        }
     }
}

function hideDiv(div_id) {
    // show the requested div
    // document.getElementById(div_id).style.display = 'none';
    var myWindow;

     if (is_getElementById()) {
        // DOM3 = IE5, NS6
     	myWindow = document.getElementById(div_id);
     	if (document.getElementById(div_id).style.display) {
     	    myWindow.style.display = 'none'
     	}
     	else {
     		myWindow.style.visibility = 'hidden';
     	}
     }
     else {
     	myWindow = document.div_id;
        if (is_nav4 ()  || is_safari ()){
            // Netscape 4
     	    myWindow.visibility = 'hidden';
        }
        else {
            // IE 4
     		myWindow.style.visibility = 'hidden';
        }
     }
}










