/**
 * js公用方法
 * @author kq
 * @since  2007-11-07
 */

/* js namespacing object */
var js = new Object();

/**
 * 0默认 1 主页 2换肤 3在线服务 4个人设置
 */
js.titleMenuSign = 0;

/**
 * 返回document.getElementById(id)
 */
js.$ = function(id)  {
	return document.getElementById(id);
}

/**
 * 是否是字母或者数字
 */
js.isLetterOrNumber = function(text) {
	var temp="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
	for(j=0; j<text.value.length; j++ ) {	
		var ch=$.trim(text.value).charAt(j);
		if(temp.indexOf(ch)==-1) {
			return true;
		}
	}
	return false;
}

/**
 * 长度是否合格
 */
js.isLengthBetween = function(text,start,end) {
	var len = $.trim(text).length;
	if((start<=len) && (end>=len)) {
		return true;
	}
	return false;
}

/**
 * 是否是正确的小灵通或者电话格式
 * 例: 0571-88228822 057188228822 021-12345678 ...
 */
js.isRightPhone = function(s) { 
	//var patrn = /^(0[\d]{2,3}-)?\d{6,8}(-\d{3,4})?$/;
	var patrn = /^(0[\d]{2,3}-{0,1}){1}\d{7,8}?$/;
	return js.execPatten(s,patrn);
} 

/**
 * 是否是正确的身份证格式
 * 15或者18为字符
 */
js.isRightPID = function(s) { 
	var patrn = /^(([0-9]{14})|([0-9]{17})){1}([0-9]|x|y){1}?$/;
	return js.execPatten(s,patrn);
} 

/**
 * 是否是正确的手机格式
 * 以134-139、158、159开头的移动手机号
 * 以130-133、156、155开头的联通手机号
 */
js.isRightMobile = function(s) { 
	var patrn = /^1((3[0-9]{1})|(59)|(58)|(56)|(55)){1}[0-9]{8}$/;
	return js.execPatten(s,patrn);
}

/**
 * 是否是正确的邮编 6位数字
 */
js.isRightPostcode = function(s) { 
	var patrn = /^[0-9]{6}$/;
	return js.execPatten(s,patrn);
} 

/**
 * 字母或者数字
 */
js.isLetterOrNumber1 = function(str,start,end) { 
	var patrn = /^[0-9a-zA-Z]*$/;
	return js.execPatten(str,patrn);
} 

/**
 * 是否是数字
 */
js.isNumber = function(s) { 
	var patrn = /^[0-9]*$/;
	return js.execPatten(s,patrn);
} 

/**
 * 是否是合法的电子邮件地址
 */
js.isRightMail  = function(str){
    var patrn = /^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*$/;
    return js.execPatten(str.toLowerCase(),patrn);
}

/**
 * 是否是合法的Url
 */
