function trim(val){ return val.replace(/^\s+|\s+$/g, ""); }
function is_int(val){ 
	var n = trim(val); 
	return n.length > 0 && !(/[^0-9]/).test(n); 
}
function is_float(val){ 
	var n = trim(val); 
	return n.length>0 && !(/[^0-9.]/).test(n) && (/\.\d/).test(n); 
}
function isInArray(arr,search){
	arr_found=false;
	for(s=0;s<arr.length;s++){
		if(arr[s]==search){ arr_found=true; }
	}
	return arr_found;
}
//------------------------------------
function validateAcct(token){
	$('#loader_img').css('display','block');
	acct	= $('#acct_num').val();
	lname	= $('#last_name').val();
	$.ajax({
		type: 'POST',
		url: '/cs/api.php',
		data: 'acct='+acct+'&lname='+lname+'&t='+token+'&add=is_res+can_use_cc+is_eaa',
		success: function(msg){
			//$('#val_acct').html(msg);
			p=msg.split(':');
			if(p[0]=='1'){ 
				toggleDisable(false);
				$('#acct_num_err').css('display','none');
				$('#validated_acct').css('display','block');
			}else if(p[0]=='0'){
				$('#acct_num_err').html('<span class="qfrm-oops-text">Oops!</span> <span class="qfrm-error-text">Account Number/Last Name mismatch!</span>');
				$('#acct_num_err').css('display','block');
			}
			if(p[0]=='1' && (p[1]==80 || p[1]==30)){
				//$('#pymt_manage').append('<option value="">-- Select Method --');
				//$('#pymt_manage').append('<option value="check">Electronic Check');
			}
			if(p[2]=='1'){ is_res=true; }else{ is_res=false; }
			if(p[3]=='1'){ can_cc=true; }else{ can_cc=false; }
			$('#loader_img').css('display','none');

			document.getElementById('pymt_manage').options.length=0;
			$('#pymt_manage').append('<option value="">-- Select Method --');
			$('#pymt_manage').append('<option value="check">Electronic Check');
			if(is_res && can_cc){
				//residential and can use cc
				showPymtAccept('res_cc');
				$('#pymt_manage').append('<option value="card">ATM/Debit');
				$('#pymt_manage').append('<option value="card">Credit Card');
			}else if(is_res && !can_cc){
				//residential, but not in a cc state
				showPymtAccept('res_nocc');
			}else{ showPymtAccept('com_nocc'); }

			if(p[4]=='1'){
				$('#eaa').css('display','none');
				$('#eaa_hdr').css('display','none');
			}else{ 
				$('#eaa').css('display','block'); 
				$('#eaa_hdr').css('display','block');
			}
		}
	});
}

