function trim(str, chars) {
    return ltrim(rtrim(str, chars), chars);
}

function ltrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}

function rtrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}

function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}

function UpdateNumberIssues(){
var number_issues = document.getElementById('number_issues');
var duration = document.getElementById('duration');
duration.value = number_issues.value;
UpdateTotals(1);
}

function UpdateTotals(x){
	var sub_type = document.getElementById('sub_type');
	var duration = document.getElementById('duration');
	var num_purchased = document.getElementById('num_purchased');
	var snum_purchased = document.getElementById('snum_purchased');
	var hnum_purchased = document.getElementById('hnum_purchased');
	var snum_issues = document.getElementById('snum_issues');
	var subtotal = document.getElementById('subtotal');
	var hsubtotal = document.getElementById('hsubtotal');
	var tax = document.getElementById('tax');
	var htax = document.getElementById('htax');
	var total = document.getElementById('total');
	var htotal = document.getElementById('htotal');
	
	if(x==0){
		snum_purchased.innerHTML = '0';
		hnum_purchased.value = 0;
		snum_issues.innerHTML = '0';
		subtotal.innerHTML = '0';
		hsubtotal.value = 0;
		tax.innerHTML = '0';
		htax.value = 0;
		total.innerHTML = '0';
		htotal.value=0;
	}
	if(x==1){
		
		snum_issues.innerHTML = duration.value;
		if(sub_type.value == 'both'){
			snum_purchased.innerHTML = parseInt(num_purchased.value);
			hnum_purchased.value = parseInt(num_purchased.value);
		} else {
			snum_purchased.innerHTML = parseInt(num_purchased.value);
			hnum_purchased.value = parseInt(num_purchased.value);
		}
		
		var tmpsubtotal = ((parseInt(duration.value) / 6) * parseInt(hnum_purchased.value) *20).toFixed(2);
		var tmptax = (parseInt(tmpsubtotal) *.05).toFixed(2);
		var tmptotal = (parseInt(tmpsubtotal) + parseInt(tmptax)).toFixed(2);
		subtotal.innerHTML = tmpsubtotal;
		hsubtotal.value= tmpsubtotal;
		tax.innerHTML = tmptax;
		htax.value = tmptax;
		total.innerHTML = tmptotal;
		htotal.value = tmptotal;

		
	}
}
function CheckForm_Purchaser(){
	document.getElementById('errorsdiv').innerHTML="";
	var sub_type = document.getElementById('sub_type');
	var num_purchased = document.getElementById('num_purchased');
	var duration = document.getElementById('duration');
	var logos = document.getElementById('logos');
	var add_div = document.getElementById('addsubscriberdiv');
	if(sub_type.value !="0" && duration.value !="0"){
		
		new Ajax.Updater('subscriptiondiv', 'ajax_subscribe_form.php', { 
			method: 'post', 
			onSuccess: function(transport){
							logos.style.cssText = "display:inherit;";
							add_div.style.cssText = "display:inherit;";
							if(sub_type.value =='both'){
								num_purchased.value=1;
								CheckForm_Subscriber();
							} 
							if(sub_type.value =='others'){
								num_purchased.value=1;
								CheckForm_Subscriber();
								num_purchased.value = parseInt(num_purchased.value)-1;
							}
							if(sub_type.value=='self') {
								num_purchased.value=1;
							}
							UpdateTotals(1);
						},
			parameters: { num:'1', self:'self'} });
	} else {
		UpdateTotals(0);
		num_purchased.value=0;
		document.getElementById('subscriptiondiv').innerHTML = "";
		logos.style.cssText = "display:none;";
		add_div.style.cssText = "display:none;";
	}
	UpdateTotals(1);
	return;
}

function CheckForm_Subscriber(){
	var sub_type = document.getElementById('sub_type');
	var increment = document.getElementById('increment');
	
	var num_purchased = document.getElementById('num_purchased');
	
	var sub_type = document.getElementById('sub_type');
	var sendThisNum = 0;
	
		new Ajax.Updater('subscriptiondiv', 'ajax_subscribe_form_add.php', { 
     		insertion: Insertion.Bottom,			 
			method: 'post', 
			onSuccess: function(transport){
						num_purchased.value = parseInt(num_purchased.value) + 1;
						increment.value = parseInt(increment.value)+1;
						UpdateTotals(1);
						},
			parameters: { num:increment.value} });
}

