/*
    common functions
*/
function getDomain()
{
    var host=document.domain;
    var reg=/^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])(\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])){3}$/;
    if( reg.test(host) == false )
        if(host!="localhost")
            return "life.soso.com";
        else 
            return "";
    return host;    
}

function setCookie(name,value,Days)
{    
    if(Days == null)
        Days = 30;
    var ex  = new Date();
    
    //delCookie(name); 
    
    if(Days != 0)
    {
        ex.setTime(ex.getTime() + Days*24*60*60*1000);
        document.cookie = name + "="+ encodeURIComponent(value) +";expires="+ex.toGMTString()+";path=/;domain="+getDomain();
    }
    else
    {
        document.cookie = name + "="+ encodeURIComponent(value) +";path=/;domain="+getDomain();    
    }
}

function getCookie(name)
{
  var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));
  if(arr != null &&  arr[2] != "deleted")
      return decodeURIComponent(arr[2]); 
  return '';
}

function delCookie(name)
{  
  var ex  = new Date();
  ex.setTime(ex.getTime()-1);
  document.cookie = name +"=;expires="+ex.toGMTString()+";path=/;domain="+getDomain();
}

function RefreshPic(o)
{
    $(o).src = "authimg.php?id="+Math.random();
}

function bytes(str)
{
    if(typeof(str)!='string'){
        str = str.value;
    }
    var len = 0;
    for(var i = 0; i < str.length; i++)
    {
        if(str.charCodeAt(i) > 127)
        {
            len++;
        }
        len++;
    }
    return len;
}

function lockScreen()
{
    $("msg").show("block");
}

function unlockScreen()
{
    $("msg").hide();
    try{
        $("msg2").hide();
    }catch(e){}
        try{
        $("msg_l").hide();
    }catch(e){}

}

function selectCity(event,flag,frm)
{    
    sORh("msg_addr_down","none");
	var msg = $("msg");
    var mouse = onClick(event);
    var url;
    /*msg.style.top =mouse.y;
    msg.style.left =mouse.x;
    msg.style.width = "auto";
    msg.style.height = "auto";*/
    
    if(frm)
        s_frm="&frm="+frm;
    else
        s_frm="";
       
    switch(flag)
    {
        case 1: url = "/?area=com&cmd=shortcity&tag=index";break;
        case 2: url = "/?area=com&cmd=shortcity&tag=addbiz";break;
        case 3: url = "/?area=com&cmd=shortcity&tag=compass"; msg = $("msg2"); break;
        case 4: url = "/?area=com&cmd=shortcity&tag=index"; msg = $("msg_l");break;
        case 5: url = "/?area=com&cmd=shortcity&tag=act";break;
        case 6: url = "/?area=com&cmd=shortcity&tag=mov";break;
        case 7: url = "/?area=com&cmd=shortcity&tag=index";msg = $("msg2");break;
        case 8: url = "/?area=com&cmd=shortcity&tag=traffic";break;
        case 9: url = "/?area=com&cmd=shortcity&tag=discount";break;
        default: return; break;
    }
    new Ajax.Request(
        url,{
            method: 'get',
            onSuccess:function(transport){
                msg.innerHTML = transport.responseText;
                if(3 == flag){
                    $("msg2").show("block");
                    return;
                }else if(4 == flag){
                        $("msg").style.zIndex = 9999;
                    $("msg").style.display = "none";
                    $("msg_l").style.display = "block";
                    return;
                }
                else if(2 == flag){
                    $("msg_l").style.display = "none";
                }
                else if(7 == flag)
                {
                	$("msg2").show("block");
                }
                lockScreen();
            }
        }
    );    
}

function showMsg(info)
{
    var msg = $("msg");
    msg.style.top = 600+"px";
    msg.style.left = 400+"px";
    
    $(msg).innerHTML = '<div class="pop_window">' +
            '<div class="close"><a href="javascript:unlockScreen();"><img src="images/icon/close.gif" width="16" height="16" /></a></div>' + 
            '<center><p>' + info + '</p></center>' +
            '<div>';
    lockScreen();
}
function userChangeCity(type)
{
    var tag = type ? type : "index"; //
    var urlbase = "";
    if(isCityDomain() == true){
		urlbase = "http://www.aibang.com";
	}
    location.href = urlbase+'/?area=com&cmd=cities&tag='+tag;
}
/*
    show or hide object
*/
function sORh(obj,type)
{
    if("object" != typeof $(obj) ){
        return;
    }
    if(type)//tell us the type is undefined
    {
        if($(obj)){
	   $(obj).style.display = ""+type;
	}
        return;       
    } 
    if("none" == $(obj).style.display)
    {
        $(obj).style.display = "block";
    }
    else
    {
        $(obj).style.display = "none";
    }   
}
function disableServerMsg()
{
    sORh("pageMsg","none");
}
function loginOrLogout(i)
{
    if("login" == i){
        location.href = "/?area=user&cmd=showlogin&backurl="+encodeURIComponent(window.location.href);
    }
    else if("logout" == i)
    {
        location.href = "/?area=user&cmd=logout&backurl="+encodeURIComponent(window.location.href);
    }
    else if("getpwd" == i){
        window.open("/?area=user&cmd=showlogin&gpwd=1&backurl="+encodeURIComponent(window.location.href),"_blank");
    }
     
}

function onClick(event)
{    
    ev = event || window.event;
    if(ev.pageX || ev.pageY)
    {
        return {x:ev.pageX+"px", y:ev.pageY+"px"};
    }
    return {
        x:(ev.clientX + document.documentElement.scrollLeft - document.documentElement.clientLeft),
        y:(ev.clientY + document.documentElement.scrollTop - document.documentElement.clientTop)
    };
}

function showLock()
{
    var lock = $('lock');

    var w = window.screen.width;
    var h = window.screen.height;
    lock.style.left = 0+"px";
    lock.style.top = 0+"px";
    lock.style.width = w+"px";
    lock.style.height = h+"px";
    lock.show('block');    
}

