﻿var Ajax=function(){
    var ajax;
    if(window.XMLHttpRequest) { //Mozilla 浏览器
        ajax = new XMLHttpRequest();
        if (ajax.overrideMimeType) {//设置MiME类别
         ajax.overrideMimeType('text/xml');
        }
    }else if (window.ActiveXObject) { // IE浏览器
        try {            
            ajax = new ActiveXObject("Msxml2.XMLHTTP");
        }catch(e) {
            try {
                ajax = new ActiveXObject("Microsoft.XMLHTTP");
            }catch (e) {
                ajax = false; 
            }
        }
    }
    if (!ajax) { // 异常，创建对象实例失败
        window.alert("不能创建XMLHttpRequest对象实例.");
        return false;
    }
    this.ajax=ajax;
}

Ajax.prototype.Request=function(url,method,params,Success){
    if(this.ajax){
        var ajax=this.ajax;
        method=method || "GET";  
        url+=url.indexOf('?')>-1?"&":"?";
        url+=new Date();           
         ajax.open(method, url, true);
         ajax.onreadystatechange = function(){
             if (ajax.readyState == 4 && ajax.status == 200) {
                if(Success){
                    Success(ajax);
                }
             }
         }
         ajax.send(null);
    }
}
Ajax.prototype.Request2=function(url){
    if(this.ajax){
        var ajax=this.ajax;
        if(!arguments[1])return ;
        var p=arguments[1];
        if(typeof p!='object'){return;}
        var method= (p["method"] || "GET").toUpperCase();
        var params=p["params"] || null;
        var success=p["success"] || null;
        ajax.open(method, url, true);
        ajax.onreadystatechange = function(){
            if (ajax.readyState == 4 && ajax.status == 200) {
                if(success){success(ajax);}
            }
        }
        ajax.send(null);
    }    
    
}


if(typeof $=="undefined"){
    var $=function(sid){
        return document.getElementById(sid);
    }
}

//给控件添加事件
if(typeof addEvent == "undefined"){
	addEvent = function(o, evType, f, capture) {
		if(o == null) { return false; }
		if(o.addEventListener) {
			o.addEventListener(evType, f, capture);
			return true;
		} else if (o.attachEvent) {
			var r = o.attachEvent("on" + evType, f);
			return r;
		} else {
			try{ o["on" + evType] = f; }catch(e){}
		}
	};
}
if(typeof Position=='undefined'){
    var Position={}
}
//获取控件绝对位置
Position.PositionXY=function(element){
     var valueT = 0, valueL = 0;
    do {
      valueT += element.offsetTop  || 0;
      valueL += element.offsetLeft || 0;
      element = element.offsetParent;
    } while (element);
    return {left:valueL,top:valueT};
}



var Menu=function(sid){  
    if(typeof(sid)!="Object")sid=$(sid);   
    var menuid=sid.id+"__menu";
    var menu=$(menuid);
    if(menu==null){
        var xy=Position.PositionXY(sid);
        menu=document.createElement('div');
        menu.style.position='absolute';
        menu.id=menuid;       
        menu.style.left=xy.left+'px';
        menu.style.top=xy.top+sid.offsetHeight+'px';
        menu.style.border='1px solid #d6d6d6';
        menu.style.width='300px';
        menu.style.backgroundColor='#fff';
        menu.style.padding='5px';
        menu.style.zIndex=10000;
        document.body.appendChild(menu);
        addEvent(document,"click",function(event){
            var e=window.event ||event;           
            var elm=(document.all)?e.srcElement:e.target;
            if(elm==menu || elm ==sid)return;
            var f=false;
            while(elm!=document.body){
                if(elm==menu)f=true;
                if(elm.parentNode!=null){
                    elm=elm.parentNode;
                    if(elm && elm==menu){return;}
                }
                else{
                    f=true;
                    break;
                }
            }
            if(!f){try{document.body.removeChild(menu);}catch(ex){}}
        },false);
    }   
     menu.style.display='block'; 
    this.Elm=menu;
    this.Close=function(){
        document.body.removeChild(menu);
    }
}
Menu.SetSelectValue=function(val,text,obj){
    if(!val)return;
    if(typeof obj!='object')obj=$(obj);
    obj.options[0].value=val;
    obj.options[0].text=text; 
     var menu=$(obj.id+"__menu")
     if(menu){
        document.body.removeChild(menu);
     }
}

