//核心功能
$cz = function(){
}
$cz.getBrowserName = function(){
	var app = navigator.appName.toUpperCase() ;
	if ( app.indexOf( 'MICROSOFT' ) == 0 ) {
		return 'IE' ;
	}
	else if ( app.indexOf( 'NETSCAPE' ) == 0 ) {
		return 'FIREFOX' ;
	}
	else {
		return 'OTHER' ;
	}
}
$cz.getBrowserVersion = function(){
	var appVer = navigator.appVersion.toUpperCase() ;
	var pos = appVer.indexOf( 'MSIE ' ) ;
	if ( pos >= 0 ) {
		return appVer.substr(pos+5,1) ;
	}
	else {
		return appVer.substr(0,1) ;
	}
}
$cz.getUrlParms = function(){
	var url = location.href ;
	var pos = url.indexOf("#") ;
	if( pos == -1 ) return new Object();
	
	var query = url.substr( pos + 1 );
	var pairs=query.split("&");//在&处断开
	var params = new Object();
	
	for( var i=0; i<pairs.length; i++ )  
	{  
		var pos=pairs[i].indexOf('=');//查找name=value  
		if(pos==-1)
			continue;//如果没有找到就跳过
		
		var name = pairs[i].substr( 0, pos );
		var value = pairs[i].substr( pos+1);
		eval( "params." + name + "='" + value + "';" ) ;
	}
	return params ;
}
//jQuery插件，轮换显示html
jQuery.fn.toggleText = function( v1, v2 ) {
	return this.each(
		function(i){
			jQuery(this).text( jQuery(this).text() == v1 ? v2 : v1 ) ;
		}  
	) ;
}
// jQuery插件，把输入框定义成tip输入框
jQuery.fn.inputTip = function( tip, tipColor, dataColor ) {
	return this.each(
		function(i){
			var _this = this ;
			var onfocus = function(){
				if ( _this.value == jQuery(_this).attr('tip') ) {
					_this.value = '' ;
					jQuery(_this).css({ color: jQuery(_this).attr('dataColor') });
				}
				return false ;
			}
			var onblur = function(){
				if ( _this.value.replace( /^\s+|\s+$/g,"") == '' ) {
					var tmpTip = jQuery(_this).attr('tip') ;
					_this.value = ( tmpTip == undefined ? '' : tmpTip ) ;
					jQuery(_this).css({ color: jQuery(_this).attr('tipColor') });
				}
				return false ;
			}
			try{
				onfocus();
				jQuery(this).attr('tip',(tip == undefined) ? '' : tip) ;
				jQuery(this).attr('tipColor',(tipColor == undefined) ? "#888888" : tipColor) ;
				jQuery(this).attr('dataColor',(dataColor == undefined) ? "#000000" : dataColor) ;
				jQuery(this).blur( onblur ) ;
				jQuery(this).focus( onfocus ) ;
				onblur();
			}
			catch (e) {
				//donothing
			}
		}  
	) ;
}
//类FormValidation：表单校验
FormValidation = function( form, option ){
	if ( !form ) return ;
	if (option==undefined)option ={};
	this._form = form ;
	this._fldFormatAttr = (option.fldFormatAttr == undefined) ? "format" : option.fldFormatAttr ;
	this._fldNameAttr = (option.fldNameAttr == undefined) ? "title" : option.fldNameAttr ;
	this._errMsgAttr = (option.errMsgAttr == undefined) ? "error" : option.errMsgAttr ;
	this._fnOnErr = option.fnOnErr ;
	this._goBackOnErr = (option.goBackOnErr == undefined) ? true : option.goBackOnErr ;
	this._alertOnErr = (option.alertOnErr == undefined) ? true : option.alertOnErr ;
}
FormValidation.prototype._checkAll = function( )
{
	var es = this._form.elements;
	var ret = true ;
	var msg = '' ;
	var fldToGoBack ;
	var errCount = 0 ;
	var e ;
	for(var i=0;i<es.length;i++)
	{
		var fld = es[i] ;
		var retFld = this._check( fld ) ;
		if ( !retFld ) {
			errCount++ ;
			if ( !fldToGoBack ) {
				fldToGoBack = fld ;
				var formErrMsg = this._form.getAttribute(this._errMsgAttr) ;
				formErrMsg =( formErrMsg == null ? '':formErrMsg ) ;
				msg += (formErrMsg + "\n\n");
			
			}
			ret = false ;
			
			var fldName = fld.getAttribute(this._fldNameAttr) ;
			fldName =( fldName == null ? '':fldName ) ;
			var fldErrMsg = fld.getAttribute(this._errMsgAttr) ;
			fldErrMsg =( fldErrMsg == null ? '':fldErrMsg ) ;
			var spliter = (fldName.indexOf(':')<0&&fldErrMsg.length>0?': ':'') ;
			msgTmp = fldName + spliter + fldErrMsg + "\n" ;
			if ( msgTmp == spliter + "\n" ) {
				msgTmp = fld.id + ": \n" ;
			}
			
			if ( msg.indexOf( msgTmp ) >= 0 ) {
				msgTmp = '' ;
				errCount-- ;
			}
			else {
				msgTmp = ((errCount.toString().length==1?' ':'') + errCount + ') ' ) + msgTmp ;
			}
			
			msg += msgTmp ;
		}
	}
	
	if( !ret ) {
		if ( this.goBackOnErr ) {
			this._goBack( fldToGoBack );
		}
		if( this.fnOnErr != undefined ) {
			return this._fnOnErr( {
				 errMsg: msg, errCount: errCount, fldGoBack: fldToGoBack, ret: ret }
			 ) ;
		}
		if( this._alertOnErr ) {
			alert( msg );
		}
		return false;
	}
	return true ;
}
FormValidation.prototype._getValue = function( e ){
	var type = e.type;
	switch(type)
	{
		case "text":
		case "hidden":
		case "password":
		case "file":
		case "submit":
		case "textarea": return e.value;
		case "checkbox":
		case "radio": return (function(e){
			var v = "";
			var es = document.getElementsByName(e.name);
			for(var i=0;i<es.length;i++){
				if(es[i].checked){
					v += "," + es[i].value;
				}
			}
			return v.length>0?v.substr(1):v;
		}
		)(e);
		case "select-one":
		case "select-multiple": return (function(e){
			var v = "";
			for(var i=0;i<e.options.length;i++) {
				if(e.options[i].selected && e.options[i].value!="") {
					v += "," + e.options[i].value;
				}
			}
			return v.length>0?v.substr(1):v;
		}
		)(e);
		default:
		return e.value ;
	}
}
FormValidation.prototype._check = function( e ){
	var ret = true ;
	var format = e.getAttribute(this._fldFormatAttr) ;
	format =( format == null ? '':format ) ;
	
	var pos1 = format.indexOf(':');
	var spliter = '' ;
	var start_pos = 0 ;
	var format_array = new Array()
	if ( pos1>=0 ) {
		var s1 = format.substr( 0, pos1 ) ;
		var spliter_num = parseInt( s1 )
		if(!isNaN(spliter_num)) {
			if( spliter_num > 0 ) {
				var pos2 = format.indexOf(':',pos1+1);
				if ( pos2>=0 ) {
					for( var i=0;i<spliter_num;i++) {
						spliter += format.substr( pos1+1, pos2 - pos1 - 1 ) ;
						 ;
					}
				}
				else {
					alert( e.id + ' error format: '+format);
					return false ;
				}
			}
		}
		if ( spliter.length > 0 ) {
			if ( format.length > pos2 + 1 ) {
				format = format.substr( pos2 + 1 ) ;
			}
			else {
				format = '' ;
			}
		}
		
		var array_index = 0;
		while(true) {
			var format_tmp = '' ;
			if ( spliter.length == 0 ) {
				format_tmp = format ;
				format = '' ;
			}
			else {
				if ( format.length > 0 ) {
					pos1 = format.indexOf( spliter );
					if ( pos1>=0 ) {
						format_tmp = format.substr( 0, pos1 ) ;
						format = format.substr( pos1 + spliter.length ) ;
					}
					else {
						format_tmp = format ;
						format = '' ;
					}
				}
				else {
					break ;
				}
			}
			
			format_array[array_index++] = format_tmp ;
			
			if( format.length == 0 ) {
				break ;
			}
		}
	}
	
	var v = this._getValue( e ) ;
	for( var i = 0; i<format_array.length; i++ ) {
		pos1 = format_array[i].indexOf(':') ;
		if ( pos1 >= 0 ){
			var type = format_array[i].substr( 0, pos1 ) ;
			var value = format_array[i].substr( pos1+1 ) ;
		}
		else {
			alert( e.id + ' error format: '+format_array[i] );
			return false ;
		}
		switch(type){
			case 'regex':
			if ( value.length > 0 ) {
				var regex = new RegExp(value,"i");
				ret = (ret && regex.test(v)) ;
			}
			break ;
			case 'userFunction':
			if ( value.length > 0 ) {
				eval( "ret=ret && " + value ) ;
			}
			break ;
			default:
		}
		if ( !ret ) return ret ;
	}
	return ret ;
}
FormValidation.prototype._goBack = function( e ){
	var type = e.type;
	switch(type)
	{
		case "text":
		case "hidden":
		case "password":
		case "file":
		case "textarea": e.focus();
		if ( $cz.getBrowserName() == 'IE' ) {
			try{
				var range = e.createTextRange();
				if ( range ){
					range.collapse(false);
					range.select();
				}
			}
			catch( err ) {
			}
		}
		break;
		case "checkbox":
		case "radio": var es = document.getElementsByName(e.name);
		es[0].focus();
		break;
		case "select-one":
		case "select-multiple":e.focus();
		break;
	}
}
