if (!document.getElementById('biz_ws_css')){ var head = document.getElementsByTagName('head')[0]; var link = document.createElement('link'); link.id = 'biz_ws_css'; link.rel = 'stylesheet'; link.type = 'text/css'; link.href = 'http://bizmart.info/webservice/v2/ws_style.css'; link.media = 'all'; head.appendChild(link); }var ws_settings={//инициализация именно в этой переменной /*** * Возможные команды: * 1-получить форму для поиска, * 2-получить результат поиска, * 3-получить объяву, * 4-форма контактов, * 5-получить топы * 6-ФОрма калькулятора * 7-вычисления калькулятора */ command:[1,5,6], lang:'ru', count:{"2":10,"5":3},//задания кол-ва для рез-тов поиска и топов refresh:[5],//тут указываем чего хотим получить еще раз при следующем обращении к сервису id:{ 1:'ws_form', //Форма 2:'ws_result', //Результат поиска 3:'ws_item', //Объява 4:'ws_item', //Контакты 5:'ws_top', //ТОпы 6:'ws_calc', //форма калькулятора 7:'ws_calc_res' //Результат калькулятора },//,тут пишим куда пришедшие данные вставлять callback:'ws_loading_hide',// функция обратного вызова, пример ниже onRequest:'ws_loading_display', //onResponse:'loading_hide', host_addr:'http://bizmart.info', }; function ws_show(objnm,pg_rel){ var t=false; switch(objnm){ case 'item': t=document.getElementById('ws_item'); if(t) t.style.display=''; t=document.getElementById('ws_result'); if(t) t.style.display='none'; t=document.getElementById('ws_form'); if(t) t.style.display='none'; t=document.getElementById('ws_top'); if(t) t.style.display='none'; break; case 'calc_form': case 'calc_res': break; default: t=document.getElementById('ws_item'); if(t) t.style.display='none'; t=document.getElementById('ws_result'); if(t) t.style.display=''; t=document.getElementById('ws_form'); if(t) t.style.display=''; t=document.getElementById('ws_top'); if(t) t.style.display=''; } if( typeof(pg_rel)!='undefined' ){ document.location.assign( '#'+pg_rel ); } } function ws_loading_display(params){ try{ switch( params.command[1] ){ case 3: case 4: document.getElementById('ws_item').innerHTML=''; ws_show('item'); break; case 6: ws_show('calc_form'); case 7: ws_show('calc_res'); break; default: document.getElementById('ws_result').innerHTML=''; ws_show('list'); } document.getElementById('ws_sf_submit_but').disabled=true; document.getElementById('ws_sf_submit_but').style.backgroundImage='url('+ws_settings.host_addr+'/img/loader_button.gif)'; }catch(e){} } function ws_loading_hide(params){ try{ document.getElementById('ws_sf_submit_but').disabled=false; document.getElementById('ws_sf_submit_but').style.backgroundImage='none'; document.location.assign( '#top' ); if( typeof(params[2])!='undefined' ) document.location.assign( '#result' ); else if( typeof(params[3])!='undefined' || typeof(params[4])!='undefined' ) document.location.assign( '#item' ); }catch(e){ } } var mem_sel=new Array(); var mem_sel_inited=false; function ws_show_cats(obj){ console.log( 'ws_show_cats called width '+obj ); var val=obj.value; var def='none'; var rel1='block'; var rev1=false; if(val=='realty' || val=='rent'){ def='none'; rel1='block'; rev1=false; }else if(val=='fran'){ def='none'; rel1=false; rev1='block'; }else if(val=='biz'){ def='block'; rel1='none'; rev1=false; }else{ def='block'; rel1=false; rev1=false; } console.log( 'detected display params def:'+def+' rel:'+rel1+' rev'+rev1 ); var selObj= document.getElementById('ws_cats'); //Пройтись и запомнить все категории в массив if(mem_sel.length<1){ for (var childItem in selObj.childNodes){ if( typeof(selObj.childNodes[childItem].tagName)!='undefined' && selObj.childNodes[childItem].tagName.toLowerCase()=='option' ){ mem_sel.push({ cls:selObj.childNodes[childItem].getAttribute('class'), rel:selObj.childNodes[childItem].getAttribute('rel'), rev:selObj.childNodes[childItem].getAttribute('rev'), val:selObj.childNodes[childItem].getAttribute('value'), nme:selObj.childNodes[childItem].getAttribute('name'), lbl:selObj.childNodes[childItem].innerHTML }); } } } selObj.innerHTML=''; //for (var childItem in mem_sel){ for( var i=0; i0){ if( rel1=='block' ) display=true; else display=false; } } if( rev1 ){ var tst_rev=mem_sel[i].rev; if( tst_rev!=null && tst_rev>0 ){ if( rev1=='block' ) display=true; else display=false; } } if( display=='not_set' && def ){ if( def=='block' ) display=true; else display=false; } if( display ){ var topt=document.createElement("option"); topt.setAttribute("class", mem_sel[i].cls); topt.setAttribute("name", mem_sel[i].nme); topt.setAttribute("rel", mem_sel[i].rel); topt.setAttribute("rev", mem_sel[i].rev); topt.innerHTML= mem_sel[i].lbl; selObj.options[ selObj.options.length ]= topt; } } } var t=new Image(); t.src=ws_settings.host_addr+'/img/loader_button.gif'; /** * WSRequest: JavaScript "AJAX" data loader * Minimized version: see debug directory for the complete one. * * @license LGPL * @author Dmitry Koterov, http://en.dklab.ru/lib/WSRequest/ * @version 5.x $Id$ */ function WSRequest(){ var t=this; t.onreadystatechange=null; t.readyState=0; t.responseText=null; t.responseXML=null; t.status=200; t.statusText="OK"; t.responseJS=null; t.caching=false; t.loader=null; t.session_name="PHPSESSID"; t._ldObj=null; t._reqHeaders=[]; t._openArgs=null; t._errors={inv_form_el:"Invalid FORM element detected: name=%, tag=%",must_be_single_el:"If used,
must be a single HTML element in the list.",js_invalid:"JavaScript code generated by backend is invalid!\n%",url_too_long:"Cannot use so long query with GET request (URL is larger than % bytes)",unk_loader:"Unknown loader: %",no_loaders:"No loaders registered at all, please check WSRequest.LOADERS array",no_loader_matched:"Cannot find a loader which may process the request. Notices are:\n%",no_headers:"Method setRequestHeader() cannot work together with the % loader."}; t.abort=function(){ with(this){ if(_ldObj&&_ldObj.abort){ _ldObj.abort(); } _cleanup(); if(readyState==0){ return; } if(readyState==1&&!_ldObj){ readyState=0; return; } _changeReadyState(4,true); } }; t.open=function(_2,_3,_4,_5,_6){ with(this){ try{ if(document.location.search.match(new RegExp("[&?]"+session_name+"=([^&?]*)"))||document.cookie.match(new RegExp("(?:;|^)\\s*"+session_name+"=([^;]*)"))){ _3+=(_3.indexOf("?")>=0?"&":"?")+session_name+"="+this.escape(RegExp.$1); } } catch(e){ } _openArgs={method:(_2||"").toUpperCase(),url:_3,asyncFlag:_4,username:_5!=null?_5:"",password:_6!=null?_6:""}; _ldObj=null; _changeReadyState(1,true); return true; } }; t.send=function(_7){ if(!this.readyState){ return; } this._changeReadyState(1,true); this._ldObj=null; var _8=[]; var _9=[]; if(!this._hash2query(_7,null,_8,_9)){ return; } var _a=null; if(this.caching&&!_9.length){ _a=this._openArgs.username+":"+this._openArgs.password+"@"+this._openArgs.url+"|"+_8+"#"+this._openArgs.method; var _b=WSRequest.CACHE[_a]; if(_b){ this._dataReady(_b[0],_b[1]); return false; } } var _c=(this.loader||"").toLowerCase(); if(_c&&!WSRequest.LOADERS[_c]){ return this._error("unk_loader",_c); } var _d=[]; var _e=WSRequest.LOADERS; for(var _f in _e){ var ldr=_e[_f].loader; if(!ldr){ continue; } if(_c&&_f!=_c){ continue; } var _11=new ldr(this); WSRequest.extend(_11,this._openArgs); WSRequest.extend(_11,{queryText:_8.join("&"),queryElem:_9,id:(new Date().getTime())+""+WSRequest.COUNT++,hash:_a,span:null}); var _12=_11.load(); if(!_12){ this._ldObj=_11; WSRequest.PENDING[_11.id]=this; return true; } if(!_c){ _d[_d.length]="- "+_f.toUpperCase()+": "+this._l(_12); }else{ return this._error(_12); } } return _f?this._error("no_loader_matched",_d.join("\n")):this._error("no_loaders"); }; t.getAllResponseHeaders=function(){ with(this){ return _ldObj&&_ldObj.getAllResponseHeaders?_ldObj.getAllResponseHeaders():[]; } }; t.getResponseHeader=function(_13){ with(this){ return _ldObj&&_ldObj.getResponseHeader?_ldObj.getResponseHeader():[]; } }; t.setRequestHeader=function(_14,_15){ with(this){ _reqHeaders[_reqHeaders.length]=[_14,_15]; } }; t._dataReady=function(_16,js){ with(this){ if(caching&&_ldObj){ WSRequest.CACHE[_ldObj.hash]=[_16,js]; } if(_16!==null||js!==null){ status=4; responseText=responseXML=_16; responseJS=js; }else{ status=500; responseText=responseXML=responseJS=null; } _changeReadyState(2); _changeReadyState(3); _changeReadyState(4); _cleanup(); } }; t._l=function(_18){ var i=0,p=0,msg=this._errors[_18[0]]; while((p=msg.indexOf("%",p))>=0){ var a=_18[++i]+""; msg=msg.substring(0,p)+a+msg.substring(p+1,msg.length); p+=1+a.length; } return msg; }; t._error=function(msg){ msg=this._l(typeof (msg)=="string"?arguments:msg); msg="WSRequest: "+msg; if(!window.Error){ throw msg; }else{ if((new Error(1,"test")).description=="test"){ throw new Error(1,msg); }else{ throw new Error(msg); } } }; t._hash2query=function(_1e,_1f,_20,_21){ if(_1f==null){ _1f=""; } if((""+typeof (_1e)).toLowerCase()=="object"){ var _22=false; if(_1e&&_1e.parentNode&&_1e.parentNode.appendChild&&_1e.tagName&&_1e.tagName.toUpperCase()=="FORM"){ _1e={form:_1e}; } for(var k in _1e){ var v=_1e[k]; if(v instanceof Function){ continue; } var _25=_1f?_1f+"["+this.escape(k)+"]":this.escape(k); var _26=v&&v.parentNode&&v.parentNode.appendChild&&v.tagName; if(_26){ var tn=v.tagName.toUpperCase(); if(tn=="FORM"){ _22=true; }else{ if(tn=="INPUT"||tn=="TEXTAREA"||tn=="SELECT"){ }else{ return this._error("inv_form_el",(v.name||""),v.tagName); } } _21[_21.length]={name:_25,e:v}; }else{ if(v instanceof Object){ this._hash2query(v,_25,_20,_21); }else{ if(v===null){ continue; } if(v===true){ v=1; } if(v===false){ v=""; } _20[_20.length]=_25+"="+this.escape(""+v); } } if(_22&&_21.length>1){ return this._error("must_be_single_el"); } } }else{ _20[_20.length]=_1e; } return true; }; t._cleanup=function(){ var _28=this._ldObj; if(!_28){ return; } WSRequest.PENDING[_28.id]=false; var _29=_28.span; if(!_29){ return; } _28.span=null; var _2a=function(){ _29.parentNode.removeChild(_29); }; WSRequest.setTimeout(_2a,50); }; t._changeReadyState=function(s,_2c){ with(this){ if(_2c){ status=statusText=responseJS=null; responseText=""; } readyState=s; if(onreadystatechange){ onreadystatechange(); } } }; t.escape=function(s){ return escape(s).replace(new RegExp("\\+","g"),"%2B"); }; } WSRequest.COUNT=0; WSRequest.MAX_URL_LEN=2000; WSRequest.CACHE={}; WSRequest.PENDING={}; WSRequest.LOADERS={}; WSRequest._dummy=function(){ }; WSRequest.TIMEOUTS={s:window.setTimeout,c:window.clearTimeout}; WSRequest.setTimeout=function(_2e,dt){ window.WSRequest_tmp=WSRequest.TIMEOUTS.s; if(typeof (_2e)=="string"){ id=window.WSRequest_tmp(_2e,dt); }else{ var id=null; var _31=function(){ _2e(); delete WSRequest.TIMEOUTS[id]; }; id=window.WSRequest_tmp(_31,dt); WSRequest.TIMEOUTS[id]=_31; } window.WSRequest_tmp=null; return id; }; WSRequest.clearTimeout=function(id){ window.WSRequest_tmp=WSRequest.TIMEOUTS.c; delete WSRequest.TIMEOUTS[id]; var r=window.WSRequest_tmp(id); window.WSRequest_tmp=null; return r; }; WSRequest.query=function(url,_35,_36,_37){ var req=new this(); req.caching=!_37; req.onreadystatechange=function(){ if(req.readyState==4){ _36(req.responseJS,req.responseText); } }; var _39=null; if(url.match(/^((\w+)\.)?(GET|POST)\s+(.*)/i)){ req.loader=RegExp.$2?RegExp.$2:null; _39=RegExp.$3; url=RegExp.$4; } req.open(_39,url,true); req.send(_35); }; WSRequest.dataReady=function(d){ var th=this.PENDING[d.id]; delete this.PENDING[d.id]; if(th){ th._dataReady(d.text,d.js); }else{ if(th!==false){ throw "dataReady(): unknown pending id: "+d.id; } } }; WSRequest.extend=function(_3c,src){ for(var k in src){ _3c[k]=src[k]; } }; WSRequest.LOADERS.xml={loader:function(req){ WSRequest.extend(req._errors,{xml_no:"Cannot use XMLHttpRequest or ActiveX loader: not supported",xml_no_diffdom:"Cannot use XMLHttpRequest to load data from different domain %",xml_no_headers:"Cannot use XMLHttpRequest loader or ActiveX loader, POST method: headers setting is not supported, needed to work with encodings correctly",xml_no_form_upl:"Cannot use XMLHttpRequest loader: direct form elements using and uploading are not implemented"}); this.load=function(){ if(this.queryElem.length){ return ["xml_no_form_upl"]; } if(this.url.match(new RegExp("^([a-z]+)://([^\\/]+)(.*)","i"))){ if(RegExp.$2.toLowerCase()==document.location.hostname.toLowerCase()){ this.url=RegExp.$3; }else{ return ["xml_no_diffdom",RegExp.$2]; } } var xr=null; if(window.XMLHttpRequest){ try{ xr=new XMLHttpRequest(); } catch(e){ } }else{ if(window.ActiveXObject){ try{ xr=new ActiveXObject("Microsoft.XMLHTTP"); } catch(e){ } if(!xr){ try{ xr=new ActiveXObject("Msxml2.XMLHTTP"); } catch(e){ } } } } if(!xr){ return ["xml_no"]; } var _41=window.ActiveXObject||xr.setRequestHeader; if(!this.method){ this.method=_41?"POST":"GET"; } if(this.method=="GET"){ if(this.queryText){ this.url+=(this.url.indexOf("?")>=0?"&":"?")+this.queryText; } this.queryText=""; if(this.url.length>WSRequest.MAX_URL_LEN){ return ["url_too_long",WSRequest.MAX_URL_LEN]; } }else{ if(this.method=="POST"&&!_41){ return ["xml_no_headers"]; } } this.url+=(this.url.indexOf("?")>=0?"&":"?")+"WSRequest="+(req.caching?"0":this.id)+"-xml"; var id=this.id; xr.onreadystatechange=function(){ if(xr.readyState!=4){ return; } xr.onreadystatechange=WSRequest._dummy; req.status=null; try{ req.status=xr.status; req.responseText=xr.responseText; } catch(e){ } if(!req.status){ return; } try{ eval("WSRequest._tmp = function(id) { var d = "+req.responseText+"; d.id = id; WSRequest.dataReady(d); }"); } catch(e){ return req._error("js_invalid",req.responseText); } WSRequest._tmp(id); WSRequest._tmp=null; }; xr.open(this.method,this.url,true,this.username,this.password); if(_41){ for(var i=0;i=0?"&":"?")+this.queryText; } this.url+=(this.url.indexOf("?")>=0?"&":"?")+"WSRequest="+this.id+"-"+"script"; this.queryText=""; if(!this.method){ this.method="GET"; } if(this.method!=="GET"){ return ["script_only_get"]; } if(this.queryElem.length){ return ["script_no_form"]; } if(this.url.length>WSRequest.MAX_URL_LEN){ return ["url_too_long",WSRequest.MAX_URL_LEN]; } if(req._reqHeaders.length){ return ["no_headers","SCRIPT"]; } var th=this,d=document,s=null,b=d.body; if(!window.opera){ this.span=s=d.createElement("SCRIPT"); var _4a=function(){ s.language="JavaScript"; if(s.setAttribute){ s.setAttribute("src",th.url); }else{ s.src=th.url; } b.insertBefore(s,b.lastChild); }; }else{ this.span=s=d.createElement("SPAN"); s.style.display="none"; b.insertBefore(s,b.lastChild); s.innerHTML="Workaround for IE."; var _4a=function(){ s=s.getElementsByTagName("SCRIPT")[0]; s.language="JavaScript"; if(s.setAttribute){ s.setAttribute("src",th.url); }else{ s.src=th.url; } }; } WSRequest.setTimeout(_4a,10); return null; }; }}; WSRequest.LOADERS.form={loader:function(req){ WSRequest.extend(req._errors,{form_el_not_belong:"Element \"%\" does not belong to any form!",form_el_belong_diff:"Element \"%\" belongs to a different form. All elements must belong to the same form!",form_el_inv_enctype:"Attribute \"enctype\" of the form must be \"%\" (for IE), \"%\" given."}); this.load=function(){ var th=this; if(!th.method){ th.method="POST"; } th.url+=(th.url.indexOf("?")>=0?"&":"?")+"WSRequest="+th.id+"-"+"form"; if(req._reqHeaders.length){ return ["no_headers","FORM"]; } if(th.method=="GET"){ if(th.queryText){ th.url+=(th.url.indexOf("?")>=0?"&":"?")+th.queryText; } if(th.url.length>WSRequest.MAX_URL_LEN){ return ["url_too_long",WSRequest.MAX_URL_LEN]; } var p=th.url.split("?",2); th.url=p[0]; th.queryText=p[1]||""; } var _4e=null; var _4f=false; if(th.queryElem.length){ if(th.queryElem[0].e.tagName.toUpperCase()=="FORM"){ _4e=th.queryElem[0].e; _4f=true; th.queryElem=[]; }else{ _4e=th.queryElem[0].e.form; for(var i=0;i")+""; if(!_4e){ _4e=th.span.firstChild; } d.body.insertBefore(s,d.body.lastChild); var _57=function(e,_59){ var sv=[]; var _5b=e; if(e.mergeAttributes){ var _5b=d.createElement("form"); _5b.mergeAttributes(e,false); } for(var i=0;i<_59.length;i++){ var k=_59[i][0],v=_59[i][1]; sv[sv.length]=[k,_5b.getAttribute(k)]; _5b.setAttribute(k,v); } if(e.mergeAttributes){ e.mergeAttributes(_5b,false); } return sv; }; var _5f=function(){ top.WSRequestGlobal=WSRequest; var _60=[]; if(!_4f){ for(var i=0,n=_4e.elements.length;i=0;i--){ var _64=qt[i].split("=",2); var e=d.createElement("INPUT"); e.type="hidden"; e.name=unescape(_64[0]); e.value=_64[1]!=null?unescape(_64[1]):""; _4e.appendChild(e); } for(var i=0;i'); params.form[name2]=val; } } } } var def_comm=2; if( typeof( prmCmd )!='undefined' ){ prmCmd=parseInt(prmCmd); if( prmCmd ) params.command.push( prmCmd ); else params.command.push( def_comm ); }else if( typeof( value.params )!='undefined' ){ if( typeof( value.params.command )!='undefined' ) params.command.push( parseInt(value.params.command) ); else params.command.push(def_comm); if( typeof( value.params.add_path )!='undefined' ){ add_path=value.params.add_path; } }else{ params.command.push(def_comm); } }else if( value.id ){ console.log('GET OBJECT '+value.id ); } } else if(typeof(value)=='string') { var tcmd=value.split(':'); switch( tcmd[0] ){ case 'oid': // params.command.push(3); add_path=parseInt(tcmd[1])+'/'; break; case 'page': //Постраничка params.command.push(2); var t= tcmd[1].match(/page=(\d+)/); if(!t) return false; add_path='?page='+parseInt(t[1]); break; case 'contact': //Страница контактов params.command.push(4); add_path=parseInt(tcmd[1])+'/'; break; default: } }else if(typeof(value)=='number') { params.command.push(value); } else { } } if( ws_settings.onRequest ){ if(ws_settings.onRequest && typeof(window[ws_settings.onRequest])=='function') { window[ws_settings.onRequest]( params ); } } var req = new WSRequest(); req.onreadystatechange = function() { if (req.readyState == 4) { if( ws_settings.onResponse ){ if(ws_settings.onResponse && typeof(window[ws_settings.onResponse])=='function') { window[ws_settings.onResponse]( req.responseJS ); } } //console.log(req); if(req.responseJS) { for(i in req.responseJS) { var elem=document.getElementById(ws_settings.id[i]); if(elem) {elem.innerHTML=req.responseJS[i];}else{ console.log('placeholder '+ws_settings.id[i]+' not found'); } } if(ws_settings.callback && typeof(window[ws_settings.callback])=='function'){ window[ws_settings.callback](req.responseJS); } } if(req.responseText!='') { console.log(req.responseText); } } }; //var jsprt=''; for(var jspri in params) jsprt+="\n"+jspri+' = '+params[jspri]; alert('http://bizmart.info/webservices/'+add_path+jsprt); req.open('GET', 'http://bizmart.info/webservices/'+add_path, true); req.send( params ); } WS_Query('',true);