/*
All Code Copyright 2002 Matthew Knight for Rimland Allen
All Rights Reserved
*/

d = document;
l = (d.layers)?1:0; 
op = navigator.userAgent.toLowerCase().indexOf('opera')!=-1; // Opera ?

function switchImg(n,s) {
	if ( l && (document.layers.length>0) ) {
		for (i=0; i<d.layers.length; i++) {			
			if (d.layers[i].document.images[n]) {			
				d.layers[i].document.images[n].src = s;
			}
		}	
	} else {
		d.images[n].src = s;
	}
}

function createImage(loc) {
     if (d.images) {
          rslt = new Image();
          rslt.src = loc;
          return rslt;
     }
}

win = false;
function pop(url,w,h) {
if ( (win) && (!win.closed) ) {
win.location = url;
win.focus();
} else {
win = window.open((url), 'popupwin', 'top=10,left=10,width='+w+',height='+h+',resizable=yes,toolbar=no,status=yes,scrollbars=yes');
win.focus();
}
}

function isEmpty(s) {
return ((s == null) || (s.length == 0));
}

function isDigit(c) {
return ((c >= "0") && (c <= "9"))
}

var whitespace = " \t\n\r";
function isWhitespace(s) {
    if (isEmpty(s)) return true;
    for (var i = 0; i < s.length; i++) {   
        var c = s.charAt(i);
        if (whitespace.indexOf(c) == -1) return false;
    }
    return true;
}

var digitsInZipCode = 5;
function isZip(s) {
	return ( isInteger(s) && (s.length == digitsInZipCode) );
}

var digitsInPhone = 10;
function isPhone(s) {
	return ( isInteger(s) && (s.length == digitsInPhone) );
}

function isInteger(s) {
	var isInt = true;
    if (!isEmpty(s)) { 
    	for (var i = 0; i < s.length; i++) {   
        // Check that current character is number.
        var c = s.charAt(i);
        	if (!isDigit(c)) {
				isInt = false;
				break;
			}
		}
    } else {
		isInt = false;
	}
    return isInt;
}

function isMoney(s) {
	var isMoney = true;
	var founddot = 0;
    if (!isEmpty(s)) { 
    	for (var i = 0; i < s.length; i++) {   
        // Check that current character is number, or a dot, where only one dot can be found.
        var c = s.charAt(i);
			if (c == ".") {
				founddot++;
			} else if (!isDigit(c)) {
				isMoney = false;
				break;
			}
		}
    } else {
		isMoney = false;
	}
    return (founddot > 1 ? false : isMoney);
}

function isDate(m,d,y) {
	//Note: javascript months are 0-based; e.g. Jan = 0, Dec = 11
	m++; m--; //easy way to strip 0's
	var dateObj = new Date(y,m,d,0,0,0);
	var dateMonth = dateObj.getMonth();
	return (dateMonth==m);
}

function isEmail (s) {
    if (isEmpty(s)) return false;   
    if (isWhitespace(s)) return false;
    
    var i = 1;
    var sLength = s.length;

    while ((i < sLength) && (s.charAt(i) != "@")) {
		i++;
    }

    if ((i >= sLength) || (s.charAt(i) != "@")) return false;
    else i += 2;

    while ((i < sLength) && (s.charAt(i) != ".")) {
		i++;
    }

    if ((i >= sLength - 1) || (s.charAt(i) != ".")) return false;
    else return true;
}

function gE(e,f){if(l){f=(f)?f:self;V=f.document.layers;if(V[e])return V[e];for(W=0;W<V.length;)return(gE(e,V[W++]));}if(d.all)return d.all[e];return d.getElementById(e);}
function sE(e){if(l)e.visibility='show';else e.style.visibility='visible';}
function hE(e){if(l)e.visibility='hide';else e.style.visibility='hidden';}
function sZ(e,z){if(l)e.zIndex=z;else e.style.zIndex=z;}
function sX(e,x){if(l)e.left=x;else if(op)e.style.pixelLeft=x;else e.style.left=x;}
function sY(e,y){if(l)e.top=y;else if(op)e.style.pixelTop=y;else e.style.top=y;}
function wH(e,h){if(l){Y=e.document;Y.write(h);Y.close();}if(e.innerHTML)e.innerHTML=h;}
//getLeft and getTop take an anchor's NAME and ID string (names used for NS4.x)
// so, for the y-coord of this: <A HREF="#" NAME="blah" ID="blah">my link</A>
// do this: getTop('blah')
function getLeft(anchorstr) {
	var nLeftPos = 0;
	if (l) {
		var found=0;
		for (var i=0; i<d.anchors.length; i++) {
			if (d.anchors[i].name == anchorstr) {
				found=1;
				break;
			}
		}
		nLeftPos = ( found==0 ? 0 : d.anchors[i].x );
	} else {
		var e = gE(anchorstr);							 // get a handle on the anchor element
	    var nLeftPos = e.offsetLeft;     			 // initialize var to store calculations
	    var eParElement = e.offsetParent;	 		 // identify first offset parent element  
	    while (eParElement != null) {                // move up through element hierarchy
	        nLeftPos += eParElement.offsetLeft;      // appending left offset of each parent
	        eParElement = eParElement.offsetParent;  // until no more offset parents exist
	    }
	}
    return nLeftPos;                             	// return the x coord
}
function getTop(anchorstr) {
	var nTopPos = 0;
	if (l) {
		var found=0;
		for (var i=0; i<d.anchors.length; i++) {
			if (d.anchors[i].name == anchorstr) {
				found=1;
				break;
			}
		}
		nTopPos = ( found==0 ? 0 : d.anchors[i].y );
	} else {
		var e = gE(anchorstr);							 // get a handle on the anchor element
	    var nTopPos = e.offsetTop;			         // initialize var to store calculations
	    var eParElement = e.offsetParent;   		 // identify first offset parent element  
	    while (eParElement != null) {                // move up through element hierarchy
	        nTopPos += eParElement.offsetTop;        // appending top offset of each parent
	        eParElement = eParElement.offsetParent;  // until no more offset parents exist
	    }
	}
    return nTopPos;                                  // return the y coord
}

function makePrintButton(src) {
if (window.print) {
	return '<a href="javascript:window.print();"><img src="'+src+'" border="0"></a>';
} else {
	return "&nbsp;";
}
}
