function getElementsByClass(searchClass,node,tag){
	
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';

	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
	
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}

function getElementsByRel(searchClass,node,tag){
	var relElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';

	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;

	for (i = 0, j = 0; i < elsLen; i++) {
		if (els[i].getAttribute("rel") == searchClass) {
			relElements[j] = els[i];
			j++;
		}
	}
	return relElements;
}

function addListener(element, type, expression, bubbling){

	bubbling = bubbling || false;
	if(window.addEventListener) {
		element.addEventListener(type, expression, bubbling);
		return true;
	} else if(window.attachEvent) {
		element.attachEvent('on' + type, expression);
		return true;
	} else return false;
}


function getPageSize(){
	
	var xScroll, yScroll;
	
	if (window.innerHeight && window.scrollMaxY) {	
		xScroll = document.body.scrollWidth;
		yScroll = window.innerHeight + window.scrollMaxY;
	} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
		xScroll = document.body.scrollWidth;
		yScroll = document.body.scrollHeight;
	} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
		xScroll = document.body.offsetWidth;
		yScroll = document.body.offsetHeight;
	}
	
	var windowWidth, windowHeight;
	if (self.innerHeight) {	// all except Explorer
		windowWidth = self.innerWidth;
		windowHeight = self.innerHeight;
	} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
		windowWidth = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
	} else if (document.body) { // other Explorers
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
	}	
	
	// for small pages with total height less then height of the viewport
	if(yScroll < windowHeight){
		pageHeight = windowHeight;
	} else { 
		pageHeight = yScroll;
	}

	// for small pages with total width less then width of the viewport
	if(xScroll < windowWidth){	
		pageWidth = windowWidth;
	} else {
		pageWidth = xScroll;
	}

	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight) 
	return arrayPageSize;
}

function getPageScroll(){

	var yScroll;

	if (self.pageYOffset) {
		yScroll = self.pageYOffset;
	} else if (document.documentElement && document.documentElement.scrollTop){	 // Explorer 6 Strict
		yScroll = document.documentElement.scrollTop;
	} else if (document.body) {// all other Explorers
		yScroll = document.body.scrollTop;
	}

	arrayPageScroll = new Array('',yScroll) 
	return arrayPageScroll;
}

function ShipToBillPerson(form) {
	if (form.copy_details.checked) {
		form.billing_name.value = form.first_name.value + " " + form.last_name.value;
		form.billing_address.value = form.street_address.value;
		form.billing_city.value = form.city.value;
		form.billing_state.value = form.state.value;
		form.billing_zip.value = form.zip.value;
		form.billing_phone.value = form.day_phone.value;
	} else {	
		form.billing_name.value = form.billing_name.value;
		form.billing_address.value = form.billing_address.value;
		form.billing_city.value = form.billing_city.value;
		form.billing_state.value = form.billing_state.value;
		form.billing_zip.value = form.billing_zip.value;
		form.billing_phone.value = form.billing_phone.value;
	}
}