//Global variables
var gdancerkey = 0 ;
var gwww = "" ;
var gajax = null ;
var gtimeid = 0 ;
var gtrans = 0 ;
var gdtrig = 0 ; 

var gcmb = 0 ;
var gclr = 0 ;
var gitm = 0 ; //Last item focused

var rmsg = "" ; //Residual
var smsg = "" ; //System message
var dmsg = "" ; //Delay message

var ait = [] ;
var gitcnt = 0 ;

var tebpr = 0 ;
var tebsv = 0 ;
var tprpr = 0 ;
var tprsv = 0 ;
var trspr = 0 ;
var trssv = 0 ;
var tonpr = 0 ;
var tonsv = 0 ;

function evitem()
{
	this.mkey = 0 ;
	this.paid = 0 ;
	this.sel = 0 ;
	this.multi = 0 ;	
}

function setmsg()
{
	var parm = rmsg + smsg +" "+dmsg ;
	if (parm == null)
	{
		$('#errmsg').html("&nbsp;") ;
		$('#othermsg').html("&nbsp;") ;
		return ;
	}
	if (parm.length == 0)
	{
		$('#errmsg').html("&nbsp;") ;
		$('#othermsg').html("&nbsp;") ;
		return ;
	}
	if (parm.length < 30)
	{
		$('#errmsg').html(parm) ;
		$('#othermsg').html(parm) ;
		return ;
	}
	$('#errmsg').html(parm) ;	
	$('#othermsg').html("See Message Above") ;			
	return ;
}

function setcheckbox(parm,checked)
{
	var acont = null ;	
	var tchk = false ;		
	var astr = null ;		
	if (parm < 1) return false ;
	
	astr = "#gsel"+parm ;
	//astr = "input[name=gsel"+parm+"]" ;	
	try
	{
		acont = $(astr) ;
		
		tchk = acont.is(":checked") ;
		
		if (checked == true)
		{
			acont.attr('checked', true);
		}
		else
		{
			acont.attr('checked', false);			
		}
	}
	catch (err)
	{
	}

	return true ;
}

function getcheckbox(parm)
{
	var acont = null ;			
	var checked = false ;	
	var astr = null ;		
	if (parm < 1) return false ;
	//astr = "input[name=gsel:"+parm+"]" ;	
	astr = "#gsel:"+parm ;
	try
	{
		acont = $(astr) ;
		checked = acont.attr('checked');
	}
	catch (err)	
	{
	}
	return checked ;
}

function rpzajaxgood(data,text)
{
	var oit = null ;
	var cnt = 0 ;
	var mkey = 0 ;	

	dmsg = "&nbsp;" ;
	if (text != "success")
	{
		smsg = text ;
		setmsg() ;			
		return ;
	}
	var obj = jQuery.parseJSON(data) ;
	if (obj == null)
	{
		smsg = 'Unable to calculate prices....' ;
		setmsg() ;	
		return ;
	}

	if (('res' in obj) == false)
	{
		smsg = 'Invalid response, try again....' ;	
		setmsg() ;			
		return ;
	}
	if (('msg' in obj) == false)
	{
		smsg = 'Invalid response, try again....' ;	
		setmsg() ;			
		return ;
	}
	if (obj.res == -1)
	{
		smsg = obj.msg ;			
		setmsg() ;			
		return ;
	}
	if (('ncnt' in obj) == false)
	{
		smsg = 'Invalid response, try again....' ;	
		exit ;
	}

	smsg = obj.msg ;	
	setmsg() ;
	
	$('#febpr').html(formatnum(obj.febpr,0)) ;
	$('#febsv').html(formatnum(obj.febsv,0)) ;	
	$('#fprpr').html(formatnum(obj.fprpr,0)) ;	
	$('#fprsv').html(formatnum(obj.fprsv,0)) ;	
	$('#frspr').html(formatnum(obj.frspr,0)) ;	
	$('#frssv').html(formatnum(obj.frssv,0)) ;	
	$('#fonpr').html(formatnum(obj.fonpr,0)) ;	
	$('#fonsv').html(formatnum(obj.fonsv,0)) ;		

	$('#tebpr').html(formatnum(obj.febpr+tebpr,0))  ;
	$('#tebsv').html(formatnum(obj.febsv+tebsv,0))  ;
	$('#tprpr').html(formatnum(obj.fprpr+tprpr,0))  ;
	$('#tprsv').html(formatnum(obj.fprsv+tprsv,0))  ;
	$('#trspr').html(formatnum(obj.frspr+trspr,0))  ;
	$('#trssv').html(formatnum(obj.frssv+trssv,0))  ;
	$('#tonpr').html(formatnum(obj.fonpr+tonpr,0))  ;
	$('#tonsv').html(formatnum(obj.fonsv+tonsv,0))  ;
	
	//Loop thru and check everything
	for (cnt = 0; cnt < gitcnt ; cnt++)
	{
		oit = ait[cnt] ;
		if (oit == null) continue ;
		oit.sel = 0 ;		
		setcheckbox(oit.mkey,false) ;
	}
	
	if (obj.ncnt == 0)
	{
		return ;	
	}

	for (var skey in obj)
	{
		if (skey == null) continue ;
		mkey = parseInt(skey) ;	
		if (isNaN(mkey) == true) continue ;		
		if (mkey < 1) continue ;
		if (obj.hasOwnProperty(skey) == false) continue ;
		for (cnt = 0; cnt < gitcnt ; cnt++)
		{
			oit = ait[cnt] ;			
			if (oit == null) continue ;
			if (oit.mkey != mkey) continue ;
			oit.sel = 1 ;
			setcheckbox(oit.mkey,true) ;			
			break ;
		}
	}
	setmsg() ;
	return ;
}