function hideLock()
{
    $('lock').hide();
}
function showWaiting(msg)
{
    //showLock();
    $("ajax_loading").innerHTML = '<img src="../images/ajax-loader.gif" />';    
    ajaxLoading(true);
    setTimeout( "closeWaiting",5000 );
}
function closeWaiting()
{
    //hideLock();
    ajaxLoading(false);    
}
function showAddrError(msg)
{
    $("addrError").innerHTML=msg;
    $("addrError").show("block");
    
    setTimeout("hideAddrError()",5000);
}
function hideAddrError()
{
    $("addrError").innerHTML="";
    $("addrError").hide();
}
function centerDiv(div)
{
    var deltaX=window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft||0;
    var deltaY=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;
    var innerWidth = document.documentElement.clientWidth ||1000;
    var innerHeight = document.documentElement.clientHeight ||600;
    var posX=deltaX+(innerWidth- div.getWidth())/2;
    var posY=deltaY+(innerHeight-div.getHeight())/2;
        
    div.style.left=posX+"px";
    div.style.top=posY+"px";
}
function ajaxLoading(isLoading, dPosX, dPosY)
{
    var loadingObj = $("ajax_loading");    
    if(isLoading == true){
        centerDiv(loadingObj);
        //对目前的坐标进行必要的修正
        if(dPosX)loadingObj.style.left = (parseInt(loadingObj.style.left) + dPosX) + "px";
        if(dPosY)loadingObj.style.top  = (parseInt(loadingObj.style.top)  + dPosY) + "px";
        loadingObj.show("block");
    }
    else{
        loadingObj.hide();
    }
}

if(!comAddr){
	var comAddr = "";//全 市
}
if(!comWhat){
	var comWhat = "";
}

String.prototype.replaceSs = function(){
    return this.replace(/\s+/, '');
}
function onMouseOver(addr)
{
    addr.style.cursor = "text";
    if(comAddr != addr.value.strip()){
        addr.select();
    }
    clearAddr(addr);
}
function onMouseOut(addr){
}
function clearAddr(addr)
{
    if(addr.value == comAddr){
        addr.value = "";
        addr.style.color = "#000";
    }
    //sORh("address_drop","none");
    //sORh("service_drop","none");
    addr.focus();
}

function resetAddr(addr)
{
    if(!addr.value){
        addr.value = comAddr;
        addr.style.color = "#999";
    }    
}

function clearWhat(what)
{
    if(what.value == comWhat){
        what.value = "";
        what.style.color = "#000";
    }
    //sORh("address_drop","none");
    //sORh("service_drop","none");
}

function resetWhat(what)
{
    if(!what.value){
        what.value = comWhat;
        what.style.color = "#999";
    }
}

function getWhat(obj)
{
	if(!obj){
		var what =  $('what').value;
	}
	else{
		var what = obj.value;
	}
    what = what.strip();
    if(what == comWhat)
        return ""
    return what;
}

function setWhat( what )
{
    var obj = $('what');
    var sbj = $('what_b');
    if(!what || what == comWhat)
    {
        if(obj){
            obj.value = comWhat;
            obj.style.color = "#999";
        }
        if(sbj){
            sbj.value = comWhat;
            sbj.style.color = "#999";
        }
    }
    else
    {
        if(obj){
            obj.value = what;
            obj.style.color = "#000";
        }
        if(sbj){
            sbj.value = what;
            sbj.style.color = "#000";
        }
    }        
}

function getAddr(obj)
{
	if(!obj){
		var addr =  $('addr').value;
	}
	else{
		var addr = obj.value;
	}
    addr = addr.strip();
    if(addr.replaceSs() == comAddr.replaceSs() || addr.replaceSs() == comAddr)
        return ""
    return addr;
}

function setAddr( addr)
{
    var obj = $('addr');
    var sbj = $('addr_b');
    if(!addr || addr == comAddr)
    {
        if(obj){
            obj.value = comAddr;
            //obj.style.color = "#999";
        }
        if(sbj){
            sbj.value = comAddr;
            //sbj.style.color = "#999"; 
        }
    }
    else
    {
        if(obj){
            obj.value = addr;
            obj.style.color = "#000";
        }
        if(sbj){
            sbj.value = addr;
            sbj.style.color = "#000";
        }
    }
}

function hideEmptyRecentAddr()
{
    for(var i=5; i > 0; i--)
    {
        var o = $("addr"+i);
        if ( o  && o.innerHTML)
        {
            o.show("block");
        }
        else
        {
            o.hide();
        }
    }
}

function defaultOnload()
{
	  var error;
    try{$("what").focus();}
    catch(error){}
    //setAddr(getCookie('addr'));
    //setWhat(getCookie('what'));
    //loadRecentAddr();
}

