if(document.all&&!document.getElementById){document.getElementById=function(id){return document.all[id];}}
function getMessage(key){var messages={en:{empty:'This field requires an entry.',email:'Invalid e-mail address.',number:'Please make sure entries are numbers only.',range:'Please make sure this entry is between %1 and %2.',power2:'Please make sure this entry is a power of 2.',rank:'Please rank all items to continue.'},nl:{empty:'Dit is een verplicht veld.',email:'Ongeldig e-mailadres.',number:'Zorg ervoor dat de invoer alleen uit cijfers bestaat.',range:'Zorg ervoor dat de invoer tussen %1 en %2 ligt.',power2:'Zorg ervoor dat de invoer een macht van 2 is.',rank:'Rangschik alle items om verder te gaan.'}}
var scripts=document.getElementsByTagName('script');var lang,match;for(var i=0;i<scripts.length;i++){match=scripts[i].src.match(/lang=(en|nl)/);if(match)lang=match[1];}
if(!lang)lang='en';return messages[lang][key];}
function trim(s){return s.replace(/^\s*|\s*$/g,'');}
function superTrim(field){var f=document.form.elements[field];f.value=f.value.replace(/[ \t]*\n[ \t]*/g,'\n').replace(/[ \t]+/g,' ').replace(/^\s*|\s*$/g,'');}
function lower(field){var f=document.form.elements[field];f.value=f.value.toLowerCase();}
function isNotEmpty(field){var r=true;var s=trim(field.value);if(s==''||s==null){alert(getMessage('empty'));field.focus();r=false;}
return r;}
function isNumber(field){var r=isNotEmpty(field);if(r){var filter=/^[0-9]+$/;if(!filter.test(field.value)){alert(getMessage('number'));field.focus();r=false;}}
return r;}
function isNumberMinMax(field,min,max){var r=isNumber(field);if(r){if(field.value<min||field.value>max){alert(getMessage('range').replace('%1',min).replace('%2',max));field.focus();r=false;}}
return r;}
function power2(x){return(x&(x-1))==0;}
function isPower2(field){var r=isNumber(field);if(r){if(!power2(field.value)){alert(getMessage('power2')+"\n(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, ...)");field.focus();r=false;}}
return r;}
function isNumberNotRequired(field){var r=true;var s=trim(field.value);if(s.length){var filter=/^[0-9]*$/;if(!filter.test(s)){alert(getMessage('number'));field.focus();r=false;}}
return r;}
function isNumberNotRequiredMinMax(field,min,max){var r=true;var s=trim(field.value);if(s.length){var filter=/^[0-9]*$/;if(!filter.test(s)){alert(getMessage('number'));field.focus();r=false;}else if(field.value<min||field.value>max){alert(getMessage('range').replace('%1',min).replace('%2',max));field.focus();r=false;}}
return r;}
function isEmail(field){var r=isNotEmpty(field);if(r){var filter=/^[^@ ]+@[^@ ]+\.[^@ ]{2,3}$/;if(!filter.test(trim(field.value))){alert(getMessage('email'));field.focus();r=false;}}
return r;}
function isEmailNotRequired(field){var r=true;var s=trim(field.value);if(s.length){var filter=/^[^@ ]+@[^@ ]+\.[^@ ]{2,3}$/;if(!filter.test(s)){alert(getMessage('email'));field.focus();r=false;}}
return r;}
function isSelected(field){var r=true;if(field.options[field.selectedIndex].value==0){alert(getMessage('empty'));field.focus();r=false;}
return r;}
function getRadioValue(idOrName){var value=null;var element=document.getElementById(idOrName);var radioGroupName=null;if(element==null){radioGroupName=idOrName;}else{radioGroupName=element.name;}
if(radioGroupName==null)return null;var radios=document.getElementsByTagName('input');for(var i=0;i<radios.length;i++){var input=radios[i];if(input.type=='radio'&&input.name==radioGroupName&&input.checked){value=input.value;break;}}
return value;}
function isChecked(fieldname){var r=false;var f=document.form.elements[fieldname];if(f.length==undefined){if(f.checked)r=true;else{alert(getMessage('empty'));f.focus();}}else{for(var i=0;i<f.length;i++)if(f[i].checked){r=true;break;}
if(!r){alert(getMessage('empty'));f[0].focus();}}
return r;}
function isCheckedOther(fieldname){var r=isChecked(fieldname);var f=document.form.elements[fieldname];if(r)if(f[f.length-2].checked)r=isNotEmpty(f[f.length-1]);return r;}
function doCheckOther(field){var f=document.form.elements[field.name];f[f.length-2].checked=(field.value.length>0);}
function doToggle(fieldname){var f=document.form.elements[fieldname];if(f.length==undefined)f.checked=!f.checked;else for(var i=0;i<f.length;i++)f[i].checked=!f[i].checked;}
function select_date_not_empty(prefix){var r=true;var field='';if(document.form.elements[prefix+'Year'].value==0)field='Year';if(document.form.elements[prefix+'Month'].value==0)field='Month';if(document.form.elements[prefix+'Day'].value==0)field='Day';if(field!=''){alert(getMessage('empty'));document.form.elements[prefix+field].focus();r=false;}
return r;}
function select_date_today(prefix){var today=new Date();document.form.elements[prefix+'Year'].value=today.getFullYear();document.form.elements[prefix+'Month'].value=today.getMonth()+1;document.form.elements[prefix+'Day'].value=today.getDate();}
function select_time_today(prefix){var today=new Date();document.form.elements[prefix+'Year'].value=today.getFullYear();document.form.elements[prefix+'Month'].value=today.getMonth()+1;document.form.elements[prefix+'Day'].value=today.getDate();var hour=today.getHours();if(hour<10)hour='0'+hour;document.form.elements[prefix+'Hour'].value=hour;var minute=Math.round(today.getMinutes()/5)*5;if(minute<10)minute='0'+minute;document.form.elements[prefix+'Minute'].value=minute;}
function select_date_clear(prefix){document.form.elements[prefix+'Year'].value=0;document.form.elements[prefix+'Month'].value=0;document.form.elements[prefix+'Day'].value=0;}
function select_time_clear(prefix){document.form.elements[prefix+'Year'].value=0;document.form.elements[prefix+'Month'].value=0;document.form.elements[prefix+'Day'].value=0;document.form.elements[prefix+'Hour'].value='00';document.form.elements[prefix+'Minute'].value='00';}
function select_date_set(prefix1,prefix2){document.form.elements[prefix1+'Year'].value=document.form.elements[prefix2+'Year'].value;document.form.elements[prefix1+'Month'].value=document.form.elements[prefix2+'Month'].value;document.form.elements[prefix1+'Day'].value=document.form.elements[prefix2+'Day'].value;}
function select_date_plusmin(prefix,interval){var year=document.form.elements[prefix+'Year'].value;var month=document.form.elements[prefix+'Month'].value;var day=document.form.elements[prefix+'Day'].value;var dt=new Date(year,month-1,day);dt.setDate(dt.getDate()+intval(interval));document.form.elements[prefix+'Year'].value=dt.getFullYear();document.form.elements[prefix+'Month'].value=dt.getMonth()+1;document.form.elements[prefix+'Day'].value=dt.getDate();}
function select_month_plusmin(prefix,interval){var year=intval(document.form.elements[prefix+'Year'].value);var month=intval(document.form.elements[prefix+'Month'].value);month+=intval(interval);if(month>12){month=1;year++;}
if(month<1){month=12;year--;}
document.form.elements[prefix+'Year'].value=year;document.form.elements[prefix+'Month'].value=month;}
function popup(url,windowname,width,height){if(!window.focus)return true;var href=typeof(url)=='string'?url:url.href;windowname=typeof(windowname)!='undefined'?windowname:'popup';width=typeof(width)!='undefined'?width:600;height=typeof(height)!='undefined'?height:800;window.open(href,windowname,'menubar=no,resizable=yes,scrollbars=yes,scrollbars=yes,width='+width+',height='+height);return false;}
function winopen(url,width,height){window.open(url,'winopen','menubar=no,resizable=yes,scrollbars=yes,status=yes,width='+width+',height='+height);}
function execute(url){window.open(url,'execute','menubar=no,resizable=no,scrollbars=no,status=no,width=10,height=10');}
function set_type(fieldname){var f=document.form.elements[fieldname];var type=document.form.elements['type_'+fieldname].value;if(type.length>0)type='<!--'+type+'-->\r\n';f.value=type+f.value.replace(/<!--(TEXT|HTML)-->\r?\n?/g,'');}
function init_type(fieldname){var f=document.form.elements[fieldname].value;var type=document.form.elements['type_'+fieldname];if(type){if(f.indexOf('<!--TEXT-->')==0)type.selectedIndex=1;else if(f.indexOf('<!--HTML-->')==0)type.selectedIndex=2;else type.selectedIndex=0;}}
function eolas(s){document.writeln('<'+s+'>');}
function setRank(qid,cid){var q=$(qid);var c=$(cid);var a=$w(q.value);if(c.value==''){a.push(cid);c.value=a.length;}else{a=a.without(cid);c.value='';for(var i=0;i<a.length;i++)$(a[i]).value=i+1;}
q.value=a.join(' ');}
function isRankComplete(qid,required){var complete=$w($F(qid)).length;var count=$F(qid+'count');var r=complete==count;if(!r&&!required)r=complete==0;if(!r)alert(getMessage('rank'));return r;}
function insertAtCursor(src,dst){var myValue=$F(src);var myField=$(dst);if(document.selection){myField.focus();sel=document.selection.createRange();sel.text=myValue;}
else if(myField.selectionStart||myField.selectionStart=='0'){var startPos=myField.selectionStart;var endPos=myField.selectionEnd;myField.value=myField.value.substring(0,startPos)
+myValue
+myField.value.substring(endPos,myField.value.length);}else{myField.value+=myValue;}}
function nl2br(s){return s.replace(/\r/g,'').replace(/\n/g,'<br>\n');}
function strip_identifiers(s){return trim(s.replace(/<!--(TEXT|HTML)-->\r?\n?/g,''));}
function text2html(s){var type='';if(s.indexOf('<!--TEXT-->')==0)type='text';else if(s.indexOf('<!--HTML-->')==0)type='html';s=strip_identifiers(s);if(type!='html'){s=nl2br(s);}
return s;}
function htmlfix(s){s=strip_identifiers(s);s=s.replace(/\r/g,'');s=s.replace(/(<br\s?\/>)/gi,'<br>');s=s.replace(/(<br><\/br>)/gi,'<br>');s=s.replace(/<br>\n/g,'<br>').replace(/<br>/g,'<br>\n');s=s.replace(/<\/li>\n/g,'</li>').replace(/<\/li>/g,'</li>\n');s=s.replace('/\n/g','\r\n');return s;}
function updatecart(kind,product_id,count){new Ajax.Request('/ajax/updatecart.php',{method:'get',requestHeaders:{Accept:'application/json'},parameters:{kind:kind,product_id:product_id,count:count},onSuccess:function(transport){var result=transport.responseText.evalJSON(true);$('cart_'+kind).update(result.cart_html);new Effect.Highlight('cartrow'+product_id,{startcolor:'#e30000',endcolor:'#ffffff'});}});}
function intval(string){var result=parseInt(string,10);if(isNaN(result))result=0;return result;}
function spin_val(id){return intval($F(id).replace(/[^-0-9]/g,''));}
function spin_plus(id){var cnt=spin_val(id);if(cnt<99)cnt++;$(id).value=cnt;}
function spin_min(id){var cnt=spin_val(id);if(cnt>0)cnt--;$(id).value=cnt;}
function in_array(needle,haystack,argStrict){var found=false,key,strict=!!argStrict;for(key in haystack){if((strict&&haystack[key]===needle)||(!strict&&haystack[key]==needle)){found=true;break;}}
return found;}
