Hello and welcome to our community! Is this your first visit?
Register
Enjoy an ad free experience by logging in. Not a member yet? Register.
Results 1 to 9 of 9
  1. #1
    New to the CF scene
    Join Date
    Dec 2011
    Posts
    5
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Javascript listing impossible to figure out!

    Okay first things first. Firebug this website http://www.locksmith.com/

    You will see that they have a script in the head tag. That script is:
    <script class="yext-synd-74qWXpBkYak=">
    (function () {
    var el = document.createElement('script');
    el.async = true;
    el.src = '//s.yext-listings.com/yext?aid=74qWXpBkYak%3D&city=&state=&zip=&latitude=&longitude=';
    (document.getElementsByTagName('head')[0] ||
    document.getElementsByTagName('body')[0]).appendChild(el);
    })();
    </script>
    They also have a form. That form is:
    <form title="Enter your zip and find a qualified, local locksmith" action="results.asp" method="POST">
    <p><font style="font-size: 19px; font-weight: 700">FIND A LOCKSMITH</font>
    <input type="text" value="14646" style="font-family: Arial; font-size: 22px; color: #666666; font-weight:bold;" onclick="this.value=''" size="5" name="zip">
    <input type="image" style="position: relative; top:5px" name="B1" src="images/smallgo2.jpg">
    </p>
    </form>
    When you enter your zip code into that form, I think it is passed to the el.src variable as a parsed string and sent to s.yext-listings.com/ like this://s.yext-listings.com/yext?aid=74qWXpBkYak%3D&city=&state=&zip=INSERT_ZIP_CODE_PASSED_FROM_THE_FORM_HERE&latitude=&longitu de=

    When you click the submit button on the form with an input zip code, it takes you to a page where there is a huge DIV block with this script executing inside it:
    <script class="yext-synd-74qWXpBkYak=">


    (function () {
    var el = document.createElement('script');
    el.async = true;
    el.src = '//s.yext-listings.com/yext?aid=74qWXpBkYak%3D&city=&state=&zip=33405&latitude=&longitude=';
    (document.getElementsByTagName('head')[0] ||
    document.getElementsByTagName('body')[0]).appendChild(el);



    })();



    </script>
    Well the result on the second page is a listing pulled from a database and laid out in the second page in a DIV block.


    My question! How do I emulate this on my website? I have the Yext service. I have been on the phone with the company for over a week now and I cant get any technical support on the integration. Apparently they are having a lot of lay offs and technical support is unavailable.

    I am assuming that I need to build a form in HTML and have it pass the zip code to that JavaScript snippet somehow? I also want to know how the JavaScript on the second page renders a listing result from that passed form value?

    Thank you so much for the help in advance. I know you guys can figure this out before I do.

  • #2
    Supreme Master coder! Old Pedant's Avatar
    Join Date
    Feb 2009
    Posts
    25,799
    Thanks
    78
    Thanked 4,411 Times in 4,376 Posts
    No, I think you are only partially right.

    Clearly that <form> you show is being passed a POST data to the ASP page given as the action=

    And then it is the ASP code that is putting the zip code in place in the el.src

    But that's all being done on the server, in the ASP code, so you'll never be able to see what the code is that is doing it. Not that it is other than trivial to do in ASP code.
    An optimist sees the glass as half full.
    A pessimist sees the glass as half empty.
    A realist drinks it no matter how much there is.

  • #3
    Supreme Master coder! Old Pedant's Avatar
    Join Date
    Feb 2009
    Posts
    25,799
    Thanks
    78
    Thanked 4,411 Times in 4,376 Posts
    Yep, that's what is happening.

    If you aren't going to use server-side coding (ASP/JSP/PHP) then you'll have to figure out how to do this in JS, instead. Not that it's too hard.

    For example:

    Code:
    var zip = "11111";
    
    (function () {
        var el = document.createElement('script');
        el.async = true;
        el.src = '//s.yext-listings.com/yext?aid=74qWXpBkYak%3D&city=&state=&zip=' + zip 
               + '&latitude=&longitude=';
       (document.getElementsByTagName('head')[0] ||
            document.getElementsByTagName('body')[0]).appendChild(el);
    })();
    But you'll have to figure out how/where to get the value of the variable zip from.
    An optimist sees the glass as half full.
    A pessimist sees the glass as half empty.
    A realist drinks it no matter how much there is.

  • #4
    New to the CF scene
    Join Date
    Dec 2011
    Posts
    5
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Thanks for the reply. That makes sense. My question is how would I pass a variable given to the form to the el.src variable?

    But the more important question I have is, how does the second page display the listing results. All I see is the same el.src script from the first page..

  • #5
    Supreme Master coder! Old Pedant's Avatar
    Join Date
    Feb 2009
    Posts
    25,799
    Thanks
    78
    Thanked 4,411 Times in 4,376 Posts
    > how does the second page display the listing results.

    ??? The second page has a zipcode, the first page doesn't. I would assume that when you give ZERO location information, then ytext doesn't respond with any listings. But you are using their service, you should know that from their documentaion.

    ******

    I have no idea if you really need two pages to do this or not. Quite possibly it can be done all in one page. I would need the docs from yext to hazard a guess.
    An optimist sees the glass as half full.
    A pessimist sees the glass as half empty.
    A realist drinks it no matter how much there is.

  • #6
    New to the CF scene
    Join Date
    Dec 2011
    Posts
    5
    Thanks
    0
    Thanked 0 Times in 0 Posts
    That's just it, there are non. Non available on there site, non available from them right now. There company is going through some changes and technical support is unavailable. I think I can work out passing a value to el.src. But the mystery to me is how is it that they are posting a listing? I looked at the second page and I just don't see what script is taking el.src and writing to the DOM a listing from it.

  • #7
    Supreme Master coder! Old Pedant's Avatar
    Join Date
    Feb 2009
    Posts
    25,799
    Thanks
    78
    Thanked 4,411 Times in 4,376 Posts
    That is a SELF INVOKING function.

    Code:
    (
        function () {
            var el = document.createElement('script');
            el.async = true;
            el.src = '//s.yext-listings.com/yext?aid=74qWXpBkYak%3D&city=&state=&zip=33405&latitude=&longitude=';
            ( document.getElementsByTagName('head')[0] ||
              document.getElementsByTagName('body')[0] ).appendChild(el);
       }
    )( );
    See the parentheses around the entire function definition? See the ( ) that then follows?

    So the function is defined. The enclosing parentheses make an expression out of it. The following ( ) cause the expression to be called (invoked) right then and there.

    Were I guessing, I would say that the code then either uses document.write or document.createElement() to create content right then and there and dump it into the page.

    Yeah, they have JSON encoded content in a variable named soyContent and then for each sub-object in the resultant object, they call attachPage(). Not sure how attachPage works (haven't tracked it down yet), but just based on the name I'd guess that it uses createElement and attachChild to add to the HTML content.

    It's actually pretty standard coding. They've just obscured it a bit to make it harder to crack, I guess.
    An optimist sees the glass as half full.
    A pessimist sees the glass as half empty.
    A realist drinks it no matter how much there is.

  • #8
    New to the CF scene
    Join Date
    Dec 2011
    Posts
    5
    Thanks
    0
    Thanked 0 Times in 0 Posts
    I dont know exactly what JSON encoded content is, but where is this code that is dumping data into a page? But how do I do what they are doing. Or is there just an easier way to do it myself? Maybe a code snippet? Thanks

  • #9
    New to the CF scene
    Join Date
    Dec 2011
    Posts
    5
    Thanks
    0
    Thanked 0 Times in 0 Posts
    I think I found the code that writes the second page. My question is, where in that code does it receive results from yest to use to write to the document?

    Code:
    <script>
    (function(){var goog=goog||{};goog.require=goog.provide=function(){};if(!goog.string)goog.string={};
    goog.string.htmlEscape=function(a,b){if(b)return a.replace(goog.string.amperRe_,"&amp;").replace(goog.string.ltRe_,"&lt;").replace(goog.string.gtRe_,"&gt;").replace(goog.string.quotRe_,"&quot;");else{if(!goog.string.allRe_.test(a))return a;if(a.indexOf("&")!=-1)a=a.replace(goog.string.amperRe_,"&amp;");if(a.indexOf("<")!=-1)a=a.replace(goog.string.ltRe_,"&lt;");if(a.indexOf(">")!=-1)a=a.replace(goog.string.gtRe_,"&gt;");if(a.indexOf('"')!=-1)a=a.replace(goog.string.quotRe_,"&quot;");return a}};
    goog.string.amperRe_=/&/g;goog.string.ltRe_=/</g;goog.string.gtRe_=/>/g;goog.string.quotRe_=/\"/g;goog.string.allRe_=/[&<>\"]/;var soy={$$escapeHtml:goog.string.htmlEscape};soy.$$changeNewlineToBr=function(a){a=String(a);if(!soy.$$CHANGE_NEWLINE_TO_BR_RE_.test(a))return a;return a.replace(/(\r\n|\r|\n)/g,"<br>")};soy.$$CHANGE_NEWLINE_TO_BR_RE_=/[\r\n]/;var yext={synd:{templates:{}}};
    goog.provide("yext.synd.templates");goog.require("soy");
    yext.synd.templates.displayListings=function(b){var d="";if(b.data.listings.length>0){d+='<br /><br /><h3 id="yextheader">Featured Listings by Yext</h3>';if(b.data.numPages>1){d+="<center>"+(b.data.currentPage>0?'<a id="'+soy.$$escapeHtml(b.data.className)+'-prev" href="javascript:;">\u00ab</a> ':"\u00ab ");var e=b.data.numPages;for(var c=0;c<e;c++)d+=c!=b.data.currentPage?'<a id="'+soy.$$escapeHtml(b.data.className)+"-"+soy.$$escapeHtml(c)+'" href="javascript:;">'+soy.$$escapeHtml(c+1)+"</a> ":soy.$$escapeHtml(c+
    1)+" ";d+=(b.data.currentPage<b.data.numPages-1?'<a id="'+soy.$$escapeHtml(b.data.className)+'-next" href="javascript:;">\u00bb</a>':"\u00bb")+"</center>"}b=b.data.listings;e=b.length;for(c=0;c<e;c++){var a=b[c];d+='<div class="loclisting"><div style="float:left; width:50%;"><b style="font-size:14px;"><a href="http://www.locksmith.com/details.asp?'+soy.$$escapeHtml(a.profileParams)+'" class="locname">'+soy.$$escapeHtml(a.name)+"</a></b><br>"+(a.address?'<div class="locaddress">'+soy.$$escapeHtml(a.address)+
    ","+(a.address2?soy.$$escapeHtml(a.address2)+",":"")+'</div><div class="loccity">'+soy.$$escapeHtml(a.city)+',</div> <div class="locstate">'+soy.$$escapeHtml(a.state)+'</div> <div class="zip">'+soy.$$escapeHtml(a.zip)+"</div>":'<div class="locaddress">Serving Your Area</div>')+'</div><!-- this /div closes the left-floating div, holding name & address --\><div class="locphone"><a href="http://www.locksmith.com/details.asp?'+soy.$$escapeHtml(a.profileParams)+'">'+(a.areaCode?"("+soy.$$escapeHtml(a.areaCode)+
    ") "+soy.$$escapeHtml(a.exchange)+"-"+soy.$$escapeHtml(a.lastFour):soy.$$escapeHtml(a.phone))+'</a></div><!-- /div closes locphone --\></div><!-- this /div closes loclisting --\><div style="height:0; clear:both;"><!-- spacer --\></div><a href="javascript:void(0)" onclick="" class="more" id="more'+soy.$$escapeHtml(c)+'">More Details</a><div id="details'+soy.$$escapeHtml(c)+'" class="details" style="display:none;"><div class="description">'+(a.description?soy.$$escapeHtml(a.description):"")+'</div><div class="services">'+
    (a.services?soy.$$escapeHtml(a.services):"")+'</div><div class="hours">'+(a.hours?soy.$$escapeHtml(a.hours):"")+'</div></div><a href="javascript:void(0)" onclick="" class="less" id="less'+soy.$$escapeHtml(c)+'" style="display:none;">Less Details</a><div style="height:0; clear:both;"><!--spacer--\></div>'}}return d};var adUnitId="74qWXpBkYak=";var templateFn=yext.synd.templates.displayListings;var soyContext={"data":{"currentPage":0,"numPages":1,"listings":[{"zip":"33401","services":"Locksmiths, 24 Hour Locksmiths, Auto Locksmiths, Commercial Locksmiths, Emergency Locksmiths, Residential Locksmiths, Lock Installation, Lock Repair, Master Key Services, Re-key Services, Biometric Locks, Combination Locks, Digital Locks, Magnetic Locks, Alarm Systems, CCTV Systems, Intercom Systems","phone":"5613707659","adLevel":"GOLD","areaCode":"561","hours":"M-Su 24hr","link":"http://www.yext-listings.com/l/firstplaceinternet/pls-locksmith-miami2.html?srid=QdH%2Fe6hIUwugcsOoPel0Lg%3D%3D","state":"FL","city":"West Palm Beach","product":"CALLS","description":"Welcome to P.L.S locksmith # 1 in customer satisfaction. \r\n\r\nWe are a mobile service, we do not have a physical location!\r\n\r\nWe do not make motorcycle keys!\r\n\r\nWe offer 24/7 local mobile locksmith service, fast response time to all of your residential, commercial and automotive locksmith service needs. \r\nIf you're in need of locksmith service or emergency locksmith service all across the country, you can count on us to be there for you and provide fast professional and affordable locksmith service. \r\nIf you're locked out of your car, home or business and are in need of emergency service, please call us, We offer a wide range of locksmith services all across the country.\r\nP.L.S Locksmith is a family owned and operated business that believes customer service is very important for future refrences and company growth. \r\nCall us today and experience the P.L.S way. \r\nIf you are a realtor, bank or property manager and need Locksmith service, contact us to disscus special corprate pricing. We will beat any reasonable estimate! \r\nSome of our locksmith services include: \r\n\u2022Basic, medium, and high security locks \r\n\u2022Residential lockout \r\n\u2022Commercial lockout \r\n\u2022Master key system \r\n\u2022Car lockout \r\n\u2022Car keys/chip keys, cut and programmed \r\n\u2022Residential locks \r\n\u2022Commercial locks \r\n\u2022Safes","name":"P.L.S. Locksmith","profileParams":"loc=pls-locksmith-miami2&pid=QdH%2Fe6hIUwugcsOoPel0Lg%3D%3D","longitude":-80.05806,"latitude":26.719854,"profileURL":"http://www.yext-listings.com/l/firstplaceinternet/pls-locksmith-miami2.html?srid=QdH%2Fe6hIUwugcsOoPel0Lg%3D%3D","lastFour":"7659","exchange":"370"},{"zip":"33480","services":"Locksmiths, 24 Hour Locksmiths, Auto Locksmiths, Commercial Locksmiths, Emergency Locksmiths, Residential Locksmiths, Lock Installation, Lock Repair, Master Key Services, Re-key Services, Biometric Locks, Combination Locks, Digital Locks, Magnetic Locks, Alarm Systems, CCTV Systems, Intercom Systems, Key Copies, Key Cuts","phone":"9543434977","adLevel":"GOLD","areaCode":"954","hours":"M-Su 24hr","link":"http://www.yext-listings.com/l/firstplaceinternet/locksmith-point-palm-beach-florida.html?srid=QdH%2Fe6hIUwugcsOoPel0Lg%3D%3D","state":"FL","city":"Palm Beach","product":"CALLS","name":"Locksmith Point","profileParams":"loc=locksmith-point-palm-beach-florida&pid=QdH%2Fe6hIUwugcsOoPel0Lg%3D%3D","longitude":-80.038948,"latitude":26.7174,"profileURL":"http://www.yext-listings.com/l/firstplaceinternet/locksmith-point-palm-beach-florida.html?srid=QdH%2Fe6hIUwugcsOoPel0Lg%3D%3D","lastFour":"4977","exchange":"343"},{"zip":"33076","services":"Locksmiths, 24 Hour Locksmiths, Auto Locksmiths, Commercial Locksmiths, Emergency Locksmiths, Residential Locksmiths, Lock Installation, Lock Repair, Master Key Services, Re-key Services, Biometric Locks, Combination Locks, Digital Locks, Magnetic Locks, Alarm Systems, CCTV Systems","phone":"9548710997","adLevel":"GOLD","areaCode":"954","hours":"M-Su 24hr","link":"http://www.yext-listings.com/l/firstplaceinternet/1-respond-locksmith-pompano-beach-florida.html?srid=QdH%2Fe6hIUwugcsOoPel0Lg%3D%3D","state":"FL","city":"Pompano Beach","product":"CALLS","description":"1 Respond Locksmith Provides 24 hour residential locksmith solutions for private homes and commercial locksmith services for corporations in small communities and metropolitan areas alike. We also provide auto locksmith services for car lockout emergencies. All of our security expert technicians are licensed insured and backed by a national service provider with a strong brand name. We not only guarantee the most professional service you will receive, but the quickest solutions to your security needs as well. We specialize in lock changing, lock installation, and lock re-key, car lockouts, ignition keys, high security locks, intercom systems, CCtv, gate installation, garage doors and more. Not only are we professional locksmiths, but we also pride ourselves on the high quality customer service. 1 Respond Locksmith is experienced in residential, commercial, emergency, and automotive locksmith services.What ever you problem may be we have an option for you and we are only 15 minutes away.","name":"1 Respond Locksmith","profileParams":"loc=1-respond-locksmith-pompano-beach-florida&pid=QdH%2Fe6hIUwugcsOoPel0Lg%3D%3D","longitude":-80.140514,"latitude":26.250007,"profileURL":"http://www.yext-listings.com/l/firstplaceinternet/1-respond-locksmith-pompano-beach-florida.html?srid=QdH%2Fe6hIUwugcsOoPel0Lg%3D%3D","lastFour":"0997","exchange":"871"},{"zip":"33065","services":"Locksmiths, 24 Hour Locksmiths, Auto Locksmiths, Commercial Locksmiths, Emergency Locksmiths, Residential Locksmiths, Lock Installation, Lock Repair, Master Key Services, Re-key Services, Biometric Locks, Combination Locks, Digital Locks, Magnetic Locks, Alarm Systems, CCTV Systems, Intercom Systems","phone":"9547806965","adLevel":"GOLD","areaCode":"954","hours":"M-Su 24hr","link":"http://www.yext-listings.com/l/firstplaceinternet/pls-locksmith-coral-springs-florida.html?srid=QdH%2Fe6hIUwugcsOoPel0Lg%3D%3D","state":"FL","city":"Coral Springs","product":"CALLS","description":"Welcome to P.L.S locksmith # 1 in customer satisfaction. \r\n\r\nWe are a mobile service, we do not have a physical location!\r\n\r\nWe do not make motorcycle keys!\r\n\r\nWe offer 24/7 local mobile locksmith service, fast response time to all of your residential, commercial and automotive locksmith service needs. \r\nIf you're in need of locksmith service or emergency locksmith service all across the country, you can count on us to be there for you and provide fast professional and affordable locksmith service. \r\nIf you're locked out of your car, home or business and are in need of emergency service, please call us, We offer a wide range of locksmith services all across the country.\r\nP.L.S Locksmith is a family owned and operated business that believes customer service is very important for future refrences and company growth. \r\nCall us today and experience the P.L.S way. \r\nIf you are a realtor, bank or property manager and need Locksmith service, contact us to disscus special corprate pricing. We will beat any reasonable estimate! \r\nSome of our locksmith services include: \r\n\u2022Basic, medium, and high security locks \r\n\u2022Residential lockout \r\n\u2022Commercial lockout \r\n\u2022Master key system \r\n\u2022Car lockout \r\n\u2022Car keys/chip keys, cut and programmed \r\n\u2022Residential locks \r\n\u2022Commercial locks \r\n\u2022Safes","name":"PLS Locksmith","profileParams":"loc=pls-locksmith-coral-springs-florida&pid=QdH%2Fe6hIUwugcsOoPel0Lg%3D%3D","longitude":-80.260448,"latitude":26.27102,"profileURL":"http://www.yext-listings.com/l/firstplaceinternet/pls-locksmith-coral-springs-florida.html?srid=QdH%2Fe6hIUwugcsOoPel0Lg%3D%3D","lastFour":"6965","exchange":"780"},{"zip":"33321","services":"Locksmiths, 24 Hour Locksmiths, Auto Locksmiths, Commercial Locksmiths, Emergency Locksmiths, Residential Locksmiths, Lock Installation, Lock Repair, Master Key Services, Re-key Services, Biometric Locks, Combination Locks, Digital Locks, Magnetic Locks, Alarm Systems, CCTV Systems, Intercom Systems","phone":"9548745816","adLevel":"GOLD","areaCode":"954","hours":"M-Su 24hr","link":"http://www.yext-listings.com/l/firstplaceinternet/mobile-locksmith-tamarac-florida.html?srid=QdH%2Fe6hIUwugcsOoPel0Lg%3D%3D","state":"FL","city":"Tamarac","product":"CALLS","description":"Welcome to our locksmith # 1 in customer satisfaction. \r\nWe offer 24/7 local mobile locksmith service, fast response time to all of your residential, commercial and automotive locksmith service needs. \r\nIf you're in need of locksmith service or emergency locksmith service all across Florida, you can count on us to be there for you and provide fast professional and affordable locksmith service. \r\nIf you're locked out of your car, home or business and are in need of emergency service, please call us, We offer a wide range of locksmith services all across Florida.\r\nOur Locksmith is a family owned and operated business that believes customer service is very important for future references and company growth. \r\nCall us today and experience our way. \r\nIf you are a Realtor, bank or property manager and need Locksmith service, contact us to discuss special corporate pricing. We will beat any reasonable estimate! \r\nSome of our locksmith services include: \r\n\u2022Basic, medium, and high security locks \r\n\u2022Residential lockout \r\n\u2022Commercial lockout \r\n\u2022Master key system \r\n\u2022Car lockout \r\n\u2022Car keys/chip keys, cut and programmed \r\n\u2022Residential locks \r\n\u2022Commercial locks \r\n\u2022Safes","name":"24/7 Local Locksmith","profileParams":"loc=mobile-locksmith-tamarac-florida&pid=QdH%2Fe6hIUwugcsOoPel0Lg%3D%3D","longitude":-80.27092,"latitude":26.215053,"profileURL":"http://www.yext-listings.com/l/firstplaceinternet/mobile-locksmith-tamarac-florida.html?srid=QdH%2Fe6hIUwugcsOoPel0Lg%3D%3D","lastFour":"5816","exchange":"874"}]}};var listings=soyContext.data.listings;var beaconImageUrl="//s.yext-numbers.com/imp?pid=QdH%2Fe6hIUwugcsOoPel0Lg%3D%3D";
    var reqUrl='//s.yext-numbers.com/yext?aid=74qWXpBkYak%3D&city=&state=&zip=33405&latitude=&longitude=';
    var yextGlobal;yextGlobal=typeof window.__YEXT__=="undefined"?window.__YEXT__={}:window.__YEXT__;
    var className="yext-synd-"+adUnitId,findScriptTagWithoutAd=function(){var a=document.getElementsByTagName("script");for(var b=0;b<a.length;b++){var c=a[b];if(c.className==className)return c}},findAd=function(){var a=document.getElementsByTagName("script");for(var b=0;b<a.length;b++){var c=a[b];if(c.className==className)if((c=c.nextSibling)&&c.className==className)return c}},changePage=function(a,b,c){if(b=findAd(b)){b.context.data.currentPage=c;b.innerHTML=templateFn(b.context);(function(){var d=
    document.createElement("script");d.async=true;d.src=a+"&page="+c;(document.getElementsByTagName("head")[0]||document.getElementsByTagName("body")[0]).appendChild(d)})()}},attach=function(a,b){a.addEventListener?a.addEventListener("click",b,false):a.attachEvent("onclick",b)},attachPage=function(a,b,c,d){attach(a,function(){changePage(b,c,d)})},scriptEl=findScriptTagWithoutAd(),renderGadget=function(){soyContext.data.className=className;var a=document.createElement("div");a.innerHTML=templateFn(soyContext);
    a.context=soyContext;a.className=className;scriptEl.nextSibling&&scriptEl.nextSibling.className==className&&scriptEl.parentNode.removeChild(scriptEl.nextSibling);scriptEl.parentNode.insertBefore(a,scriptEl.nextSibling);(a=document.getElementById(className+"-prev"))&&attachPage(a,reqUrl,className,soyContext.data.currentPage-1);for(a=0;a<soyContext.data.numPages;a++){var b=document.getElementById(className+"-"+a);b&&attachPage(b,reqUrl,className,a)}(a=document.getElementById(className+"-next"))&&attachPage(a,
    reqUrl,className,soyContext.data.currentPage+1);if(beaconImageUrl)(new Image).src=beaconImageUrl};scriptEl&&renderGadget();
    })();
    </script>


  •  

    Posting Permissions

    • You may not post new threads
    • You may not post replies
    • You may not post attachments
    • You may not edit your posts
    •