function channelChange(type)
{
    //#s delete or add type=mapview
    var arr = new Array();
    if(type == "mapview"){//map-view
        //var href= decodeURIComponent(location.href);
        var href= location.href;
        var i = href.indexOf( "#s=" );
        if(i>0)
        {//has hash
            var tmp = location.href.split("#s=");
            var url = tmp[0]+"&type=mapview";
            var str = decodeURIComponent(tmp[1]).split("\n");
            var __flag = 0;
            for(var i=0; i<str.length; i++)
            {
                var __name = str[i].split("\r")[0];
                var __value = str[i].split("\r")[1];
                if(__name == "type"){
                    __value = "mapview";
                    __flag = 1;
                }
                else if(__name == "city"){
                    __value = getCookie("city")?getCookie("city"):'北京';
                }
                else if(__name == "a"){
                    __value = getCookie("addr")?getCookie("addr"):'';
                }
                arr.push(__name+"\r"+__value);
            }
            if(!__flag){
                arr.push("type"+"\r"+"mapview");
            }
            url += "#s=" + encodeURIComponent(arr.join("\n"));
        }
        else
        {//none hash
            var re = /(?!&|\?)(.*?)=(.*?)(?=&|$)/ig;
            var r = location.href.match(re);
            var url="?area=bizsearch&cmd=bigmap&type=mapview#s=";       
            for(i=0;i<r.length;i++)
            {
                var pair=r[i].split("=");
                if(pair[0]=="cmd"){
                    arr.push(pair[0]+"\r"+"biz"); //map-view no cmd default value;
                }
                else if(pair[0].indexOf("?")>0){
                    //do nothing.
                }                
                else{
                    arr.push(pair[0]+"\r"+decodeURIComponent(pair[1]));
                }            
            }
            if(!arr['type']){
                arr.push("type"+"\r"+"mapview");
            }        
            url += encodeURIComponent(arr.join("\n"));
        }
    }
    else{//text-view        
        var urr = location.href.replace(/&type=mapview/g,"");
        var uri = urr.split("#s=");
        var url = "/?area=bizsearch&";
        var str = decodeURIComponent(uri[1]).split("\n");
        var __flag = 0;
        for(var i=0; i<str.length; i++)
        {
            var __name = str[i].split("\r")[0];
            var __value = str[i].split("\r")[1];
            if(__name == "type"){
                __value = "";
                __flag = 1;
                continue;
            }
            else if(__name == "city"){
                __value = getCookie("city")?getCookie("city"):'北京';
            }
            /*else if(__name == "a"){
                __value = getCookie("addr")?getCookie("addr"):'';
            }*/
            else if(__name == "cmd"){
                __value = "bigmap";
            }            
            arr.push(__name+"="+encodeURIComponent(__value));
        }
        if(!__flag){
            arr.push("type"+"="+"textview");
        }
        url += arr.join("&");
    }
    location.href = url;
}

function boldLiFont(attachID,selectObj)
{
    if((typeof document.getElementById(attachID)) != "object"){
        throw("bad attach id");
    }
    var oLi = document.getElementById(attachID).getElementsByTagName("LI");
    for(var i=0;i<oLi.length;i++)
    {
        if(oLi[i] == selectObj){
            selectObj.style.fontWeight='bold';
        }
        else{
            oLi[i].style.fontWeight='normal';
        }
    }
}

(function()
{
    if(document.addEventListener){
        document.addEventListener("click",function(){sORh("msg_l","none");sORh("msg","none");/*sORh("address_drop","none");sORh("service_drop","none");*/},false);
    }
    else if(document.attachEvent){
        document.attachEvent('onmouseup',function(){sORh("msg_l","none");sORh("msg","none");/*sORh("address_drop","none");sORh("service_drop","none");*/});
    }
})();

function selectKeyword(what)
{
    setWhat(what);
    //sORh('service_drop', 'none');
    $('what').focus();
}

//deleted by xgliu ,2008-11-17
/*
function cityChangedUserEyeAttach(city)
{
    setAddr("");
    setCookie("addr","");
    $("city").innerHTML = city;
    $('change_city').innerHTML = '您已经切换到'+city+'市';
    $('change_city').style.display = '';
    setTimeout("cityChangedBySearch()",5000);
}
*/
function cityChangedBySearch()
{
    sORh('change_city','none'); 
}
function mouseOverAddr(obj)
{
    mouseOverDiv(obj,pulldownId);
}
function mouseOverWhat(obj)
{
    mouseOverDiv(obj,pulldownId);
}
function mouseOverDiv(obj,sbj)
{
	if(!sbj){
		sbj = pulldownId;
	}
    var oA = document.getElementById(sbj).getElementsByTagName("a");
    for(var i=0; i<totalResultNum-1; i++)
    {
        if(oA[i] == obj){
            curPosition = i;
            oA[i].className = 'drop_item';
        }
        else{
            oA[i].className = '';
        }
    }
}
function mouseOutDiv(obj)
{
    obj.className = '';
}

//deleted by xgliu 2008-11-17
/*
function forceChangeCity(aimerCity)
{
    $('fsubmit').focus();
    if(!aimerCity){return false;}
    var oInput = document.getElementById('address_drop').getElementsByTagName("INPUT");
    if(oInput.length == 0){//no matched address
        return false;//do not change
    }
    else{
        var _v = oInput[0].value;
        var _n = oInput[0].name;
        var _isEn = aimerCity.charCodeAt(0)<128;
        var _hasCity = aimerCity.split(""+_n)[1];
        var _isCity = -1;
        if(_hasCity){
            _isCity = _hasCity.indexOf("市");
        } 
        if((_v == 1 || _v == 3)&& (_isEn || !_hasCity || _isCity>-1)){//make sure the aimer is correct
            var city = oInput[0].name;
            cityChangedUserEyeAttach(city);//show city change  
            $('address_drop').innerHTML = "";
            return city; //force change
        }
        else{
            return false;
        }
    }
}
*/
function clearSearchHistory()
{
   delCookie("uls");
   location.href = location.href;
}
function userLatestSearch(){
   var city = getCookie("city");
   var addr = getCookie("addr");
   var q    = getCookie("what");

   if(((addr && (addr.split("loc:"))[1]))||!q){
      return;
   }
   var __cr = getCookie("uls");//city::addr::q|||city::addr::q
   var __items = __cr.split("|||");
   var __iLength = __items.length;
   var __tmp = city+":::"+addr+":::"+q;
   var __swap = __tmp+"|||";
   var j = 1;
   for(var i=0; i<5; i++){
      if(__tmp != __items[i] && __items[i]){
         if(j == 5){
	    break;
	 }
	 if(i == __iLength-1){
	    __swap += __items[i];
	 }
	 else{
	    __swap += __items[i]+"|||";
	 }
	 j++;
      }
   }
   if(__cr != __swap){
      setCookie("uls",__swap);
   }
}
function setRecentEvents(){
    var city = getCookie("city");
    var addr = getCookie("addr");
    userLatestSearch();
    if(!addr || (addr.split("loc:"))[1]){
       return;
    }
    var __cr = getCookie("recentCR");//city:::addr|||city:::addr
    var __items = __cr.split("|||");
    var __iLength = __items.length;
    var __tmp = city+":::"+addr;
    var __swap = __tmp+"|||";
    var j = 1;
    for(var i=0; i<5; i++){
        if(__tmp != __items[i] && __items[i]){
        if(j == 5){
            break;
        }
        if (i == __iLength-1){
           __swap += __items[i];
        }
        else{
           __swap += __items[i]+"|||";
        }
        j++;
    }
    }
    if(__cr != __swap){
       setCookie("recentCR",__swap);
    }
}
//hot tag search
function hotSearch(obj)
{
    var what = obj.innerHTML;
    setWhat(what);
    setout("frttag");
}