js.isRightUrl = function(url) {
	url = $.trim(url).toLowerCase();
	var patrn = /(^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$)|(^[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$)/;
	return js.execPatten(url,patrn);
}
/**
 * @param str 字符串
 * @param patten 表达式规则
 * 执行正则表达式(公用方法)
 */
js.execPatten = function (str,patten) {
	if (!patten.exec(str)) 
	return false ;
	return true ;
}

js.includeSpecialChar = function (s) {
     var temp="#;%&\"+\\ '=<>/";
	 for( j=0;j<s.length; j++ ) {
	     var ch=s.charAt(j);
		 if( temp.indexOf(ch) != -1) {
		      return true;
		 }	 
	 }
     return false;
}

/**
 * 公用AJAX连接  
 * p_url  路径
 * p_data 参数
 * p_id   ID
 */
js.ajaxConnection = function(p_url,p_data,p_id) {
	$.ajax({
		type:"POST",
		url:p_url,
		data:p_data,
		success:function(result){
			//alert(result);
			document.getElementById(p_id).innerHTML = result;
		}
	});
}

/**
 * 公用AJAX连接  
 * p_url  路径
 * p_data 参数
 * p_id   ID
 */
js.ajaxConnectionReturnResult = function(p_url,p_data) {
	$.ajax({
		type:"POST",
		url:p_url,
		data:p_data,
		success:function(result){
			return result;
		}
	});
}

/**
 * 公用AJAX连接  
 * p_url  路径
 * p_map  （可选）发送到服务端的键／值对参数 { name: "John", time: "2pm" }
 * p_id   ID
 */
js.ajaxPostConnection = function(p_url,p_map,p_id) {
	$.post(p_url,p_map,
		function(result){
       		js.$(p_id).innerHTML = result;
     	}   
	); 
}

/**
 * 返回服务器端返回的数据
 */
js.ajaxPostConnectionReturnResult = function(p_url,p_map) {
	$.post(p_url,p_map,
		function(result){
       		return result;
     	}   
	); 
}

/**
 * 公用返回函数  
 * p_backUrl  返回路径
 */
js.onBack = function(p_backUrl) {
	//main
	js.ajaxConnection(p_backUrl,null,pSet.rightMainID);
}

/**
 * 全选
 * p_form form
 * p_checkboxName checkbox的name属性的值 (例:<input type="checkbox" name="smsId"/> 这里checkboxName就是smsId)
 * 全选的checkbox的name属性应该叫做allCheck
 */
js.allChecked = function(p_form,p_checkboxName) {
    for(var i=0;i<p_form.elements.length;i++){   
		if(p_form.elements[i].name == p_checkboxName){ 
			p_form.elements[i].checked=p_form.allCheck.checked;
		}
	}
}

/**
 * 获取checkbox选中的值
 * p_form form
 * p_checkboxName checkbox的name属性的值 (例:<input type="checkbox" name="smsId"/> 这里checkboxName就是smsId)
 */
js.getCheckboxValue = function (p_form,p_checkboxName) {
	var multiId="";
	 for(var i=0;i<p_form.elements.length;i++){   
		if(p_form.elements[i].name == p_checkboxName && p_form.elements[i].checked==true){ 
			multiId += p_form.elements[i].value+";";
		}
	}
	return multiId;
}

/**
 * 获取radio的值
 * @param p_radioName <input type="radio" name="sex"/>
 */
js.getRadioValue = function (p_radioName) {
	radios=document.getElementsByName(p_radioName); 
	var l_value = "";
	for(var i=0;i<radios.length;i++)  { 
		if(radios[i].checked) {
			l_value = radios[i].value;
			break;
		}
	}
	return l_value;
}

/**
 * @param p_select (document.form1.selectOne)
 * 所有option的value 
 * 格式:value;value;value;
 */
js.getSelectAllOptionValue = function(p_select) {
	var l_value="";
	for(var i=0; i<p_select.options.length; i++) {
		l_value += p_select.options[i].value+";";
	}
	return l_value;
}
 
/**
 * 删除一个TR
 * @param trId <tr id="tr1"/>
 * @param tbodyId <tbody id="t1"/>
 */
js.delTr = function(trId,tbodyId) {
	var rowToDelete = document.getElementById(trId);
	var l_tbody = document.getElementById(tbodyId);
	l_tbody.removeChild(rowToDelete);
}

/**
 * added by 刘肖冲 2006.1.17
 * FF，NS不支持swapNode，自己实现
 */
if(window.Node)
{
    Node.prototype.swapNode=function(node)
    {
        var nextSibling=this.nextSibling;
        var parentNode=this.parentNode;
        node.parentNode.replaceChild(this,node);
        parentNode.insertBefore(node,nextSibling);
    }
}

/**
 * 上移 select移动
 * @param selectId
 * @param isToTop true:移动到顶端 false上移一个
 */
js.moveUp = function(selectId,isToTop){
	 //默认状态不是移动到顶端
    if(isToTop == null)
    var isToTop = false;

	oSelect = js.$(selectId);
    //如果是多选------------------------------------------------------------------
    if(oSelect.multiple)
    {
        for(var selIndex=0; selIndex<oSelect.options.length; selIndex++)
        {
            //如果设置了移动到顶端标志
            if(isToTop)
            {
                if(oSelect.options[selIndex].selected)
                {
                    var transferIndex = selIndex;
                    while(transferIndex > 0 && !oSelect.options[transferIndex - 1].selected)
                    {
                        oSelect.options[transferIndex].swapNode(oSelect.options[transferIndex - 1]);
                        transferIndex --;
                    }
                }
            }
            //没有设置移动到顶端标志
           else
           {
                if(oSelect.options[selIndex].selected)
                {
                    if(selIndex > 0)
                    {
                       if(!oSelect.options[selIndex - 1].selected)
                       oSelect.options[selIndex].swapNode(oSelect.options[selIndex - 1]);
                    }
                }
            }
        }
     }
     //如果是单选--------------------------------------------------------------------
    else
    {
        var selIndex = oSelect.selectedIndex;
        if(selIndex <= 0)
            return;
        //如果设置了移动到顶端标志
        if(isToTop)
        {
            while(selIndex > 0)
            {
                oSelect.options[selIndex].swapNode(oSelect.options[selIndex - 1]);
                selIndex --;
            }
        }
        //没有设置移动到顶端标志
       else
           oSelect.options[selIndex].swapNode(oSelect.options[selIndex - 1]);
    }
}


/**
 * 使选中的项目下移
 * @param selectId:
 * @param isToBottom: 是否移至选择项到底端，其它依次上移，  true为移动到底端，false反之，默认为false
 */
js.moveDown = function (selectId,isToBottom){
	//默认状态不是移动到顶端
    if(isToBottom == null)
        var isToBottom = false;
        
	oSelect = js.$(selectId); 
    var selLength = oSelect.options.length - 1;

    //如果是多选------------------------------------------------------------------
    if(oSelect.multiple)
    {
        for(var selIndex=oSelect.options.length - 1; selIndex>= 0; selIndex--)
        {
            //如果设置了移动到顶端标志
            if(isToBottom)
            {
                if(oSelect.options[selIndex].selected)
                {
                    var transferIndex = selIndex;
                    while(transferIndex < selLength && !oSelect.options[transferIndex + 1].selected)
                    {
                        oSelect.options[transferIndex + 1].swapNode(oSelect.options[transferIndex]);
                        transferIndex ++;
                    }
                }
            }
            //没有设置移动到顶端标志
            else
            {
                if(oSelect.options[selIndex].selected)
                {
                    if(selIndex < selLength)
                    {
                        if(!oSelect.options[selIndex + 1].selected)
                            oSelect.options[selIndex + 1].swapNode(oSelect.options[selIndex]);
                    }
                }
            }
        }
     }
    //如果是单选--------------------------------------------------------------------
    else
    {
        var selIndex = oSelect.selectedIndex;
        if(selIndex >= selLength - 1)
            return;
        //如果设置了移动到顶端标志
        if(isToBottom)
        {
            while(selIndex < selLength - 1)
            {
                oSelect.options[selIndex].swapNode(oSelect.options[selIndex + 1]);
                selIndex ++;
            }
        }
        //没有设置移动到顶端标志
        else
            oSelect.options[selIndex].swapNode(oSelect.options[selIndex + 1]);
    }
}

/**
 * 删除选定项目
 * oSelect: 源列表框对象
 */
function deleteSelectItem(oSelect)
{
	oSelect = document.getElementById(oSelect);	
    for(var i=0; i<oSelect.options.length; i++)
    {
        if(i>=0 && i<=oSelect.options.length-1 && oSelect.options[i].selected)
        {
            oSelect.options[i] = null;
            i --;
        }
    }
}

/**
 * 删除全部Select数据
 * oSelect: 源列表框对象
 */
function deleteAll(oSelect) {
	oSelect = document.getElementById(oSelect);
	oSelect.options.length = 0;
}

/**
 * oSourceSel: 源列表框对象 'sourceId'
 * oTargetSelSel: 目的列表框对象 'targetId'
 * type 1:增加选中的 2:增加全部
 */
function moveSelect(oSourceSel,oTargetSel,type){//私人通讯录

	var s = document.getElementById(oSourceSel);
	var d = document.getElementById(oTargetSel);

	if(type=='selected'){//增加已选中的。 
		var boo=true;
		for(i=0;i<s.options.length;i++){
			if( s.options[i].selected == true ){
				var v = $.trim(s.options[i].value);
				if(v=='') { break; }
				for(var ii=0;ii<d.options.length;ii++){
					if($.trim(d.options[ii].value)==v){
						boo=false;
					}
				}
				if(boo){
					d.options.add( new Option( s[i].text,s[i].value ) );
				}
			}
			boo=true;
		}
	}else if(type=='all'){//增加全部
		var boo2=true;
		for(i=0;i<s.options.length;i++){
			var v = $.trim(s.options[i].value);
			if(v=='') { continue; }
			for(var ii=0;ii<d.options.length;ii++){
				if($.trim(d.options[ii].value)==v){
					boo2=false;
				}
			}
			if(boo2){
				d.options.add( new Option( s[i].text,s[i].value ) );
			}
			boo2=true;
		}
	}
}

/**
 * 模态对话框取消
 */
js.divCalcel = function(divId) {
	 $.unblockUI(divId);
}

js.chooseDate = function(textId) {
	Calendar.setup({
	inputField : textId, //*
	ifFormat : "%Y-%m-%d",
	step : 1
	});
}

js.chooseDateTime = function(textId) {
	Calendar.setup({
	inputField : textId, //*
	ifFormat : "%Y-%m-%d %H:%M:%S",
	showsTime : true,
	step : 1
	});
}

/**
 * 如果为空　则添加空消息
 */
js.innerNullMes = function(value,info,mesId) {
	if(value=='') {
		$("#"+mesId).html(info+'不能为空');
		return false;
	} else {
		if (info.indexOf('*')==-1) {
			$("#" + mesId).html('');
		} else {
			$("#" + mesId).html('*');
		}
		return true;
	}
}
/**
 * 电子邮件信息
 */
js.innerEmailMes = function(value,info,mesId) {
	if(value!=''&& !js.isRightMail(value)) {
		$("#"+mesId).html(info);
		return false;
	} else {
		$("#"+mesId).html('');
		return true;
	}
}

/**
 * 手机
 */
js.innerMobileMes = function(value,info,mesId) {
	if(value!='') {
		if(!js.isRightMobile(value)) {
			$("#"+mesId).html(info);
			return false;
		} else {
			$("#receiverMobile").attr("checked", "checked");
			$("#"+mesId).html('');
		}
	}
	else {
		$("#"+mesId).html('');
	}
	return true;
}

/**
 * 电话
 */
js.innerPhoneMes = function(value,info,mesId) {
	if(value!=''&& !js.isRightPhone(value)) {
		$("#"+mesId).html(info);
		return false;
	} else {
		$("#"+mesId).html('');
		return true;
	}
}

/**
 * 小灵通
 */
js.innerPasMes = function(value,info,mesId) {
	if(value!='' ) {
		if(!js.isRightPhone(value)){
			$("#"+mesId).html(info);
			return false;
		} else{
			var l_mobile = $.trim(js.$('mobile_id').value);
			if(!js.isRightMobile(l_mobile)) {
				$("#receiverPas").attr("checked", "checked");
			}
			$("#"+mesId).html('');
		}
		
	} else {
		$("#"+mesId).html('');
	}
	return true;
}

/**
 * 邮编
 */
js.innerPostcodeMes = function(value,info,mesId) {
	if(value!=''&& !js.isRightPostcode(value)) {
		$("#"+mesId).html(info);
		return false;
	} else {
		$("#"+mesId).html('');
		return true;
	}
}

/**
 * 数字
 */
js.innerNumberMes = function(value,info,mesId) {
	if(value!=''&& !js.isNumber(value)) {
		$("#"+mesId).html(info);
		return false;
	} else {
		$("#"+mesId).html('');
		return true;
	}
}

/**
 * URL
 */
js.innerUrl =  function(value,info,mesId) {
	if(value!=''&& !js.isRightUrl(value)) {
		$("#"+mesId).html(info);
		return false;
	} else {
		$("#"+mesId).html('');
		return true;
	}
}

/**
 * 子用户
 */
js.innerChildAccount =  function(value,info,mesId,type) {
	if(value=='') {
		$("#"+mesId).html('* 子用户帐号不能为空');
		return false;
	} else if(value!=''&& (!js.isLetterOrNumber1(value)||!js.isLengthBetween(value,2,16))) {
		$("#"+mesId).html(info);
		return false; 
	} else {
		if(!type) return true;
		var l_fieldValue = $.trim($('#childAccount_id').val()); 
		var l_mainMenuUrl = "f_addresslist_checkChildUser.action";
		var l_map = {childAccount:l_fieldValue};
		if(type) {
			$.post(l_mainMenuUrl,l_map,
				function(result){
			       	if($.trim(result)=="yes") {
			       		$("#"+mesId).html('* 该子用户帐号已经存在');
			       		contact.childAccountIsExist = 1;
			       		return false;
			       	} else {
			       		$("#"+mesId).html('*');
			       		contact.childAccountIsExist = 0;
						return true;
			       	}
			});
		}
	}
		
}

/**
 * 密码
 */
js.innerPassword = function(value,info,mesId) {
	if(value=='') {
		$("#"+mesId).html('* 子用户密码不能为空');
		return false;
	} else if(value!=''&& (!js.isLetterOrNumber1(value)||!js.isLengthBetween(value,5,12))) {
		$("#"+mesId).html(info);
		return false; 
	} else {
		$("#"+mesId).html('*');
		return true;
	}
}

/**
 * 获取字节数
 */
String.prototype.getByteLength=function(){
    var text = this.replace(/[^\x00-\xff]/g,"**");
    return text.length;
}

