STD=function(){}

STD.UNDEFINED="undefined";
STD.element=1;
STD.short_days=["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
STD.days=["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
STD.short_months=["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
STD.months=["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];

STD.get_url_param=function(param){
	var regexp=new RegExp("[\\?&]"+param+"=([^&#]*)");
	var results=regexp.exec(window.location.href);

	if(results==null){
		return null;
	}else{
		return results[1];
	}
}
STD.delegate=function(ref,method){
	var f=function(){
		return method.apply(ref,arguments);
	}

	return f;
}
STD.rpc=function(location,method){
	var rpc;

	//select xml request object
	if(window.XMLHttpRequest){
		rpc=new XMLHttpRequest();
	}else if(window.ActiveXObject){
		rpc=new ActiveXObject("Microsoft.XMLHTTP");
	}else{
		throw new Error("no xml request");
	}

	if(method==null){
		method="post";
	}

	if(method=="post"){
		rpc.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	}

	rpc.open(method,location,false);

	return rpc;
}
STD.get_form_params=function(form){
	var params;
	var temp;

	for(i=0;i<form.elements.length;i++){
		temp=form.elements[i];

		if(temp.name!="" && temp.name!=undefined){
			if(params!=""){
				params+="&";
			}

			params+=temp.name+"="+temp.value;
		}
	}

	return params;
}
STD.addLoadListener=function(func){	
	if(window.addEventListener){
		window.addEventListener("load", func, false);
	}else if(window.attachEvent){
		window.attachEvent("onload",func);
	}
}
STD.inString=function(needle,haystack){
	return haystack.indexOf(needle)>-1;
}
STD.isDefined=function(v){
	if(typeof(v)=="undefined"){
		return false;
	}else{
		return true;
	}
}
STD.halt=function(halt_length){
	halt_length=halt_length*1000;

	var halted=true;
	var now=new Date();

	var cur;
	var start=now.getTime();

	while(halted){
		cur=new Date();

		if(cur.getTime()-start > halt_length){
			halted=false;
		}
	}
}
STD.set_cookie=function(name,value,domain,expires){
	var c="";
	c+=name+"="+value;
	
	if(domain!=null){
		c+="; domain="+domain;
	}
	
	c+="; path=/";

	if(expires==null){
		expires=new Date();
		expires.setDate(expires.getDate()+1);
	}

	c+="; expires="+expires.toGMTString();
	
	document.cookie=c;
}
STD.remove_cookie=function(name,domain){
	var date=new Date();
	date.setDate(date.getDate()-1);
	
	STD.set_cookie(name,"",domain,date);
}
STD.get_cookie=function(name){	
	var cname=name+"=";
	var ca=document.cookie.split(';');

	var c;
	for(var i=0;i<ca.length;i++){
		c=ca[i];

		while(c.charAt(0)==' '){
			c=c.substring(1,c.length);
		}

		if(c.indexOf(cname)==0){
			return c.substring(cname.length,c.length);
		}
	}

	return null;
}
STD.root_domain=function(){
	var cd=document.domain;

	if(cd!=null){
		var da=cd.split(".");
		var l=da.length;
		var rd=da[l-2]+"."+da[l-1];

		return rd;
	}else{
		return null;
	}
}
STD.get_checked=function(elements){
	var element;

	var i=0;
	if(elements!=null){
		while(i<elements.length){
			element=elements[i];

			if(element.checked==true){
				return element;
			}else{
				i++;
			}
		}
	}

	return null;
}
STD.dollar=function(value){
	return "$"+value.toFixed(2);
}
STD.target=function(e){
	if(e!=null){
		return e.target;
	}else if(e==null && window.event!=null){
		return window.event.srcElement;
	}else{
		return null;
	}
}
STD.fill_states=function(select){
	var pre=DOM.getElementById("pre-selected-state");

	var rpc=STD.rpc("/cms/xml/states.xml","get");
	rpc.send(null);

	var data=rpc.responseXML;

	var states=DOM.getElementsByTagName("state",data);

	var option;
	var state;
	var value;
	for(var i=0;i<states.length;i++){
		state=states[i];

		option=DOM.createElement("option",state.firstChild.nodeValue);
		value=state.getAttribute("abbreviation");
		option.setAttribute("value",value);

		if(pre!=null && pre.value==value){
			option.setAttribute("selected","selected");
		}

		select.appendChild(option);
	}
}
STD.fill_countries=function(select){
	var pre=DOM.getElementById("pre-selected-country");

	var rpc=STD.rpc("/cms/xml/countries.xml","get");
	rpc.send(null);

	var data=rpc.responseXML;

	var countries=DOM.getElementsByTagName("country",data);

	var option;
	var country;
	var value;
	for(var i=0;i<countries.length;i++){
		country=countries[i];

		option=DOM.createElement("option",country.firstChild.nodeValue);
		value=country.getAttribute("value");
		option.setAttribute("value",value);

		if(pre!=null && pre.value==value){
			option.setAttribute("selected","selected");
		}

		select.appendChild(option);
	}
}
STD.number_pad=function(number,length){
	var str=number.toString();

	while(str.length<length){
		str="0"+str;
	}

	return str;
}
STD.w3c_datetime=function(date,utc){
	var str="";

	var year;
	var month;
	var date_in_month;
	var hours;
	var minutes;
	var seconds;
	var offset;

	if(utc==true){
		year=date.getUTCFullYear();
		month=date.getUTCMonth();
		date_in_month=date.getUTCDate();
		hours=date.getUTCHours();
		minutes=date.getUTCMinutes();
		seconds=date.getUTCSeconds();
		offset="Z";
	}else{
		year=date.getFullYear();
		month=date.getMonth();
		date_in_month=date.getDate();
		hours=date.getHours();
		minutes=date.getMinutes();
		seconds=date.getSeconds();

		var offset_sign=-1*date.getTimezoneOffset();
		offset=STD.number_pad(date.getTimezoneOffset()/60,2);
		offset+=":00";
		if(offset_sign<0){
			offset="-"+offset;
		}else{
			offset="+"+offset;
		}
	}

	str+=STD.number_pad(year,4);
	str+="-";
	str+=STD.number_pad(month+1,2);
	str+="-";
	str+=STD.number_pad(date_in_month,2);
	str+="T";
	str+=STD.number_pad(hours,2);
	str+=":";
	str+=STD.number_pad(minutes,2);
	str+=":";
	str+=STD.number_pad(seconds,2);
	str+=offset;

	return str;
}
STD.anchor_hash=function(element){
	var href=element.getAttribute("href");

	if(href!=null){
		var start_index=href.indexOf("#");

		if(start_index>=0){
			var hash=href.substring(start_index+1);

			return hash;
		}
	}

	return null;
}
STD.flash_object=function(swf){
	var flash_object=DOM.createElement("object");
	flash_object.setAttribute("type","application/x-shockwave-flash");
	flash_object.setAttribute("data",swf);

	var param=DOM.createElement("param");
	param.setAttribute("name","movie");
	param.setAttribute("value",swf);

	flash_object.appendChild(param);

	var a=DOM.createElement("a","You do not have the flash player installed.");
	a.setAttribute("href","http://get.adobe.com/flashplayer/");

	flash_object.appendChild(a);

	return flash_object;
}