/* $Id : utils.js 5052 2007-02-03 10:30:13Z weberliu $ */

var Browser = new Object();

Browser.isMozilla = (typeof document.implementation != 'undefined') && (typeof document.implementation.createDocument != 'undefined') && (typeof HTMLDocument != 'undefined');
Browser.isIE = window.ActiveXObject ? true : false;
Browser.isFirefox = (navigator.userAgent.toLowerCase().indexOf("firefox") != - 1);
Browser.isSafari = (navigator.userAgent.toLowerCase().indexOf("safari") != - 1);
Browser.isOpera = (navigator.userAgent.toLowerCase().indexOf("opera") != - 1);

var Utils = new Object();

Utils.htmlEncode = function(text)
{
  return text.replace(/&/g, '&amp;').replace(/"/g, '&quot;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
}

Utils.trim = function( text )
{
  if (typeof(text) == "string")
  {
    return text.replace(/^\s*|\s*$/g, "");
  }
  else
  {
    return text;
  }
}

Utils.isEmpty = function( val )
{
  switch (typeof(val))
  {
    case 'string':
      return Utils.trim(val).length == 0 ? true : false;
      break;
    case 'number':
      return val == 0;
      break;
    case 'object':
      return val == null;
      break;
    case 'array':
      return val.length == 0;
      break;
    default:
      return true;
  }
}

Utils.isNotEmpty = function( val ){
	return !Utils.isEmpty(val);
}

Utils.isNumber = function(val)
{
  var reg = /^[\d|\.|,]+$/;
  return reg.test(val);
}

Utils.isYear = function(val)
{
  var reg = /^\d{4}$/;
  return reg.test(val);
}

Utils.isMonth = function(val)
{
  var reg = /^\d{1,2}$/;
  return reg.test(val);
}

Utils.isDay = function(val)
{
  var reg = /^\d{1,2}$/;
  return reg.test(val);
}

Utils.isInt = function(val)
{
  if (val == "")
  {
    return false;
  }
  var reg = /\D+/;
  return !reg.test(val);
}

Utils.isEmail = function( email )
{
  var reg1 = /^[\w\-\.]+@[\w\-\.]+(\.\w+)+$/;

  return reg1.test( email );
}



Utils.isUrl = function( url )
{
	var strRegex = "^((https|http|ftp|rtsp|mms)?://)" 
		+ "?(([0-9a-z_!~*'().&=+$%-]+: )?[0-9a-z_!~*'().&=+$%-]+@)?"
		+ "(([0-9]{1,3}\.){3}[0-9]{1,3}"
		+ "|"
		+ "([0-9a-z_!~*'()-]+\.)*"
		+ "([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]\."
		+ "[a-z]{2,6})"
		+ "(:[0-9]{1,4})?"
		+ "((/?)|"
		+ "(/[0-9a-z_!~*'().;?:@&=+$,%#-]+)+/?)$"; 
	var re=new RegExp(strRegex);
	return re.test(url);
}

Utils.isTel = function ( tel )
{
  var reg = /^\d+[\d|\-]*\d+$/; //只允许使用数字-空格等

  return reg.test( tel );
}

Utils.isMobile = function ( mobile )
{
  var reg = /^[\d]+$/; //只允许使用数字-空格等

  return reg.test( mobile );
}

Utils.isZip = function ( zip )
{
  var reg = /^\d{6}$/;

  return reg.test( zip );
}


Utils.fixEvent = function(e)
{
  var evt = (typeof e == "undefined") ? window.event : e;
  return evt;
}

Utils.srcElement = function(e)
{
  if (typeof e == "undefined") e = window.event;
  var src = document.all ? e.srcElement : e.target;

  return src;
}

Utils.isTime = function(val)
{
  var reg = /^\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}$/;

  return reg.test(val);
}

function rowindex(tr)
{
  if (Browser.isIE)
  {
    return tr.rowIndex;
  }
  else
  {
    table = tr.parentNode.parentNode;
    for (i = 0; i < table.rows.length; i ++ )
    {
      if (table.rows[i] == tr)
      {
        return i;
      }
    }
  }
}

document.getCookie = function(sName)
{
  // cookies are separated by semicolons
  var aCookie = document.cookie.split("; ");
  for (var i=0; i < aCookie.length; i++)
  {
    // a name/value pair (a crumb) is separated by an equal sign
    var aCrumb = aCookie[i].split("=");
    if (sName == aCrumb[0])
      return decodeURIComponent(aCrumb[1]);
  }

  // a cookie with the requested name does not exist
  return null;
}

