        function MM_checkBrowser(NSvers,NSpass,NSnoPass,IEvers,IEpass,IEnoPass,OBpass,URL,altURL) { //v4.0
           var newURL='', verStr=navigator.appVersion, app=navigator.appName, version = parseFloat(verStr);
           if (app.indexOf('Netscape') != -1) {
              if (version >= NSvers) {if (NSpass>0) newURL=(NSpass==1)?URL:altURL;}
              else {if (NSnoPass>0) newURL=(NSnoPass==1)?URL:altURL;}
           } else if (app.indexOf('Microsoft') != -1) {
              if (version >= IEvers || verStr.indexOf(IEvers) != -1)
                {if (IEpass>0) newURL=(IEpass==1)?URL:altURL;}
              else {if (IEnoPass>0) newURL=(IEnoPass==1)?URL:altURL;}
           } else if (OBpass>0) newURL=(OBpass==1)?URL:altURL;
           if (newURL) { window.location=unescape(newURL); document.MM_returnValue=false; }
        }

        function getBrowserName() {
           var b=navigator.userAgent.toUpperCase();
           if (b.indexOf("MSIE") >= 0)
              return "MSIE"
           if (b.indexOf("NETSCAPE") >= 0)
              return "NETSCAPE"
           if (b.indexOf("MOZILLA") >= 0)
              return "MOZILLA"
           return "unknown";   
        }
           
        function getBrowserVersion(b) {
           var ua=navigator.userAgent.toUpperCase();
           var v, ia, ib;
           if (b=="MSIE") {
              ia = ua.indexOf("MSIE") + 4;
              v = parseFloat(ua.substring(ia,ua.length));
              return v;
           }
           if (b=="NETSCAPE") {
              ia = ua.indexOf("NETSCAPE/") + 9;
              v = parseFloat(ua.substring(ia,ua.length));
              return v
           }
           if (b=="MOZILLA") {
              ia = ua.indexOf("RV:") + 3;
              v = parseFloat(ua.substring(ia,ua.length));
              return v;
           }
           return "unknown";
        }

        function isNumber(num) {
           var digits = "0123456789.,";
           for (var i=0; i<num.length; i++)
              if (digits.indexOf(num.charAt(i)) < 0) {
              	 return (false);
              }
           return (true);
        }

        function isEmail(field) {
           var i;
           var symbolFound;
           var atPosition  = 0;
           var atCounter   = 0;
           var dotPosition = 0;
           var trueFalse   = 0;
           if (field.value.length > 0) {
              for (i=0; i<field.value.length; ++i) {
                 if (field.value.charAt(i) == " ") {
                    trueFalse = 1;
                 }
              }

              for (i=0; i<field.value.length; ++i) {
                 if (field.value.charAt(i) == "@") {
                    atPosition = i;
                    ++atCounter;
                 }
              }

              for (i=atPosition; i<field.value.length; ++i) {
                 if (field.value.charAt(i) == ".") {
                    if (atPosition + 1 == i)
                       trueFalse = 1;
                    if (i == field.value.length - 1) 
                       trueFalse = 1;
                    dotPosition = i;
                 }
              }
                 
              if (   (trueFalse == 0)
                  && (atPosition > 0)
                  && (atCounter == 1)
                  && (dotPosition > atPosition) ) {
                 return (true)
              } 
              else {
                 return (false);
              }
           }
           return (true);
        }        
        
        function isNull(field) {
           if (field.value.length == 0) {
              return (true); 
           }
           else {
              return (false);
           }
        }
        
        function isDate(field) {
           var daysArr  = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
           var slashPos = field.value.indexOf("/");
           
           // check for at least one slash
           if (slashPos == -1) {
              return (false);
           }
           
           // split field value and get day, month and year in an array
           // array must have three elements. day, month and year.
           var arr = field.value.split("/");
           if (arr.length != 3) {
              return (false);
           }

           // check if day, month and year are numbers
           if ((!isNumber(arr[0]))||(!isNumber(arr[1]))||(!isNumber(arr[2]))) {
              return (false);
           }

           // erase leadind zeroes becase parseInt gets confused
           while (arr[2].charAt(0) == "0")   
              arr[2] = arr[2].substring(1, arr[2].length);
                    
           var year = parseInt(arr[2]); 
           if (year >= 50 && year < 100) {
              year = year + 1900;
           }
           else if (year >= 0 && year < 50) { 
           	   year = year + 2000;
                }
           arr[2] = year;           
                 
           // for the leap years      
           if (year % 4 == 0) {
              daysArr[1] = 29;
           }

           // check if last character is slash
           if (field.value.charAt(field.value.length - 1) == "/") {
              return (false);
           }

           // check if month is between 1 and 12 
           var month = arr[1];
           if ((month < 1)||(month > 12)) {
              return (false);
           } 	
                 
           // check if day is between 1 and days of month
           var day = arr[0];
           if ((day < 1)||(day > daysArr[month - 1])) {
              return (false);
           }
           return (true);
        }
        
        function replaceString(oldS,newS,fullS) {
         // Replaces oldS with newS in the string fullS, returns string   
           var i = fullS.indexOf(oldS,fullS);
           if (i >= 0) fullS = fullS.substring(0,i) + newS + fullS.substring(i + oldS.length, fullS.length);
           return fullS;
        }

        function replaceStringAll(oldS,newS,fullS) {
           // Replaces oldS with newS in the string fullS, returns string   
           var i = fullS.indexOf(oldS,fullS);
           while (i >= 0) {
              fullS = fullS.substring(0,i) + newS + fullS.substring(i + oldS.length, fullS.length);
              i = fullS.indexOf(oldS,fullS);
           }   
           return fullS;
        }
	
	function replaceParam(u, p, v) {
	   // Replaces value of p with v in url and returns a new url 
	   var pPos = u.indexOf(p);
	   var nUrl = ""; 
	   
           if (pPos == -1)
              nUrl = u + p + v;
           else {
              var nextParam = u.indexOf("&", pPos + 1);
              if (nextParam == -1)
              	 nUrl = u.substring(0, pPos) + p + v;
              else
              	 nUrl = u.substring(0, pPos) + u.substring(nextParam) + p + v; 
              	 
              if (p.indexOf("?") == 0) {
              	 nUrl = replaceString("?","&",nUrl); 
              	 nUrl = replaceString("&","?",nUrl); 
              }
           }
	   return (nUrl);
        }
        