/*
 * Tämä tiedosto on JT-Sivupalvelun omaisuutta.  Lähdekoodin kopioiminen,
 * jälleenmyynti tai muokkaus ilman JT-Sivupalvelun kirjallista lupaa on
 * kielletty!
 *
 * Copyright 2009 JT-Sivupalvelu Avoin Yhtiö
 * http://www.jt-sivupalvelu.net
 */
var form_confirm=1;function Component(id,title,options){this.children=new Array();this.id=id;this.element=document.getElementById(id);this.raw_title=title;this.options=new Array();this.form=null;this.visible=Component_visible;this.focus=Component_focus;this.add=Component_add;this.setopt=Component_setopt;this.value=Component_value;this.title=Component_title;this.modified=Component_modified;this.required=Component_required;this.important=Component_important;this.reset=Component_reset;this.submit=Component_submit;this.validate=Component_validate;this.validate_required=Component_validate_required;this.validate_length=Component_validate_length;this.validate_pattern=Component_validate_pattern;this.validate_min=Component_validate_min;this.validate_max=Component_validate_max;this.setopt(options);if(this.element){this.element.component=this;}}function Component_visible(f){;}function Component_focus(){if(this.element){var obj=this.element;while(obj!=null){if(obj.component){obj.component.visible(true);}obj=obj.parentNode;}this.element.focus();}}function Component_add(f){this.children[this.children.length]=f;f.form=this.form;return f;}function Component_setopt(options){var n=options.length;var i=0;while(i<n){var opt;var start=options.indexOf(",",i);if(start>=0){opt=options.substr(i,start-i);i=start+1;}else{opt=options.substr(i);i=n;}var name,value;start=opt.indexOf("=");if(start>=0){name=trim(opt.substr(0,start));value=trim(opt.substr(start+1));}else{name=trim(opt);value="";}this.options[name]=value;}}function Component_value(){return "";}function Component_title(){return translate(this.raw_title);}function Component_modified(){for(var i=0;i<this.children.length;i++){if(this.children[i].modified()){return true;}}return false;}function Component_validate(){var status;status=this.validate_required();if(this.value()!=""){if(status==null)status=this.validate_length();if(status==null)status=this.validate_pattern();if(status==null)status=this.validate_min();if(status==null)status=this.validate_max();}if(status==null){for(var i=0;i<this.children.length;i++){status=this.children[i].validate();if(status!=null)break;}}else{var msg=status.substr(0,1).toUpperCase()+status.substr(1);alert(msg);this.focus();}return status;}function Component_validate_required(){if(this.value()==""&&this.required()){return translate("%1 puuttuu",this.title());}return null;}function Component_validate_length(){if(this.options['len']!=null){var len=parseInt(this.options['len']);if(this.value().length>len){return translate("%1 saa olla enintään %2 merkkiä",this.title(),len);}}return null}function Component_validate_pattern(){return null;}function Component_validate_min(){if(this.options['min']!=null){var min=parseInt(this.options['min']);if(parseInt(this.value())<min){return translate("%1 täytyy olla %2 tai suurempi",this.title(),min);}}return null;}function Component_validate_max(){if(this.options['max']!=null){var max=parseInt(this.options['max']);if(parseInt(this.value())>max){return translate("%1 täytyy olla %2 tai pienempi",this.title(),max);}}return null;}function Component_required(){return this.options['required']!=null;}function Component_important(){return this.options['unimportant']==null;}function Component_reset(){for(var i=0;i<this.children.length;i++){this.children[i].reset();}}function Component_submit(){for(var i=0;i<this.children.length;i++){var f=this.children[i].submit();if(f)return f;}return null;}function Entry(id,title,options){this.parent=Component;this.parent(id,title,options);}function Edit(id,title,options){this.parent=Entry;this.parent(id,title,options);this.value=Edit_value;this.modified=Edit_modified;this.reset=Edit_reset;if(this.element){this.element.onkeydown=function(e){if(!e)e=window.event;if(event_specialkey(e)=="Enter"){this.component.form.submit();return false;}else{return true;}};this.element.onfocus=function(e){this.clicks=0;return true;};this.element.onclick=function(e){if(this.clicks++==0){this.select();}return true;};}}function Edit_value(){return trim(this.element.value);}function Edit_modified(){return this.element.defaultValue!=this.element.value;}function Edit_reset(){this.element.value="";}function Password(id,title,options){this.parent=Edit;this.parent(id,title,options);}function Hidden(id){this.parent=Component;this.parent(id,"","");}function Email(id,title,options){this.parent=Edit;this.parent(id,title,options);this.validate_pattern=Email_validate_pattern;}function Email_validate_pattern(){var v=this.value();if(!v.match(/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@([0-9a-z][0-9a-z-]*[0-9a-z]\.)+[a-z]{2}[mtgvu]?$/i)){return translate("%1 on virheellinen",this.title());}return null;}function Integer(id,title,options){this.parent=Edit;this.parent(id,title,options);this.validate_pattern=Integer_validate_pattern;if(this.element){this.element.onkeypress=function(e){if(!e)e=window.event;switch(event_key(e)){case "0":case "1":case "2":case "3":case "4":case "5":case "6":case "7":case "8":case "9":return true;case null:return true;default:return false;}};}}function Integer_validate_pattern(){if(!this.value().match(/^(-)?(([1-9][0-9]*)|0)$/)){return translate("%1 on virheellinen",this.title());}return null;}function Listbox(id,title,options){this.parent=Entry;this.parent(id,title,options);this.value=Listbox_value;this.modified=Listbox_modified;this.reset=Listbox_reset;if(this.element){this.element.onkeydown=function(e){if(!e)e=window.event;if(event_specialkey(e)=="Enter"){this.component.form.submit();return false;}else{return true;}};}}function Listbox_value(){for(var i=0;i<this.element.options.length;i++){if(this.element.options[i].selected){return this.element.options[i].value;}}return "";}function Listbox_modified(){for(var i=0;i<this.element.options.length;i++){var option=this.element.options[i];if(option.selected!=option.defaultSelected){return true;}}return false;}function Listbox_reset(){this.element.selectedIndex=0;}function xDate(id,title,options){this.parent=Entry;this.parent(id,title,options);this.value=xDate_value;this.validate_pattern=xDate_validate_pattern;this.year=this.add(new Year(id+"_year","Vuosi",options));this.month=this.add(new Month(id+"_month","Kuukausi",options));this.day=this.add(new Day(id+"_day","Päivä",options));}function xDate_value(){var year=this.year.value();var month=this.month.value();var day=this.day.value();if(year||month||day){return year+"-"+month+"-"+day;}else{return "";}}function xDate_validate_pattern(){var t=parse_date(this.value());if(t==null){return translate("%1 on virheellinen",this.title());}var now=new Date();if(this.options['past']!=null&&now.getTime()<t.getTime()){return translate("%1 on virheellinen",this.title());}if(this.options['future']!=null&&t.getTime()<now.getTime()){return translate("%1 on virheellinen",this.title());}return null;}function Year(id,title,options){this.parent=Listbox;this.parent(id,title,options);}function Month(id,title,options){this.parent=Listbox;this.parent(id,title,options);}function Day(id,title,options){this.parent=Listbox;this.parent(id,title,options);}function TextArea(id,title,options){this.parent=Entry;this.parent(id,title,options);this.value=TextArea_value;this.modified=TextArea_modified;this.reset=TextArea_reset;}function TextArea_value(){return trim(this.element.value);}function TextArea_modified(){return this.element.defaultValue!=this.element.value;}function TextArea_reset(){this.element.value="";}function RichEdit(id,title,options){this.parent=TextArea;this.parent(id,title,options);this.value=RichEdit_value;this.modified=RichEdit_modified;this.reset=RichEdit_reset;}function RichEdit_value(){var e=tinyMCE.get(this.id);return e.getContent();}function RichEdit_modified(){return this.element.defaultValue!=this.value();}function RichEdit_reset(){var e=tinyMCE.get(this.id);e.setContent("");this.element.value="";}function Frame(){this.parent=Component;this.parent("","","");}function Form(id,options){this.parent=Component;this.parent(id,"",options);this.form=this;}function Submit(id,title,options){this.parent=Component;this.parent(id,title,options);this.submit=Submit_submit;if(this.element){this.element.onclick=function(e){var status=this.component.form.validate();if(status!=null){return false;}form_confirm=0;return true;};}}function Submit_submit(){this.element.click();return this;}function Cancel(id,title,options){this.parent=Component;this.parent(id,title,options);if(this.element){this.element.onclick=function(e){if(this.component.options['confirm']==null){form_confirm=0;}return true;};}}function Reset(id,title,options){this.parent=Component;this.parent(id,title,options);if(this.element){this.element.onclick=function(e){if(!this.component.form.important()||!this.component.form.modified()||confirm(translate("Tyhjennä lomake?"))){this.component.form.reset();form_autofocus();}return false;};}}function View(id,title,options){this.parent=Entry;this.parent(id,title,options);}function Controls(){this.parent=Component;this.parent("","","");}function Message(options){this.parent=Component;this.parent("","",options);}function form_onexit(){var f;if(form_confirm){var modified=false;for(var i=0;i<document.forms.length;++i){f=document.forms[i];if(f.component&&f.component.important()&&f.component.modified()){modified=true;break;}}f=document.getElementById("_modified");if(f&&f.value!=""){modified=true;}if(modified){return translate("Sivulle syötetty tieto menetetään, jos poistut sivulta.");}}form_confirm=1;}window.onbeforeunload=form_onexit;function form_autofocus(){for(var i=0;i<document.forms.length;++i){for(var j=0;j<document.forms[i].length;++j){var f=document.forms[i].elements[j];if(f.disabled){;}else if(f.component&&f.component.value()!=""){;}else if(f.type=="checkbox"||f.type=="radio"){f.focus();return;}else if(f.type=="text"||f.type=="textarea"||f.type=="password"){f.focus();return;}else if(f.type=="select-one"){f.focus();return;}}}}onload_handler(function(){form_autofocus();});
