﻿//去左空格; 
function ltrim(s){ 
return s.replace( /^\s*/, ""); 
} 
//去右空格; 
function rtrim(s){ 
return s.replace( /\s*$/, ""); 
} 
//去左右空格; 
function trim(s){ 
	return rtrim(ltrim(s)); 
}
//同上
String.prototype.Trim = function()
{
	return this.replace(/(^\s*)|(\s*$)/g, "");
}

//获得字符串长度
function strLength(s)
{
	return s.replace(/[^\x00-\xff]/gi,'hi').length;
}

function stringFormat()
{
    if (arguments.length < 2){
        return "";
    }
    var strFormat = arguments[0].toString();
    for( var i = 1; i < arguments.length; i++)
    {
        strFormat = strFormat.replace("%S",arguments[i]);
    }
    return strFormat;
}

function $()
{
    var elements = new Array();
    for (var i = 0; i < arguments.length; i++)
    {
        var element = arguments[i];
        if (typeof element == 'string'){
            element = document.getElementById(element);
          }
        if (arguments.length == 1) {
            return element;
           }
        elements.push(element);
    }
    return elements;
}

//浏览器进程Cookie--不设置expires就可以成为浏览器进程Cookie
function setCookie(name,value)
{
//限时Cookie
//	var date = new Date();	
//	date.setTime(date.getTime()+8*60*60*1000+60*60*1000);
//	document.cookie = name + "=" + value + "; expires=" + date.toGMTString() + ";path=/";
	if( value )
		document.cookie = name + "=" + value + ";path=/";
	else
	{
		//Clean Cookie
		var valTime = new Date();
		valTime.setDate( valTime.getTime() -10 );
		document.cookie = name + "=" + ";expires=" + valTime.toGMTString()+";path=/" ; 
	}
}

function getCookie(sName)
{
	var aCookie = document.cookie.split("; ");
	for (var i=0; i < aCookie.length; i++)
	{
		var cookieString = aCookie[i].toString();
		var nameKey = cookieString.substring(0,sName.length);
		if ( nameKey == sName )
		{
			return unescape(cookieString.substring(sName.length+1,cookieString.length) );
		}
	}
	return null;
}


//判断数字是不是小数
function isDecimal(num)
{
	if( isNaN(num) )
		return false;
	return parseInt(num.toString()) != num*1;
}

function detectBrowser()
{
	//browser detection
	var strUserAgent = navigator.userAgent.toLowerCase();
	var isIE = strUserAgent.indexOf("msie") > -1;
	return isIE;
}

/** 以下为浏览器兼容方法 **/
/*
	浏览器兼容方法
    过滤控件的输入，只允许输入0－9和.
    bDot：是否允许输入小数点（.）true 允许  false　不允许
    注意：此方法需要赋予keypress事件！！
    在FF里面会自动停止执行此方法控件的事件冒泡，请确保是赋予keypress事件
*/
function inputFilter(bDot)
{	
	var iKeyCode, objInput;
	var reValidChars = /[0-9.]/;
	var strKey;
	var event = window.event || arguments.callee.caller.arguments[0];
	var inDot = (bDot)?true:false;
	var isIE = detectBrowser();
	if (isIE)
	{
		iKeyCode = event.keyCode;
		objInput = event.srcElement;
	}
	else
	{
		iKeyCode = event.which;
		objInput = event.target;
	}
	strKey = String.fromCharCode(iKeyCode);
	if (reValidChars.test(strKey))
	{
		if(iKeyCode==46)
		{
			if( !inDot )
			{
				if (isIE)
				{
					event.keyCode= 0;
				}
				else if(event.which!=0 && event.which!=8)
				{
					if( event.preventDefault )
					{
						event.preventDefault();
						event.stopPropagation();
					}
				}
			}			
			if(objInput.value.indexOf('.')!=-1)
			{
				if (isIE)
				{
					event.keyCode= 0;
				}
				else
				{
					if(event.which!=0 && event.which!=8)
					{
						if( event.preventDefault )
						{
							event.preventDefault();
							event.stopPropagation();
						}
					}
				}
			}
		}
	}
	else
	{
		if (isIE)
		{
			event.keyCode= 0;
		}
		else if(event.which!=0 && event.which!=8)
		{
			if( event.preventDefault )
			{
				event.preventDefault();
				event.stopPropagation();
			}
		}
	}
}

//设置input元素type=text 的值
function setTextValue(id,value)
{
	var t = $(id);
	if( t )
		t.value = value;
}

