// loading mask
var loadingMask;
Ext.EventManager.onDocumentReady(function()
	{
		loadingMask = new Ext.LoadMask(Ext.getBody(), {msg:msgbox_loading});
	});
function showLoading()
{
	loadingMask.show();
}
function hideLoading()
{
	loadingMask.hide();
}
/* message box */
// show information msg
function infoMsgBox(msg,fn)
{
	showIconMsg(msg,fn,1);
}
// show confirm msg
function confirmMsgBox(msg,yesFn,noFn)
{
	var fn = function(o)
	{
		if(o=='yes')
		{
			yesFn();
		}
		if(o == 'no')
		{
			if(noFn !== undefined) noFn();
		}
	}
	showIconMsg(msg,fn,2);
}
function yesNoMsgBox(msg,yesFn,noFn)
{
	var fn = function(o)
	{
		if(o=='yes')
		{
			yesFn();
		}
		if(o == 'no')
		{
			if(noFn !== undefined) noFn();
		}
	}
	showIconMsg(msg,fn,2);
}
function continueMsgBox(msg,yesFn,noFn)
{
	  Ext.Msg.buttonTextCache		= {yes:Ext.Msg.buttonText.yes,no: Ext.Msg.buttonText.no};
	  Ext.Msg.buttonText.yes 		= Ext.Msg.buttonText.checkout;
	  Ext.Msg.buttonText.no 		= Ext.Msg.buttonText.continues;
	var fn = function(o)
	{
		if(o=='yes')
		{
			yesFn();
		}
		if(o == 'no')
		{
			if(noFn !== undefined) noFn();
		}
	}
	showIconMsg(msg,fn,2);
	Ext.Msg.buttonText.yes 		= Ext.Msg.buttonTextCache.yes;
	Ext.Msg.buttonText.no 		= Ext.Msg.buttonTextCache.no;
}
function cartMsgBox(msg,yesFn,noFn)
{
	  Ext.Msg.buttonTextCache		= {yes:Ext.Msg.buttonText.yes,no: Ext.Msg.buttonText.no};
	  Ext.Msg.buttonText.yes 		= Ext.Msg.buttonText.cart;
	  Ext.Msg.buttonText.no 		= Ext.Msg.buttonText.continues;
	var fn = function(o)
	{
		if(o=='yes')
		{
			yesFn();
		}
		if(o == 'no')
		{
			if(noFn !== undefined) noFn();
		}
	}
	showIconMsg(msg,fn,2);
	Ext.Msg.buttonText.yes 		= Ext.Msg.buttonTextCache.yes;
	Ext.Msg.buttonText.no 		= Ext.Msg.buttonTextCache.no;
}
// show error msg
function errorMsgBox(msg,fn)
{
	showIconMsg(msg,fn,3);
}
// show alert msg
function alertMsgBox(msg,fn)
{
	showIconMsg(msg,fn,4);
}
// show icon msg
function showIconMsg(msg,f,t,buttons,w)
{
	var iconClass,btn,title,func;

	if(w == undefined) w = msgBoxWidth;
	switch(t)
	{
		case 1:
		  iconClass = 'msg-info';
		  btn 		= Ext.MessageBox.OK;
		  title 	= msgbox_info_title;
		break;
		
		case 2:
		  iconClass = 'msg-question';
		  btn 		= Ext.MessageBox.YESNO;
		  title 	= msgbox_confirm_title;
		break;
		
		case 3:
		  iconClass = 'msg-error';
		  btn 		= Ext.MessageBox.OK;
		  title 	= msgbox_error_title;
		break;

		case 4:
		  iconClass = 'msg-warning';
		  btn 		= Ext.MessageBox.OK;
		  title		= msgbox_warning_title;
		break;
	}
	if(buttons !== undefined) btn = buttons;
	if(typeof f == 'function')
	{
		func = f;
	}
	else func = function(o){eval(f)}
 	Ext.MessageBox.show({
           title: title,
           msg: msg,
           width:w,
           buttons: btn,
           modal: true,
		   resizable: false,
           fn: func,
           icon: iconClass
  });
}