function rpzajaxerror(jq,text,error)
{
	dmsg = "&nbsp;" ;	
	if (text == null) 
	{
		smsg = 'Unknown error. Try again...' ;	
		setmsg() ;
		return ;		
	}
	smsg = text+'. Try again.' ;	
	setmsg() ;	
	return ;
}

function rpztrigger(parm)
{
	var cmd = "" ;
	var cnt = 0 ;
	var oit = null ;
	
	//Now build our command selection string
	cmd = "gclr="+gclr+"&"	;
	cmd = cmd+"gcmb="+gcmb+"&";	
	cmd = cmd+"gitm="+gitm+"&";	
	cmd = cmd+"gsel=" ;
	
	gclr = 0 ;
	gcmb = 0 ;
	for (cnt = 0; cnt < gitcnt ; cnt++)
	{
		oit = ait[cnt] ;
		if (oit == null) continue ;
		if (oit.paid > 0) continue ;
		if (oit.sel == 0) continue ;
		cmd = cmd+oit.mkey+":" ;
	}
	cmd = cmd+"&" ;

	gajax = $.ajax(
	{
		type: "GET",
		url:"http://"+gwww+"/srregev/regajax",
		data: cmd,
		cache:false,
		async: true,
		datatype:"json",
		global: false ,
		success: function(data,text,jq)
		{
			gtrans = 0 ;
			rpzajaxgood(data,text,jq);

		}, 
		error: function(jq,text,error)
		{
			gtrans = 0 ;			
			rpzajaxerror(jq,text,error);

		},
		timeout: 5000
	});
	gtrans = parm ;
	dmsg = "Calculating..."+gtrans ;
}

function rpzdelay()
{
	//Allow for us to buffer requests when they hit the mouse really fast
	//we don't allow for them to saturate the server
	gtimeid = 0 ;
	if (gdtrig > 0)
	{
		gdtrig = 0 ;
		rpztrigger(1) ;
		return ;
	}
	rpztrigger(1) ;			
}

function clearall(parm)
{
	var oit = null ;
	var cnt = 0 ;
	
	//Loop thru check everything
	for (cnt = 0; cnt < gitcnt ; cnt++)
	{
		oit = ait[cnt] ;
		if (oit == null) continue ;
		oit.sel = 0 ;		
	}
	gclr = 1 ;
	gcmb = 0 ;
	gitm = 0 ;
	rmsg = "" ;		
	$("#gitm").attr('value',0) ;

	if (gtrans > 0)
	{
		dmsg = "Busy "+gtrans;
		setmsg() ;
		return ;	
	}
	if (gtimeid > 0) window.clearTimeout(gtimeid) ;
	gtimeid = window.setTimeout(rpzdelay,1000);
	dmsg = "Prepping..." ;		
	setmsg() ;	
	return true ;	
}

