String.prototype.trim=function(){ return this.replace(/(^\\s*)|(\\s*$)/g, '');}; 
//var cityData=" +context.Cache["CityData_JS"].ToString() + "; 
//var cityData=new Array(@CITYDATA@); 
//document.attachEvent("onkeydown",city_checkKey);   
function city_checkKey() 
{  
  if(selectedControl==undefined) 
    return; 
  if(selectedControl==document.activeElement) 
  { 
    //alert(event.keyCode); 
    if(event.keyCode==38)  
      selectedIndex=(selectedIndex==0)?0:selectedIndex-1;  
    else if(event.keyCode==40)  
      selectedIndex+=1; 
    city_selectItem(selectedIndex);  

    if(event.keyCode==13) 
    { 
      city_fireClick(); 
      event.returnValue=false; 
    } 

  }  
}  
var selectedIndex=0; 
function city_selectItem(index) 
{ 
  var items=document.getElementById("cityPanel").getElementsByTagName("LI"); 
  if(items==undefined) 
    return; 
  //alert(document.getElementById("cityPanel").innerHTML); 
  index=(index>items.length-1)?items.length-1:index; 
  selectedIndex=index; 
  for(var i=0;i<items.length;i++)
  { 
    city_leaveItem(items[i]); 
    //document.getElementById("error").innerHTML+=(items[i]==undefined)?i:items[i].innerHTML; 
  } 
  if(items[index]==undefined) 
    return; 
  city_overItem(items[index]); 
} 
function city_fireClick() 
{ 
  var items=document.getElementById("cityPanel").getElementsByTagName("LI"); 
  if(items==undefined) 
    return; 
  else 
  { 
    if(items[selectedIndex]!=undefined) 
      items[selectedIndex].childNodes[0].click(); 
  } 
} 
var selectedControl,selectedHid; 
function city_showCities(obj,obj2,cityData,defaultcityDate) 
{ 
  selectedControl=obj; 
  selectedHid=obj2; 
  str=selectedControl.value.toUpperCase(); 
  //if(city_isPY(str)) 
    city_queryCities(str,"py",cityData,defaultcityDate); 
  //else  
    //city_queryCities(str,"chs",cityData,defaultcityDate); 
  //alert(str+isPY(str)); 
  city_showLayer(obj); 
} 
function city_showLayer(obj) 
{ 
  var ttop  = obj.offsetTop-94;    
  var thei  = obj.clientHeight;  
  var tleft = obj.offsetLeft-87;   
  var ttyp  = obj.type;        
  while (obj = obj.offsetParent){ttop+=obj.offsetTop; tleft+=obj.offsetLeft;} 
  var citiesStyle=document.getElementById("cityPanel").style; 
  citiesStyle.top  = (ttyp=="image")? ttop+thei : ttop+thei+6; 
  citiesStyle.left = tleft; 
  citiesStyle.display="block"; 
  var ifmStyle=document.getElementById("ifmUnder").style; 
  ifmStyle.top=citiesStyle.top; 
  ifmStyle.left=citiesStyle.left; 
  ifmStyle.width=citiesStyle.width; 
  ifmStyle.height=citiesStyle.height; 
  city_selectItem(selectedIndex); 
} 
function city_closeLayer() 
{
  citiesStyle=document.getElementById("cityPanel").style; 
  var ifmStyle=document.getElementById("ifmUnder").style; 
  citiesStyle.display="none"; 
  ifmStyle.width="0px";   
  ifmStyle.height="0px";
} 
function city_selectCity(idx) 
{ 
  if(selected==undefined||selected.length==0) 
    return; 
  selectedHid.value=selected[idx][0]; 
  selectedControl.value=selected[idx][1]; 
  selectedControl.style.color="#000000";
  city_closeLayer(); 
} 
var selected; 
function city_queryCities(str,method,cityData,defaultcityDate) 
{ 
  selected=new Array(); 
  var data; 
  str=str.trim();
  
  if(str=="City Name")
  	str="";
   
  if(str=="") 
    data=defaultcityDate; 
  else  
    data=cityData; 
  var conditionIdx; 
  if(method=="py") 
    conditionIdx=1; 
  else 
    conditionIdx=2; 
  for(var i=0;i<data.length;i++) 
  { 
    var values=data[i].split("|"); 
    values[3]=i; 
    if(values[conditionIdx].substring(0,str.length)==str) 
      selected[selected.length]=values; 
  } 
  var panel=document.getElementById("cityPanel"); 
  var output="<div style='font-size:13px;color:#000000;border-bottom:1px #FF9900 dashed;background-color:#FFFFFF;padding-left:5px;padding-top:2px;padding-buttom:2px;'>Input city or use up&down</div>";
  output = output + "<div style='font-size:1px;height:1px;border:1px solid #FFFFFF;background-color:#FFFFFF;padding-left:0px;padding-top:0px;padding-buttom:0px;'></div>"; 
  for(var i=0;i<selected.length;i++) 
  { 
    output+="<li onmouseover='city_overItem(this)' onclick='city_selectCity("+i+")' style='cursor:hand;padding-left:0px;padding-top:2px;margin-left:0px;' onmouseLeave='city_leaveItem(this)'><span style=''>"+selected[i][1]+"</span></li>";  
  } 
  panel.innerHTML=output; 
} 
function city_isPY(str) 
{ 
  str=str.toLowerCase(); 
  for(var i=0;i<str.length;i++) 
  { 
    if(str.charAt(i)<'a'||str.charAt(i)>'z') 
      return false; 
  } 
  return true; 
} 
function city_overItem(obj) 
{ 
  obj.style.background="#FFF8EC"; 
  //obj.style.width = "190px";
  obj.style.border = "solid #FF9900 1px";
  
  
} 
function city_leaveItem(obj) 
{ 
  if(obj!=undefined) 
  {
    obj.style.background="#FFFFFF";
    //obj.style.width = "190px"; 
    obj.style.border = "solid #FFFFFF 1px";  
  }
} 
function city_show(ctrlName,hidCtrlName,inputClass,inputStyle) 
{ 
  
  document.write('<input name="'+ctrlName+'" class="'+inputClass+'"'+' style="'+inputStyle+'" id="'+ctrlName
  +'" type="text"'
  +' onmousedown="city_showCities(this,document.getElementById('+"'"+hidCtrlName+"'"+'));"'
  +' onkeydown="city_checkKey();"'
  +' onfocusout="if(document.activeElement.id!=\'cityPanel\')city_closeLayer();"'
  +' onpropertychange="if(document.activeElement==this)city_showCities(this,document.getElementById('+"'"+hidCtrlName+"'"+'));" />' 
      +'<input name="'+hidCtrlName+'" id="'+hidCtrlName+'" type="hidden"/>'); 
} 
function city_init() 
{ 
  document.write('<div id="cityPanel" style="font-size:13px;border:1px solid #FF9900;position: absolute; width: 200px; height: 240px; z-index: 9998; display: none;list-style:none; background-color:#FFFFFF";></div>' 
      +'<iframe id="ifmUnder" scrolling="no" frameborder="no" style="position:absolute;z-index:9997;background:black;width:0px;height:0px;"></iframe>');       
} 
//city_init(); 