function CheckZip(strValue){
	//ANA NAN or ANANAN
	strValue = strValue.toUpperCase();
	//var ssnPattern = /^[0-9][A-Z][0-9]\s?[0-9][A-Z][0-9]$/;
	var ssnPattern = /^[A-Z][0-9][A-Z]\s?[0-9][A-Z][0-9]$/;
	if(ssnPattern.test(strValue) == false){
		//ssnPattern = /^[0-9]{5}(\-[0-9]{4})?$/;
		var ssnPattern = /^[A-Z][0-9][A-Z][0-9][A-Z][0-9]$/;
		if(ssnPattern.test(strValue) == false){
			return false;
		} else {
			return true;
		}
	} else {
		return true;
	}

 }
 
 function CheckCC(strValue){
	var CCPattern = /^[0-9][0-9][0-9][0-9]\-?[0-9][0-9][0-9][0-9]\-?[0-9][0-9][0-9][0-9]\-?[0-9][0-9][0-9][0-9]$/;
	var CCPattern2 = /^[0-9][0-9][0-9][0-9](\s)?[0-9][0-9][0-9][0-9](\s)?[0-9][0-9][0-9][0-9](\s)?[0-9][0-9][0-9][0-9]$/;
	if( CCPattern.test(strValue) == false){
		if(CCPattern2.test(strValue) == false){
			return false;
		} else {
			return true;
		}
	} else {
		return true;
	}
}


function ProcessForm(){
	document.getElementById('errorsdiv').innerHTML="";
	var sub_type = document.getElementById('sub_type');
	var num_purchased = document.getElementById('num_purchased');
	count = num_purchased.value;
	var $errors = new Array();
	var $errors_list = '';
	if(sub_type.value == "others"){ count++; }
	
	for(var $i=0;$i<count;$i++){
		$fname 		= trim(document.getElementById('fname_'+$i).value);
		$lname 		= trim(document.getElementById('lname_'+$i).value);
		$address1	= trim(document.getElementById('address1_'+$i).value);
		$city 		= trim(document.getElementById('city_'+$i).value);
		$province 	= trim(document.getElementById('province_'+$i).value);
		$postal		= trim(document.getElementById('postal_'+$i).value);
		$email 		= trim(document.getElementById('email_'+$i).value);
		$phone 		= trim(document.getElementById('phone_'+$i).value);
		
		if($i==0){
			if($fname.length<1){$errors[$errors.length]="Please fill in your first name";}
			if($lname.length<1){$errors[$errors.length]="Please fill in your last name";}
			if($address1.length<1){$errors[$errors.length]="Please fill in your address";}
			if($city.length<1){$errors[$errors.length]="Please fill in your city";}
			if($province.length<1){$errors[$errors.length]="Please fill in your state/province";}
			if(!CheckZip($postal)){$errors[$errors.length]="Please enter a valid postal code";}
			if($email.length<1){$errors[$errors.length]="Please fill in your email address";}
			if($phone.length<1){$errors[$errors.length]="Please fill in your phone number";}
		}
		if($i>0){
			if($fname.length<1){$errors[$errors.length]="Please fill in friend "+$i+"'s first name";}
			if($lname.length<1){$errors[$errors.length]="Please fill in friend "+$i+"'s last name";}
			if($address1.length<1){$errors[$errors.length]="Please fill in friend "+$i+"'s address";}
			if($city.length<1){$errors[$errors.length]="Please fill in friend "+$i+"'s city";}
			if($province.length<1){$errors[$errors.length]="Please fill in friend "+$i+"'s state/province";}
			if(!CheckZip($postal)){$errors[$errors.length]="Please enter a valid friend "+$i+"'s postal code";}
		}
	}
	var ccNum = document.getElementById('CardNumber').value;
	if(!CheckCC(ccNum)){$errors[$errors.length]="Please Enter a valid Credit Card Number";}

	if($errors.length > 0){
		for(var $j=0;$j<$errors.length;$j++){
			$errors_list = $errors_list + $errors[$j] + "<br />";		
		}
		document.getElementById('errorsdiv').innerHTML=$errors_list;
		alert("Your submission generated 1 or more errors");
		scroll(0,0);
		return false;
	}
	else if ($errors.length ==0){
		document.getElementById('step1button').value="Processing...";
		document.getElementById('step1button').disabled=true;
		document.step1_form.submit();
		return true;
	}

}