function cmbclick(control,parm)
{
	if (control == null) return false ;	
	if (parm < 1) return true ;			
	clearall(parm) ;
	if (gtrans > 0)
	{
		gdtrig = 1 ;
		dmsg = "Busy "+gtimeid ;
		setmsg() ;
		return true ;	
	}
	gcmb = parm ;
	gclr = 0 ;
	gitm = 0 ;	
	rmsg = "" ;	
	$("#gitm").attr('value',0) ;	
	if (gtimeid > 0) window.clearTimeout(gtimeid) ;
	gtimeid = window.setTimeout(rpzdelay,1000);
	dmsg = "Prepping..." ;		
	setmsg() ;	
	return true ;	
}

function selclick(control,parm)
{
	var git = null ;
	var cnt = 0 ;
	var trig = 1 ;
	if (control == null) return true ;
	if (parm < 1) return true ;		

	rmsg = "" ;		
	gclr = 0 ;
	gcmb = 0 ;	
	gitm = parm ;

	for (cnt = 0; cnt < gitcnt; cnt++)
	{
		git = ait[cnt] ;
		if (git.mkey != parm) continue ;
		if (control.checked == true)
		{
			git.sel = 1 ;
			$("#gitm").attr('value',parm) ;			
		}
		else
		{
			git.sel = 0 ;	
			$("#gitm").attr('value',0) ;			
		}
		if (git.multi > 0) trig = 0 ;
		break ;
	}
	if (trig == 0)
	{
		if (git.sel == 1)
		{
			dmsg = "Multi entry price displayed later." ;
			setmsg() ;
		}
		return true ;	
	}
	if (gtrans > 0)
	{
		gdtrig = 1 ;
		dmsg = "Busy "+gtimeid ;
		setmsg() ;
		return true ;	
	}
	if (gtimeid > 0) window.clearTimeout(gtimeid) ;
	gtimeid = window.setTimeout(rpzdelay,1000);
	dmsg = "Prepping..." ;	
	setmsg() ;	
	return true ;
}

function cmdclick(control,cmd,key)
{
	if (control == null) return true ;
	if (key < 1) key = 0 ;
	switch (cmd)
	{
	default:
		break ;
	case 10:	//Clear Message
		clearall(0) ;
		smsg = "&nbsp;" ;
		setmsg() ;
		break ;
	case 1:	//RSVP
	case 2:	//Prepay
	case 3:	//Coupon
	case 4:	//Add Dancer
	case 5:	//Change Order	
	case 6:	//Set Focus 	
	case 7:	//Remove Dancer
	case 8:	//Buy Coupons
	case 9:	//Login
		$("#gcmd").attr('value',cmd) ;
		$("#gkey").attr('value',key) ;		
		document.form.submit() ;
	}
	return true ;
}

function nmck(control,key,title)
{
	if (control == null) return ;	
	if (key < 1) return ;
	var astr = "#tid"+key ;
	var bstr = "#bid"+key ;	
	var obja = $(astr) ;
	var objb = $(bstr) ;	
	var vis = obja.is(':hidden') ;	
	if (vis == false)
	{
		objb.html(title+"+") ;		
		obja.slideUp(300) ;		
	}
	else
	{
		objb.html(title+"-") ;
		obja.slideDown(300) ;
	}
}

function cmbtog(control)
{
	if (control == null) return ;	
	var obj = $("#divcombo") ;
	var objb = $("#cmbbutton") ;	
	var vis = obj.is(':hidden') ;	
	if (vis == false)
	{
		objb.html("Discounts+") ;		
		obj.slideUp(300) ;		
	}
	else
	{
		objb.html("Discounts-") ;
		obj.slideDown(300) ;
	}
	return ;
}

function exctog(control)
{
	if (control == null) return ;	
	var obj = $("#divexcept") ;
	var objb = $("#excbutton") ;	
	var vis = obj.is(':hidden') ;	
	if (vis == false)
	{
		objb.html("Individual Adjustment+") ;		
		obj.slideUp(300) ;		
	}
	else
	{
		objb.html("Individual Adjustment-") ;
		obj.slideDown(300) ;
	}
	return ;	
}

