function getSeoulBus(num,update){
if(update){
var el,el2;
for(var i=0;i<stoplist.length;i++){
stoplist[i].bus='';el=e(stoplist[i].id);
el2=el.getElementsByTagName("img");if(el2&&el2.length==1) el.removeChild(el2[0]);
}
el=e('busi');el2=el.getElementsByTagName("div");
if(el2&&el2.length==1) el.removeChild(el2[0]);
}
r=GetRequestObject();r.onreadystatechange=seoulBusHandler;r.open('GET',"buslocation.php?num="+encodeURIComponent(num),true);r.send(null);
}
function seoulBusHandler(){
if(r.readyState==4){if(r.status==200){
var xml=r.responseXML;
var list=xml.getElementsByTagName('stop');
var num=getTagValue(xml, 'num');
if(list && list.length > 0){
var bt;stoplist2.length=0;
for(var i=0;i<list.length;i++) stoplist2.push({type:getTagValue(list[i],'type'),data:getTagValue(list[i],'data')});		
if(updateBusLocation(stoplist,stoplist2)){
bt='b';if(bustype==2) bt='g';else if(bustype==3) bt='r';else if(bustype==4) bt='y';			
e('busi').innerHTML+="<div style=\"font-size:14px;color:#999999;\"><img src=\"images/dbus"+bt+".png\" style=\"vertical-align:middle;\"> 버스 현위치(오차가 있을 수 있음) &nbsp;<a href=\"javascript:getSeoulBus('"+num+"',1)\" style=\"text-decoration:none;color:#333333\"><img src=\"images/refresh.png\" style=\"vertical-align:middle\">업데이트</a></div>";
for(var i=0;i<stoplist.length;i++){if(stoplist[i].bus!=''){e(stoplist[i].id).innerHTML+="<img src=\"images/dbus"+bt+".png\" style=\"vertical-align:middle;padding-left:8px\">";}}
}}
}}
}
function matchChars(s1, s2){
var cnt=0;
var s1m=s1.replace("아파트","");
s1m=s1m.replace("앞","");
s1m=s1m.replace("입구","");
s1m=s1m.replace("학교","");
var s2m=s2.replace("아파트","");
s2m=s2m.replace("앞","");
s2m=s2m.replace("입구","");
s2m=s2m.replace("학교","");
for(var i=0; i < s1m.length-1; i++){for(var j=0; j < s2m.length-1; j++){if(s1m.charCodeAt(i)==s2m.charCodeAt(j) && s1m.charCodeAt(i+1)==s2m.charCodeAt(j+1)) cnt+=1;}}
return cnt;
}
function updateBusLocation(a, b){
var j,l=0, r=0;var maxmatch,maxr,foundr;var cc,cmp;var tc=0,mc=0;
while(1){	
foundr=-1;
maxmatch=0;
cmp=4;
for(j=r; j < b.length && j-r < cmp; j++){
if(b[j].type=='bus'){cmp++;continue;}
if(a[l].name==b[j].data){foundr=j;break;}
cc=matchChars(a[l].name, b[j].data);
if(maxmatch<cc){maxmatch=cc;maxr=j;}
}
if(foundr==-1 && maxmatch > 0){foundr=maxr;}
if(foundr!=-1){
for(j=r; j < foundr; j++){
if(b[j].type=='bus') a[(l>0) ? l-1 : 0].bus=b[j].data;
else tc++;}
mc++;l++;r=foundr+1;
}
if(foundr==-1){tc++;l++;}
if(l >= a.length){
if(r <= b.length){for(var k=r; k < b.length; k++){if(b[k].type!='bus')tc++;}}break;
}else if(r >= b.length){if(l <= a.length){for(var k=l; k < a.length; k++)tc++;}break;
}}
return (((mc*100)/tc > 65) ? true : false);
}