function num2Char(num)
{
    switch ( num) {
        case 0: return "m1";
        case 1: return "m2";
        case 2: return "m3";
        case 3: return "m4";
        case 4: return "m5";
        case 5: return "m6";
        case 6: return "m7";
        case 7: return "m8";
        case 8: return "m9";
        case 9: return "m10";
        default: return "N";
    }
}

/*
    通过各种途径进入文本视图的总入口。
    目前只设计为搜索和本地指南专用。(2007-10-23)
    将来可能扩展包括点评和图片，但是不会包括社区。
    city:城市
    addr:地址
    what:查询内容
    extra:url中的附加信息（主要是为了统计运行所需数据的需要）;    
    tagert:window.open style
*/
function gotoTextView(city,addr,what,extra,target)
{
    if(!extra)     extra="";
    if(!what)     what="";    
    if(!target) target="_self";
    setCookie('what',what);    
    var url = "/?area=bizsearch&cmd=bigmap&city="+$E(city)+"&a="+$E(addr)+"&q="+$E(what)+extra;
    window.open(url,target);
}

function selectBiz()
{
    var city = $('city').innerHTML;
    var addr = getAddr();
    location.href = "/?area=common&cmd=services&city="+encodeURIComponent(city)+"&a="+encodeURIComponent(addr);    
}
/*
*   user
*/
function changeCityAddr(city,addr)
{
    setCookie("city",city);
    setCookie("addr",addr);
    gotoTextView(city,addr);
}

function changeCity(obj,tag)
{
   var _city = obj.innerHTML.stripTags();
   $("city").innerText = _city;
   setAddr("");
   setCookie("city",_city);
   setCookie("addr","");
   var urlBase = "/";
    
   unlockScreen();
   window.open(urlBase, "_self");
}

var ABBrowser = {
    navi: navigator.userAgent.toLowerCase(),
    isIE: function(){
        var tmp = this;
        return (tmp.navi.indexOf("msie") != -1) && (tmp.navi.indexOf("opera") == -1) && (tmp.navi.indexOf("omniweb") == -1);
    },
    getBody: function(){
        return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body;
    },
    getScrollTop: function(){
        return this.isIE()?this.getBody().scrollTop:window.pageYOffset;
    },
    getScrollLeft: function(){
        return this.isIE()?this.getBody().scrollLeft:window.pageXOffset;
    },
    getAvailableHeight:function(){
        return this.getBody().offsetHeight>this.getBody().scrollHeight?this.getBody().offsetHeight:this.getBody().scrollHeight;
    },
    getAvailableWidth: function(){
        return this.getBody().offsetWidth>this.getBody().scrollWidth?this.getBody().offsetWidth:this.getBody().scrollWidth;        
    },
    getViewWidth: function(){
        return self.innerWidth || (document.documentElement.clientWidth || document.body.clientWidth);
    },
    getViewHeight: function(){
        return self.innerHeight || (document.documentElement.clientHeight || document.body.clientHeight);
    },
    getPointerPositionInDocument:function(evt){
       var eventObject = evt;
       var x = eventObject.pageX || (eventObject.clientX+ABBrowser.getBody().scrollLeft);
       var y = eventObject.pageY || (eventObject.clientY+ABBrowser.getBody().scrollTop);
       return {'x':x,'y':y};
    }
}
var ABMessage = {
	_obj				: null,	//当前展示消息的div对象
	_top				: 0,	//需要显示的div的左上角坐标
	_left				: 0,	
	_height				: 470,	//需要显示的div的高度与宽度
	_width				: 600,
	_scrollTop			: 0,	//当前浏览器展示左上角坐标
	_scrollLeft			: 0,
	_availableHeight	: 0,	//当前浏览器展示的高度与宽度
	_availableWidth		: 0,
	_realHeight			: 0,	//浏览器实际的有用的高度与宽度
	_realWidth			: 0,
	setAvailableTopLeft: function(){
		ABMessage._scrollTop		= ABBrowser.getScrollTop();
		ABMessage._scrollLeft		= ABBrowser.getScrollLeft();
		ABMessage._availableHeight	= ABBrowser.getViewHeight();
		ABMessage._availableWidth	= ABBrowser.getViewWidth();
		//获得页面实际可见的高度和宽度
		if(ABMessage._realHeight && ABMessage._realHeight < ABMessage._availableHeight)
			ABMessage._availableHeight = ABMessage._realHeight;
		if(ABMessage._realWidth && ABMessage._realWidth < ABMessage._availableWidth)
			ABMessage._availableWidth = ABMessage._realWidth;
		ABMessage._top  = ABMessage._scrollTop  + (ABMessage._availableHeight - ABMessage._height)/2;
		ABMessage._left = ABMessage._scrollLeft + (ABMessage._availableWidth  - ABMessage._width)/2;
		if(ABMessage._top < ABMessage._scrollTop) ABMessage._top = ABMessage._scrollTop;
	},
	getMessageView: function(objId, url, realW, realH){
        new Ajax.Request(
            url,{
                method:'get',
                onSuccess: function(transport){
                    //如果返回内容的Header中包含ValidatePage字段，则说明用户的请求被过滤系统拦截了，需要跳转到验证页面
                    if(transport.getResponseHeader('ValidatePage')){
                        window.open("/?area=common&cmd=validate&validate=1&url="+$E(location.href),"_self");
                        return;
                    }
                    ABMessage.setAvailableTopLeft();
                    ABMessage._obj.style.top 		= ABMessage._top +"px";
                    ABMessage._obj.style.left 		= ABMessage._left + "px";
                    ABMessage._obj.style.position 	= "absolute";
                    ABMessage._obj.innerHTML 		= transport.responseText;
                    ABMessage._obj.style.display 	= "block";
                }
            }
        );
        ABMessage._obj = $(objId);
        if(realH) ABMessage._realHeight	= realH;
        if(realW) ABMessage._realWidth	= realW;
    },
     sendMessage:function(url,params,obj){
        new Ajax.Request(
            url,{
                method:'post',
                parameters:params,
                onSuccess: function(transport){
                    $(obj).innerHTML = transport.responseText;
                }
            }
        );
    },
    closeView:function(){
    	var obj =  ABMessage._obj;
    	ABMessage.__destructMSG(obj);
    },
    __destructMSG: function(obj){
        $(obj).innerHTML = '';
        $(obj).style.display = 'none';
        $(obj).style.top = 0;
        $(obj).style.left = 0;
    }
}