//设置SPAN元素的innerText
function setSpanText(spanid,text)
{
    if( document.all )
        $(spanid).innerText = text;
    else
        $(spanid).textContent = text;
}

//注册键盘事件
/*
	浏览器兼容方法
    为指定elementId的元素赋予keypress事件处理程序
    elementId: 元素ID，这里应该是input标签的元素（如文本框）
    keyPressHandler：当键盘按下时要执行的程序
*/
function regKeyPressEvent(elementId,keyPressHandler)
{
    var dom = document;
    var ele = document.getElementById(elementId);
    var mfListen = dom.addEventListener ? true:false;
    if( ele )
    {
        mfListen ? ele.addEventListener("keypress",keyPressHandler,true):ele.onkeypress = keyPressHandler;
    }    
}

/*
	浏览器兼容方法
    为指定elementId的元素赋予keyup事件处理程序
    elementId: 元素ID，这里应该是input标签的元素（如文本框）
    keyUpHandler：当键盘弹起时要执行的程序
*/
function regKeyUpEvent(elementId,keyUpHandler)
{
    var dom = document;
    var ele = document.getElementById(elementId);
    var mfListen = dom.addEventListener ? true:false;
    if( ele )
    {
        mfListen ? ele.addEventListener("keyup",keyUpHandler,true):ele.onkeyup = keyUpHandler;
    }    
}

/*
	浏览器兼容方法
    为指定elementId的元素赋予blur事件处理程序
    elementId: 元素ID，这里应该是input标签的元素（如文本框）
    keyUpHandler：当控件失去焦点时要执行的程序
*/
function regBlurEvent(elementId,blurHandler)
{
    var dom = document;
    var ele = document.getElementById(elementId);
    var mfListen = dom.addEventListener ? true:false;
    if( ele )
    {
        mfListen ? ele.addEventListener("blur",blurHandler,true):ele.onblur = blurHandler;
    }    
}

/*
	浏览器兼容方法
	执行指定元素的事件相当于IE的fireEvent方法	
*/
function doFireMouseEvent(element,events)
{
	if( document.all )
	{
		element.fireEvent(stringFormat("on%S",events));
	}
	else
	{
		var evt = document.createEvent('MouseEvents');   
		evt.initEvent(events,true,false);   
		element.dispatchEvent(evt); 
	}  
}

//公用方法
function StringFormat()
{
    if (arguments.length < 2)return "";
    var strFormat = arguments[0].toString();
	var i;
    for (i = 1; i < arguments.length; i++)
        strFormat = strFormat.replace("%S",arguments[i]);
    return strFormat;
}

function qureyString(key)
{
	var str = location.search.split('?')[1];
	if( !str )
		return '';
	if( key )	
	{
		var qStr = str.split('&');
		for( var i=0;i< qStr.length;i++ )
		{
			var qs = qStr[i].split('=');
			if( key == qs[0] )
				return qs[1];
		}
	}
	else
	{
		return str.split('=')[1];
	}
}

function xTrans(xmlpath,xslpath)
{
	var xmls;
	var xsls;
	try{
		xmls =  new ActiveXObject("Microsoft.XMLHTTP");
		xsls =  new ActiveXObject("Microsoft.XMLHTTP");
	}
	catch(e){
		xmls = new XMLHttpRequest();
		xsls = new XMLHttpRequest();
		XMLDocument.prototype.transformNode = function(xsl){
			var oXslt = new XSLTProcessor();
			oXslt.importStylesheet(xsl);
			var oDom = oXslt.transformToDocument(this);
			var oSerializer = new XMLSerializer();
			return oSerializer.serializeToString(oDom);
		}
	}
	xmls.open('get',xmlpath,false);
	xsls.open('get',xslpath,false);
	xmls.send(null);
	xsls.send(null);
	if( xmls.readyState == 4 && xsls.readyState == 4 )
	{
		if( xmls.status == 200 && xmls.status == xsls.status )
		{
			var xml = xmls.responseXML;
			var xsl = xsls.responseXML;
			return xml.transformNode(xsl);
		}
	}
	return "";
}

function transformXslt(id,xmlPath,xslPath)
{
	var ele = $(id);
	ele.innerHTML = xTrans(xmlPath,xslPath);
}

