/*BOF new validator */	
	var trigger_step2 = true; //trigger for the second step. in some cases there are no inputs to validate so set default to true
	var trigger_step3 = false; //trigger for the third step
	var addressSelected = false; //trigger for Shipping Address Manager (called from doSelAddress function)
	var addressBilling = false; //trigger for Payment Address Manager
	var time = new Date(); //working with date
	var browser = $.browser_please_do_not_use_this_shit.browser()+' '+$.browser_please_do_not_use_this_shit.version.number(); //our browser
  		
    function goStep(step, noAlert) 
	{
						
		if( typeof(noAlert) == 'undefined' ) { noAlert = false; } else { noAlert = true; }
		if ( step != 2 && step != 1 )
		{
			trigger_step2 = true; //reset trigger state
			if ( $('#chkOffice')[0].checked ) /*if An Office radio button is selected*/
			{

				if (typeof(is_company_organization_required_field) != 'undefined' && !is_company_organization_required_field) {
					trigger_step2 = true;
				} else {
					if ( $('#company_name').val() == '' || $.trim($('#company_name').val()) == 'Required field!')
					{     					
						$('#company_name').css('border', '1px solid #BB0000');					
						$('#error_message').appendTo('#row2');
						$('#error_message').html('Required field!');
						$('#error_message').show();
						trigger_step2 = false;						
					}								
				}

				if ( $('#reference')[0].value == '' && $('#payment_term_id')[0].value == '17' )
				{ 
					if ( $('#reference2')[0] )
					{
						$('#reference2').css('color', 'red');
						$('#reference2')[0].value = 'Required field!';
						trigger_step3 = false;
					}
				}
			}

            if (typeof($('#chkHome')[0]) != "undefined" && $('#chkHome')[0].checked ) /*if A Home / Home Office radion button is selected*/
            {
                $('#company_name').val('');
                $('#attention').val('');
                $('#reference').val('');
            }

			if ( step == 4 ) /*condition required to pass to step 4*/
			{
				trigger_step3 = true; //in some cases there are no inputs to validate so we set it to true
				if( $('#payment_term_id')[0].value == '3' ) /*if Credit Card tab is selected*/
				{
					var strValidChars = "0123456789";
					var strChar;
					var numeric_trigger = true;
					
					if ( !$('#cc_card_id_3')[0] || $('#cc_card_id_3')[0].value == 'New card' || $('#cc_card_id_3')[0].selectedIndex == 0 )
					{ 
						if ( $('#cardholder_name_3')[0].value == '' || $('#cardholder_name_3')[0].value == 'Required field!' )
						{ 
                            $('#cardholder_name_3').css('color', 'red').css('border', '1px solid red');
							$('#cardholder_name_3')[0].value = 'Required field!';
							trigger_step3 = false;
						}
						if ( $('#expYear_3')[0].value < time.getFullYear() )
						{ 
							$('#expYear_3').css('color', 'red');
							alert('Define correct CC expiration date, please.');
							trigger_step3 = false;
						}
						else
						{
							if ( $('#expYear_3')[0].value == time.getFullYear() && $('#expMonth_3')[0].value <= time.getMonth() )
							{ 
								$('#expMonth_3').css('color', 'red');
								if (!noAlert) { alert('Define correct CC expiration date, please.'); }
								trigger_step3 = false;
							}
						}

						if ( $('#cc_number_3')[0].value == '' || $('#cc_number_3')[0].value == 'Required field!' )
						{ 
                            $('#cc_number_3').css('color', 'red').css('border', '1px solid red');
							$('#cc_number_3')[0].value = 'Required field!';
							trigger_step3 = false;
						}
						var strString2 = $('#cc_number_3')[0].value;
						
						for (i = 0; i < strString2.length; i++) {
                            strChar = strString2.charAt(i);

							if (strValidChars.indexOf(strChar) == -1 && $('#cc_number_3')[0].value != 'Required field!') {
                                numeric_trigger = false; 
                            }
    
                        }

						if ( numeric_trigger == false || $('#cc_number_3')[0].value.charAt(11) == '' ) {

                            if (!noAlert) {
                                $('#cc_number_3').css('color', 'red').css('border', '1px solid red');
                                alert('CC has to be a numeric value of 12 to 16 digits!'); 
                            } /*$('#cc_number_3')[0].value = '';*/ 
    
                            trigger_step3 = false; 
                        }

					}

                    var re3digit=/^\d{3,4}$/;

                    if ( $('#cvc_3').val().search(re3digit) == -1 ) {
                        $('#cvc_3').css('color', 'red').css('border', '1px solid red');

                        if ( $('#cvc_3').val().length && $('#cvc_3').val() != 'Required field!' ) {
                            alert('CVC has to be a numeric value of 3 to 4 digits!');
                        } else {
                            $('#cvc_3').val('Required field!');
                        }

                        trigger_step3 = false;
                    }

				}
				
				if( $('#payment_term_id')[0].value == '16' ) /*if IMPAC Card tab is selected*/
				{
					if ( !$('#cc_card_id_16')[0] || $('#cc_card_id_16')[0].value == 'New card' || $('#cc_card_id_16')[0].selectedIndex == 0 )
					{ 
						var strValidChars = "0123456789";
						var strChar;
						var numeric_trigger = true;
						
						var newYearDate = '200' + $('#expYear_16')[0].value;
						if ( newYearDate < time.getFullYear() )
						{ 
							$('#expYear_16').css('color', 'red');
							if (!noAlert) { alert('Define correct CC expiration date, please.'); }
							trigger_step3 = false;
						}
						else
						{
							if ( newYearDate == time.getFullYear() && $('#expMonth_16')[0].value <= time.getMonth() )
							{ 
								$('#expMonth_16').css('color', 'red');
								if (!noAlert) { alert('Define correct CC expiration date, please.'); }
								trigger_step3 = false;
							}
						}
						if ( $('#cardholder_name_16')[0].value == '' || $('#cardholder_name_16')[0].value == 'Required field!' )
						{ 
                            $('#cardholder_name_16').css('color', 'red').css('border', '1px solid red');
							$('#cardholder_name_16')[0].value = 'Required field!';
							trigger_step3 = false;
						}
						if ( $('#cc_number_16')[0].value == '' || $('#cc_number_16')[0].value == 'Required field!' )
						{ 
                            $('#cc_number_16').css('color', 'red').css('border', '1px solid red');
							$('#cc_number_16')[0].value = 'Required field!';
							trigger_step3 = false;
						}
						
						var strString2 = $('#cc_number_16')[0].value;
						for (i = 0; i < strString2.length; i++)
						{	strChar = strString2.charAt(i);
							if (strValidChars.indexOf(strChar) == -1 && $('#cc_number_16')[0].value != 'Required field!') { numeric_trigger = false; }
                        }

						if ( numeric_trigger == false || $('#cc_number_16')[0].value.charAt(11) == '' ) { 

                            if (!noAlert) { 
                                $('#cc_number_16').css('color', 'red').css('border', '1px solid red');
                                alert('CC has to be a numeric value of 12 to 16 digits!'); 
                            }

                            trigger_step3 = false; 
                        }

                        var re3digit=/^\d{3,4}$/;

                        if ( $('#cvc_16').val().search(re3digit) == -1 ) {
                            $('#cvc_16').css('color', 'red').css('border', '1px solid red');

                            if ( $('#cvc_16').val().length && $('#cvc_16').val() != 'Required field!' ) {
                                alert('CVC has to be a numeric value of 3 to 4 digits!');
                            } else {
                                $('#cvc_16').val('Required field!');
                            }

                            trigger_step3 = false;
                        }

					}
				}
				if( $('#payment_term_id')[0].value == '17' && $('#reference2')[0] ) /*if Purchase Order tab is selected*/
				{
					if ( $('#reference2')[0].value == '' || $('#reference2')[0].value == 'Required field!' )
					{ 
						$('#reference2').css('color', 'red');
						$('#reference2')[0].value = 'Required field!';
						trigger_step3 = false;
					}
				}

				if( $('#payment_term_id')[0].value == '23' && $('#ebay_userid')[0]  && $('#ebay_eiastoken')[0] ) { /*if Purchase Order tab is selected*/

					if ( $('#ebay_userid')[0].value == '' || $('#ebay_userid')[0].value == 'Required field!' ) { 
						$('#ebay_userid').css('color', 'red');
						$('#ebay_userid')[0].value = 'Required field!';
						trigger_step3 = false;
					}

                    if ( $('#ebay_eiastoken')[0].value == '' || $('#ebay_eiastoken')[0].value == 'Required field!' ) { 
						$('#ebay_eiastoken').css('color', 'red');
						$('#ebay_eiastoken')[0].value = 'Required field!';
						trigger_step3 = false;
					}

				}

				/*only cc, paypal, livePay and impac require billing address so...*/
				if ( $('#payment_term_id')[0].value != '16' && $('#payment_term_id')[0].value != '3' )
				{
					addressBilling = true;
				}

				setAddressOprions();
			}
				
			/*conditions to pass*/
			if ( trigger_step2 == true && addressSelected == false && step == 3 )
			{
				if (!noAlert) { alert('Select your address from\nthe Address Manager, please.'); }
			}
			if ( trigger_step2 == true && step == 4 && trigger_step3 == true && addressBilling == true && addressSelected == false )
			{
				if ( browser == 'Firefox 3' ) 
				{ /*if payment is ok but shipping is not go to shipping*/
					$('div .co-bar-title').unbind('click');
					stepped = true;
					afterClick();
					$('#co_step_2 .co-bar-title').click();
					} 
					else 
					{ 
						stepped = true;
						$('#co_step_2 .co-bar-title').click();
					}
				alert('Select your address from\nthe Address Manager, please.');
			}
			if ( trigger_step3 == true && step == 4 && addressBilling == false )
			{
				if (!noAlert) { alert('Select a billing address from\nthe Address Manager, please.'); }
			}
			if ( trigger_step2 == true && trigger_step3 == true && step == 3 && addressSelected == true && addressBilling == false )
			{/*dont let it jump to step 4*/
				if ( browser == 'Firefox 3' ) 
				{ 
					$('div .co-bar-title').unbind('click');
					stepped = true;
					afterClick();
					$('#co_step_3 .co-bar-title').click();
				} 
				else 
				{ 
					stepped = true;
					$('#co_step_3 .co-bar-title').click();
				} 
			}
			if ( trigger_step2 == true && step == 3 && addressSelected == true ) 
			{/*if shipping is ok go to payment*/
				if ( browser == 'Firefox 3' ) 
				{ 
					$('div .co-bar-title').unbind('click');
					stepped = true;
					afterClick();
					$('#co_step_3 .co-bar-title').click();
				} 
				else 
				{ 
					stepped = true;
					$('#co_step_3 .co-bar-title').click();
				} 
			} 
			if ( trigger_step2 == true && trigger_step3 == true && addressSelected == true && addressBilling == true && step == 4 ) 
			{/*if shipping and payment are ok go to confirmation*/
				if ( browser == 'Firefox 3' )
				{ 
					$('div .co-bar-title').unbind('click');
					stepped = true;
					afterClick();
					$('#co_step_4 .co-bar-title').click();
				} 
				else
				{ 
					stepped = true;
					$('#co_step_4 .co-bar-title').click();
				}
			} 
			if ( trigger_step3 == true && addressBilling == true && step == 4 && trigger_step2 == false )
			{/*if payment is ok but shipping is not go to shipping*/
				if ( browser == 'Firefox 3' ) 
				{ 
					$('div .co-bar-title').unbind('click');
					stepped = true;
					afterClick();
					$('#co_step_2 .co-bar-title').click();
				} 
				else 
				{ 
					stepped = true;
					$('#co_step_2 .co-bar-title').click();
				} 
			}
		}
		else
		{/*let it pass with no validations for steps 1 and 2*/
			if ( browser == 'Firefox 3' ) 
			{ 
				$('div .co-bar-title').unbind('click');
				stepped = true;
				afterClick();
				$('#co_step_' + step + ' .co-bar-title').click();
			} 
			else 
			{ 
				stepped = true;
				$('#co_step_' + step + ' .co-bar-title').click();
			} 
		}
		if ( step == 2 )
		{
			//checkAddressCount();
		}
		if ( step == 3 )
		{			
			monthList();
		}
	}
	function sweeper(x)
	{
		if ( x.value == 'Required field!')
		{
			x.value = '';
		}
		x.style.color = 'black';
		$('#tv_'+x.id).hide();
	}
	function trimMe(x)
	{
		var finalValue = '';
		var strValidChars = "0123456789";
		var strChar;
		for ( i = 0; i < x.value.length; i++ )
		{ 
			strChar = x.value.charAt(i);
			if ( strValidChars.indexOf(strChar) != -1 )
			{
				finalValue += x.value.charAt(i); 
			}
		}
		x.value = finalValue;
	}
	function monthList()
	{
		if($('#expMonth_3').val()!=undefined){
			var d=new Date();
			var currentYear = d.getFullYear();
			var currentMonth = d.getMonth();
			var months = {
				"1" : "January",
				"2" : "February",
				"3" : "March",
				"4" : "April",
				"5" : "May",
				"6" : "June",
				"7" : "July",
				"8" : "August",
				"9" : "September",
				"10" : "October",
				"11" : "November",
				"12" : "December"
			}
			
			if ( $('#expYear_3').val() == currentYear && $('#expMonth_3')[0].options.length == 12 )
			{
				for (i=0; i < currentMonth; i++) { $('#expMonth_3').removeOption(0); }
			}
			else
			{ 
				if ( $('#expYear_3').val() != currentYear )
				{
					var selectedMonth = $('#expMonth_3')[0].value;
					$('#expMonth_3').removeOption(/./);
					$('#expMonth_3').addOption(months, false);
					$('#expMonth_3')[0].selectedIndex = selectedMonth-1;
				}
			}
			
			if ( $('#expYear_16').val() == currentYear && $('#expMonth_16')[0].options.length == 12 )
			{
				for (i=0; i < currentMonth; i++) { $('#expMonth_16').removeOption(0); }
			}
			else
			{ 
				if (typeof($('#expYear_16')[0]) != "undefined" && $('#expYear_16').val() != currentYear )
				{
					var selectedMonth = $('#expMonth_16')[0].value;
					$('#expMonth_16').removeOption(/./);
					$('#expMonth_16').addOption(months, false);
					$('#expMonth_16')[0].selectedIndex = selectedMonth-1;
				}
			}
		}
	}
