/* Sekalaisia apufunktioita */ // Luo form-elementin elementeistä assosiatiivisen arrayn (vastaa lomaketta php:n $_REQUEST-muuttujassa) function form2array(form_element) { this.parse_name = function(name) { if(!name) return new Array(); var parts = name.replace(/\]/g, '').split('['); return parts; } var form_data = new Object(); var indexes = new Object(); for(var i=0; i"; return txt; } function this_date() { var d = new Date(); var str = d.getFullYear(); str += "-"; str += d.getMonth()<9?("0"+(d.getMonth()+1)):(d.getMonth()+1); str += "-"; str += d.getDate()<10?("0"+(d.getDate()+0)):(d.getDate()+0); return str; } function elbyid(el) { return document.getElementById(el); } function safename(filename) { // Tämä myös PHP:ssa filename = filename.toLowerCase(); filename = filename.replace(/\//g,""); filename = filename.replace(/ /g,"_"); filename = filename.replace(/ä/g,"a"); filename = filename.replace(/ö/g,"o"); filename = filename.replace(/å/g,"a"); filename = filename.replace(/ë/g,"e"); filename = filename.replace(/[^a-z0-9_./]/g,""); return filename; } function str_replace(search,replace,subject) { return subject.split(search).join(replace); } function safefilename(filename) { // Tämä myös PHP:ssa var t=filename.lastIndexOf("/"); var t2=filename.lastIndexOf("\\"); t=t=0) filename=filename.substring(t+1, t.length); filename = filename.toLowerCase(); filename = filename.replace(/ /g,"_"); filename = filename.replace(/ä/g,"a"); filename = filename.replace(/ö/g,"o"); filename = filename.replace(/å/g,"a"); filename = filename.replace(/ë/g,"e"); filename = filename.replace(/[^a-z0-9_./]/g,""); return filename; } function getElementValue(element) { var el=element; var tagname = ''; try {tagname = el.tagName.toLowerCase();} catch (e) {} if (element[0] && element.length && element[0].type && tagname=='') { for (var i=0;i0?separator:'')+item[i]; } return result; } function isFormChanged(form) { if (!form) return false; try { for (var i=0;i"); document.write(beginpart + (endpart?"."+endpart:"") + at + domain); document.write(""); } function is_array(mixed) { if (typeof mixed=="object") return true; return false; } function in_array(needle,haystack) { if (!is_array(haystack)) return false; for (var i=0;i1) v=v.replace('0',''); while (v.indexOf('.')!=v.lastIndexOf('.')) v=v.replace('.',''); if(v=='.'){v='0';} if (decimals) { if (v.indexOf('.')==-1) v+='.'; if (v.indexOf('.')2;i-=3) newbase=v.substr(i-3,3)+(newbase?thousands_separator+newbase:''); if (i>0) newbase=v.substr(0,i)+(newbase?thousands_separator+newbase:''); if(fix) v=newbase+v.substr(baselen-1,-3); else v=newbase+v.substr(baselen-1); } if (dec_separator) v=v.replace(/\./g,dec_separator); if(v.indexOf('.')==0)v='0'+v; return v; } function getElementsByPrefix(form, prefix) { var els = form.elements; if(!els || prefix.length==0) return false; var rels = new Array(); var counter=0; for(var i=0;i1) isIE = true; if(e.tagName=="TBODY") { if(isIE) { if(e.style.display=="none") e.style.display = dest?dest:"block"; else e.style.display = dest?dest:"none"; } else { if(e.style.display=="none") e.style.display = dest?dest:"table-row-group"; else e.style.display = dest?dest:"none"; } } else if(e.tagName=="TR") { if(isIE) { if(e.style.display=="none") e.style.display = dest?dest:"block"; else e.style.display = dest?dest:"none"; } else { if(e.style.display=="none") e.style.display = dest?dest:"table-row"; else e.style.display = dest?dest:"none"; } } else { if(e.style.display == "block") e.style.display = dest?dest:"none"; else e.style.display = dest?dest:"block"; } } function trim(s){s=s+"";return s.replace(/^\s+|\s+$/g,"");} function hasClass(e,c){var t=" "+e.className+" ";if(t.indexOf(" "+c+" ")==-1)return false;else return true;} function addClass(e,c){var t=" "+e.className+" ";if(t.indexOf(" "+c+" ")==-1)e.className=e.className+" "+c;} function removeClass(e,c){var t=" "+e.className+" ";var s=t.indexOf(" "+c+" ");if(s==-1)return;t=t.substring(0,s)+t.substring(s+c.length+1,t.length);e.className=trim(t);} function toggleClass(e,c) {if (hasClass(e,c)) removeClass(e,c); else addClass(e,c);} function document_write(text) {document.write(text);} function stopEvent(ev) { ev = ev ? ev : window.event; ev.cancelBubble = true; if(ev.stopPropagation)ev.stopPropagation(); } function addEvent(el,ev,f) { if(el.addEventListener){el.addEventListener(ev,f,false);} else if(el.attachEvent){el.attachEvent('on'+ev,f);} else el['on'+ev]=f; } function removeEvent(el,ev,f) { if(el.removeEventListener){el.removeEventListener(ev,f,false);} else if(el.detachEvent){el.detachEvent('on'+ev,f);} else el['on'+ev]=null; } // legacy-jäänne function add_window_onload(f) { addEvent(window,"load",f) } function storeFormDefaultStates() { try { for (var i in document.forms) { if (document.forms[i].elements) storeFormDefaultState(document.forms[i]); } } catch (e) { } } function storeFormDefaultState(form) { if (!form) return false; try { for (var i=0;i=0) separator = '&'; activeHTTPRequest.open(form.method, form.action+separator+data, true); activeHTTPRequest.send(null); } return false; } function HTTPQuery(urlfull,callback,id,argument) { if (id==null || id==undefined || id=="") id = "default"; if(callback) async=true; else async = false; var pos = urlfull.indexOf("?"); var data = ""; var url = urlfull; if(pos>0) { url = urlfull.substring(0,pos); data = urlfull.substring(pos+1,urlfull.length); } eval("activeHTTPRequestCollection._"+id+"=null;"); if (window.XMLHttpRequest) eval("activeHTTPRequestCollection._"+id+" = new XMLHttpRequest();"); else if (window.ActiveXObject) eval("activeHTTPRequestCollection._"+id+" = new ActiveXObject('Microsoft.XMLHTTP');"); eval("var obj = activeHTTPRequestCollection._"+id+";"); if(async) { eval("obj.onreadystatechange = function() { processReqChange2('"+id+"');}"); eval("activeHTTPRequestCollection._"+id+"Callback = callback;"); } else { activeHTTPRequestCollection["_"+id+"Callback"] = false; } obj.open("POST", url, async); if(data.length>0) { obj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); obj.send(data); } else obj.send(null); if(async) return false; else if (obj.status == 200) return obj.responseText; else alert('Error: HTTP/'+obj.status); return false; } function processReqChange2(id) { eval("var obj = activeHTTPRequestCollection._"+id+";"); eval("var callback = activeHTTPRequestCollection._"+id+"Callback;"); if (obj.readyState == 4) // complete { if (obj.status == 200) { if (callback==null) alert('No active callback function'); else if(callback) callback(obj.status,obj.responseText); } else { if (obj.callback==null) alert("There was a problem retrieving the XML data:\n" + obj.statusText); else if(callback) callback(obj.status,obj.statusText); } } } function processReqChange() { if (activeHTTPRequest.readyState == 4) // complete { if (activeHTTPRequest.status == 200) { if (activeCallback==null) alert('No active callback function'); else if(activeCallback) activeCallback(activeHTTPRequest.status,activeHTTPRequest.responseText); } else { if (activeCallback==null) alert("There was a problem retrieving the XML data:\n" + activeHTTPRequest.statusText); else if(activeCallback) activeCallback(activeHTTPRequest.status,activeHTTPRequest.statusText); } } } function http_parse_attrs(str) { var result=new Array(); var parts=explode(",",str); for (var i=0;i=0) { abool = true; } var sep = '?'; if(g_rpc_handler_uri.indexOf('?')>=0) { sep = '&'; } if(abool) return g_rpc_handler_uri+sep+'_rpc='+encodeURIComponent(rpc_array_serialize(rpccall)); else return appurl+'/'+g_rpc_handler_uri+sep+'_rpc='+encodeURIComponent(rpc_array_serialize(rpccall)); } function rpc_perform(funcname,async_handler,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9) { var rpccall=new Array(); rpccall=rpc_arg_add(rpccall,arg1); rpccall=rpc_arg_add(rpccall,arg2); rpccall=rpc_arg_add(rpccall,arg3); rpccall=rpc_arg_add(rpccall,arg4); rpccall=rpc_arg_add(rpccall,arg5); rpccall=rpc_arg_add(rpccall,arg6); rpccall=rpc_arg_add(rpccall,arg7); rpccall=rpc_arg_add(rpccall,arg8); rpccall=rpc_arg_add(rpccall,arg9); rpccall['id']=rpc_get_id(), rpccall['funcname']=funcname; if (async_handler) { rpccall['js_handler']=async_handler; rpcquery=rpc_make_query(rpccall); HTTPQuery(rpcquery,rpc_handle_query,rpccall['id']); g_rpc_call_register[rpccall['id']]=rpccall; } else { rpcquery=rpc_make_query(rpccall); var rpcresult=rpc_parse_result(HTTPQuery(rpcquery,false,rpccall['id'])); return rpcresult['result']; } } function rpc_errorwindow(message) { var w=window.open('','_blank','top=10,left=10,width=600,height=600,scrollbars,resizable=yes'); w.document.write('
'+message+'
'); } function rpc_handle_query(statuscode,resulttext) { if (statuscode==200) { var result=rpc_parse_result(resulttext); if (!result['id']) return; if (result['js_handler']) { g_rpc_call_register[result['id']]['result']=result['result']; try { eval('var realresult='+result['js_handler']+'(g_rpc_call_register[\''+result['id']+'\'][\'result\'])'); } catch (e) { alert('rpc_handle_query: '+e.message); rpc_errorwindow('rpc_handle_query: '+e.message+' parsing '+result['js_handler']+'(g_rpc_call_register[\''+result['id']+'\'][\'result\'])'); } } } } function rpc_parse_result(responsetext) { try { eval(responsetext); return result; } catch (e) { alert('rpc_parse_result: ['+e.message+'] parsing '+responsetext+' ('+responsetext.length+')'); rpc_errorwindow('rpc_parse_result: ['+e.message+'] parsing '+responsetext+' ('+responsetext.length+')'); return false; } } function rpc_init(rpc_handler_uri) { g_rpc_handler_uri=rpc_handler_uri; } window.srqs = []; function http_get_sub(target_element_id, request_uri) { return submitform_sub_perform('postdata',request_uri,target_element_id,false,false); } function submitform_sub(target_element_id,form_element,submit_button_element) { return submitform_sub_perform('form',false,target_element_id,form_element,submit_button_element); } function submitform_sub_perform(method,postdata,target_element_id,form_element,submit_button_element) { var kateetti_scriptrpc_subpart = { 'uid':'', 'rqid':'', 'currentpostdata':'', 'currentdataid':'', 'currentdataindex':0, 'chunkmaxlen':1200, 'handler_uri':'', 'eid':'', 'submitdisabled':false, 'app_processing':false, 'to_submitform_timeout':false, 'submitform_timeout_do_data':false, 'options':false, 'object_name':'', 'onload_handlers':[], 'srcform':false, 'lastsubmitbutton':false, 'app_sid':'', sub_reload: function(data) { this.submitdisabled = true; if (rpc_is_array(data)) { for (var i in this.options) { if (i=='restoresession') continue; data[i] = this.options[i]; } data['app_sid'] = this.app_sid; } else { for (var i in this.options) { if (i=='restoresession') continue; data+= (data==''?'':'&')+i+'='+htmlEncode(this.options[i]); } data+= (data==''?'':'&')+'app_sid='+htmlEncode(this.app_sid); } this.currentpostdata = rpc_array_serialize(data); this.currentdataindex++; this.currentdataid = this.rqid+this.currentdataindex; this.sub_action_chunk_continue(); }, app_after_reload: function(sid) { var e = document.getElementById(this.eid); this.app_sid = sid; this.submitdisabled = false; if (this.lastsubmitbutton) this.lastsubmitbutton.disabled = false; var escript = e.getElementsByTagName('SCRIPT'); for (var i=0;i0) { baseurl = baseurl.substr(0,baseurl.indexOf('#')); } if (rpc_is_array(data)) { for (var i in this.options) { if (i=='restoresession') continue; data[i] = this.options[i]; } data['baseurl'] = baseurl; data['app_sid'] = this.app_sid; } else { for (var i in this.options) { if (i=='restoresession') continue; data+= (data==''?'':'&')+i+'='+htmlEncode(this.options[i]); } data+=(data==''?'':'&')+'baseurl='+htmlEncode(baseurl); data+= (data==''?'':'&')+'app_sid='+htmlEncode(this.app_sid); } //alert(rpc_array_serialize(data)); this.currentpostdata = rpc_array_serialize(data); this.currentdataindex++; this.currentdataid = this.rqid+this.currentdataindex; kateetti_scriptrpc.app_loading_screen(); kateetti_scriptrpc.app_action_chunk_continue(); }, app_loading_screen: function() { var cpanel = document.getElementById(this.eid); try { var w = parseInt(cpanel.offsetWidth); var h = parseInt(cpanel.offsetHeight)+30; if (w && h) { cpanel.innerHTML+= '
' +'

' +'
'; } } catch (e) { cpanel.innerHTML = ''; } }, app_after_reload: function(sid) { this.app_sid = sid; var e = document.getElementById(this.eid); var escript = e.getElementsByTagName('SCRIPT'); for (var i=0;i0) { //alert(tmphref.substr(tmphref.indexOf('#')+1)); return tmphref.substr(tmphref.indexOf('#')+1); } return ''; }, step_set_fragment: function(new_fragment) { var tmphref = window.location.href; if (tmphref.indexOf('#')) { tmphref = tmphref.substr(0,tmphref.indexOf('#'))+'#'+new_fragment; } else { tmphref = tmphref+'#'+new_fragment; } var hframe = document.getElementById(this.eid+'_historyframe'); if (hframe) { try { var fdoc = window[this.eid+'_historyframe'].document; var state_el = fdoc.getElementById('d_state'); state_el.innerHTML = ''; } catch (e) { } hframe.src = '/js/site/veho_huolto.js.php?app_history=1&state='+htmlEncode(new_fragment); } window.location.href = tmphref; this.fragment_current = new_fragment; }, step_advance: function(newtoken) { try { if (newtoken) this.step_set_fragment(newtoken); else this.step_set_fragment(this.step_newtoken()); this.step_fragment_poll_start(); } catch (e) { alert('exception: '+e); } }, step_fragment_poll_start: function() { if (this.fragment_poll_running) return; if (navigator.appName == 'Microsoft Internet Explorer') { var newiframe = document.createElement('IFRAME'); newiframe.setAttribute('id',this.eid+'_historyframe'); newiframe.setAttribute('src',this.handler_uri+'?app_history=1&state='+htmlEncode(this.step_get_fragment())); newiframe.setAttribute('width','1'); newiframe.setAttribute('height','1'); newiframe.setAttribute('frameborder','0'); document.body.appendChild(newiframe); } this.fragment_current = this.step_get_fragment(); this.fragment_poll_running = true; kateetti_scriptrpc.step_fragment_poll_run(); }, step_fragment_poll_run: function() { if (this.step_get_fragment()==this.fragment_current) ; else { if (!this.submitdisabled) this.step_fragment_onchange(); else { alert(this.submitdisabled); return; } } this.fragment_poll_running_timeout = setTimeout('kateetti_scriptrpc.step_fragment_poll_run();',250); }, step_fragment_onchange: function() { var newfragment = this.step_get_fragment(); //alert('new: '+newfragment+', old: '+this.fragment_current); this.fragment_current = newfragment; this.app_reload({'restoresession':newfragment}); } } function scriptrpc_make_mainelement(element_id) { var e = document.getElementById(element_id); if (!e) { var scriptelements = document.getElementsByTagName('SCRIPT'); if (scriptelements) { var thisscript = scriptelements[scriptelements.length-1]; for (var i=0;i'; } function scriptrpc_init(options) { try { kateetti_scriptrpc.app_init('d_huoltovaraus','http://veho.kateetti.fi/js/site/veho_huolto.js.php',options); } catch (e) { scriptrpc_failsafe('d_huoltovaraus',options); } } function huolto_init(options) { scriptrpc_init(options); } setTimeout("huolto_init(huolto_options);",1);