function GetObjPosition(o)
{
	var xP=0;
	var yP=0;
	var offsetParent = o;
	var w3c=(document.getElementById)? true:false;
	var ns6=(w3c && (navigator.appName=="Netscape"))? true: false;
	while (offsetParent!=null && offsetParent!=document.body)
	{
		xP+=offsetParent.offsetLeft;
		yP+=offsetParent.offsetTop;
		if(!ns6)
		{
			parseInt(offsetParent.currentStyle.borderLeftWidth)>0?xP+=parseInt(offsetParent.currentStyle.borderLeftWidth):"";
			parseInt(offsetParent.currentStyle.borderTopWidth)>0?yP+=parseInt(offsetParent.currentStyle.borderTopWidth):"";
		}
		offsetParent=offsetParent.offsetParent;
	}
	return(xP+"|"+yP);
}

function utf8to16(str)
{
    var out, i, len, c;
    var char2, char3;

    out = "";
    len = str.length;
    i = 0;
    while(i < len)
    {
		c = str.charCodeAt(i++);
		switch(c >> 4)
		{ 
			case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7:
				// 0xxxxxxx
				out += str.charAt(i-1);
				break;
			case 12: case 13:
				// 110x xxxx   10xx xxxx
				char2 = str.charCodeAt(i++);
				out += String.fromCharCode(((c & 0x1F) << 6) | (char2 & 0x3F));
				break;
			case 14:
				// 1110 xxxx  10xx xxxx  10xx xxxx
				char2 = str.charCodeAt(i++);
				char3 = str.charCodeAt(i++);
				out += String.fromCharCode(((c & 0x0F) << 12) |
					((char2 & 0x3F) << 6) |
					((char3 & 0x3F) << 0));
				break;
		}
    }
    return out;
}