// ajax call, if frmId is setted will do ajax post with frmId, else do get calling
function ajaxCall(goUrl, frmId,  bHideLoading,fn_callback)
{
	// show processing message
	if (!bHideLoading) showLoading();
	var formObj = document.getElementById( frmId );
	var callMethod = 'GET';
	if (formObj)
	{
		callMethod = 'POST';
		var uploadFlag = false;
		if(formObj.enctype == 'multipart/form-data')
		{
			uploadFlag = true;
		}
		// the second argument is true to indicate file upload.
		YAHOO.util.Connect.setForm(formObj, uploadFlag);
	}
	
	// return a public interface
	var callback = {
		success: function(o) {
			try
			{
				var rs = eval( '(' + o.responseText + ')');
			}
			catch(e)
			{
				var rs = new Object();
				rs.flag = '';
			}
			if (!bHideLoading) hideLoading();
			switch (rs.flag)
			{
				
				case '0':
					
					alertMsgBox(rs.msg, rs.fn);
				break;
				case '1':
					if( rs.fn2 != '' ){
		    			var yesFn = function ()
			    		{
			    			eval(rs.fn);
			    		}
			    		var noFn = function ()
			    		{
			    			eval(rs.fn2);
			    		}
			    		yesNoMsgBox(rs.msg, yesFn, noFn);
		    		}else if( rs.fn3 != '' ){
						var yesFn = function ()
			    		{
			    			eval(rs.fn3);
			    		}
			    		var noFn = function ()
			    		{
			    			eval(rs.fn);
			    		}
			    		continueMsgBox(rs.msg, yesFn, noFn);
					}else if( rs.fn4 != '' ){
						var yesFn = function ()
			    		{
			    			eval(rs.fn4);
			    		}
			    		var noFn = function ()
			    		{
			    			eval(rs.fn);
			    		}
			    		cartMsgBox(rs.msg, yesFn, noFn);
					}else{
		    			infoMsgBox(rs.msg, rs.fn);
		    		}
		    		
				break;
				case '-1':
					eval(rs.fn);
					break;
				default:
					infoMsgBox(o.responseText, ';');
				break;
			}
			if(fn_callback && typeof(fn_callback)=='function'){ 
				fn_callback();
			}
		},
		failure: function(o) {
			var msg = o.status ? 'Network error: '+o.status : 'Network timeout.';
			hideLoading();
			errorMsgBox(msg);
		}
	};

	YAHOO.util.Connect.asyncRequest(callMethod, goUrl, callback, null);
}
// delete sigle item with get method
function deleteItem(goUrl)
{
	confirmAction(goUrl, msgbox_confirm_del_msg)
}
// ajax calling with confirm messages, if frmId is setted will do ajax post with frmId, else do get calling
function confirmAction(goUrl, confirmMsg, frmId)
{
	var yf = function(){ajaxCall(goUrl, frmId)}
	confirmMsgBox(confirmMsg,yf)
}

function ajaxGetHTML(goUrl, objid, frmId, bHideLoading,fnCallBack)
{
	// show processing message
	if (!bHideLoading) showLoading();
	var formObj = document.getElementById( frmId );
	var callMethod = 'GET';
	if (formObj){
		callMethod = 'POST';
		var uploadFlag = false;
		if(formObj.enctype == 'multipart/form-data'){
			uploadFlag = true;
		}
		// the second argument is true to indicate file upload.
		YAHOO.util.Connect.setForm(formObj, uploadFlag);
	}
			
 	var callback = {
		success: function(o)  {
			//parent.document.getElementById(objid).innerHTML = o.responseText;
			//alert(callMethod);
			if (!bHideLoading) hideLoading();
			document.getElementById(objid).innerHTML = o.responseText;
			
			if(fnCallBack !== undefined) eval(fnCallBack);

			
		},
		upload : function(o)  {

		},
		failure: function(o)  {
			// by kevin
			var msg = o.status ? 'Network error: '+o.status : 'Network timeout.';
			hideLoading();
			errorMsgBox(msg);
		}
	};
	YAHOO.util.Connect.asyncRequest(callMethod, goUrl, callback, null);	
}