function emailView(bid, realW)
{
    var url = "/?area=msg&cmd=email&id="+bid+"&t="+new Date().getTime();
    if(realW) ABMessage.getMessageView('msg1', url, realW);
    else ABMessage.getMessageView('msg1', url);
}
function emailErrorView(bid,uri,realW)
{
    var url = "/?area=msg&cmd=email&id="+bid+""+uri;
    if(realW) ABMessage.getMessageView('msg1', url, realW);
    else ABMessage.getMessageView('msg1',url);
}
function mobileView(bid, realW)
{
    var url = "/?area=msg&cmd=mobile&id="+bid+"&t="+new Date().getTime();
    if(realW) ABMessage.getMessageView('msg1',url, realW);
    else ABMessage.getMessageView('msg1',url);
}

/**
 *  拖动的函数
*/
var DragAndDrop = {
	
	//拖动的对象
	dragObj : null,
	//拖动开始时拖动对象与鼠标事件的横坐标差
	deltaX : 0,
	//拖动开始时拖动对象与鼠标事件的纵坐标差
	deltaY : 0,

	//开始拖动，绑定响应事件，记录坐标差
	startdrag:function(obj,event){
		DragAndDrop.dragObj = $(obj);
		DragAndDrop.deltaX=parseInt(DragAndDrop.dragObj.style.left)-event.clientX-document.documentElement.scrollLeft;
		DragAndDrop.deltaY=parseInt(DragAndDrop.dragObj.style.top)-event.clientY-document.documentElement.scrollTop;
		attachEventListener(document.body,"mousemove",DragAndDrop.drag,false);
		attachEventListener(document.body,"mouseup",DragAndDrop.drop,false);
	},

	//响应拖动事件
	drag:function(event){
		if(DragAndDrop.dragObj){
			DragAndDrop.dragObj.style.left=(event.clientX+DragAndDrop.deltaX+document.documentElement.scrollLeft)+"px";
			DragAndDrop.dragObj.style.top=(event.clientY+DragAndDrop.deltaY+document.documentElement.scrollTop)+"px";
		}
	},

	//拖动停止
	drop:function(event)
	{
		DragAndDrop.dragObj = null;
		//此处写下取消前面定下的时间绑定函数，以避免内存泄露
	}
}

//记录当前的发送公交驾乘的方案号
var curMobileTraffic=0;

function mobileTrafficView(index)
{
    var x1 = $('x1').value;
    var x2 = $('x2').value;
    var y1 = $('y1').value;
    var y2 = $('y2').value;
    var city = $('curcity').value;
    var start = $('start').value;
    var end   = $('end').value;
    
    var url = "/?area=msg&cmd=mobile_traffic";
    url += "&x1="+x1+"&x2="+x2+"&y1="+y1+"&y2="+y2+"&city="+$E(city)+"&origin="+$E(start)+"&end="+$E(end)+"&index="+(index-1);
    ABMessage.getMessageView('msg1',url);
    if(index > 0) curMobileTraffic = index;
}