function utf16to8(str) {
    var out, i, len, c;

    out = "";
    len = str.length;
    for(i = 0; i < len; i++) {
	c = str.charCodeAt(i);
	if ((c >= 0x0001) && (c <= 0x007F)) {
	    out += str.charAt(i);
	} else if (c > 0x07FF) {
	    out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F));
	    out += String.fromCharCode(0x80 | ((c >>  6) & 0x3F));
	    out += String.fromCharCode(0x80 | ((c >>  0) & 0x3F));
	} else {
	    out += String.fromCharCode(0xC0 | ((c >>  6) & 0x1F));
	    out += String.fromCharCode(0x80 | ((c >>  0) & 0x3F));
	}
    }
    return out;
}
//
function base64encode(str_)
{
	var base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";	
	var str = utf16to8(str_);
    var out, i, len;
    var c1, c2, c3;

    len = str.length;
    i = 0;
    out = "";
    while(i < len) {
	c1 = str.charCodeAt(i++) & 0xff;
	if(i == len)
	{
	    out += base64EncodeChars.charAt(c1 >> 2);
	    out += base64EncodeChars.charAt((c1 & 0x3) << 4);
	    out += "==";
	    break;
	}
	c2 = str.charCodeAt(i++);
	if(i == len)
	{
	    out += base64EncodeChars.charAt(c1 >> 2);
	    out += base64EncodeChars.charAt(((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4));
	    out += base64EncodeChars.charAt((c2 & 0xF) << 2);
	    out += "=";
	    break;
	}
	c3 = str.charCodeAt(i++);
	out += base64EncodeChars.charAt(c1 >> 2);
	out += base64EncodeChars.charAt(((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4));
	out += base64EncodeChars.charAt(((c2 & 0xF) << 2) | ((c3 & 0xC0) >>6));
	out += base64EncodeChars.charAt(c3 & 0x3F);
    }
    return out;
}


function Base64Decode(str_)
{
	var str = utf8to16(str_);
	var base64DecodeChars = new Array(
    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63,
    52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1,
    -1,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14,
    15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,
    -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
    41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1);
    var c1, c2, c3, c4;
    var i, len, out;
    len = str.length;
    i = 0;
    out = "";
    while(i < len)
    {
		do{
			c1 = base64DecodeChars[str.charCodeAt(i++) & 0xff];
		}
		while(i < len && c1 == -1);
		if(c1 == -1)
			break;
		do{
			c2 = base64DecodeChars[str.charCodeAt(i++) & 0xff];
		}
		while(i < len && c2 == -1);
		if(c2 == -1)
			break;
		out += String.fromCharCode((c1 << 2) | ((c2 & 0x30) >> 4));
		do {
			c3 = str.charCodeAt(i++) & 0xff;
			if(c3 == 61)
			return out;
			c3 = base64DecodeChars[c3];
		}
		while(i < len && c3 == -1);
		if(c3 == -1)
			break;
		out += String.fromCharCode(((c2 & 0XF) << 4) | ((c3 & 0x3C) >> 2));
		do {
			c4 = str.charCodeAt(i++) & 0xff;
			if(c4 == 61)
			return out;
			c4 = base64DecodeChars[c4];
		}
		while(i < len && c4 == -1);
		if(c4 == -1)
			break;
		out += String.fromCharCode(((c3 & 0x03) << 6) | c4);
	}
    return out;
}

function GetUTF16Cookie(sName)
{
	var aCookie = document.cookie.split("; ");
	for (var i=0; i < aCookie.length; i++)
	{
		var cookieString = aCookie[i].toString();
		var nameKey = cookieString.substring(0,sName.length);
		if ( nameKey == sName )
		{
		   return utf8to16(Base64Decode(cookieString.substring(name.length+1,cookieString.length) ));
		}
	}
	return null;
}

//判断是否录入所有信息
function checkData()
{
    for(var i=0;i<document.form1.elements.length;i++) 
    {
        var e = document.form1.elements[i]; 
        if (e.type == 'text') 
        {
            if(e.value=="")
            {
                alert('请完整输入乘客信息');
                return false;
            }
        }
    }
} 


/*
 * @summary 弹出警告窗口，将指定ID的<SPAN>元素内的文本做为内容。
 * @para span <SPAN>元素的ID
 */
function showMessageBox(spanId)
{
	var span = document.getElementById(spanId);
	if (span)
	{
		var txt = span.innerHTML;
		if (txt.length != '')
		{
			txt = txt.replace('\\t','\t');
			txt = txt.replace('\\r\\n','\r\n');
			txt = txt.replace('\\r','\r');
			txt = txt.replace('\\n','\n');
			alert(txt);
		}
	}
}

//产生随机数
function RandomMaker(min,max)
{
	this.Min = min;
	this.Max = max;
}

RandomMaker.prototype.GetRndNum = function(min,max,zoom)
{
	var date = new Date();
	var seed = date.getTime();
	var i = Math.round(Math.random()*Math.random()*max);
	if(i < min)
		i = min;
	if( i > max)
		i = max;
	return i;
}

RandomMaker.prototype.GetRndArray = function(length,isSort)
{
	var tmpArray = new Array();
	while( tmpArray.length != length )
	{
		var rnd = this.GetRndNum(this.Min,this.Max);
		if( tmpArray.join(',').indexOf(rnd) == -1 )
			tmpArray.push(rnd);
	}
	return isSort ? tmpArray.sort(
		function(a,b)
		{
			return a-b;
		}
	):tmpArray;	
}


//变字符串头字母为大写
function ChangeToUpperCase(s)
{
return s.replace(/\b[a-z]/g,  function($0){return  $0.toUpperCase()})
}

//对客人输入的FristName和LastName进行判断，不允许一样
function NameCheck()
{
    var event = window.event || arguments.callee.caller.arguments[0];    
    var obj = event.srcElement || event.target;
    var objEvent = obj;
    obj = obj.parentNode;
		var objRow = obj.parentNode;
		//alert(objRow.cells[1].childNodes[0].value);
		var family = objRow.cells[1].childNodes[0].value ;
		var name = objRow.cells[2].childNodes[0].value ;
		if(family!='' && name!='')
		{ 
			 if(family == name)
			 {
			  	//objEvent.value='';
			  	alert('对不起，姓和名不能一样！');
			 }
		}
}

//儿童部分年龄要求客人输入的年龄在4-12之间
function ChildAgeCheck()
{
    var event = window.event || arguments.callee.caller.arguments[0];    
    var obj = event.srcElement || event.target;
    var objEvent = obj;
    obj = obj.parentNode;
	var objRow = obj.parentNode;
	var ageValue = parseInt(objRow.cells[3].childNodes[0].value) ;

	if(ageValue>12 || ageValue<4)
	{
        if(ageValue!=1)
        {
	        objRow.cells[3].childNodes[0].value = "";
	        alert('对不起，儿童年龄必需在4-12岁之间！');
	    }

		return;
	}
}

function YouthAgeCheck()
{
    var event = window.event || arguments.callee.caller.arguments[0];    
    var obj = event.srcElement || event.target;
    var objEvent = obj;
    obj = obj.parentNode;
	var objRow = obj.parentNode;
	var ageValue = parseInt(objRow.cells[3].childNodes[0].value) ;

	if(ageValue>25 || ageValue<0)
	{
        if(ageValue!=1)
        {
	        objRow.cells[3].childNodes[0].value = "";
	        alert('对不起，青年年龄必需在0-25岁之间！');
	    }

		return;
	}
}

