
function getBrowserWindowSize(){var viewportwidth;var viewportheight;if(typeof window.innerWidth!='undefined'){viewportwidth=window.innerWidth,viewportheight=window.innerHeight}
else if(typeof document.documentElement!='undefined'&&typeof document.documentElement.clientWidth!='undefined'&&document.documentElement.clientWidth!=0){viewportwidth=document.documentElement.clientWidth,viewportheight=document.documentElement.clientHeight}
else{viewportwidth=document.getElementsByTagName('body')[0].clientWidth,viewportheight=document.getElementsByTagName('body')[0].clientHeight}
var rval={width:viewportwidth,height:viewportheight};return rval;}
function setElementCenter(elem){var wDim=getBrowserWindowSize();var dDim=Element.getDimensions(elem);var top=(wDim.height-dDim.height)/2;var left=(wDim.width-dDim.width)/2;if(top<10)top=10;if(left<10)left=10;elem.style.top=top+'px';elem.style.left=left+'px';}
function getElementPosition(elem){var posX=null;var posY=null;if(elem.offsetParent){for(posX=0,posY=0;elem.offsetParent;elem=elem.offsetParent){posX+=elem.offsetLeft;posY+=elem.offsetTop;}
return[posX,posY];}else{posX=elem.x;posY=elem.y;return[posX,posY];}}
function strip(str){return str.replace(/^\s+|\s+$/g,'');}
function IsNumeric(val){return(val&&/^\d+$/.test(val))?true:false;}
function postlink(link){var f=document.createElement("form");f.style.display="none";link.parentNode.appendChild(f);f.method="POST";f.action=link.href;var m=document.createElement("input");m.setAttribute('type','hidden');m.setAttribute('name','_method');m.setAttribute('value','post');f.appendChild(m);f.submit();return false;}
var normalColor="#fff";var hoverColor="#f1f9ee";function hoverThis(what){what.style.backgroundColor=hoverColor;}
function outThis(what){what.style.backgroundColor=normalColor;}
function getFirstParentByTagName(e,tagname){while((e=e.parentNode)&&(e.tagName.toLowerCase()!=tagname));return e;}
function input_with_hint(inputField,hintText){inputField.onfocus=function(){if(hintText==inputField.value){inputField.value="";Element.removeClassName(inputField,"hint");}};inputField.onblur=function(){if(inputField.value==""){inputField.value=hintText;Element.addClassName(inputField,"hint");}
else if(inputField.value==hintText){if(!inputField.classNames().include("hint"))
Element.addClassName(inputField,"hint");}};}
function showmenu(openbtn,update_disp_elem,update_value_elem,update_callback,autoclose){var menushow=false;var togglefunc=function(){if(!menushow){$(update_disp_elem).addClassName("menushow");menushow=true;}
else if(autoclose){$(update_disp_elem).removeClassName("menushow");menushow=false;}}
Event.observe($(openbtn),'click',togglefunc);return{isshown:function(){return menushow;},open:function(){if(!menushow){togglefunc();}},closemenu:function(value,value_id){if(menushow){if(value!=null&&$(update_value_elem)){if($(update_value_elem).type=="text")
$(update_value_elem).value=value;else
$(update_value_elem).innerHTML=value;}
if(value_id!=null&&update_callback){update_callback(value,value_id);}
$(update_disp_elem).removeClassName("menushow");menushow=false;}}}}
function togglemenu_group(classname,close_on_blur){var nodes=$$('.'+classname);var active_node=null;if(nodes.length>0){for(var i=0;i<nodes.length;i++){var node=nodes[i];var elink=node.getElementsByTagName("a")[0];Event.observe(node,'click',function(e){if(active_node==getFirstParentByTagName(Event.element(e),"div")){Event.stop(e);}});Event.observe(elink,'click',function(e){Event.stop(e);if(active_node)
Element.removeClassName(active_node,"menushow");var dispnode=getFirstParentByTagName(Event.element(e),"div");Element.addClassName(dispnode,"menushow");active_node=dispnode;});}
if(close_on_blur){Event.observe(document,'click',function(e){if(active_node){Element.removeClassName(active_node,"menushow");active_node=null;}});}}}
function togglemenu(elem,link,show_name,hide_name){return{onclick:function(){if($(link).innerHTML==show_name){$(elem).style.display="block";$(link).innerHTML=hide_name;}
else{$(elem).style.display="none";$(link).innerHTML=show_name;}}};}
function toggledisplay(elem,link,show_name,hide_name,callback){if($(elem)){if($(elem).style.display=="none"){$(elem).style.display="block";if($(link))
$(link).innerHTML=hide_name;if(callback)
callback(false);}
else{$(elem).style.display="none";if($(link))
$(link).innerHTML=show_name;if(callback)
callback(true);}}}
function swapdisplay(elem1,elem2){return{onclick:function(elem){if(elem==elem1){$(elem1).style.display="none";$(elem2).style.display="block";}
else{$(elem1).style.display="block";$(elem2).style.display="none";}
return false;}};}
function popupbox(varname,title,in_contents,width,center,relpos_id){var contents=in_contents;var elem=null;var opened=false;return{open:function(idstr){var top=10;var left=10;if(relpos_id){pos=getElementPosition(document.getElementById(relpos_id));left=pos[0]+'px';top=(pos[1]+15)+'px';}
else if(center){var coords=document.viewport.getScrollOffsets();var wDim=getBrowserWindowSize();left=(wDim.width-width)/2;left=(((left<10)?10:left)+coords[0])+'px';top=(coords[1]+150)+'px';}
if(opened==false){elem=document.createElement('div');Element.addClassName(elem,'popupBox');elem.setAttribute('id',idstr);elem.innerHTML="<div class='popup-handle clearfix'><h2>"+title+"</h2><a href='javascript:"+varname+".close();' class='close close_black'>[X]</a></div>";elem.innerHTML+=contents;elem.style.top=top;elem.style.left=left;elem.style.width=width+'px';document.body.appendChild(elem);opened=true;new Draggable(idstr,{handle:'popup-handle',starteffect:null,endeffect:null,snap:function(x,y){return[(x<0?0:x),(y<0?0:y)];}});}
else{elem.style.top=top;elem.style.left=left;}},close:function(){if(opened==true){document.body.removeChild(elem);opened=false;}},set_contents:function(in_contents){contents=in_contents;}}}
function modalwindow_show(){if($("modalBackground")&&$("modalWindow")){setElementCenter($("modalWindow"));if(Prototype.Browser.Gecko){$("modalBackground").style.position="absolute";document.getElementsByTagName("body")[0].style.overflow="hidden";}
$("modalBackground").style.display='block';$("modalWindow").style.display='block';return false;}
else{return true;}}
function modalwindow_hide(){$("modalWindow").style.display='none';$("modalBackground").style.display='none';if(Prototype.Browser.Gecko){document.getElementsByTagName("body")[0].style.overflow="auto";}}
function star_rating(rating_id,rating_cur_id,rating_hint_id,rating_val_id,hints,num_stars){return{showstars:function(val){$(rating_hint_id).innerHTML=hints[val];},clearstars:function(){$(rating_hint_id).innerHTML=($(rating_val_id).value>0)?hints[$(rating_val_id).value]:hints[0];},setstars:function(val){$(rating_cur_id).style.width=val*100/num_stars+"%";$(rating_val_id).value=val;},reset:function(){$(rating_cur_id).style.width="0%";$(rating_val_id).value=0;$(rating_hint_id).innerHTML=hints[0];}}}
function checkboxes_listen(uncheck_all_btn,btns){for(var i=0;i<btns.length&&btns[i]!=0;i++){Event.observe($(btns[i]),'click',function(e){if(Event.element(e).checked)
$(uncheck_all_btn).checked=false;});}
Event.observe($(uncheck_all_btn),'click',function(e){if(Event.element(e).checked){for(var i=0;i<btns.length;i++){$(btns[i]).checked=false;}}});}
function checkboxes_listen_area(uncheck_all_btn,area_id){var objCheckBoxes=document.getElementById(area_id).getElementsByTagName('input');var btns=new Array();for(var i=0;i<objCheckBoxes.length;i++){btns[i]=objCheckBoxes[i].id;}
checkboxes_listen(uncheck_all_btn,btns);}
function selector_template(text_id,refresh){this.textarr=new Array();this.scriptarr=new Array();this.selectedIndex=-1;this.add=function(text,index,selected){this.textarr[index]=text;if(selected)
this.update(index);return index;};this.addjs=function(js,index){if(!this.scriptarr[index])
this.scriptarr[index]="";this.scriptarr[index]+=js;return index;}
this.update=function(select_index){if(this.selectedIndex!=select_index){if(this.selectedIndex>=0&&refresh){this.textarr[this.selectedIndex]=$(text_id).innerHTML;}
this.selectedIndex=select_index;$(text_id).innerHTML=this.textarr[select_index];if(select_index<this.scriptarr.length&&this.scriptarr[select_index])
eval(this.scriptarr[select_index]);}};}
function validate_loginform(theForm){var validform=true;if(!theForm.email.value){theForm.email.className="errorinput";$("login_emailerr").innerHTML="Please enter your email address";$("login_emailerr").style.display="block";validform=false;}
else{theForm.email.className="datainput";$("login_emailerr").style.display="none";}
if(!theForm.password.value){theForm.password.className="errorinput";$("login_passworderr").innerHTML="Please enter your password";$("login_passworderr").style.display="block";validform=false;}
else{theForm.password.className="datainput";$("login_passworderr").style.display="none";}
if(validform){theForm.hashed_pwd.value=hex_sha256(theForm.password.value);theForm.password.value="";$('loginSubmit').style.display="none";$('loginSubmitWait').style.display="block";}
return validform;}
function validate_signupform(theForm){var validform=true;if(!theForm.user_firstname.value||!theForm.user_lastname.value){if(!theForm.user_firstname.value)
theForm.user_firstname.className="errorinput";if(!theForm.user_lastname.value)
theForm.user_lastname.className="errorinput";$("nameerr").innerHTML="Please enter your full name";$("nameerr").style.display="block";$("namehint").style.display="none";validform=false;}
else{theForm.user_firstname.className="datainput";theForm.user_lastname.className="datainput";$("nameerr").style.display="none";$("namehint").style.display="block";}
if(!theForm.user_email.value||(theForm.user_email.value.indexOf('@')==-1)){if(!theForm.user_email.value)
$("emailerr").innerHTML="Please enter your email address";else
$("emailerr").innerHTML="Email entered does not appear to be valid";theForm.user_email.className="errorinput";$("emailerr").style.display="block";$("emailhint").style.display="none";validform=false;}
else{theForm.user_email.className="datainput";$("emailerr").style.display="none";$("emailhint").style.display="block";}
if(!theForm.user_password.value||(theForm.user_password.value.match(/.{6,}/)==null)){if(!theForm.user_password.value)
$("passworderr").innerHTML="Please enter your password";else
$("passworderr").innerHTML="Password is too short";theForm.user_password.className="errorinput";$("passworderr").style.display="block";$("passwordhint").style.display="none";validform=false;}
else{theForm.user_password.className="datainput";$("passworderr").style.display="none";$("passwordhint").style.display="block";}
if(!theForm.user_password_confirmation.value||(theForm.user_password.value!=theForm.user_password_confirmation.value)){if(!theForm.user_password_confirmation.value)
$("passwordconfirmationerr").innerHTML="Please re-type your password";else
$("passwordconfirmationerr").innerHTML="Passwords do not match";theForm.user_password_confirmation.className="errorinput";$("passwordconfirmationerr").style.display="block";$("passwordconfirmationhint").style.display="none";validform=false;}
else{theForm.user_password_confirmation.className="datainput";$("passwordconfirmationerr").style.display="none";$("passwordconfirmationhint").style.display="block";}
var locationvalid=true;if(theForm.user_country.value=="US"||theForm.user_country.value=="CA"){if(!theForm.user_postalcode.value){$("locationerr").innerHTML="Please enter your postal code";theForm.user_postalcode.className="errorinput";locationvalid=false;}}
else{if(!theForm.user_city.value){$("locationerr").innerHTML="Please enter your city name";theForm.user_city.className="errorinput";locationvalid=false;}}
if(locationvalid){theForm.user_postalcode.className="datainput";theForm.user_city.className="datainput";$("locationerr").style.display="none";$("locationhint").style.display="block";}
else{$("locationerr").style.display="block";$("locationhint").style.display="none";validform=false;}
if(validform==true){theForm.user_hashed_pwd.value=hex_sha256(theForm.user_password.value);theForm.user_password.value="";theForm.user_password_confirmation.value="";$('signupSubmit').style.display="none";$('signupSubmitWait').style.display="block";}
return validform;}
function toggle_postalcode_city(country){if(country=="US"||country=="CA"){$("postalcodeentry").style.display="block";$("cityentry").style.display="none";}
else{$("postalcodeentry").style.display="none";$("cityentry").style.display="block";}}
function ParseGeoResponse(response,obj,accuracy){if(!response||response.Status.code!=G_GEO_SUCCESS||response.Placemark[0].AddressDetails.Accuracy<accuracy){return false;}else{place=response.Placemark[0];obj.lat=place.Point.coordinates[1];obj.lon=place.Point.coordinates[0];obj.country=null;obj.administrativearea=null;obj.city=null;obj.postal_code=null;if(place.AddressDetails.Country){obj.country=place.AddressDetails.Country.CountryNameCode;if(place.AddressDetails.Country.AdministrativeArea){obj.administrativearea=place.AddressDetails.Country.AdministrativeArea.AdministrativeAreaName;if(place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea){if(place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality){if(place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.PostalCode)
obj.postal_code=place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.PostalCode.PostalCodeNumber;if(place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.LocalityName)
obj.city=place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.LocalityName;else if(place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.DependentLocality)
obj.city=place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.DependentLocality.DependentLocalityName;}
else if(place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.PostalCode){obj.postal_code=place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.PostalCode.PostalCodeNumber;}}
else if(place.AddressDetails.Country.AdministrativeArea.Locality){if(place.AddressDetails.Country.AdministrativeArea.Locality.PostalCode)
obj.postal_code=place.AddressDetails.Country.AdministrativeArea.Locality.PostalCode.PostalCodeNumber;obj.city=place.AddressDetails.Country.AdministrativeArea.Locality.LocalityName;}}}
return true;}}
function displayerror(err,top){if(err){document.getElementById("errormsgs_body").innerHTML=err;document.getElementById("errormsgs").style.display="block";if(top){if(document.location.href.charAt(document.location.href.length-1)!='#')
document.location=document.location+"#";else
document.location=document.location;}}
else{document.getElementById("errormsgs").style.display="none";}}