function mobileErrorView(bid,ep)
{
    var url = "/?area=msg&cmd=mobile&id="+bid+"&t="+new Date().getTime();
    if(ep){
        url += "&ep="+$E(ep);
    }
    ABMessage.getMessageView('msg1',url);
}
function cn2en(str)
{
    var length = str.length;
    var r = ""
    for(var i=0; i<length; i++)
    {
        if(str.charCodeAt(i)>65280 && str.charCodeAt(i)<65375)
        {
            r += String.fromCharCode(str.charCodeAt(i)-65248);
        }
        else{
            r += String.fromCharCode(str.charCodeAt(i));
        }
    }
    return r;
}
/*
function checkEmail(obj,sbj)
{
    var tmp = obj.value.strip();
    if(tmp){
        if(tmp.match(/^[\w\.\-]+@([\w\-]+\.)+[a-z]{2,4}$/ig)){
            sORh(sbj,'none');
        }
        else{
            $(sbj).innerHTML = '您输入的邮件地址有误';
            sORh(sbj,'block');
        }
    }
    else{
        sORh(sbj,'none');
    }
}
function sendEmail()
{
    var parent = document.email;
    var uname = parent.name.value.strip();
    var to = cn2en(parent.mail_to.value.strip());
    if(!to){
        alert("邮件地址不能为空");
        return;
    }
    var tmpTo = to.split(";");
    for(var i=0;i<tmpTo.length;i++){
        if(!tmpTo[i].match(/^[\w\.\-]+@([\w\-]+\.)+[a-z]{2,4}$/ig)){
            alert("接收人邮件地址错误");
            return;
        }        
    }
    var from = parent.mail_from.value.strip();
    if(from && !from.match(/^[\w\.\-]+@([\w\-]+\.)+[a-z]{2,4}$/ig)){
        alert("您输入的邮件地址有误");
        return;
    }
    var t = parent.subject.value.strip();
    if(!t){
        alert("邮件标题不能为空");
        return;
    }
    
    var cont = $("cont").value.strip();
    if(cont.length > 560){
        alert("邮件内容太长");
        return;
    }
    else if(cont.length < 1){
        alert("邮件内容太少");
        return;
    }
    var id = parent.bid.value;
    var url = "/?ec="+$E(id);
    var params = "area=msg&cmd=emsg&name="+$E(uname)+"&from="+$E(from)+"&to="+$E(to)+"&subject="+$E(t)+"&content="+$E(cont)+"&id="+$E(id);
    ABMessage.sendMessage(url,params,"msg1");
}
*/
function chechPhoneNO(obj,sbj)
{
    var tmp = obj.value.strip();
    if(isNaN(cn2en(tmp))){
        sORh(sbj,'block');
        return;
    }
    if(tmp.length == 11 || tmp.length == 0){
        sORh(sbj,'none');
    }
    else{
        sORh(sbj,'block');
    }
}
function checkEnCode(obj,sbj)
{
    var tmp = obj.value.strip();
    if(!tmp){
        return;
    }
    if(isNaN(tmp) && tmp){
        sORh(sbj,'block');
    }
    else{
        new Ajax.Request(
            "/",{
                method: 'post',
                parameters: "area=msg&cmd=code&code="+$E(tmp),
                onSuccess: function(transport){
                    if(transport.responseText == 1){
                        sORh(sbj,'none');
                    }
                    else{
                        sORh(sbj,'block');
                    }
                }
            }
        );        
    }
}
function copy(obj)
{
    try{
        var targetText = $(obj);
        targetText.focus();
        targetText.select();
        var clipeText = targetText.createTextRange();
        clipeText.execCommand("Copy");
    }
    catch(e){
        alert("您使用的浏览器不支持自动复制url功能，清选中url，以ctrl+c进行复制.");
    }  
}
function copy2Subject(obj)
{
    var uname = obj.value.strip();
    var str = document.email.subject.value;
    var flag = 0;
    for(var i=0; i< uname.length; i++)
    {
        if(uname[i] == str[i]){
            flag = 1;
        }
        else{
            flag = 0;
        }
    }
    if(flag == 0){
        document.email.subject.value = uname+str;
    }
}
function sendMobileMsg()
{
    with(document.mobile){
        var nos = "";
        for(var i=0;i<5;i++){
            var tmp = phone[i].value.strip();
            if(isNaN(cn2en(tmp))){
                sORh('p'+i,'block');
                return;
            }
            if(tmp.length==11){                
                nos += cn2en(tmp)+",";
            }
            else if(tmp){
                sORh('p'+i,'block');
                return;
            }
        }
        if(!nos){
            return;
        }
        var c = code.value.strip();
        if(isNaN(c) || c.length<5){
            sORh('cco','block');
            return;
        }  
        var ids = bid.value;
        var n = bname.value;
    }    
    
    var url = "/?mc="+$E(ids);
    var params = "area=msg&cmd=mmsg&no="+$E(c)+"&phone="+$E(nos)+"&name="+$E(n)+"&id="+$E(ids);
    ABMessage.sendMessage(url,params,"msg1");
}

function sendMobileTrafficMsg()
{
    with(document.mobile){
        var nos = "";
        for(var i=0;i<5;i++){
            var tmp = phone[i].value.strip();
            if(isNaN(cn2en(tmp))){
                sORh('p'+i,'block');
                return;
            }
            if(tmp.length==11){                
                nos += cn2en(tmp)+",";
            }
            else if(tmp){
                sORh('p'+i,'block');
                return;
            }
        }
        if(!nos){
            return;
        }
        var c = code.value.strip();
        if(isNaN(c) || c.length<5){
            sORh('cco','block');
            return;
        }  
        var ids = bid.value;
    }    
    var x1 = document.mobile.x1.value;
    var x2 = document.mobile.x2.value;
    var y1 = document.mobile.y1.value;
    var y2 = document.mobile.y2.value;
    var city = document.mobile.city.value;
    var origin = document.mobile.origin.value;
    var end   = document.mobile.end.value;
    var index   = document.mobile.index.value;
    
    var url = "/?area=msg&cmd=mmsg_traffic&no="+$E(c)+"&phone="+$E(nos);
    url += "&x1="+x1+"&x2="+x2+"&y1="+y1+"&y2="+y2+"&city="+$E(city)+"&origin="+$E(origin)+"&end="+$E(end)+"&index="+(index);
    ABMessage.getMessageView('msg1',url);
}

function closeMsgViewAuto()
{
    sORh('msg1','none');
}
function printPage()
{
    window.print();
}

function sethp()
{
        new Ajax.Request(
            "/",{
                method: 'get',
                parameters: "area=common&cmd=sethomepage"
            }
        );        
}

function attachEventListener(target,eventType,functionRef,capture)
{
    if(!target){
        return;
    }
    if(typeof target.addEventListener != "undefined"){
        target.addEventListener(eventType,functionRef,capture);
    }
    else if (typeof target.attachEvent != "undefined"){
        var functionString = eventType + functionRef;
        target["e" + functionString] = functionRef;
        target[functionString] = function(event){
            if(typeof event == "window.event"){
                event = window.event;
            }
            target["e" + functionString](event);
        };
        target.attachEvent("on" + eventType,target[functionString]);
    }
    else{
        eventType = "on" + eventType;
        if(typeof target[eventType] == "function"){
            var oldListener = target[eventType];
            target[eventType] = function(event){
                oldListener();
                return functionRef;
            }
        }
        else{
            target[eventType] = functionRef;
        }
    }
}

function detachEventListener(target, eventType, functionRef,capture)
{
    if (typeof target.removeEventListener != "undefined"){
        target.removeEventListener(eventType, functionRef, capture);
    }
    else if (typeof target.detachEvent != "undefined"){
    var functionString = eventType + functionRef;
        target.detachEvent("on" + eventType, target[functionString]);
        target["e" + functionString] = null;
        target[functionString] = null;
    }
    else{
        target["on" + eventType] = null;
    }
}
function cancelEvent(e)
{
    var _e = e?e:window.event;
    if(e.stopPropagation){
        e.stopPropagation();
    }
    if(e.preventDefault){
        e.preventDefault();
    }
    e.cancelBubble = true;
    e.cancel = true;
    e.returnValue = false;
    return false;
}

function userSuggest(obj)
{
    var base = location.href;
    var url = obj.href+"&url="+$E(base);
    window.open(url,"__target");
}