var ListMenu=function(obj,id){
    if(id){}else{id=0;}
    if(arguments[2]){
        text=arguments[2];
    }
    var menu=new Menu(obj);
     if(typeof obj=='string') obj=$(obj);
    menu.Elm.style.width='250px';
    menu.Elm.innerHTML='loading...';
    menu.Elm.focus();
    var url="/category.ashx?pid="+id;
    var ajax=new Ajax();
    
    ajax.Request(url,"GET",null,function(rs){        
        var al=eval(rs.responseText);   
        if(al.length==0){            
            if(text){               
              Menu.SetSelectValue(id,text,obj);
            }           
        }else{  
            menu.Elm.innerHTML='';  
            for(var i=0;i<al.length;i++){
                menu.Elm.innerHTML+='<span style="cursor:pointer;display:block;width:120px;float:left;"><a onclick="ListMenu(\''+obj.id+'\','+al[i].id+',\''+al[i].name+'\');">'+al[i].name+'</a></span>'            
            } 
            
           // menu.Plus();
        }
    });
}

var AreaMenu=function(obj,id){
    if(id){}else{id=0;}
    if(arguments[2]){
        text=arguments[2];
    }
    var menu=new Menu(obj);
     if(typeof obj=='string') obj=$(obj);
    menu.Elm.style.width='250px';
    menu.Elm.innerHTML='loading...';
    menu.Elm.focus();
    var url="/area.ashx?pid="+id;
    var ajax=new Ajax();
    
    ajax.Request(url,"GET",null,function(rs){        
        var al=eval(rs.responseText);   
        if(al.length==0){            
            if(text){
                Menu.SetSelectValue(id,text,obj);             
            }
            menu.Close();
        }else{ 
            menu.Elm.innerHTML='';   
            for(var i=0;i<al.length;i++){
                menu.Elm.innerHTML+='<span style="cursor:pointer;display:block;width:120px;float:left;"><input type="checkbox" onclick="Menu.SetSelectValue(\''+al[i].id+'\',\''+al[i].name+'\',\''+obj.id+'\');" title="点击选择['+al[i].name+']"> <a onclick="AreaMenu(\''+obj.id+'\','+al[i].id+',\''+al[i].name+'\');" title="点击选择下一级地区">'+al[i].name+'</a></span>'            
            } 
        }
    });
}


 var Area=function(sel,pid,selectedvalue){
    var url="/area.ashx";
    if(pid){        
        url+="?pid="+pid;        
    }
    if(typeof selectedvalue=='undefined')selectedvalue=0;
    if(typeof sel!='Object')sel=$(sel);
    var ajax=new Ajax();
    ajax.Request(url,"GET",null,function(rs){
        var al=eval(rs.responseText);
        sel.length=1;
        for(var i=0;i<al.length;i++){
            sel.options[i+1]=new Option(al[i].name,al[i].id);
            if(selectedvalue>0 && selectedvalue==al[i].id){
               sel.value=selectedvalue;
            }
        }
    });
}

var category=function(sel,pid,selectedvalue){
    var url="/category.ashx";
    if(pid){        
        url+="?pid="+pid;        
    }
    if(typeof selectedvalue=='undefined')selectedvalue=0;
    if(typeof sel!='Object')sel=$(sel);
    var ajax=new Ajax();
    ajax.Request(url,"GET",null,function(rs){
        var al=eval(rs.responseText);
        sel.length=1;
        for(var i=0;i<al.length;i++){
            sel.options[i+1]=new Option(al[i].name,al[i].id);
            if(selectedvalue>0 && selectedvalue==al[i].id){
               sel.value=selectedvalue;
            }
        }
    });
}