//----------------------
function addToRequired(field_name){
	found=false;
	//check to be sure it's not already in there...
	for(i=0;i<required_fields.length;i++){
		if(field_name==required_fields[i]){ found=true; }
	}
	if(!found){ required_fields.push(field_name); }
}
function removeFromRequired(field_name){
	for(i=0;i<required_fields.length;i++){
		if(field_name==required_fields[i]){ required_fields.splice(i,1); }
	}
	//now we close the div if it's showing an error
	if($('#'+field_name+'_err')){
		$('#'+field_name+'_err').css('display','none');
		$('#'+field_name+'_err').html('');
	}
}
function multiRequire(type,fields){
	if(type=='add'){
		jQuery.each(fields,function(k,v){ addToRequired(v); });
	}else if(type=='remove'){
		jQuery.each(fields,function(k,v){ removeFromRequired(v); });
	}
}
function checkAllRequired(){
        err		= false;
	jQuery.each(required_fields,function(k,v){ //alert(k+' '+v);
		err		= true;
		obj		= $('#'+v);
		myobj	= document.getElementById(v);
		fname	= '';
		id_chk	= false;
		name_chk= false;
		//-------------------
		//alert(obj.attr('type')+' -> '+obj.val()+' -> '+obj.nodeName+' '+myobj.tagName);

		//check for a custom function based on the id first
		//alert('id:'+obj.attr('id')+' n:'+obj.attr('name')+' '+obj.attr('name').indexOf('['));
		id_chk=customExists('validate_'+obj.attr('id'));
		if(id_chk){ fname=obj.attr('id').replace(/\-/,"_"); }

		//check for a custom function based on the name
		if(!id_chk && fname.length==0 && obj.attr('name').indexOf('[')==-1){
			name_chk=customExists('validate_'+obj.attr('name'));
			if(name_chk){ fname=obj.attr('name').replace(/\-/,"_"); alert('name!'); }
		}

		if(id_chk || name_chk){
			eval('cret=validate_'+fname+"('"+obj.val()+"');");
			if(cret==true){ err=false; }else{ is_err=true; }
		}else if(obj.attr('type')=='text'){
			if(obj && obj.val().length>0){ err=false; }
		}else if(obj.attr('type')=='radio'){
			r=document.getElementsByName(obj.attr('name')); //alert(r.length);
			for(rl=0;rl<r.length;rl++){
				if(r[rl].checked==true){ err=false; }
			}
		//}else if(obj.attr('type')=='select'){
		}else if(myobj.tagName.toLowerCase()=='select'){
			if(obj.val().length>0){ err=false; }
		}
		//-------------------
		if(err){
			if(!isInArray(custom_req,v)){
				$('#'+v+'_err').css('display','block');
				$('#'+v+'_err').html('<span class="qfrm-oops-text">Oops!</span> <span class="qfrm-error-text">Required value not set!</span>');
			}
		}else{
			//enable the submit button
			//$('#final_submit').attr('disabled','false');
			$('#'+v+'_err').css('display','none');
		}
	});

	//check to be sure that they signed up for at least one plan
	has_one=false;
	if($('#plan_signup_app').attr('checked')){ has_one=true; }
	if($('#plan_signup_bbp').attr('checked')){ has_one=true; }
	if($('#plan_signup_ebp').attr('checked')){ has_one=true; }
	if(!has_one){
		tripError('plan_signup','You must select at least one plan option!');
		err=true;
	}else{ $('#plan_signup_err').css('display','none'); }

	//be sure they have checked the T&C box if they need it
	if(must_tc && !$('#accept_tc').attr('checked')){
		err=true;
		tripError('tc','You must agree to the terms and conditions!');
	}

	if(!err){
		//no errors! let's  go!
		$('#multi_signup_form').submit();
	}else{
		//uncheck our TC checkbox
		$('#accept_tc').attr('checked',false);
	}
}
function customExists(funcName){
	funcName=funcName.replace(/\-/,"_");
	if(eval("typeof "+funcName+"=='function'")){
		//alert(typeof eval(funcName));
		return true;
	}else{ return false; }
}
function tripError(v,msg){
	$('#'+v+'_err').css('display','block');
	$('#'+v+'_err').html('<span class="qfrm-oops-text">Oops!</span> <span class="qfrm-error-text">'+msg+'</span>');
}
function isChecked(name){
	if($('#plan_signup_'+name).attr('checked')==true){ 
		return true;
	}else{ return false; }
}
function showMe(id){
	$('#'+id).css('display','block');
	showing.push(id);
}
function hideMe(id){
	jQuery.each(showing,function(k,v){
		if(v==id){
			showing.splice(k,1);
			$('#'+id).css('display','none');
		}
	});
}
function hideShown(){
	jQuery.each(showing,function(k,v){
		$('#'+v).css('display','none');
		showing.splice(k,1);
	});
}
function toggleDisable(stat){
	jQuery.each($("input[@type='checkbox'],input[@type='radio']"),function(){
		$(this).attr('disabled',stat);
	});
}
function toggleBoxEnrollStat(type,stat){
	if(type=='app' && stat==false && $('#plan_signup_ebp').attr('checked')==false){
		$('#ebp_box').attr('class','default');
	}
	if(type=='app' && stat==true){
		$('#plan_signup_ebp').attr('checked',true);
		$('#ebp_box').attr('class','enrolled');
		f=new Array('acct_username'); multiRequire('add',f);
	}
	if(stat){
		$('#'+type+'_box').attr('class','enrolled');
	}else{ $('#'+type+'_box').attr('class','default'); }
}
function showPymtAccept(acct_type){
	accpt=new Array('res_nocc','res_cc','com_nocc');
	jQuery.each(accpt,function(k,v){
		if(v==acct_type){
			$('#'+v).css('display','block'); 
		}else{ $('#'+v).css('display','none'); }
	});
}
//----------------------