document.setCookie = function(sName, sValue, sExpires)
{
  var sCookie = sName + "=" + encodeURIComponent(sValue);
  if (sExpires != null)
  {
    sCookie += "; expires=" + sExpires;
  }

  document.cookie = sCookie;
}

document.removeCookie = function(sName,sValue)
{
  document.cookie = sName + "=; expires=Fri, 31 Dec 1999 23:59:59 GMT;";
}

function getPosition(o)
{
    var t = o.offsetTop;
    var l = o.offsetLeft;
    while(o = o.offsetParent)
    {
        t += o.offsetTop;
        l += o.offsetLeft;
    }
    var pos = {top:t,left:l};
    return pos;
}

function cleanWhitespace(element)
{
  var element = element;
  for (var i = 0; i < element.childNodes.length; i++) {
   var node = element.childNodes[i];
   if (node.nodeType == 3 && !/\S/.test(node.nodeValue))
     element.removeChild(node);
   }
}

function setmsg(id,msg){
	document.getElementById(id).innerHTML = eval(msg);
}

function settextmsg(id,msg){
	document.getElementById(id).innerHTML = msg;
}

function clearErrors(tagName,etype){
	var arr		= document.getElementsByTagName(tagName);
	for(var i=0,l = arr.length;i<l;i++){
		var	e	= arr[i];
		if(typeof e.etype!=undefined && e.etype==etype){
			e.innerHTML	= '';
		}
	}
}

function preFilter(result)
{
	alert(result);
	return result.replace(/\xEF\xBB\xBF/g, "");
}
function filter(result)
{
	result = preFilter(result);
	return result.replace(/[\r\n]/g, "");
}

function getFileExt(str){
	if(Utils.isEmpty(str)){
		return '';
	}
	
	var start	= str.lastIndexOf(".");
	if(start<=0)
		return '';
	
	if(start+1>=str.length)
		return '';
	return str.substring(start+1,str.length);
}

function inArray(v,arr){
	if(!arr)
		return false;
	
	for(var i=0;i<arr.length;i++){
		if(arr[i]==v)
			return true;
	}
	return false;
}

function check_unique(name,obj){
	if(!obj.checked)
		return;
	var arr		= document.getElementsByName(name);
	for(var i=0;i<arr.length;i++){
		if(arr[i]!=obj){
			arr[i].checked	= false;
		}
	}
}

function getCheckboxValue(name){
	var arr		= document.getElementsByName(name);
	for(var i=0;i<arr.length;i++){
		if(arr[i].checked){
			return arr[i].value;
		}
	}
	return null;
}

GBL_DOING_CLICK		= false;
function makeinput(obj,name,id,doclick,val){
	var old			= obj.innerHTML;
	if(old.indexOf('name='+name+'_'+id+'')>=0){
		return;
	}
	if(typeof val!='undefined'){
		old			= val;
	}
	
	obj.innerHTML	= '<input name="'+name+'_'+id+'" id="txt'+name+'_'+id+'" type="text" /><span etype="error_info" style="color:#ff0000" id="'+name+'_'+id+'_info"></span>'
	if(old=='&nbsp;')
		old	= '';
	document.getElementById('txt'+name+'_'+id).value	= old;
	
	if(doclick && !GBL_DOING_CLICK){
		GBL_DOING_CLICK	= true;
		doOtherClick(obj);
		GBL_DOING_CLICK	= false;
	}
	
	document.getElementById('txt'+name+'_'+id).focus();
}

function makecheckbox(obj,name,id,doclick){
	var old			= obj.innerHTML;
	
	if(old.indexOf('name='+name+'_'+id+'')>=0){
		return;
	}
	
	obj.innerHTML	= '<input id="chk'+name+'_'+id+'" type="checkbox" value="1" onclick="changeCheckValue(\''+name+'\',\''+id+'\')"/><input type="hidden" value="1" name="'+name+'_'+id+'" id="hd'+name+'_'+id+'"  /><br /><span etype="error_info" style="color:#ff0000" id="'+name+'_'+id+'_info"></span>'
	if(old=='是'){
		document.getElementById('chk'+name+'_'+id).checked	= true;
	}
	changeCheckValue(name,id);
	if(doclick && !GBL_DOING_CLICK){
		GBL_DOING_CLICK	= true;
		doOtherClick(obj);
		GBL_DOING_CLICK	= false;
	}
	
	document.getElementById('chk'+name+'_'+id).focus();
}