function ajaxAction(goUrl, bHideLoading)
{

	// show processing message
	if (!bHideLoading) showLoading();
	var showSuccess = function( content,url,actionUrl,extradayUrl,func,fn2 )
    {    	
		if( extradayUrl != '' ){
			//alert(extradayUrl);
			var yesFn = function ()
    		{
    			ajaxGetHTML(extradayUrl, 'content');
    		}
    		var noFn = function ()
    		{
    			ajaxGetHTML(actionUrl, 'content');
    		}
    		yesNoMsgBox(content, yesFn, noFn);
		}else if( fn2 != ''){
			var yesFn = function ()
    		{
    			eval(fn2);
    		}
    		var noFn = function ()
    		{
    			ajaxGetHTML(actionUrl, 'content');
    		}
    		continueMsgBox(content, yesFn, noFn);
		}else{
    		var fn = function ()
    		{
    			if( url != ""){
    				window.location.href = url;
    				eval(func);
    			}else if( actionUrl != null ){
    				ajaxGetHTML(actionUrl, 'content','','',func);
    			}else{
    				parent.location.reload();
    				eval(func);
    			}
//    			eval(func);
    		}

//    		alert(fn);
    		infoMsgBox(content, fn);
		}
    };
   
   var showFailure = function( content,url )
    {    	
		    
	    	var fn = function(){
	    		if( url != "" )
	    		window.location = url;
	    	}
	    	errorMsgBox(content, fn);
    };
    var showResult = function(btn)
    {
    	//parent.Ext.get('center-iframe').dom.src = location.href;
		if( url != "")
			window.location = url;
		else
    		parent.location.reload();
    }
	// return a public interface
    var callback = {
    	success: function(o) {
			if (!bHideLoading) hideLoading();
    		try
			{
    			var rs = eval( '(' + o.responseText + ')');
			}
			catch(e)
			{
				var rs = new Object();
				rs.flag = '';
			}
			
			//alert(rs.url);
			switch (rs.flag)
			{
				case '0':
					showFailure(rs.msg,rs.url);
					break;
				case '1':
					showSuccess(rs.msg,rs.url,rs.actionUrl,rs.extradayUrl,rs.fn,rs.fn2);
					break;
				case '-1':
					eval(rs.fn);
					break;
				default:
					showFailure(o.responseText);
					break;
			}
    	},
    	failure: function(o) {
			showFailure( o.responseText );
    	},
        upload : function(o){
    		showSuccess( o.responseText );
        }
    };
	
    YAHOO.util.Connect.asyncRequest('GET', goUrl, callback, null);
}
// show modal dialog
var dialog;
// v=title, r=url, m=modal, c=closeable, m2 = maximizable, w=width, h=height
function showDialog(v, r, m, c, m2, w, h)
{
	if (m == 0)
		m = false;
	else
		m = true;
	if (c == 0)
		c = false;
	else
		c = true;
	if (m2 == 0)
		m2 = false;
	else
		m2 = true;
	if (!w) 
	{
		w = Math.ceil(document.body.clientWidth * (2/3));
		if (w > 700 ) w = 700;
	}
	if (!h) h = Math.ceil(document.body.clientHeight * (3/4));
	//if(!dialog){
		dialog = new Ext.Window({
			title: v ,
			layout:'fit',
			width: w,
			height: h,
			border:false,
			modal:m,
			closable:c,
			maximizable:m2,
			//closeAction:'hide',
			plain: true,
			items: new Ext.Panel({
				layout:'fit',
				items: [new  Ext.ux.IFrameComponent({ id:'tab-iframe', url:r })]
			})
	
		});
	/*}
	else
	{
		dialog.setTitle(v);
		dialog.restore();
		Ext.get('iframe-tab-iframe').dom.src = r;
	}
	*/
	//position will fit the browser
	var wh = getObjectPosition(w,h);
	var swh= getScrollPosition();
	var dw = wh[0]/2;
	var dh = wh[1]/2;
	dialog.on('maximize',function(){dialogMaximize(swh[0],swh[1])})

	dialog.setPosition(swh[0]+dw,swh[1]+dh)
	//show
	dialog.show();
}
//maximize
function dialogMaximize(w,h)
{
	dialog.setPosition(w,h)
}
//relative position
function getObjectPosition(objectW,objectH)
{
	if(Ext.isIE)
	{

		return [(document.body.clientWidth-objectW),(document.body.clientHeight-objectH)];
	}
	else if(Ext.isGecko)
	{
		return [window.innerWidth-objectW,window.innerHeight-objectH];
	}
	else
	{
		return [window.innerWidth-objectW,window.innerHeight-objectH];
	}
}

//scroll position
function getScrollPosition()
{
	if(Ext.isIE)
	{

		return [document.body.scrollLeft,document.body.scrollTop || document.documentElement.scrollTop];
	}
	else if(Ext.isGecko)
	{
		return [window.pageXOffset,window.pageYOffset];
	}
	else
	{
		return [window.pageXOffset,window.pageYOffset];
	}
}
// close a dialog
function closeDialog () {
	
	dialog.hide();
}