/**
	弹出免费拨打400电话页面
*/
function freePhone(id400)
{
	var url = "http://401.callpay.cn/aibang/ppcall.aspx?m="+id400+"&f="+encode64(id400);
	window.open(url,'AI_BANG_TONG', 'height=410, width=400, toolbar=no, menubar=no, scrollbars=no, resizable=no,location=no, status=yes');
}

/**
	蚂蚁互动的URL编码函数
*/
function encode64(input) {
	var keyStr = "ABCDEFGHIJKLMNOP" +
	"QRSTUVWXYZabcdef" +
	"ghijklmnopqrstuv" +
	"wxyz0123456789+/" +
	"=";
	input = escape(input);
	var output = "";
	var chr1, chr2, chr3 = "";
	var enc1, enc2, enc3, enc4 = "";
	var i = 0;

	do {
		chr1 = input.charCodeAt(i++);
		chr2 = input.charCodeAt(i++);
		chr3 = input.charCodeAt(i++);

		enc1 = chr1 >> 2;
		enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
		enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
		enc4 = chr3 & 63;

		if (isNaN(chr2)) {
			enc3 = enc4 = 64;
		} else if (isNaN(chr3)) {
			enc4 = 64;
		}

		output = output +
		keyStr.charAt(enc1) +
		keyStr.charAt(enc2) +
		keyStr.charAt(enc3) +
		keyStr.charAt(enc4);
		chr1 = chr2 = chr3 = "";
		enc1 = enc2 = enc3 = enc4 = "";
	} while (i < input.length);

	return output;
}

/*IE 处理背景图片缓存*/
attachEventListener(window,'load',function(){
	if(ABBrowser.isIE()){
		document.execCommand("BackgroundImageCache", false, true);//clear ie images cache
	}    
},false);

function isCityDomain()
{
	var arr = ["beijing","shanghai","tianjin","chongqing",
	"hefei","fuzhou","guangzhou","nanning",
	"guiyang","lanzhou","haikou","shijiazhuang",
	"zhengzhou","wuhan","changsha","haerbin",
	"changchun","nanjing","nanchang","shenyang",
	"huhehaote","taiyuan","xian","jinan",
	"chengdu","wulumuqi","kunming","hangzhou",
	"shenzhen","xiamen","ningbo","qingdao",
	"dalian","suzhou"];
	for(var i =0;i<arr.length;i++){
		if(location.hostname.indexOf(arr[i]) == 0){
			return true;
		}
	}
	return false;
}

/**
	下拉框相关内容
*/
var curPosition = -1; //initial is -1
var totalResultNum = 0; //initial is 0
var curInput = null;
var pulldownId = "address_drop";
//当前最后一个下拉框请求ajax队形
var pulldownAjax = null;

function responseInput(e,obj)
{
	if(!$(pulldownId)){
		return;
	}
	var oA = $(pulldownId).getElementsByTagName("a");
    if(!oA.length || $(pulldownId).style.display == "none"){
        return;
    }
    totalResultNum = oA.length;
    response(e,obj?obj:this,pulldownId);
    
}

function response(e,sbj,obj)
{
    var oA = document.getElementById(obj).getElementsByTagName("a");
    var oS = document.getElementById(obj).getElementsByTagName("input");

    if(e.keyCode == 38){//up
        curPosition -= 1; 
        if(curPosition <= -1){//is top
            curPosition = totalResultNum-2;//except close tip
            oA[0].className = ''; //release top style
        }
        else{
            //release pre style
            oA[curPosition+1].className = '';
        }
        //reset now
		//oS is address suggestion
		//oA is keyword suggestion
        sbj.value = oS[curPosition] ? oS[curPosition].name : oA[curPosition].innerHTML;           
        oA[curPosition].className = 'drop_item'; 
    }
    else if(e.keyCode == 40){//down
        curPosition += 1;
        if(curPosition >= totalResultNum-1){            
            oA[curPosition-1].className = '';
            curPosition = 0;
        }
        else if(curPosition > 0){
            //release pre style
            oA[curPosition-1].className = '';
        }
        //reset now
        sbj.value = oS[curPosition] ? oS[curPosition].name : oA[curPosition].innerHTML;           
        oA[curPosition].className = 'drop_item';
    }
}
/**
 * desc: suggest addr only in city
 * @para: e == event
 * @para: city,default value is undefined
 * */

function suggestAddrInCity(e,city)
{
   var _city = city ? city : getCookie("city");
   suggestAddr(e,_city,2);
}
/**
 * desc: grep all templates html files,only two way used
 * 1: suggestAddr(event);
 * 2: suggestAddr(event,string_type_city_value);
 * this kind of invoking is very confused.
 * solution:
 * suggestAddr support 3 parameters:event,city,mode
 * city and mode can be null
 * */
function suggestAddr(e,city,mode)
{
	var target = e.srcElement?e.srcElement:e.target;
	curInput = target;
    
	var _city = city;
	var _mode = parseInt(mode,10) ? parseInt(mode,10) : 2;
	if( !_city && !mode ){
		//query the address between city and address.
		_city = $('pulldownCity') ? $('pulldownCity').value : '';
		_mode = 3;
	}
    
	if(!_city){
		return;
	}
    
	//var city = getCookie("city");
	
    var _addr = getAddr(target);
    
    if(!_city){
    	return;
    }
    if(!_addr){
    	$(pulldownId).hide();
    	return;
    }
    var url = "/addr?mode="+$E(_mode)+"&s=addr&n=10&rc=1&city="+$E(_city)+"&key="+$E(_addr);
    suggestInput(e,url,target);
}

function suggestKeyword(e)
{
	var target = e.srcElement?e.srcElement:e.target;
	curInput = target;
	
    var city = getCookie("city");	
    var what = getWhat(target);
    
    if(!city ){
    	return;
    }
    if(!what){
    	$(pulldownId).hide();
    	return;
    }
    var url = "/key?mode=7&s=key&n=10&rc=1&city="+$E(city)+"&key="+$E(what);
    suggestInput(e,url,target);
}


