PageSourceSearch

https://www.usagm.gov/wp-content/themes/bbgRedesign/js/bbginnovate.js?ver=20160223

js usagm.gov collected 2026-10-02 04:00:59 UTC 33,292 bytes, 770 lines download raw bytes

1jQuery(document).ready(function() { 
2  
3   function friendlyName(str) {
4     var names={};
5     names["amazon"]="Amazon";
6     names["binu"]="biNu";
7     names["getjar"]="GetJar";
8     names["google"]="Google";
9     names["opera"]="Opera";
10     names["safaricom"]="Safari";
11     names["imimobile"]="IMImobile";
12     names["vodacom"]="Vodacom";
13     names["iOS"]="Apple iOS";
14
15     var niceName=str;
16     if (names.hasOwnProperty(str)) {
17        niceName=names[str];
18     }
19     return niceName;
20
21   }
22
23  function initJavaSelect() {
24    //for an example of this in action, see http://innovation.bbg.gov/blog/bbgs-new-java-based-apps-are-built-for-very-low-end-or-feature-phones/
25    entities = [{
26        "value": "VOA",
27        "display": "VOA News"
28    }, {
29        "value": "Alhurra",
30        "display": "Alhurra TV"
31    }, {
32        "value": "Marti",
33        "display": "Martí Noticias"
34    }, {
35        "value": "RFERL",
36        "display": "Radio Free Europe/Radio Liberty"
37    }, {
38        "value": "RFA",
39        "display": "Radio Free Asia"
40    }];
41  
42
43    stores = ["binu", "opera", "getjar"];
44
45    var links={};
46    links["Alhurra"]={};
47    links["Alhurra"]["binu"]={};
48    links["Alhurra"]["getjar"]={};
49    links["Alhurra"]["opera"]={};
50    links["Alhurra"]["binu"]["multi"]="http://m.binu.com/alh/";
51    links["Alhurra"]["getjar"]["multi"]="http://www.getjar.mobi/mobile/848171/-Alhurra-for-Java-Phones";
52    links["Alhurra"]["opera"]["multi"]="http://java.apps.opera.com/en_us/alhurra_for_java_phones.html?dm=1&multi=1";
53
54    links["Marti"]={};
55    links["Marti"]["binu"]={};
56    links["Marti"]["getjar"]={};
57    links["Marti"]["opera"]={};
58    links["Marti"]["binu"]["multi"]="http://m.binu.com/mar/";
59    links["Marti"]["getjar"]["multi"]="http://www.getjar.mobi/mobile/848168/OCB-Mart-Noticias-for-Java-Phones";
60    links["Marti"]["opera"]["multi"]="http://java.apps.opera.com/en_us/marti_noticias_for_java_phones.html?dm=1&multi=1";
61
62    links["RFA"]={};
63    links["RFA"]["binu"]={};
64    links["RFA"]["getjar"]={};
65    links["RFA"]["opera"]={};
66    links["RFA"]["binu"]["multi"]="http://m.binu.com/rfa/";
67    links["RFA"]["getjar"]["Chinese_Simplified"]="http://www.getjar.mobi/mobile/848351/RFA-Chinese-Simplified-for-Java-Phones";
68    links["RFA"]["getjar"]["Chinese_Traditional"]="http://www.getjar.mobi/mobile/848352/RFA-Chinese-Traditional-for-Java-Phones";
69    links["RFA"]["getjar"]["English"]="http://www.getjar.mobi/mobile/848349/RFA-English-for-Java-Phones";
70    links["RFA"]["getjar"]["Korean"]="http://www.getjar.mobi/mobile/848353/RFA-Korean-for-Java-Phones";
71    links["RFA"]["getjar"]["Vietnamese"]="http://www.getjar.mobi/mobile/848354/RFA-Vietnamese-for-Java-Phones";
72    links["RFA"]["opera"]["multi"]="http://java.apps.opera.com/en_us/radio_free_asia_rfa_for_java_phones.html?dm=1&multi=1&set_lang=en";
73
74    links["RFERL"]={};
75    links["RFERL"]["binu"]={};
76    links["RFERL"]["getjar"]={};
77    links["RFERL"]["opera"]={};
78    links["RFERL"]["binu"]["multi"]="http://m.binu.com/rfe/";
79    links["RFERL"]["getjar"]["Belarusian"]="http://www.getjar.mobi/mobile/848341/RFERL-Belarusian-for-Java-Phones";
80    links["RFERL"]["getjar"]["English"]="http://www.getjar.mobi/mobile/848340/RFERL-English-for-Java-Phones";
81    links["RFERL"]["getjar"]["Persian"]="http://www.getjar.mobi/mobile/848343/RFERL-Persian-for-Java-Phones";
82    links["RFERL"]["getjar"]["Russian"]="http://www.getjar.mobi/mobile/848344/RFERL-Russian-for-Java-Phones";
83    links["RFERL"]["getjar"]["Ukrainian"]="http://www.getjar.mobi/mobile/848345/RFERL-Ukrainian-for-Java-Phones";
84    links["RFERL"]["opera"]["multi"]="http://java.apps.opera.com/en_us/rferl_for_java_phones.html?dm=1&multi=1&set_lang=en";
85
86    links["VOA"]={};
87    links["VOA"]["binu"]={};
88    links["VOA"]["getjar"]={};
89    links["VOA"]["opera"]={};
90    links["VOA"]["binu"]["multi"]="http://m.binu.com/voa/";     
91    links["VOA"]["getjar"]["English"] = "http://www.getjar.mobi/mobile/847025/VOA-News-for-Java-Phones";
92    links["VOA"]["getjar"]["French"] = "http://www.getjar.mobi/mobile/848176/VOA-French-for-Java-Phones";
93    links["VOA"]["getjar"]["Indonesian"] = "http://www.getjar.mobi/mobile/848263/VOA-Indonesian-for-Java-Phones";
94    links["VOA"]["getjar"]["Korean"] = "http://www.getjar.mobi/mobile/848269/VOA-Korean-for-Java-Phones";
95    links["VOA"]["getjar"]["Persian"] = "http://www.getjar.mobi/mobile/848262/VOA-Persian-for-Java-Phones";
96    links["VOA"]["getjar"]["Portuguese"] = "http://www.getjar.mobi/mobile/848253/VOA-Portuguese-for-Java-Phones";
97    links["VOA"]["getjar"]["Russian"] = "http://www.getjar.mobi/mobile/848272/VOA-Russian-for-Java-Phones";
98    links["VOA"]["getjar"]["Serbian"] = "http://www.getjar.mobi/mobile/848274/VOA-Serbian-for-Java-Phones";
99    links["VOA"]["getjar"]["Spanish"] = "http://www.getjar.mobi/mobile/848260/VOA-Spanish-for-Java-Phones";
100    links["VOA"]["getjar"]["Swahili"] = "http://www.getjar.mobi/mobile/848254/VOA-Swahili-for-Java-Phones";
101    links["VOA"]["getjar"]["Thai"] = "http://www.getjar.mobi/mobile/848264/VOA-Thai-for-Java-Phones";
102    links["VOA"]["getjar"]["Turkish"] = "http://www.getjar.mobi/mobile/848271/VOA-Turkish-for-Java-Phones";
103    links["VOA"]["getjar"]["Ukrainian"] = "http://www.getjar.mobi/mobile/848273/VOA-Ukrainian-for-Java-Phones";
104    links["VOA"]["getjar"]["Vietnamese"] = "http://www.getjar.mobi/mobile/848268/VOA-Vietnamese-for-Java-Phones";
105    links["VOA"]["getjar"]["Amharic"] = "http://www.getjar.mobi/mobile/848255/VOA-Amharic-for-Java-Phones";
106    links["VOA"]["getjar"]["Chinese Simplified"] = "http://www.getjar.mobi/mobile/848265/VOA-Chinese-Simplified-for-Java-Phones";
107    links["VOA"]["getjar"]["Chinese Traditional"] = "http://www.getjar.mobi/mobile/848266/VOA-Chinese-Traditional-for-Java-Phones";
108    links["VOA"]["opera"]["multi"]="http://java.apps.opera.com/en_us/voa_news_for_java_phones.html?dm=1&multi=1&set_lang=en";
109
110    /*** Populate the entity selector ****/
111    var str = "";
112    for (var i = 0; i < entities.length; i++) {
113        str += "<option value=" + entities[i].value + ">" + entities[i].display + "</option>";
114    }
115    jQuery("#appSelect-java select[name=entity]").append(str);
116
117    /*** Populate the store selector ****/
118    str="";
119    for (var i = 0; i < stores.length; i++) {
120        str += "<option value=" + stores[i] + ">" + friendlyName(stores[i]) + "</option>";
121    }
122    jQuery("#appSelect-java select[name=store]").append(str);    
123    jQuery("#stores").hide();
124
125    
126
127    /*** Show the form (we keep it hidden until it has data) ****/
128    jQuery("#appSelect-java").css("display", "block");
129
130    function refreshLanguages() {
131        jQuery("select[name=language]").empty();
132        var selectedEntity= jQuery("select[name=entity]").val();
133        var selectedStore= jQuery("select[name=store]").val();
134        var languages = links[selectedEntity][selectedStore];
135
136        var str = '<option value="" disabled selected>Select a language</option>';
137        var hasMulti=false;
138        for (var key in languages) {
139            if (languages.hasOwnProperty(key)) {
140                if (key == "multi") {
141                    hasMulti=true;
142                } else {
143                    str += "<option value=" + key + ">" + key + "</option>";
144                }
145            }
146        }
147
148        jQuery("select[name=language]").append(str);    
149        if (!hasMulti) {
150            jQuery("#languages").show();
151            jQuery("select[name=language]").prop('selectedIndex',0);
152            jQuery("input[name=btnGo]").hide();
153        } else {
154
155            jQuery("#languages").hide();
156            jQuery("select[name=language]").prop('selectedIndex',1);
157            jQuery("input[name=btnGo]").show();
158        }
159    }
160
161    /*** when entity is changed, clear the store selection and remove language options***/
162    jQuery("select[name=entity]").change(function() {
163        var newEntity = jQuery(this).val();
164        jQuery("#appSelect-java select[name=store]").prop('selectedIndex',0);
165        jQuery("#appSelect-java select[name=language]").empty();
166        jQuery("#languages").hide();
167        jQuery("input[name=btnGo]").hide();
168        jQuery("#stores").show();
169
170    })
171
172    /*** when store is changed, fill in the languages ***/
173    jQuery("select[name=store]").change(function() {
174        var storeValue = jQuery("select[name=store]").val();
175        if (storeValue != "") {
176            refreshLanguages();
177        } else {
178            jQuery("#languages").hide();
179            jQuery("input[name=btnGo]").hide();
180        }
181    })
182
183    jQuery("select[name=language]").change(function() {
184        jQuery("input[name=btnGo]").show();
185    });
186
187    jQuery("input[name=btnGo]").click(function() {
188        var entityValue = jQuery("select[name=entity]").val();
189        var storeValue = jQuery("select[name=store]").val();
190        var languageValue = jQuery("select[name=language] option:selected").text();
191        var targetUrl = "";
192        if (links[entityValue][storeValue].hasOwnProperty("multi")) {
193            targetUrl=links[entityValue][storeValue]["multi"];
194        } else {
195            targetUrl=links[entityValue][storeValue][languageValue];
196        }
197        if (targetUrl != "") {
198            window.open(targetUrl, '_blank');
199        }
200    });
201
202    jQuery("#languages").hide();
203    jQuery("input[name=btnGo]").hide();
204
205  }
206
207  function initSmartphoneSelect() {
208    //see http://innovation.bbg.gov/blog/mobile-news-apps/
209    console.log("initSmartphoneSelect");
210
211    var iOSLinks={}
212    iOSLinks["Alhurra"]="https://itunes.apple.com/app/alhurra/id639637717?ls=1&mt=8";
213    iOSLinks["Marti"]="https://itunes.apple.com/app/marti-noticias/id639624682?mt=8";
214    iOSLinks["RFA"]="https://itunes.apple.com/app/rfa/id744921169?ls=1&mt=8";
215    iOSLinks["RFERL"]="https://itunes.apple.com/app/id475986784";
216    iOSLinks["VOA"]="https://itunes.apple.com/app/voa/id632618796?ls=1&mt=8";
217
218
219
220    var stores = ["amazon", "getjar", "google", "opera"];
221
222    var entities = [{
223        "value": "VOA",
224        "display": "VOA News"
225    }, {
226        "value": "Alhurra",
227        "display": "Alhurra TV"
228    }, {
229        "value": "Marti",
230        "display": "Martí Noticias"
231    }, {
232        "value": "RFERL",
233        "display": "Radio Free Europe/Radio Liberty"
234    }, {
235        "value": "RFA",
236        "display": "Radio Free Asia"
237    }];
238
239    var links={};
240    links["Alhurra"]={};
241    links["Alhurra"]["amazon"]={};
242    links["Alhurra"]["google"]={};
243    links["Alhurra"]["opera"]={};
244    links["Alhurra"]["getjar"]={};
245    links["Alhurra"]["amazon"]["multi"]="http://www.amazon.com/gp/mas/dl/android?p=gov.bbg.mbn";
246    links["Alhurra"]["google"]["multi"]="https://play.google.com/store/apps/details?id=gov.bbg.mbn&hl=en";
247    links["Alhurra"]["opera"]["multi"]="http://apps.opera.com/en_us/alhurra.html?dm=1&multi=1";
248    links["Alhurra"]["getjar"]["Arabic"]="http://www.getjar.mobi/mobile/812946/";
249    links["Alhurra"]["getjar"]["English"]="http://www.getjar.mobi/mobile/812939/Alhurra";
250
251
252    links["Marti"]={};
253    links["Marti"]["amazon"]={};
254    links["Marti"]["google"]={};
255    links["Marti"]["opera"]={};
256    links["Marti"]["getjar"]={};
257    links["Marti"]["amazon"]["multi"]="http://www.amazon.com/gp/mas/dl/android?p=gov.bbg.ocb";
258    links["Marti"]["google"]["multi"]="https://play.google.com/store/apps/details?id=gov.bbg.ocb";
259    links["Marti"]["opera"]["multi"]="http://apps.opera.com/en_us/mart_noticias.html?dm=1&multi=1";
260    links["Marti"]["getjar"]["English"]="http://www.getjar.mobi/mobile/771913/martinoticias";
261    links["Marti"]["getjar"]["Spanish"]="http://www.getjar.mobi/mobile/812951/OCB-Mart-Noticias";
262
263    links["RFA"]={};
264    links["RFA"]["amazon"]={};
265    links["RFA"]["google"]={};
266    links["RFA"]["opera"]={};
267    links["RFA"]["getjar"]={};
268    links["RFA"]["amazon"]["multi"]="http://www.amazon.com/gp/mas/dl/android?p=gov.bbg.rfa";
269    links["RFA"]["google"]["multi"]="https://play.google.com/store/apps/details?id=gov.bbg.rfa";
270    links["RFA"]["opera"]["multi"]="http://apps.opera.com/en_us/radio_free_asia.html?dm=1&multi=1";
271    links["RFA"]["getjar"]["Chinese Simplified"]="http://www.getjar.mobi/mobile/813207/-Simplified-Chinese";
272    links["RFA"]["getjar"]["Chinese Traditional"]="http://www.getjar.mobi/mobile/841500/-Traditional-Chinese";
273    links["RFA"]["getjar"]["English"]="http://www.getjar.mobi/mobile/812723/RFA";
274    links["RFA"]["getjar"]["Korean"]="http://www.getjar.mobi/mobile/813208/";
275
276    
277    links["RFERL"]={};
278    links["RFERL"]["amazon"]={};
279    links["RFERL"]["google"]={};
280    links["RFERL"]["opera"]={};
281    links["RFERL"]["getjar"]={};
282    links["RFERL"]["amazon"]["multi"]="http://www.amazon.com/gp/mas/dl/android?p=org.rferl.en";
283    links["RFERL"]["google"]["multi"]="https://play.google.com/store/apps/details?id=org.rferl.en";
284    links["RFERL"]["opera"]["multi"]="http://apps.opera.com/en_us/rferl.html?dm=1&multi=1";
285    links["RFERL"]["getjar"]["Belarusian"]="http://www.getjar.mobi/mobile/813214/RFE-";
286    links["RFERL"]["getjar"]["English"]="http://www.getjar.mobi/mobile/812940/RFE";
287    links["RFERL"]["getjar"]["Persian"]="http://www.getjar.mobi/mobile/813215/-";
288    links["RFERL"]["getjar"]["Russian"]="http://www.getjar.mobi/mobile/813217/RFE-";
289    links["RFERL"]["getjar"]["Ukrainian"]="http://www.getjar.mobi/mobile/813218/RFE-";
290
291    
292    links["VOA"]={};
293    links["VOA"]["amazon"]={};
294    links["VOA"]["google"]={};
295    links["VOA"]["opera"]={};
296    links["VOA"]["getjar"]={}; 
297    links["VOA"]["amazon"]["multi"]="http://www.amazon.com/gp/mas/dl/android?p=gov.bbg.voa";
298    links["VOA"]["google"]["multi"]="https://play.google.com/store/apps/details?id=gov.bbg.voa";
299    links["VOA"]["opera"]["multi"]="http://apps.opera.com/en_us/voa_news.html?dm=1&multi=1";
300    links["VOA"]["getjar"]["Amharic"] = "http://www.getjar.mobi/mobile/812952/";
301    links["VOA"]["getjar"]["Chinese Simplified"] = "http://www.getjar.mobi/mobile/812943/";
302    links["VOA"]["getjar"]["Chinese Traditional"] = "http://www.getjar.mobi/mobile/812945/";
303    links["VOA"]["getjar"]["English"] = "http://www.getjar.mobi/mobile/812715/Voice-of-America";
304    links["VOA"]["getjar"]["French"] = "http://www.getjar.mobi/mobile/812953/VOA-French";
305    links["VOA"]["getjar"]["Indonesian"] = "http://www.getjar.mobi/mobile/812955/VOA-Indonesia";
306    links["VOA"]["getjar"]["Korean"] = "http://www.getjar.mobi/mobile/812956/VOA-";
307    links["VOA"]["getjar"]["Persian"] = "http://www.getjar.mobi/mobile/812957/-";
308    links["VOA"]["getjar"]["Portuguese"] = "http://www.getjar.mobi/mobile/812960/VOA-Portugus";
309    links["VOA"]["getjar"]["Russian"] = "http://www.getjar.mobi/mobile/813024/-";
310    links["VOA"]["getjar"]["Serbian"] = "http://www.getjar.mobi/mobile/813040/Glas-Amerike";
311    links["VOA"]["getjar"]["Spanish"] = "http://www.getjar.mobi/mobile/813042/Voz-de-Amrica";
312    links["VOA"]["getjar"]["Swahili"] = "http://www.getjar.mobi/mobile/813043/VOA-Swahili";
313    links["VOA"]["getjar"]["Thai"] = "http://www.getjar.mobi/mobile/813044/VOA-Thai";
314    links["VOA"]["getjar"]["Turkish"] = "http://www.getjar.mobi/mobile/813196/VOA-Turkish";
315    links["VOA"]["getjar"]["Ukrainian"] = "http://www.getjar.mobi/mobile/813197/VOA-";
316    links["VOA"]["getjar"]["Vietnamese"] = "http://www.getjar.mobi/mobile/813205/VOA-Ting-Vit";
317
318    /*** Populate the entity selector ****/
319    var str = "";
320    for (var i = 0; i < entities.length; i++) {
321        str += "<option value=" + entities[i].value + ">" + entities[i].display + "</option>";
322    }
323    jQuery("#appSelect-smartphone-android select[name=entity]").append(str);
324    jQuery("#appSelect-smartphone-iOS select[name=entity]").append(str);
325
326    /*** Populate the store selector ****/
327    str="";
328    for (var i = 0; i < stores.length; i++) {
329        str += "<option value=" + stores[i] + ">" + friendlyName(stores[i]) + "</option>";
330    }
331    jQuery("select[name=store]").append(str);    
332    jQuery("#stores").hide();
333    
334
335    /*** Show the form (we keep it hidden until it has data) ****/
336    //jQuery("#appSelect-smartphone-iOS").css("display", "block");
337    //jQuery("#appSelect-smartphone-android").css("display", "block");
338
339    function refreshLanguages() {
340
341        jQuery("select[name=language]").empty();
342        var selectedEntity= jQuery("#appSelect-smartphone-android select[name=entity]").val();
343        var selectedStore= jQuery("select[name=store]").val();
344        var languages = links[selectedEntity][selectedStore];
345
346        var str = '<option value="" disabled selected>Select a language</option>';
347        var hasMulti=false;
348        for (var key in languages) {
349            if (languages.hasOwnProperty(key)) {
350                if (key == "multi") {
351                    hasMulti=true;
352                } else {
353                    str += "<option value=" + key + ">" + key + "</option>";
354                }
355            }
356        }
357
358        jQuery("select[name=language]").append(str);    
359        if (!hasMulti) {
360            jQuery("#languages").show();
361            jQuery("select[name=language]").prop('selectedIndex',0);
362            jQuery("input[name=btnGo]").hide();
363        } else {
364
365            jQuery("#languages").hide();
366            jQuery("select[name=language]").prop('selectedIndex',1);
367            jQuery("input[name=btnGo]").show();
368        }
369    }
370
371    jQuery("input[name=os]").change(function() {
372        var newOS = jQuery(this).val();
373        console.log("os is " + newOS);
374        if (newOS == "iOS") {
375            jQuery("form#appSelect-smartphone-android").hide();
376            jQuery("form#appSelect-smartphone-iOS").show();
377        } else {
378            jQuery("form#appSelect-smartphone-android").show();
379            jQuery("form#appSelect-smartphone-iOS").hide();
380        }
381    });
382
383    /*** when entity is changed, clear the store selection and remove language options***/
384    jQuery("#appSelect-smartphone-android select[name=entity]").change(function() {
385        var newEntity = jQuery(this).val();
386        jQuery("#appSelect-smartphone-android select[name=store]").prop('selectedIndex',0);
387        jQuery("#appSelect-smartphone-android select[name=language]").empty();
388        jQuery("#languages").hide();
389        jQuery("input[name=btnGo]").hide();
390        jQuery("#stores").show();
391
392    })
393    jQuery("#appSelect-smartphone-iOS select[name=entity]").change(function() {
394        var newEntity = jQuery(this).val();
395        jQuery("input[name=btnGoIOS]").show();
396
397    })
398
399    /*** when store is changed, fill in the languages ***/
400    jQuery("select[name=store]").change(function() {
401        var storeValue = jQuery("select[name=store]").val();
402        if (storeValue != "") {
403            refreshLanguages();
404        } else {
405            jQuery("#languages").hide();
406            jQuery("input[name=btnGo]").hide();
407        }
408    })
409
410    jQuery("select[name=language]").change(function() {
411        jQuery("input[name=btnGo]").show();
412    });
413
414    jQuery("input[name=btnGo]").click(function() {
415        var entityValue = jQuery("#appSelect-smartphone-android select[name=entity]").val();
416        var storeValue = jQuery("select[name=store]").val();
417        var languageValue = jQuery("select[name=language] option:selected").text();
418        var targetUrl = "";
419        if (links[entityValue][storeValue].hasOwnProperty("multi")) {
420            targetUrl=links[entityValue][storeValue]["multi"];
421        } else {
422            targetUrl=links[entityValue][storeValue][languageValue];
423        }
424        if (targetUrl != "") {
425            window.open(targetUrl, '_blank');
426        }
427    });
428
429    jQuery("input[name=btnGoIOS]").click(function() {
430        var entityValue = jQuery("#appSelect-smartphone-iOS select[name=entity]").val();
431        var targetUrl="";
432        if (iOSLinks.hasOwnProperty(entityValue)) {
433            targetUrl=iOSLinks[entityValue];
434        }
435        if (targetUrl != "") {
436            window.open(targetUrl, '_blank');
437        }
438    });
439
440    jQuery("#languages").hide();
441    jQuery("input[name=btnGo]").hide();
442    jQuery("input[name=btnGoIOS]").hide();
443  }
444
445  function initSawaSelect() {
446
447    var osList=["iOS","Android","Java"]
448    var javaStores = ["binu", "opera", "getjar"];
449    var androidStores=["amazon","getjar","google","opera"];
450    
451    var iOSLink="https://itunes.apple.com/app/radyw-swa-radio-sawa/id886220964?ls=1&mt=8";
452
453    var str = "";
454
455    var links={};
456
457    function fillStores(storeType) {
458        var stores=(storeType=="Java") ? javaStores : androidStores;
459         /*** Populate the store selector ****/
460        str = '<option value="" disabled selected>Select a store</option>';
461        for (var i = 0; i < stores.length; i++) {
462            str += "<option value=" + stores[i] + ">" + friendlyName(stores[i]) + "</option>";
463        }
464        jQuery("select[name=store]").empty();
465        jQuery("select[name=store]").append(str);    
466        
467    }
468
469
470    links["Java"]={};
471    links["Java"]["binu"]={};
472    links["Java"]["getjar"]={};
473    links["Java"]["opera"]={};
474    links["Java"]["binu"]["multi"]="http://m.binu.com/sawa/";
475    links["Java"]["getjar"]["multi"]="http://www.getjar.mobi/mobile/851300/-Radio-Sawa-for-Java-Phones";
476    links["Java"]["opera"]["multi"]="http://java.apps.opera.com/en_us/radio_sawa_for_java_phones.html?pm=1&multi=1";
477
478    links["Android"]={}
479    links["Android"]["amazon"]={}
480    links["Android"]["getjar"]={}
481    links["Android"]["google"]={}
482    links["Android"]["opera"]={}
483
484    links["Android"]["amazon"]["multi"]="http://www.amazon.com/gp/mas/dl/android?p=com.bbg.radiosawa";
485    links["Android"]["google"]["multi"]="https://play.google.com/store/apps/details?id=com.bbg.radiosawa";
486    links["Android"]["opera"]["multi"]="http://apps.opera.com/en_us/radio_sawa_r9511.html?dm=1&multi=1";
487    
488    links["Android"]["getjar"]["Arabic"] = "http://www.getjar.mobi/mobile/851300/-Radio-Sawa-for-Java-Phones";
489    links["Android"]["getjar"]["English"] = "http://www.getjar.mobi/mobile/821090/Radio-Sawa";
490
491    /*** Populate the entity selector ****/
492    str="";
493    for (var i = 0; i < osList.length; i++) {
494        str += "<option value=" + osList[i] + ">" + friendlyName(osList[i]) + "</option>";
495    }
496    jQuery("select[name=os]").append(str);
497
498    jQuery("#stores").hide();   
499
500    /*** Show the form (we keep it hidden until it has data) ****/
501    jQuery("#appSelect-sawa").css("display", "block");
502
503    function refreshLanguages() {
504        jQuery("select[name=language]").empty();
505        var selectedOS= jQuery("select[name=os]").val();
506        var selectedStore= jQuery("select[name=store]").val();
507        var languages = links[selectedOS][selectedStore];
508
509        var str = '<option value="" disabled selected>Select a language</option>';
510        var hasMulti=false;
511        for (var key in languages) {
512            if (languages.hasOwnProperty(key)) {
513                if (key == "multi") {
514                    hasMulti=true;
515                } else {
516                    str += "<option value=" + key + ">" + key + "</option>";
517                }
518            }
519        }
520        jQuery("select[name=language]").append(str);    
521        if (!hasMulti) {
522            jQuery("#languages").show();
523            jQuery("input[name=btnGo]").hide();
524        } else {
525            jQuery("#languages").hide();
526            jQuery("select[name=language]").prop('selectedIndex',1);
527            jQuery("input[name=btnGo]").show();
528        }
529    }
530
531    /*** when entity is changed, clear the store selection and remove language options***/
532    jQuery("select[name=os]").change(function() {
533        var newOS = jQuery(this).val();
534        jQuery("#languages").hide();
535        
536        if (newOS == "iOS") {
537            jQuery("input[name=btnGo]").show();
538            jQuery("#stores").hide();
539        } else if (newOS == "") {
540            jQuery("#stores").hide();   
541            jQuery("input[name=btnGo]").hide(); 
542        } else {
543            jQuery("input[name=btnGo]").hide(); 
544            
545            fillStores(newOS);
546
547            jQuery("#stores").show(); 
548        }
549    })
550
551    /*** when store is changed, fill in the languages ***/
552    jQuery("select[name=store]").change(function() {
553        var storeValue = jQuery("select[name=store]").val();
554        if (storeValue != "") {
555            refreshLanguages();
556        } else {
557            jQuery("#languages").hide();
558            jQuery("input[name=btnGo]").hide();
559        }
560    })
561
562    jQuery("select[name=language]").change(function() {
563        jQuery("input[name=btnGo]").show();
564    });
565
566    jQuery("input[name=btnGo]").click(function() {
567        var osValue = jQuery("select[name=os]").val();
568        var storeValue = jQuery("select[name=store]").val();
569        var languageValue = jQuery("select[name=language] option:selected").text();
570        var targetUrl = "";
571
572        if (osValue=="iOS") {
573            targetUrl=iOSLink;
574        } else {
575            if (links[osValue][storeValue].hasOwnProperty("multi")) {
576                targetUrl=links[osValue][storeValue]["multi"];
577            } else {
578                targetUrl=links[osValue][storeValue][languageValue];
579            }
580        }
581
582        if (targetUrl != "") {
583            window.open(targetUrl, '_blank');
584        }
585    });
586
587    jQuery("#languages").hide();
588    jQuery("input[name=btnGo]").hide();
589}
590
591  function initStreamerSelect() {
592    var osList=["iOS","Android"]
593    var androidStores=["amazon","getjar","google","imimobile","opera","safaricom"]; //,"vodacom"
594    
595    var iOSLink="https://itunes.apple.com/app/voa-mobile-streamer/id1000757271?ls=1&mt=8+";
596
597    var str = "";
598
599    var links={};
600
601    function fillStores() {
602        var stores=androidStores;
603         /*** Populate the store selector ****/
604        str = '<option value="" disabled selected>Select a store</option>';
605        for (var i = 0; i < stores.length; i++) {
606            str += "<option value=" + stores[i] + ">" + friendlyName(stores[i]) + "</option>";
607        }
608        jQuery("select[name=store]").empty();
609        jQuery("select[name=store]").append(str);    
610        
611    }
612
613    links["Android"]={}
614    links["Android"]["amazon"]={}
615    links["Android"]["getjar"]={}
616    links["Android"]["google"]={}
617    links["Android"]["imimobile"]={}
618    links["Android"]["opera"]={}
619    links["Android"]["safaricom"]={}
620    // links["Android"]["vodacom"]={}
621
622    links["Android"]["amazon"]["multi"]="http://www.amazon.com/gp/mas/dl/android?p=com.audionowdigital.player.voa";
623    links["Android"]["google"]["multi"]="https://play.google.com/store/apps/details?id=com.audionowdigital.player.voa";
624    links["Android"]["opera"]["multi"]="http://apps.opera.com/en_us/voa_mobile_streamer.html?pm=1&multi=1";
625    
626    links["Android"]["getjar"]["Amharic"] = "http://www.getjar.mobi/mobile/856571/VOA-Amharic-Mobile-Streamer";
627    links["Android"]["getjar"]["Bangla"] = "http://www.getjar.mobi/mobile/856573/VOA-Bengali-Mobile-Streamer";
628    links["Android"]["getjar"]["Burmese"] = "http://www.getjar.mobi/mobile/856574/VOA-Burmese-Mobile-Streamer";
629    links["Android"]["getjar"]["Chinese Simplified"] = "http://www.getjar.mobi/mobile/856575/VOA-Chinese-Simplified-Mobile-Streamer";
630    links["Android"]["getjar"]["Chinese Traditional"] = "http://www.getjar.mobi/mobile/856577/VOA-Chinese-Traditional-Mobile-Streamer";
631    links["Android"]["getjar"]["English"] = "http://www.getjar.mobi/mobile/856570/VOA-Mobile-Streamer";
632    links["Android"]["getjar"]["French"] = "http://www.getjar.mobi/mobile/856578/VOA-French-Mobile-Streamer";
633    links["Android"]["getjar"]["Indonesian"] = "http://www.getjar.mobi/mobile/856579/VOA-Indonesian-Mobile-Streamer";
634    links["Android"]["getjar"]["Khmer"] = "http://www.getjar.mobi/mobile/856582/VOA-Khmer-Mobile-Streamer";
635    links["Android"]["getjar"]["Korean"] = "http://www.getjar.mobi/mobile/856583/VOA-Korean-Mobile-Streamer";
636    links["Android"]["getjar"]["Lao"] = "http://www.getjar.mobi/mobile/856585/VOA-Lao-Mobile-Streamer";
637    links["Android"]["getjar"]["Portuguese"] = "http://www.getjar.mobi/mobile/856587/VOA-Portuguese-Mobile-Streamer";
638    links["Android"]["getjar"]["Spanish"] = "http://www.getjar.mobi/mobile/856588/VOA-Spanish-Mobile-Streamer";
639    links["Android"]["getjar"]["Swahili"] = "http://www.getjar.mobi/mobile/856590/VOA-Swahili-Mobile-Streamer";
640    links["Android"]["getjar"]["Thai"] = "http://www.getjar.mobi/mobile/856591/VOA-Thai-Mobile-Streamer";
641    links["Android"]["getjar"]["Vietnamese"] = "http://www.getjar.mobi/mobile/856592/VOA-Vietnamese-Mobile-Streamer";
642
643    links["Android"]["imimobile"]["English (SA)"] = "http://vfsa-mstore.imimobile.co/Defaultx.aspx?mnu=prev&ctype=AP&cc=147533";
644    links["Android"]["imimobile"]["Swahili (SA)"] = "http://vfsa-mstore.imimobile.co/Defaultx.aspx?mnu=prev&ctype=AP&cc=147534";
645
646    links["Android"]["safaricom"]["Swahili"] = "http://appstore.safaricom.com/web/shop/details.aspx?cid=147534&ct=AP";
647    links["Android"]["safaricom"]["English"] = "http://appstore.safaricom.com/web/shop/details.aspx?cid=147533&ct=AP";
648    links["Android"]["safaricom"]["English (Kenya)"] = "http://appstore.safaricom.com/Portal/Defaultx.aspx?mnu=prev&ctype=AP&cc=147533";
649    links["Android"]["safaricom"]["Swahili (Kenya)"] = "http://appstore.safaricom.com/Portal/Defaultx.aspx?mnu=prev&ctype=AP&cc=147534";
650
651    // links["Android"]["vodacom"]["English (Tanzania)"] = "http://appstore.vodacom.co.tz/Defaultx.aspx?mnu=prev&ctype=AP&cc=147533";
652    // links["Android"]["vodacom"]["Swahili (Tanzania)"] = "http://appstore.vodacom.co.tz/Defaultx.aspx?mnu=prev&ctype=AP&cc=147534";
653
654    /*** Populate the entity selector ****/
655    str="";
656    for (var i = 0; i < osList.length; i++) {
657        str += "<option value=" + osList[i] + ">" + friendlyName(osList[i]) + "</option>";
658    }
659    jQuery("select[name=os]").append(str);
660
661    jQuery("#stores").hide();   
662
663    /*** Show the form (we keep it hidden until it has data) ****/
664    jQuery("#appSelect-streamer").css("display", "block");
665
666    function refreshLanguages() {
667        jQuery("select[name=language]").empty();
668        var selectedOS= jQuery("select[name=os]").val();
669        var selectedStore= jQuery("select[name=store]").val();
670        var languages = links[selectedOS][selectedStore];
671
672        var str = '<option value="" disabled selected>Select a language</option>';
673        var hasMulti=false;
674        for (var key in languages) {
675            if (languages.hasOwnProperty(key)) {
676                if (key == "multi") {
677                    hasMulti=true;
678                } else {
679                    str += "<option value=" + key + ">" + key + "</option>";
680                }
681            }
682        }
683        jQuery("select[name=language]").append(str);    
684        if (!hasMulti) {
685            jQuery("#languages").show();
686            jQuery("input[name=btnGo]").hide();
687        } else {
688            jQuery("#languages").hide();
689            jQuery("select[name=language]").prop('selectedIndex',1);
690            jQuery("input[name=btnGo]").show();
691        }
692    }
693
694    /*** when entity is changed, clear the store selection and remove language options***/
695    jQuery("select[name=os]").change(function() {
696        var newOS = jQuery(this).val();
697        jQuery("#appSelect-streamer select[name=store]").prop('selectedIndex',0);
698        jQuery("#appSelect-streamer select[name=language]").empty();
699        jQuery("#languages").hide();
700        
701        if (newOS == "iOS") {
702            jQuery("input[name=btnGo]").show();
703            jQuery("#stores").hide();
704        } else if (newOS == "") {
705            jQuery("#stores").hide();   
706            jQuery("input[name=btnGo]").hide(); 
707        } else {
708            jQuery("input[name=btnGo]").hide(); 
709            
710            fillStores(newOS);
711
712            jQuery("#stores").show(); 
713        }
714    })
715
716    /*** when store is changed, fill in the languages ***/
717    jQuery("select[name=store]").change(function() {
718        var storeValue = jQuery("select[name=store]").val();
719        if (storeValue != "") {
720            refreshLanguages();
721        } else {
722            jQuery("#languages").hide();
723            jQuery("input[name=btnGo]").hide();
724        }
725    })
726
727    jQuery("select[name=language]").change(function() {
728        jQuery("input[name=btnGo]").show();
729    });
730
731    jQuery("input[name=btnGo]").click(function() {
732        var osValue = jQuery("select[name=os]").val();
733        var storeValue = jQuery("select[name=store]").val();
734        var languageValue = jQuery("select[name=language] option:selected").text();
735        var targetUrl = "";
736
737        if (osValue=="iOS") {
738            targetUrl=iOSLink;
739        } else {
740            if (links[osValue][storeValue].hasOwnProperty("multi")) {
741                targetUrl=links[osValue][storeValue]["multi"];
742            } else {
743                targetUrl=links[osValue][storeValue][languageValue];
744            }
745        }
746
747        if (targetUrl != "") {
748            window.open(targetUrl, '_blank');
749        }
750    });
751
752    jQuery("#languages").hide();
753    jQuery("input[name=btnGo]").hide();
754
755  }
756
757  if (jQuery("#appSelect-java").length) {
758    initJavaSelect();
759  }
760  if (jQuery("#appSelect-sawa").length) {
761    initSawaSelect();
762  }
763  if (jQuery("#appSelect-streamer").length) {
764    initStreamerSelect();
765  }
766  if (jQuery("#appSelect-smartphone-android").length) {
767    initSmartphoneSelect();
768  }
769
770});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.