<?php
 // Idea: http://gomashup.com/cms/world_clock_timezone
 // Validator: http://jsonlint.com/
 $pageContent = file_get_contents('http://gomashup.com/json.php?fds=geo/timezone/locations&jsoncallback=?',0,null,null);
 $json = substr(str_replace(']}',']', str_replace('{x[','[', str_replace('"result":','', str_replace(")", "", str_replace("?(","",$pageContent))))),1);
 $json_output = json_decode($json); //,true); 
 
 $selplaceval = "<select style='display:none;' id='selplaceval'><option value=''>List of places below ...</option>";
 $selgmtval = "<select style='display:none;' id='selgmtval'><option value=''>List of region places below ...</option>";
 for ($i=0; $i<sizeof($json_output); $i++) {
   $selgmtval .= "\n<option value='" . substr($json_output[$i]->TimeZoneId, 0, strpos($json_output[$i]->TimeZoneId, '-') - 0) . "'>" . ($json_output[$i]->GMT + ((1.0 + $i) / 1000.0)) . "</option>";
   $selplaceval .= "\n<option value='" . substr($json_output[$i]->TimeZoneId, strpos($json_output[$i]->TimeZoneId, '-') + 1) . "'>" . $json_output[$i]->TimeZoneId . "</option>";
 }
 $selgmtval .= "\n</select>";
 $selplaceval .= "\n</select>";
 echo "<html><head><title>Time Zones via http://gomashup.com/cms/world_clock_timezone ... thanks.</title>";
 echo "<script>\n";
 echo "\n var selplaceobj;";
 echo "\n var selgmtobj;";
 echo "\n var gmtinput;";
 echo "\n var regioninput;";
 echo "\nfunction analyze(mt) {";
 ?>
    var gmtis = '';
    var regionis = '';
    var seli = -1;
    //alert(selplaceobj.length);
    for (var i=0; i<selplaceobj.length;i++) {
        if (selplaceobj[i].childNodes[0].nodeValue.toUpperCase().indexOf("-" + mt.value.toUpperCase()) != -1) {
            if ((selplaceobj[i].childNodes[0].nodeValue.toUpperCase().indexOf("-" + mt.value.toUpperCase()) + mt.value.length + 1) == selplaceobj[i].childNodes[0].nodeValue.length) {
              seli = (i + 1);
              regionis = selplaceobj[i].childNodes[0].nodeValue.substr(0, (selplaceobj[i].childNodes[0].nodeValue.indexOf("-") - 0));
            }
        }
    }
    if (seli >= 0) {
      gmtis = Math.floor(eval((selgmtobj[seli - 1].childNodes[0].nodeValue - ((0.0 + seli) / 1000.0)) + 0.01));
      selplaceobj.value = regionis + "-" + mt.value;
      selgmtobj.value = selgmtobj[seli - 1].childNodes[0].nodeValue;
      gmtinput.value = gmtis;
      regioninput.value = regionis;
    } else {
      selplaceobj.value = '';
      selgmtobj.value = '';
      gmtinput.value = '';
      regioninput.value = '';
      alert(mt.value + ' was not found ... sorry.');
    }
<?php
 echo "\n}";
 echo "\n</script>";
 echo "\n</head>";
 echo "<body><table border=5><tr><td><label>Please enter a place name: </label></td><td><input onchange='analyze(this);' id='place' type='text' value=''></input><br><br></td></tr>";
 echo "<tr><td><label>Will show you GMT time zone: </label></td><td><input onchange='analyze(this);' id='gmt' type='text' value=''></input><br><br></td></tr>";
 echo "<tr><td><label>Will show you region: </label></td><td><input onchange='analyze(this);' id='region' type='text' value=''></input><br><br></td></tr>";
 echo "\n" . $selplaceval . "&nbsp;&nbsp;" . $selgmtval . "<script> selplaceobj=document.getElementById('selplaceval'); selgmtobj=document.getElementById('selgmtval'); gmtinput=document.getElementById('gmt'); regioninput=document.getElementById('region'); </script></body></html>";
?>