function suggestCity(e)
{
	var target = e.srcElement?e.srcElement:e.target;
	curInput = target;
	var what = curInput.value;
    if(what == ""){
    	$(pulldownId).hide();
    	return;
    }
    //var url = "/key?mode=3&s=key&n=10&rc=1&city="+$E(city)+"&key="+$E(what);
    var url = "/?area=place&cmd=selectcity&query="+$E(what);
    suggestInput(e,url,target);
}

function suggestInput(e,url,target)
{   
   if(!$(pulldownId)){
	   return;
   }
   if(e.keyCode == 38 || e.keyCode == 40){
        if($(pulldownId).innerHTML && $(pulldownId).style.display == 'none'){
            $(pulldownId).innerHTML = "";
        }
        return;
    }
    else if(e.keyCode == 13){
    	$(pulldownId).hide();
    	return;
    }
    else if(e.keyCode == 9 || e.keyCode == 37 || e.keyCode == 39 ){
    	return;
    }
    //如果已经有ajax请求，不管是否已经完成，取消它
    if(pulldownAjax && pulldownAjax.abort){
    	pulldownAjax.abort();
    }
    pulldownAjax = new Ajax.Request(
        url,{
            method: 'get',
            onSuccess: function(transport){
                var __tmp = transport.responseText;
                if(__tmp){
                    $(pulldownId).innerHTML = "<iframe id='adir' frameborder='0' height='0'></iframe><div id='ssss'>"+__tmp+"</div>";
                }
                else{
                    $(pulldownId).innerHTML = "";
                }
                var obj = document.getElementById(pulldownId).getElementsByTagName("INPUT");
                if($("ssss")){
                    var __height = $('ssss').clientHeight;
                    __height = __height?__height:18*(obj.length);
                    $('adir').style.height = __height+'px';
                }
                 if(__tmp){                    
                        
                 		var o = $(pulldownId).style;
                 		
                 		if( $(pulldownId).visible()==false ){
                 			o.left = "-1000px";
                 		}
                 		
                 		$(pulldownId).show('block');
                        
                        var input = target;
                        var t = target.offsetTop,  h = target.clientHeight, l = target.offsetLeft, p = target.type;
                        while (target = target.offsetParent){
                        	t += target.offsetTop; l += target.offsetLeft;
                        }
						
                        var cw = input.offsetWidth;
                        //o.width=cw+"px";
                        var ch = $("ssss").offsetHeight;
                        
                        var dw = document.body.clientWidth, dl = document.body.scrollLeft, dt = document.body.scrollTop;

                        if (document.body.clientHeight + dt - t - h >= ch) o.top = ((p=="image")? t + h : t + h + 6)+"px";
                        else o.top  = ((t - dt < ch) ? ((p=="image")? t + h : t + h + 6) : t - ch-2)+"px";
                        if (dw + dl - l >= cw) o.left = l+"px"; else o.left = ((dw >= cw) ? dw - cw + dl : dl)+"px";

                    }
                    else{
                        sORh(pulldownId,'none');
                    }                            
                    curPosition = -1; //initial is -1
                    totalResultNum = 0; //initial is 0
             }
        }
    );
}
function jumpToDefaultPage()
{
	var city = getCookie("city");
	var url = "/?city="+$E(city);
	window.open(url,"_self");
}
function locate(type,addr,grid,mapxy,radius)
{
	curInput.value = addr;
	if(1 == type) {
	   setCookie("city",addr);
	   delCookie("addr");
	   suggestChangeCityTip(addr);

	   setTimeout("jumpToDefaultPage()",1);
	   return ;
	}
	sORh(pulldownId,"none");
}
function selectItem(name)
{
	curInput.value = name;
	sORh(pulldownId,"none");
}

attachEventListener(window,"load",function(){
	//当下拉框div不存在时，创建之
	if(!$(pulldownId)){
		var div=document.createElement("div");
		div.id=pulldownId;
		document.body.appendChild(div);
	}
	//当页面被点击时，关闭下拉框
	attachEventListener(document,"click",function(){
		sORh(pulldownId,"none");
		if(pulldownAjax && pulldownAjax.abort){
			pulldownAjax.abort();
		}
	},false);
	attachEventListener(document,"mouseup",function(){
		sORh(pulldownId,"none");
		if(pulldownAjax && pulldownAjax.abort){
			pulldownAjax.abort();
		}
	},false);
	//当tab键被按下时，关闭下拉框。
	attachEventListener(document,"keydown",function(event){
		var e = event || window.event;
		if(e && e.keyCode == 9){ 
			sORh(pulldownId,"none");
			if(pulldownAjax && pulldownAjax.abort){
				pulldownAjax.abort();
			}
		}
	},false);
},false);


attachEventListener(window,"load",function(){
	//删除电话中隐藏的混淆信息，以便于拷贝
	var list = document.getElementsByTagName('span');
    for(var i=0;i<list.length;i++){
    	var display="";
    	if(list[i].currentStyle){
    		display = list[i].currentStyle.display; 
    	}
    	else if(window.getComputedStyle){
    		display = window.getComputedStyle(list[i],null).display;
    	}
    	if(display  == "none" && /^m_\d+$/.test(list[i].className) == true ){
    		list[i].innerHTML="";
    	}
    }
},false);

//写日志，统计用
function sendAjaxGetForLog(frm)
{
	new Ajax.Request('/?area=common&cmd=forlog&frm='+frm,{method: 'get'});
	return true;
}
function sendHtmlReqForlog(frm,obj){
	//发送url统计代码//
	var randnum = Math.random() * 9 + 1;
	var now =new Date();
	var randcode = now.getTime() + randnum;
	if(obj == null){
		(new Image).src="/files/StatUrl.html?randcode="+randcode+"&frm="+frm;
	}
	else{
		var turl =  obj.getAttribute("href");
		if(turl != null){
			(new Image).src="/files/StatUrl.html?randcode="+randcode+"&turl="+encodeURIComponent(turl)+"&frm="+frm;
		}
		else{
			(new Image).src="/files/StatUrl.html?randcode="+randcode+"&frm="+frm;
		}
	}
	return true;
}

