﻿// JScript 文件

// JScript 文件
//测试
function dd() 
{ 
   TestAjax.HelloWorld(function(result) {alert(result); } );
}     
function GetParentByTagName(ctrl,tagName,depth){var obj=ctrl;var num=0;while((obj=obj.parentElement)!=null){if(obj.tagName.toLowerCase()==tagName){num++;if(num==depth)return obj}}return null}
function GetBrother(ctrl,tagName,typeName){var parent=ctrl.parentElement;var list=parent.getElementsByTagName(tagName);var n=0;for(n=0;n<list.length;n++){if(list[n].type.toLowerCase()==typeName){return list[n]}}return null}
function GetBrother2(ctrl,tagName){var parent=ctrl.parentElement;var list=parent.getElementsByTagName(tagName);return list[0];}
function deleteRows(src,rowidx1,rowidx2){var tb=src;var i=0;var maxidx=tb.rows.length-1;for(i=maxidx;i>=0;i--){if(i<rowidx1||i>rowidx2){tb.deleteRow(i)}}}
function deleteCurrentRow(ctrl1)
{
	var parent=GetParentByTagName(ctrl1,"tr",1);
	if( parent!=null )
		parent.style.display='none';
}
/*
Atlas在页面用JavaScript调用WebService方法的参数

WebService Class Name.WebMethod Name
(
      Method Parameters, 
    onMethodComplete, 
    onMethodTimeout, 
    onMethodError, 
    onMethodAborted,
    userContext,
    timeoutInterval,
    priority,
    useGetMethod,
); 

注意：1、Web Method中如果多个参数则用逗号隔开；
        2、Atlas调用的WebService里的所有参数必须按照顺序排列；
参数说明如下： 

onMethodComplete：指定当该方法顺利完成并返回时被触发的回调函数名，一般情况下您应该总是指定这个方法。 
onMethodTimeout,：指定当该方法执行超时时被触发的函数名。 
onMethodError：指定当该方法在执行中遇到异常时被触发的函数名。 
onMethodAborted：制定当该方法执行期间被用户取消时被触发的函数名。 
userContext：用户上下文对象，在上述四个函数中都可以访问到。 
timeoutInterval：设定超时的时间限制，单位毫秒，默认值好像为90000。一般情况下不需要更改。 
priority：设定该方法的执行优先级。该优先级将被用于批量AJAX操作（将在下一篇中提到）中。 
useGetMethod：是否采用HTTP GET来发送请求，默认为false。 
     上述这八个属性的顺序必须按照指定的来。但有时候我们只需要指定顺序靠后的某个参数，就不得不同时书写前面的参数。为此，Atlas特意为我们提供了另一种调用方法，将上述八个参数以dictionary的形式传给该方法。例如当我们只需要onMethodComplete和timeoutInterval参数时，可以这样写： 

WebService Class Name.WebMethod Name
  (
    Method Parameters, 
      {
        onMethodComplete: completeHandler, 
        timeoutInterval: 10000
      }
);

*/