function toggleDetails(type){
	status=$('#'+type+'_details').css('display');
	if(status=='block'){
		new_stat	= 'none';
		link_data	= 'show details';
	}else{
		new_stat	= 'block';
		link_data	= 'hide details';
	}
	$('#'+type+'_details_link').html(link_data);
	$('#'+type+'_details').css('display',new_stat);
}
function showPaymentDetails(){
	cur=$('#pymt_details').css('display');
	if(cur=='block'){ n='none'; }else{ n='block'; }
	$('#pymt_details').css('display',n);
}
function showMethodDetails(obj){
	method_sel=$('#pymt_manage').val();
	card_f	= new Array('method_card-cc_num','method_card-type','method_card-exp_mo','method_card-exp_yr','method_card-cc_name','method_card-cc_addr','method_card-cc_city','method_card-cc_state','method_card-cc_zip');
	dbt_f	= new Array('method_card-cc_num','method_card-cc_name','method_card-cc_addr','method_card-cc_city','method_card-cc_state','method_card-cc_zip');
	chk_f	= new Array('method_check-acct_name','method_check-routing_num','method_check-acct_num','method_check-acct_type');

	//if type is credit card
	if(method_sel=='card'){
		//check to see if it's ATM/Debit or Credit
		sel=$('#pymt_manage').get(0).selectedIndex;
		if(sel==3){
			//show the card list
			$('#method_card-type').css('display','block');
			$('#card_type_label').css('display','block');
			$('#method_card-type').attr('disabled',false);

			$('#card_img_credit').css('display','block');
			$('#card_img_debit').css('display','none');
			cardTypeList('credit');
			multiRequire('remove',chk_f);
			multiRequire('remove',dbt_f);
			multiRequire('add',card_f);
		}else if(sel==2){
			$('#method_card-type').css('display','none');
			$('#card_type_label').css('display','none');

			$('#card_img_credit').css('display','none');
			$('#card_img_debit').css('display','block');
			cardTypeList('debit');
			multiRequire('remove',chk_f);
			multiRequire('remove',card_f);
			multiRequire('add',dbt_f);

			//gray out the card list
			$('#method_card-type').attr('disabled',true);
		}
		if(isChecked('app')){ $('#app_with_atm').css('display','block'); }
	//if type is electronic check
	}else if(method_sel=='check'){
		multiRequire('add',chk_f);
		multiRequire('remove',card_f);
		multiRequire('remove',dbt_f);
		
		$('#app_with_atm').css('display','none');
	}
	toggleMethodDivs(method_sel);
	showTC();
}
function cardTypeList(cc_type){
	document.getElementById('method_card-type').options.length=0;
	if(cc_type=='debit'){
		$('#method_card-type').append('<option value="">-- Select Card Type --');
		$('#method_card-type').append('<option value="pulse">Pulse');
		$('#method_card-type').append('<option value="star">Star');
		$('#method_card-type').append('<option value="accel">Accel');
		$('#method_card-type').append('<option value="nyce">NYCE');
	}else if(cc_type=='credit'){
		$('#method_card-type').append('<option value="">-- Select Card Type --');
		$('#method_card-type').append('<option value="visa">Visa');
		$('#method_card-type').append('<option value="mastercard">Mastercard');
	}
}
function toggleMethodDivs(ignore){
	jQuery.each(method_divs,function(k,v){
		if(v=='method_'+ignore){
			$('#'+v).css('display','block');
		}else{ $('#'+v).css('display','none'); }
	});
}
function showTC(){
	must_tc	= false;
	sel		= $('#pymt_manage').get(0).selectedIndex;
	app_chk	= $('#plan_signup_app').attr('checked');
	ebp_chk	= $('#plan_signup_ebp').attr('checked');

	if(app_chk && (sel==2 || sel==3)){
		//is on APP and using credit/debit
		tc_url='/home/payment/t_c_credit.html';
		$('#tc_app_cc').css('display','block');
		$('#tc_app_auto').css('display','block');
		must_tc=true;
	}else if(app_chk && sel==1){
		//is on APP and using check
		tc_url='/home/payment/t_c.html';
		$('#tc_app_cc').css('display','block');
		$('#tc_app_auto').css('display','block');
		must_tc=true;
	}else{
		$('#tc_app_cc').css('display','none');
		$('#tc_app_auto').css('display','none');
	}
	if(ebp_chk){
		//enrolling in the ebp plan
		$('#tc_ebp').css('display','block');
		must_tc=true;
	}else{ $('#tc_ebp').css('display','none'); }
	if(must_tc){
		$('#tc_div').css('display','block');
	}else{ $('#tc_div').css('display','none'); }
}
function launchTcWin(obj){
	window.open(tc_url,'tc','menubar=no,location=no,resizable=yes,scrollbars=yes,status=yes,height=350,width=500');
	return false;
}
//-----------------------------
function planEnroll(id){
	if(id=='plan_signup_ebp'){
		f=new Array('acct_username');
		//$('#tc_ebp').css('display','block');

		if($('#'+id).attr('checked')==true){
			showMe('tc_ebp'); showMe('tc_accept_chk');
			toggleBoxEnrollStat('ebp',true);
		}else{ 
			hideMe('tc_ebp'); hideMe('tc_accept_chk');
			toggleBoxEnrollStat('ebp',false);
		}
		d=new Array('acct_username');
	}else if(id=='plan_signup_app'){
		f=new Array('pymt_manage');
		//$('#app_enrollment').css('display','block');

		if($('#'+id).attr('checked')==true){
			showMe('app_enrollment');
			showMe('tc_app');
			showMe('tc_accept'); showMe('tc_accept_chk');
			toggleBoxEnrollStat('app',true);
		}else{ 
			hideMe('app_enrollment'); 
			hideMe('tc_app');
			hideMe('tc_accept'); hideMe('tc_accept_chk');
			toggleBoxEnrollStat('app',false);
		}

		$('#pymt_manage').attr('disabled',false);
		d=new Array('pymt_manage');
	}else if(id=='plan_signup_bbp'){
		if($('#'+id).attr('checked')==true){
			toggleBoxEnrollStat('bbp',true);
		}else{
			toggleBoxEnrollStat('bbp',false);
		}
		f=new Array();
		d=new Array();
	}
	//check to be sure we're not trying to unenroll on credit/atm/debit
	if(!$('#'+id).attr('checked') && id=='plan_signup_ebp'){
		//check the payment type selected
		if($('#pymt_manage').val()=='card'){
			//we're in the app and in credit/debit - we can't uncheck!
			$('#plan_signup_ebp').attr('checked',true);
			tripError('acct_username','Enrolling in the Automatic Payment Plan with a Credit/ATM/Debit card requires you to enroll in the Electronic Billing Plan.');
		}
	}else{ hideMe('acct_username_err'); }

	if($('#'+id).attr('checked')==true){
		multiRequire('add',f);
	}else{ 
		multiRequire('remove',f);
		if(d){ jQuery.each(d,function(k,v){ $('#'+v).attr('disabled',true); }); }
	}

	//now make sure we're showing the T&C for them
	showTC();
}
//---------------------------------
function validate_donate_amt_other(val){
	if(is_int(val) || is_float(val)){
		return true;
	}else{ 
		tripError('donate_amy_other','Incorrect value entered! Please enter donation amount in dollars and cents.');
		return false; 
	}
}
function validate_method_card_exp_mo(val){
	now	= new Date();
	yr	= $('#method_card-exp_yr').val();
	if(val<parseInt(now.getMonth()) && yr==parseInt(now.getFullYear()) || val.length<=0){
		if(yr.length<=0){ validate_method_card_exp_yr(yr); }
		tripError('method_card-exp_mo','Invalid month/year selected!');
		return false; 
	}else{ return true; }
}
function validate_method_card_exp_yr(val){
	if(val.length<=0){
		tripError('method_card-exp_yr','Required value for year not set!');
		return false; 
	}else{ return true; }
}
//---------------------------------
function openPolicies(pid){
	pars='';
	switch(pid){
		case 1: 
			url="/cs/account/config/pay_info_pop.html";
			pars='scrollbars=yes,toolbar=no,location=no,directories=no,status=no,menubar=no,resizable=yes,width=342,height=150';
			break
		case 2: url="/home/payment/ebpp.html"; break;
		case 3: url="/home/payment/t_c.html"; break;
		case 4: url="/home/payment/t_c_credit.html"; break;
		case 5: url="http://billmatrix.com/privacy-policy.htm"; break;
		case 6: url="http://billmatrix.com/security.htm"; break;
		case 7: url="/about/privacy_policy.html#security"; break;
		case 8:
			url='/cs/sharethewarmth.html?noform'; 
			pars='scrollbars=yes,toolbar=no,location=no,directories=no,status=no,menubar=no,resizable=yes,width=342,height=150';
			break;
		case 9: 
			url='/cs/roundup_pop.html'; 
			pars='scrollbars=yes,toolbar=no,location=no,directories=no,status=no,menubar=no,resizable=yes,width=300,height=120';
			break;
	}
	if(pars.length<0){
		window.open(url,'pol_win');
	}else{ window.open(url,'pol_win',pars); }
	return false;
}
