	/*
		The advanced popup selector.
		By DreamyZhou 2008-07-25

		<input name='area' type='hidden' value='4407'>
        <input name="areaBtn" type="button" value="请 选 择" class="sel_btn" style="CURSOR: hand" onClick="_$selOutside=false;popSelector(3, document.all.areaBtn, document.all.area, 1);" />
        <script>setInputStr(document.all.area, document.all.areaBtn, 1);</script>
         以上是调用方式,popSelector的参数:可选数量，按钮，隐藏域，类型(1地区 2岗位),setInputStr的参数：隐藏域，按钮，类型(1地区 2岗位)

        <link href="<c:url value='/css/popSel.css' />" rel="stylesheet" type="text/css" />
		<SCRIPT language="javascript" src="<c:url value='/js/prototype.js' />"></SCRIPT>
		<SCRIPT language="javascript" src="<c:url value='/js/popCity.jsp' />"></SCRIPT>
		<SCRIPT language="javascript" src="<c:url value='/js/popPosition.jsp' />"></SCRIPT>
		<SCRIPT language="javascript" src="<c:url value='/js/popSelector.js' />"></SCRIPT>

		Features:
			IE6, IE7, FireFox2, FireFox3 compatible.
			Selector draggable.
			Selector auto close detection. (click on outside and press ESC)
			Selector popup inside the window. (adapt to the window size, never go out the window)
			Selector auto center align, smart orientation.
			Customize select number.
			Self-detect whether pop up sub-options or check on the current option.
			Current selection full-level display.
			All deletion and independent deletion support.
			Parent selection state detection.
			Current selection self-loading.

		特性：
			支持IE6, IE7, FireFox2, FireFox3浏览器
			弹出选择器可拖拽
			弹出选择器自动关闭探测
			浏览器宽度探测，弹出选择器自适应屏幕
			弹出选择器自居中，智能定位
			自定义选择数量
			判断弹出子选项单或者选中当前选项
			当前选择的完整层级显示
			独立清除及全部清除
			上级选中状态检测
			当前选中项目的自加载
	*/
	document.write("<div id='selMask' ><iframe id='maskBgIframe' width='100%' height='100%' frameborder='0' src='/area/popBg.htm'></iframe></div><span id='selectorWrapper'></span>");

	var _$popSelector = false;// if the selector is popup.
	var _$selOutside = true;// if click on the outside of the selector's main div.
    var _$sub1Outside = true;// if click on the outside of the sub div level 1;
    var _$sub2Outside = true;
	var _$selectorWrapper = document.getElementById('selectorWrapper');
	var _$selectorName = "";
	var _$opts = cityList;
	var _$selNum = 1;
	var _$ctrlObj;
	var _$hiddenObj;
    var _$screenW = document.body.clientWidth;
    var _$screenH = document.body.clientHeight;
    var _$popSelDivW = 650;// the selector's main div width; 主层宽
	var _$popSelDivCellW = 160;//主层高
    var _$cellHeight = 28;
	var _$subDivW = 320; //小层宽
	var _$subDivCellW = 100; //小层高
    var _$isFireFox = false;
	var _$isIE6 = false;
	var _$isIE7 = false;
	var _$browser = navigator.appName
	var _$bVersion = navigator.appVersion
	var _$version = _$bVersion.split(";");
	var _$trimVersion = _$version[1].replace(/[ ]/g,"");

	Number.prototype.NaN0 = function(){return isNaN(this)?0:this;}
	var _$iMouseDown  = false;
	var _$dragObject  = null;
	var _$curTarget   = null;

	if(_$browser=="Microsoft Internet Explorer" && _$trimVersion=="MSIE7.0")
	{
		_$isIE7 = true;
	}

	else if(_$browser=="Microsoft Internet Explorer" && _$trimVersion=="MSIE6.0")
	{
		_$isIE6 = true;
	}

	function popSelector($selNum, $ctrlObj, $hiddenObj, $type)
	{
		_$selNum = $selNum; //how many options can be selected.
		_$ctrlObj = $ctrlObj; //the object that triggers the selector.
		_$hiddenObj = $hiddenObj; //the hidden object that contant the selected value.
		if($type == 3)
		{
			_$opts = majorList;
			_$popSelDivW = 605;// the selector's main div width;
	        _$popSelDivCellW = 200;
			_$subDivW = 605;
			_$subDivCellW = 200;
			_$selectorName = "专 业";
		}
		else if($type == 2)
		{
			_$opts = positionList;
			_$subDivW = 605;
			_$subDivCellW = 200;
			_$selectorName = "岗 位";
		}
		else
		{
			_$opts = cityList;
			_$subDivW = 320;
			_$subDivCellW = 100;
			_$selectorName = "地 区";
		}

		var _content = genContent(1, '');

		var _subDivL1 = "<div id='subDivL1' onclick='_$selOutside=false; _$sub1Outside=false;' style='position:absolute;background-color:white;border:solid 1px gray;display:none;'></div>";
		var _subDivL2 = "<div id='subDivL2' onclick='_$selOutside=false; _$sub1Outside=false; _$sub2Outside=false;' style='position:absolute;background-color:white;border:solid 1px gray;display:none;'></div>";
        var _subDivL3 = "<div id='subDivL3' onclick='_$selOutside=false; _$sub1Outside=false; _$sub2Outside=false;' style='position:absolute;background-color:white;border:solid 1px gray;display:none;'></div>";
		var _subDivL4 = "<div id='subDivL4' onclick='_$selOutside=false; _$sub1Outside=false; _$sub2Outside=false;' style='position:absolute;background-color:white;border:solid 1px gray;display:none;'></div>";
		var _subDivL5 = "<div id='subDivL5' onclick='_$selOutside=false; _$sub1Outside=false; _$sub2Outside=false;' style='position:absolute;background-color:white;border:solid 1px gray;display:none;'></div>";
        var _subDivL6 = "<div id='subDivL6' onclick='_$selOutside=false; _$sub1Outside=false; _$sub2Outside=false;' style='position:absolute;background-color:white;border:solid 1px gray;display:none;'></div>";
		var _subDivL7 = "<div id='subDivL7' onclick='_$selOutside=false; _$sub1Outside=false; _$sub2Outside=false;' style='position:absolute;background-color:white;border:solid 1px gray;display:none;'></div>";
		var _subDivL8 = "<div id='subDivL8' onclick='_$selOutside=false; _$sub1Outside=false; _$sub2Outside=false;' style='position:absolute;background-color:white;border:solid 1px gray;display:none;'></div>";
		var _subDivL9 = "<div id='subDivL9' onclick='_$selOutside=false; _$sub1Outside=false; _$sub2Outside=false;' style='position:absolute;background-color:white;border:solid 1px gray;display:none;'></div>";
        var _subDivL10 = "<div id='subDivL10' onclick='_$selOutside=false; _$sub1Outside=false; _$sub2Outside=false;' style='position:absolute;background-color:white;border:solid 1px gray;display:none;'></div>";


		var _top = event.clientY + 30 +  scrolltop();
		
        _$screenW = document.body.clientWidth;
        var _left = (_$screenW / 2) - (_$popSelDivW / 2) + document.body.scrollLeft;

		var _title = "&nbsp;&nbsp<b>" + _$selectorName + " 选 择 器</b> (可选" + _$selNum + "个)";
		var _curSelStr = "<table><tr><td height='24' valign='top' style='color:orange;'><strong>&nbsp;&nbsp;您当前选择的是：</strong></td><td valign='top' style='color:#539ADA;font:bold;'><strong><span id='currentSel'></span></strong></td></tr></table>";
		var _btn = "<a href='javascript:clearAll();'>[ 清除 ]</a>&nbsp;&nbsp;<a href='javascript:closeSelector();'>[ 关闭 ]</a>&nbsp;";
		var _table = "<table width='" + _$popSelDivW + "' border='0' cellspacing='0' cellpadding='2'><tr><td background='/area/i/sel_top_bg.jpg' height='26' style='color:#333;text-align:left;'>" + _title + "</td></tr><tr><td align='left'>";
		_table += _curSelStr + "</td></tr><tr><td height='1' background='/area/i/dot_line.gif'></td></tr><tr><td>" + _content + "</td></tr><tr><td height='5'></td></tr><tr><td bgcolor='#E8F3FC' height='26' align='right'>" + _btn + "</td></tr></table>";
		_$selectorWrapper.innerHTML = "<div id='popSelDiv' onclick='_$selOutside=false;' style='position:absolute;top:" + _top + "px;left:" + _left + "px;background-color:white;border:solid 1px gray;'>" + _table + "</div>" + _subDivL1 + _subDivL2 + _subDivL3 + _subDivL4 + _subDivL5 + _subDivL6 + _subDivL7 + _subDivL8 + _subDivL9 + _subDivL10;


		checkSelOptions();
        currentSelCnStr();
		mkDraggable(document.getElementById("popSelDiv"));
		mask();

		_$popSelector = true;
	}

    function scrolltop()
    {
        var _obj = document.body;
        while(_obj.scrollTop == 0 && _obj.parentNode)
        {
            if(_obj.tagName.toLowerCase() == 'html') break;
            _obj = _obj.parentNode;
        }
        return _obj.scrollTop;
    }

    function mask()
    {
		document.getElementById("selMask").style.display = "block";
		document.getElementById("selMask").style.height = document.body.scrollHeight;
		document.getElementById("maskBgIframe").style.height = document.body.scrollHeight;

    	if(_$isIE7 || _$isFireFox)
		{
			document.getElementById("maskBgIframe").style.width = "0";
			document.getElementById("maskBgIframe").style.height = "0";
		}
    }

    //gen the current selected options cn string and display.
    function currentSelCnStr()
    {
    	var _selCnStrObj = document.getElementById("currentSel");

        if(_$hiddenObj.value.indexOf(",") > 0)
		{
			var _hOpts = _$hiddenObj.value.split(",");
            var _str = new Array();

			for(var i = 0; i < _hOpts.length; i++)
			{
            	var _index = getIndexById(_hOpts[i]);

				_str.push("<img src='/area/i/close.gif' onclick='optClick(" + _index + ");'>&nbsp;&nbsp;&nbsp;" + _$opts[_index][1]);
			}

            _selCnStrObj.innerHTML = _str.toString().replace(/,/g, "<br>");
		}
		else
		{
			if(_$hiddenObj.value.length > 0)
			{
            	var _index = getIndexById(_$hiddenObj.value);
				_selCnStrObj.innerHTML = "<img src='/area/i/close.gif' onclick='optClick(" + _index + ");'>&nbsp;&nbsp;&nbsp;" + _$opts[_index][1];
			}
		}
    }

    function getIndexById($id)
    {
    	for(var i = 0; i < _$opts.length; i++)
        {
        	if(_$opts[i][3] == $id)
            {
				return i;
            }
        }
    }

	//gen the root div content.
	function genContent($level, $parentId)
	{
		var _str = new StringBuffer();
		for(var i = 0; i < _$opts.length; i++)
		{
			if(_$opts[i][4] == $level && _$opts[i][2] == $parentId)
			{
				var _content = "<input name='optCbox' id='optCbox"+ _$opts[i][3] +"' type='checkbox' onclick='return optSel(" + i + ");' /> <a href='javascript:;' title='" + _$opts[i][0] + "' onclick='_$sub1Outside=false;subSelDiv(" + i + ");'>" + _$opts[i][0] + "</a>";
				_str = _str.append("<div style='height:28px;position:relative;float:left;padding:0px;padding-top:1px;width:" + _$popSelDivCellW + "px;text-indent:8px;text-align:left;' onmouseout='this.style.backgroundColor = \"#FFF\";' onmouseover='this.style.backgroundColor = \"#F2FFC8\";' class='popSel'>" + _content + "</div>");
			}
		}

		return _str.toString();
	}

	//when the option checkbox is being click.
	function optSel($index)
	{
		var _opt = _$opts[$index];
		var _id = _opt[3];
		var _cnStr = _opt[1];

		if(document.getElementById("optCbox" + _id).checked == true)
		{
			
			if(chkOptSel())
			{
				removeSubSelOpt($index);
				addOptSel($index);
			}
			else
			{
				return false;
			}
		}
		else
		{
			removeOptSel(_id);
		}

		return true;
	}

	function removeSubSelOpt($index)
	{
		var _opt = _$opts[$index];
		var _selOpts = _$hiddenObj.value.split(",");

		if(_selOpts[0].length > 0)
		{
			for(var i = 0; i < _selOpts.length; i++)
			{
				if(_selOpts[i].substring(0, _opt[3].length) == _opt[3]) removeOptSel(_selOpts[i]);
			}
		}
	}
    //显示所选项
	function addOptSel($index)
	{
		var $selCnStrObj = document.getElementById("currentSel");
		var _opt = _$opts[$index];
		var _id = _opt[3];
		var _cnStr = _opt[1];
		var _str = _opt[0].length > 5 ? _opt[0].substring(0, 4) + ".." : _opt[0];

		if(_$hiddenObj.value.trim().length > 0)
		{
			_$hiddenObj.value = _$hiddenObj.value + "," + _id;
			//$selCnStrObj.innerHTML = $selCnStrObj.innerHTML + "<br>" + "&nbsp;&nbsp;&nbsp;" + _cnStr ;
			/*$selCnStrObj.innerHTML = $selCnStrObj.innerHTML + "<br>" + "<img src='/area/i/close.gif' onclick='optClick(" + $index + ");'>&nbsp;&nbsp;&nbsp;" + _cnStr ;*/
			$selCnStrObj.innerHTML = $selCnStrObj.innerHTML + "<br>" + "<img src='/area/i/close.gif' onclick='optClick(" + $index + ");'>&nbsp;&nbsp;&nbsp;" + "<span id='select_address'>" + _cnStr +"</span>";
			_$ctrlObj.value = _$ctrlObj.value + "," + _str;
		}
		else
		{
			_$hiddenObj.value = _id;
			/*$selCnStrObj.innerHTML = "<img src='/area/i/close.gif' onclick='optClick(" + $index + ");'>&nbsp;&nbsp;&nbsp;" + _cnStr;*/
			$selCnStrObj.innerHTML = "<img src='/area/i/close.gif' onclick='optClick(" + $index + ");'>&nbsp;&nbsp;&nbsp;" + "<span id='select_address'>" + _cnStr + "</span>";
			_$ctrlObj.value = _str;
		}
	}

	//when the option is being clicked to add or remove the checkbox checked state.
	function optClick($index)
	{
		var _opt = _$opts[$index];
		var _id = _opt[3];
		var _cbox = document.getElementById("optCbox" + _id);

		if(_cbox && _cbox.disabled == true) return;

		if(!_cbox)
		{
			removeOptSel(_id);
		}
		else if(_cbox.checked == true)
		{
			removeOptSel(_id);
			_cbox.checked = false;
		}
		else
		{
			
			if(chkOptSel())
			{
				addOptSel($index);
				_cbox.checked = true;
			}
		}
	}

	function removeOptSel($id)
	{
		var _selCnStrObj = document.getElementById("currentSel");

		if(_$hiddenObj.value.trim().length > 0 && _$hiddenObj.value.indexOf(",") > 0)
		{
			//if there is more than two options being selected.
			var _sel = _$hiddenObj.value.split(",");
			var _newStr;
			//current selected string.
			var _selCn = _selCnStrObj.innerHTML.split(/<BR>/gi);
			var _newStrCn;
			//select btn value string.
			var _btnStr = _$ctrlObj.value.split(",");
			var _newBtnStr;

			for(var i = 0; i < _sel.length; i++)
			{
				if(_sel[i] == $id)
				{
					_newStr = _sel.del(i);
					//deal with the current selected cn string;
					_newStrCn = _selCn.del(i);
					//deal with the btn value.
					_newBtnStr = _btnStr.del(i);
				}
			}
			_$hiddenObj.value = _newStr;
			_selCnStrObj.innerHTML = _newStrCn.toString().replace(",", "<BR>");
			_$ctrlObj.value = _newBtnStr;
		}
		else
		{
			//one or none option being selected.
			_$hiddenObj.value = '';
			_selCnStrObj.innerHTML = '';
			_$ctrlObj.value = '请 选 择';
		}
	}

	function chkOptSel()
	{
		clearAll(); // edit by jspchen 2008-10-10 [修改] 点击自动清除
		
		/*if(_$selNum < 2 && _$hiddenObj.value.trim().length > 0)
		{
			alert("您的选择数量已经超过限制！");
			return false;
		}

		if(_$hiddenObj.value.trim().length > 0 && _$hiddenObj.value.indexOf(",") > 0)
		{
			var _sel = _$hiddenObj.value.split(",");

			if(_sel.length >= _$selNum)
			{
				alert("您的选择数量已经超过限制！");
				return false;
			}
		}*/

		return true;
	}

	function checkSelOptions()
	{
		if(_$hiddenObj.value.indexOf(",") > 0)
		{
			var _$opts = _$hiddenObj.value.split(",");
			for(var i = 0; i < _$opts.length; i++)
			{
				checkOnTheOpt(_$opts[i]);
			}
		}
		else
		{
			if(_$hiddenObj.value.length > 0)
			{
				checkOnTheOpt(_$hiddenObj.value.trim());
			}
		}
	}

	function checkOnTheOpt($id)
	{
		var _cbox = document.getElementById("optCbox" + $id);
		if(_cbox)
		{
			_cbox.checked = true;
		}
	}

	//pop the subarea div including sub1 and sub2 level.
	function subSelDivByIndex($index)
	{
		var _opt = _$opts[$index];
		var _id = _opt[3];
		var _level = _opt[4];

		var _subSelDiv = document.getElementById("subDivL" + _level);
		var _str = new StringBuffer();
        var _count = 0;
		var _enable = "";

		if(document.getElementById("optCbox" + _opt[3]).checked == true || document.getElementById("optCbox" + _opt[3]).disabled == true)
		{
			_enable = "DISABLED";

		}

		for(var i = 0;  i < _$opts.length; i++)
		{
			if(_$opts[i][4] == _level + 1 && _$opts[i][2] == _id)
			{
				var _content = "<input name='optCbox' id='optCbox"+ _$opts[i][3] + "' " + _enable + " type='checkbox' onclick='return optSel(" + i + ");' /> <a href='javascript:;' title='" + _$opts[i][0] + "' onclick='_$sub2Outside=false;subSelDiv(" + i + ");'>" + _$opts[i][0] + "</a>";
				_str = _str.append("<div style='text-indent:8px;height:" + _$cellHeight + "px;position:relative;float:left;padding:0px;padding-top:1px;width:" + _$subDivCellW + "px;-o-text-overflow:ellipsis; text-overflow:ellipsis; white-space:nowrap; overflow:hidden;text-align:left;' onmouseout='this.style.backgroundColor = \"#FFF\";' onmouseover='this.style.backgroundColor = \"#F2FFC8\";' class='popSel'>" + _content + "</div>");
				_count = _count + 1;

            }

		}

        _$screenW = document.body.clientWidth;
        _$screenH = document.body.clientHeight;

        if(event.clientX + _$subDivW > _$screenW)
        {
        	_subSelDiv.style.left = _$screenW - (_$subDivW + 2) + document.body.scrollLeft + "px";
        }
        else
        {
			_subSelDiv.style.left = (event.clientX - 2) + document.body.scrollLeft + "px";

        }

		var _rows = (parseInt(_count / 3)) + (_count % 3 > 0 ? 1 : 0);
        var _height = _rows * (_$cellHeight + (_$isFireFox ? 1 : 0)) + 44 + (_$isFireFox ? 2 : 0);

        if(event.clientY + _height > _$screenH)
        {
        	_subSelDiv.style.top = _$screenH - _height + scrolltop() + "px";
        }
        else
        {
			_subSelDiv.style.top = event.clientY + scrolltop() + "px";
        }

		var _title = "<tr><td bgcolor='#E8F3FC' height='16' align='right'><a href='javascript:closeSubDiv("+_level+");'>[ 关闭 ]</a>&nbsp;</td></tr>";
		_subSelDiv.innerHTML = "<table width='" + _$subDivW + "' border='0' cellspacing='0' cellpadding='2'>" + _title + "<tr><td height='3'></td></tr><tr><td>" + _str + "</td></tr><tr><td bgcolor='#E8F3FC' height='10'></td></tr></table>";


		if(_str.length() > 0)
		{
			//checked being selected options.
			checkSelOptions();

			_subSelDiv.style.display = 'block';
		}
		else
		{
			//checked the option.
			optClick($index);
		}

		mkDraggable(document.getElementById("subDivL" + _level));
	}

	function subSelDiv($index)
	{
		var _level = _$opts[$index][5];		//edit by jspchen
		if(_level == 1)
		{
			subSelDivByIndex($index);
		}
		else if(_level == 0)
		{
			optClick($index);

		}
	}

	function closeSubDiv($divId)
	{
		for(var i=$divId;i<=10;i++){
			document.getElementById("subDivL"+i).style.display = 'none';
		}

		//var _div = document.getElementById($divId);
		//_div.style.display = 'none';

	}


	function closeSelector()
	{
		document.getElementById("popSelDiv").style.display = 'none';
		_$selectorWrapper.innerHTML = "";

		document.getElementById("selMask").style.display = "none";
		_$popSelector = false;
	}

    // clear all selected options.
    function clearAll()
    {
    	var _opts = _$hiddenObj.value.split(",");

        for(var i = 0; i < _opts.length; i++)
        {
        	removeOptSel(_opts[i]);
        }

        for(var j = 0; j < _opts.length; j++)
        {
        	if(document.getElementById("optCbox" + _opts[j]))
            {
        		document.getElementById("optCbox" + _opts[j]).checked = false;
            }
        }
    }

    function setInputStr($input, $btn, $type)
    {
    	var _opts = $input.value.split(",");
        var _optsCn = new Array();
		var _optList;

		if($type == 3)
		{
			_optList = majorList;
		}
		else if($type == 2)
		{
			_optList = positionList;
		}
		else
		{
			_optList = cityList;
		}

        if(_opts[0].length > 0)
		{
			for(var i = 0; i < _opts.length; i++)
			{
				for(var j = 0; j < _optList.length; j++)
				{
					if(_optList[j][3] == _opts[i])
					{
						_optsCn.push(_optList[j][0].length > 5 ? _optList[j][0].substring(0, 4) + ".." : _optList[j][0]);
					}
				}
			}
		}

        if(_optsCn.length > 0)
        {
        	$btn.value = _optsCn;
        }
        else
        {
        	$btn.value = "请 选 择";
        }
    }

	document.onkeypress = function onEscape(){
		if(_$popSelector)
		{
			if (event.keyCode == 27)
			{
				closeSelector();
			}
		}
	}

	document.onclick = function onClickOutSide(){

		if (_$popSelector && _$selOutside)
		{
			closeSelector();
		}


        if(document.getElementById("subDivL1") && document.getElementById("subDivL1").style.display == 'block' && _$sub1Outside)
        {
        	document.getElementById("subDivL1").style.display = 'none';
        }

        if(document.getElementById("subDivL2") && document.getElementById("subDivL2").style.display == 'block' && _$sub2Outside)
        {
			document.getElementById("subDivL2").style.display = 'none';
        }



		_$selOutside = true;
        _$sub1Outside = true;
        _$sub2Outside = true;

	}


	function mkDraggable(item){
		if(!item) return;
		item.onmousedown = function(ev){
			_$dragObject  = this;
			mouseOffset = getMouseOffset(this, ev);//鼠标相对对象左上角的坐标
			return false;
		}
	}

	//鼠标相对对象左上角的坐标
	function getMouseOffset(target, ev){
		ev = ev || window.event;

		var docPos    = getPosition(target);//对象左上角的坐标
		//alert(docPos.x + "-1-" + docPos.y);

		var mousePos  = mouseCoords(ev);//鼠标的坐标
		//alert(mousePos.x + "-2-" + mousePos.y);

		return {x:mousePos.x - docPos.x, y:mousePos.y - docPos.y};
	}

	//对象左上角的坐标
	function getPosition(e){
		var left = 0;
		var top  = 0;
		while (e.offsetParent){
			left += e.offsetLeft + (e.currentStyle?(parseInt(e.currentStyle.borderLeftWidth)).NaN0():0);
			top  += e.offsetTop  + (e.currentStyle?(parseInt(e.currentStyle.borderTopWidth)).NaN0():0);
			e     = e.offsetParent;
		}

		left += e.offsetLeft + (e.currentStyle?(parseInt(e.currentStyle.borderLeftWidth)).NaN0():0);
		top  += e.offsetTop  + (e.currentStyle?(parseInt(e.currentStyle.borderTopWidth)).NaN0():0);

		return {x:left, y:top};

	}

	//鼠标的坐标
	function mouseCoords(ev){
		if(ev.pageX || ev.pageY){
			return {x:ev.pageX, y:ev.pageY};
		}
		return {
			x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
			y:ev.clientY + document.body.scrollTop  - document.body.clientTop
		};
	}

	function mouseDown(ev){
		ev        = ev || window.event;
		var target = ev.target || ev.srcElement;

		if(target.onmousedown || target.getAttribute('DragObj')){
			return false;
		}
	}

	function mouseUp(ev){

		_$dragObject = null;

		_$iMouseDown = false;
	}


	function mouseMove(ev){
		ev         = ev || window.event;

		/*
		We are setting target to whatever item the mouse is currently on
		Firefox uses event.target here, MSIE uses event.srcElement
		*/
		var target   = ev.target || ev.srcElement;
		var mousePos = mouseCoords(ev);

		if(_$dragObject){
			_$dragObject.style.position = 'absolute';
			_$dragObject.style.top      = mousePos.y - mouseOffset.y;
			_$dragObject.style.left     = mousePos.x - mouseOffset.x;
		}

		// track the current mouse state so we can compare against it next time
		lMouseState = _$iMouseDown;

		// this prevents items on the page from being highlighted while dragging
		if(_$curTarget || _$dragObject) return false;
	}

	document.onmousemove = mouseMove;
	document.onmousedown = mouseDown;
	document.onmouseup   = mouseUp;

    /*firefox*/ //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    function firefox()
    {
        HTMLElement.prototype.__defineGetter__("runtimeStyle", elementStyle);
        window.constructor.prototype.__defineGetter__("event", windowEvent);
        Event.prototype.__defineGetter__("srcElement", eventSrcElement);
    }

    function elementStyle()
    {
   		return this.style;
    }

    function windowEvent()
    {
    	return windowEventConstructor();
    }

    function eventSrcElement()
    {
    	return this.target;
    }

    function windowEventConstructor()
    {
        if(document.all)
        {
        	return window.event;
    	}

        var _caller = windowEventConstructor.caller;

        while(_caller!=null)
        {
            var _argument = _caller.arguments[0];

            if(_argument)
            {
                var _temp = _argument.constructor;
                if(_temp.toString().indexOf("Event")!=-1)
                {
                    return _argument;
                }
            }
            _caller = _caller.caller;
        }

    	return null;
    }

    if(window.addEventListener)
    {
    	firefox();
        _$isFireFox = true;
    }
    /*end firefox*/