function	CheckAjaxResult_Bool(res)
{
	if( res=="-2" ){ alert('此用户类型无权操作');return false }
	else if( res=="-1" ) { alert('此用户无此操作权限');return false }
	else if( res=="0" ) { alert('操作失败');return false }
	else if( res=="1" ) return true;
	else if(res=="2") {alert('操作成功,请及时选择直储帐号分组'); return true;}
	else
		alert(res);
	return false;
}
function	CheckAjaxResult_Int(res)
{
	try
	{
		var retint=parseInt(res);
		if( retint==-2 ){ alert('此用户类型无权操作');return false }
		else if( retint==-1 ) { alert('此用户无此操作权限');return false }
		else if( res==0 ) { alert('操作失败');return false }
		else
			return true;
	}
	catch (err)
	{
		return false;
	}
}
function	CheckAjaxResult_DataList(res)
{
	try
	{
		if( res==null || res=="" ){ return false; }
		return true;
	}
	catch (err)
	{
		return false;
	}
}
function NewAjaxFunc()
{
	return new AjaxFunc();
}
function getRadioValue(rs)
{

	var i;
	for(i=0;i<rs.length;i++)
	{
		if(rs[i].checked){
			return rs[i].value;
		}
	}
	return "";
}
function GetParamString()
{
	var retstr="";
	var i;
	if(arguments[0]  != undefined) 
	{
		for(i=0;i+1<=arguments.length;i=i+2)
		{
			if(retstr=="")
				retstr=arguments[i]+"#_#"+arguments[i+1];
			else			
				retstr=retstr+"|_|"+arguments[i]+"#_#"+arguments[i+1];
		}
		return retstr;
	}  
	else 
	{
		return "";
    } 
}
function CheckEmpty(obj1,ctrlname)
{
    if( obj1.value==null || obj1.value==''  )
    {
        alert(ctrlname+'不可为空');
		obj1.focus();
        return false;
    }
    return true;
}
function CheckSame(obj1,obj2,ctrlname)
{
    if( obj1.value!=obj2.value  )
    {
        alert('确认'+ctrlname+'失败');
		obj2.focus();
        return false;
    }
    return true;
}
var ajaxtimeout=90000;
function AjaxFunc()
{
	this.CallFunction=function(optname,param1,param2,callbackfunc)
	{		
		this.ClearParam();
		CurrentParam.push(optname,param1,param2,callbackfunc);
		//弹出提示消息
		WebFunctions.CallFunction(optname,param1,param2,this.CallFunction_Callback,this.OnAjaxTimeOut,this.OnAjaxError,this.OnAjaxAborted,this,ajaxtimeout);
	}
	this.CallFunction_Callback=function(result, userContext, methodName)
	{

		var param1=CurrentParam[1];

		var param2=CurrentParam[2];
		var callbackfunc=CurrentParam[3];
		
		if( callbackfunc!=null )
		{
		    if(result != '')
		        alert(result);
			callbackfunc( result,param1,param2 );
		}
		else
		{
			alert(result);
		}
	}
	this.SetValue=function(optname,ctrl1)
	{		
		this.ClearParam();
		CurrentParam.push(optname,ctrl1);
		var lbl=GetBrother2(ctrl1,'span');
		if( lbl!=null )
			lbl.innerHTML="<font color=blue>处理中...</font>";
		WebFunctions.CheckBox_ChangeStatus(optname,ctrl1.getAttribute("_Param"),this.SetValue_Callback,this.OnAjaxTimeOut,this.OnAjaxError,this.OnAjaxAborted,this,ajaxtimeout);
	}

	this.SetValue_Callback=function(result, userContext, methodName)
	{
		if( ! CheckAjaxResult_Bool(result) ) return false;
		var opt=CurrentParam[0];
		var chkbox=CurrentParam[1];
		alert('操作成功');
	}
	/****************************表格内部checkbox:UpdateStatus更新状态标志********************************/
	this.UpdS=function(optname,checkbox1)
	{		
	    if( confirm('你确定要改变状态吗？')==false ) 
	    {
	        if(checkbox1.checked==true)
	        {
	            checkbox1.checked=false;
	        }
	        else{
	            checkbox1.checked=true;
	        }
	        return;
	    }
		this.ClearParam();
		
		var lbl=GetBrother2(checkbox1,'span');
		CurrentParam.push(optname,checkbox1,lbl.innerHTML);
		lbl.innerHTML="<font color=blue>处理中...</font>";
		WebFunctions.CheckBox_ChangeStatus(optname,checkbox1.getAttribute("_Param"),checkbox1.checked?"1":"0",checkbox1.getAttribute("_Param2"),checkbox1.getAttribute("_Param3"),this.UpdS_Callback,this.OnAjaxTimeOut,this.OnAjaxError,this.OnAjaxAborted,this,ajaxtimeout);
	}

	this.UpdS_Callback=function(result, userContext, methodName)
	{
	    var opt=CurrentParam[0];
		var chkbox=CurrentParam[1];
		var baktitle=CurrentParam[2];//原始的状态
		var lbl=GetBrother2(chkbox,'span');
		if( ! CheckAjaxResult_Bool(result) )
		{
		    lbl.innerHTML=baktitle;
		    return false;
		}
		//if( opt=="card_type_list" )
		//	lbl.innerHTML=chkbox.checked?"已开通":"<font color=red>已禁用</font>";
		//else
		if(opt=='UpdatePdtCatHot' || opt=='UpdatePdtListIsPublic' || opt=='UpdateOwnPdtSaveByClient' || opt=='UpdateASsavebyclient' || opt=='UpdateASagentTemplate' || opt=='UpdateBulletinHot' || opt=='UpdateBulletinTop' || opt=='UpdateDocTop' || opt=='')
		{ lbl.innerHTML=chkbox.checked?"是":"<font color=red>否</font>";}
		else if(opt=='UpdateOwnPdtCheck'){lbl.innerHTML=chkbox.checked?"已审核":"<font color=red>未审核</font>";}
		else if(opt=='UpdateOwnPdtAutoOrAgent' || opt=='UpdateAutoSave'){lbl.innerHTML=chkbox.checked?"直储":"<font color=red>代充</font>";}
		else if(opt=='UpdateDealTransferMoney'){lbl.innerHTML=chkbox.checked?"已付款":"<font color=red>未付款</font>";}
		else if(opt=='UpdateDealAgentList' || opt=='UpdateRemitDeal'){lbl.innerHTML=chkbox.checked?"已处理":"<font color=red>未处理</font>";}
		else{ lbl.innerHTML=chkbox.checked?"开通":"<font color=red>禁用</font>";}

	}
	/************************从表格中删除一条记录************************************/
	this.DelTBRow=function(optname,ctrl1)
	{
		if( confirm('您确认要删除这条记录吗？')==false ) return;
		this.ClearParam();
		CurrentParam.push(optname,ctrl1);
		WebFunctions.GridView_DeleteRow(optname,ctrl1.getAttribute("_Param"),ctrl1.getAttribute("_Param2"),this.DelTBRow_Callback,this.OnAjaxTimeOut,this.OnAjaxError,this.OnAjaxAborted,this,ajaxtimeout);
	}
	this.DelTBRow_Callback=function(result, userContext, methodName)
	{
		if( ! CheckAjaxResult_Bool(result) ) return false;
		var opt=CurrentParam[0];
		var ctrl1=CurrentParam[1];
		deleteCurrentRow(ctrl1);	
		alert("删除成功！");
	}
	/************************获取点卡对应的面值************************************/
	this.GetObjectValue=function(optname,ctrl1,callbackfunc)
	{
		if( ctrl1.value=="-1" ){ callbackfunc("-1");return;}
		this.ClearParam();
		CurrentParam.push(optname,ctrl1,callbackfunc);
		WebFunctions.GetObjectValue(optname,ctrl1.value,this.GetObjectValue_Callback,this.OnAjaxTimeOut,this.OnAjaxError,this.OnAjaxAborted,this,ajaxtimeout);		
	}
	this.GetObjectValue_Callback=function(result, userContext, methodName)
	{
		if( !CheckAjaxResult_Int(result) ) return false;
		var opt=CurrentParam[0];
		var ctrl1=CurrentParam[1];
		var callbackfunc=CurrentParam[2];
		callbackfunc( parseInt(result) );
		//alert(callbackfunc);
		//ctrl1
	}
	/*************************获取数据列表*****************************/
	this.GetDataList=function(optname,ctrl1,callbackfunc)
	{
		if( ctrl1.value=="0" ){ callbackfunc("");return;}
		this.ClearParam();
		CurrentParam.push(optname,ctrl1,callbackfunc);

		WebFunctions.GetDataList(optname,ctrl1.value,this.GetDataList_Callback,this.OnAjaxTimeOut,this.OnAjaxError,this.OnAjaxAborted,this,ajaxtimeout);		
	}
	this.GetDataList_Callback=function(result, userContext, methodName)
	{
		var opt=CurrentParam[0];
		var ctrl1=CurrentParam[1];
		var callbackfunc=CurrentParam[2];
		callbackfunc( result );
		//alert(callbackfunc);
		//ctrl1
	}
	/****************************检测用户输入********************************/
	this.CheckUserInput=function(optname,inputctrl,failfunc,successfunc)
	{		
		this.ClearParam();
		CurrentParam.push(optname,inputctrl,failfunc,successfunc);
		WebFunctions.CheckUserInput(optname,inputctrl.value,this.CheckUserInput_Callback,this.OnAjaxTimeOut,this.OnAjaxError,this.OnAjaxAborted,this,ajaxtimeout);
	}

	this.CheckUserInput_Callback=function(result, userContext, methodName)
	{
		var opt=CurrentParam[0];
		var inputctrl=CurrentParam[1];
		var failfunc=CurrentParam[2];
		var successfunc=CurrentParam[3];

		if( result=="0" )
		{//
			if( failfunc!=null )
				failfunc();
		}
		else
		{
			if( successfunc!=null )
				successfunc();
		}
	}
	/************************************************************/
	var CurrentParam=[]; 

	this.OnAjaxTimeOut=function(result, userContext) 
	{
		alert('操作超时，请重试');
	}
	this.OnAjaxError=function(result,response, userContext) 
	{
		alert('操作异常，请重试');
	}
	this.OnAjaxAborted=function(result, userContext)
	{
		alert('操作已取消');
	}
	this.DefaultMethodComplete=function(result, userContext, methodName) 
	{
	}
	this.ClearParam=function()
	{
		CurrentParam.splice(0,CurrentParam.length);
	}	
}