function changeCheckValue(name,id){
	if(document.getElementById('chk'+name+'_'+id).checked){
		document.getElementById('hd'+name+'_'+id).value	= 1;
	}else{
		document.getElementById('hd'+name+'_'+id).value	= 0;
	}
}

function doOtherClick(obj){
	if(typeof obj.option!='undefined'){
		var option	= obj.option;
		var tds	= obj.parentNode.getElementsByTagName('td');
		for(var i=0,max=tds.length;i<max;i++){
			var e	= tds[i];
			if(typeof e.option!="undefined" && e.option==option){
				e.click();
			}
		}
	}
}

function makeselect(obj,name,id,opts,empty,doclick){
	var old			= obj.innerHTML;
	if(old.indexOf('name='+name+'_'+id+'')>=0){
		return;
	}
	
	var tmp	= '<select id="sel'+name+'_'+id+'" name="'+name+'_'+id+'"/>';
	if(empty){
		tmp	+=	'<option value=""></option>';
	}
	for(var i=0,max=opts.length;i<max;i++){
		selected	= '';
		if(old==opts[i]['name']){
			selected	= ' selected';
		}
		tmp	+=	'<option value="'+opts[i]['value']+'"'+selected+'>'+opts[i]['name']+'</option>';
	}
	tmp		+=	'</select><br /><span etype="error_info" style="color:#ff0000" id="'+name+'_'+id+'_info"></span>';
	obj.innerHTML	= tmp;
	
	if(doclick && !GBL_DOING_CLICK){
		GBL_DOING_CLICK	= true;
		doOtherClick(obj);
		GBL_DOING_CLICK	= false;
	}
	
	document.getElementById('sel'+name+'_'+id).focus();
}

function doSuccess(res){
    if(res==null){
    	alert('出错了，请刷新页面重新尝试!');
		return;
    }
    DialogHide();
    if(typeof res.not_login!='undefined' && res.not_login){
    	top.location.href	= 'admin.php?m=index&a=login';
    }
    clearErrors('span', 'error_info');
    var l		= 0;
    if(typeof res.errs!='undefined'){
    	l	= res.errs.length;
    	for(var name in res.errs){
    		//alert(name);
    		settextmsg(name+"_info",res.errs[name]);
    	}
    }
    if(l==0){
    	if(typeof successFun!='undefined'){
    		successFun();
    	}
    }
}

function doError(res){
	DialogHide();
	alert(res.responseText);
}

function doingEdit(){
	if($('#edit_info')){
		$('#edit_info').html('');
	}
	ScreenConvert();
	var ShowDiv="<div style=\"padding:10px;\">正在提交...</div>";
	DialogShow(ShowDiv,250,120,300,100);
}
function hide(id){
	document.getElementById(id).style.display	= 'none';
}
function show(id){
	document.getElementById(id).style.display	= 'block';
}
function changeRegion(all,hdid,type,id){
	var req		= true;
	if(typeof id=='undefined'){
		id	= $('#region_select_'+type).val();
		if(id==''){
			req		= false;
			var tmp	= type;
			while($('#region_select_'+(tmp+1)).is('select')){
				$('#region_select_'+(tmp+1)).remove();
				tmp	= tmp + 1;
			}
			if(type>0){
				type	= type-1;
				id		= $('#region_select_'+type).val();
			}
		}
		if(id==''){
			id	= 0;
		}
	}
	$('#'+hdid).val(id);
	if(req){
		$.ajax({
		    url: 'admin.php?m=region&a=select',
		    type: 'GET',
		    data:{'all':all?1:0,'id':id,'rnum':Math.random()},
		    dataType: 'html',
		    oldtype: type,
		    error:function(r){alert('加载地区失败:'+r.responseText)},
		    success: function(res){
				if($('#divRegionSelect')){
					var tmp	= this.oldtype;
					while($('#region_select_'+(tmp+1)).is('select')){
						$('#region_select_'+(tmp+1)).remove();
						tmp	= tmp + 1;
					}
					if(res!=''){
						$('#divRegionSelect').append($(res));
					}
					//$('#divRegionSelect').html($('#divRegionSelect').html()+res);
				}
			}
		});
	}
}