var nNumbBeforPoint = 0;
var nNumbAfterPoint = 0;
var aStates = new Array();
var aStatesDelivery = new Array();
Array.prototype.in_array = function(p_val) {
	for(var nArrayIndex = 0, l = this.length; nArrayIndex < l; nArrayIndex++) {
		if(this[nArrayIndex] == p_val) {
			return true;
		}
	}
	return false;
}
$(document).ready(function(){
	$('#select_country').change(function() {
		aCanadaProvinces = new Array('ON', 'QC', 'NS', 'NB', 'MB', 'BC', 'PE', 'SK', 'AB', 'NL', 'NT', 'YT', 'NU');
		if($('#select_country').val() != 'CA' && $('#select_country').val() != 'US') {
			$('#select_state').attr('name', 'state_old');
			$('#select_state').attr('disabled', true);
			$('#state_text').attr('name', 'state');
			$('#state_text').attr('disabled', false);
			$('.state').hide();
			if(typeof(aEUCountries) != 'undefined') {		
				if((aEUCountries.length > 0 && aEUCountries.in_array($('#select_country').val())) || ($('#select_country').val() == 'GB')) {
					$('.vat').show();
				} else {
					$('.vat').hide();
				}
			} else {
				$('.vat').show();
			}
			$('tr.state_text').show();
			if(typeof($('#state_def')) != 'undefine') {
			    if($('#state_def').val() != '') {
                    $('#state_text').val($('#state_def').val());
                } else {
                    $('#state_text').val('');
                }
            } else {
                $('#state_text').val('');
            }
		} else {
			sStartValue = $('#select_state').val();
			if(aStates.length == 0) {
			    aStates = new Array();
			    if($('#states_full').length > 0) {
                    $('#states_full option').each(function () {
    					aStateData = new Array();
    					aStateData['code'] = $(this).val();
    					aStateData['name'] = $(this).text();
    					//aStates[aStateData['code']] = aStateData;
    					aStates[aStates.length] = aStateData;
    				});
                } else {
                    $('#select_state option').each(function () {
    					aStateData = new Array();
    					aStateData['code'] = $(this).val();
    					aStateData['name'] = $(this).text();
    					//aStates[aStateData['code']] = aStateData;
    					aStates[aStates.length] = aStateData;
    				});
                }
			}
			$('#select_state').attr('disabled', false);
			$('.state').show();
			$('#select_state option').each(function () { $(this).remove(); });
			for(nStateIndex = 0; nStateIndex < aStates.length; nStateIndex++) {
				aStateData = new Array();
				aStateData = aStates[nStateIndex];
				var selectOption = document.createElement('option');
				selectOption.value = aStateData['code'];
				selectOption.text = aStateData['name'];
				if($('#select_country').val() == 'US') {
					if(!aCanadaProvinces.in_array(aStateData['code'])) {
						try { $("#select_state")[0].add(selectOption,null); // standards compliant
						} catch(ex) { $("#select_state")[0].add(selectOption); // IE only 
						}
					}
				}
				if($('#select_country').val() == 'CA') {
					if(aCanadaProvinces.in_array(aStateData['code'])) {
						try { $("#select_state")[0].add(selectOption,null); // standards compliant
						} catch(ex) { $("#select_state")[0].add(selectOption); // IE only 
						}
					}
				}
			}
		    $('#state_text').attr('name', 'state_text');
		    $('#state_text').attr('disabled', true);
			$('#select_state').attr('name', 'state');
			if($('#select_state option[value="'+sStartValue+'"]').length > 0) {
				$('#select_state option[value="'+sStartValue+'"]').attr('selected', true);
			}
			$('.vat').hide();
			$('tr.state_text').hide();
		}
		if($('#select_country').val() != 'US') {
			$('tr.zip td.form_tbl_label').html('<span class="asterisk">*</span>Postal code');
		} else {
			$('tr.zip td.form_tbl_label').html('<span class="asterisk">*</span>ZIP');
		}
	}).change();
	
	if(typeof($('.enduser_discount')[0]) != 'undefined' && typeof($('.enduser_discount')[0]) != 'undefined' && false) {
		$('.discount_field').keypress(function (e) {
			if($(this).val().length == 0) {
				nNumbBeforPoint = 0;
				nNumbAfterPoint = 0;
			} else {
				aParts = $(this).val().split('.');
				nNumbBeforPoint = aParts[0].length;
				if(aParts.length == 2) {
					nNumbAfterPoint = aParts[1].length;
				} else {
					nNumbAfterPoint = 0;
				}
			}
			keynum = -10;
			if(window.event) { // IE
				keynum = e.keyCode;
			} else if(e.which) { // Netscape/Firefox/Opera
				keynum = e.which;
			}
			if(keynum == 8) {
				sCurrentString =$(this).val();
				if(sCurrentString.substr(sCurrentString.length-1,1) != '.' && $(this).val().indexOf('.') != -1) {
					nNumbAfterPoint--;
				} else if(sCurrentString.substr(sCurrentString.length-1,1) != '.' && $(this).val().indexOf('.') == -1) {
					nNumbBeforPoint--;
				}
			}
			keychar = String.fromCharCode(keynum);
			if(nNumbBeforPoint == 1 && $(this).val().indexOf('.') == -1) {
				floatCheck = /\d|\.|[\b]/;
				isFloat = floatCheck.test(keychar);
			} else if(nNumbBeforPoint == 1 && $(this).val().indexOf('.') != -1 && (getCaretPos(this) <= $(this).val().indexOf('.'))) {
				floatCheck = /\d|[\b]/;
				isFloat = floatCheck.test(keychar);
			} else if(nNumbBeforPoint == 2 && $(this).val().indexOf('.') == -1) {
				floatCheck = /\.|[\b]/;
				isFloat = floatCheck.test(keychar);
			} else if(nNumbAfterPoint < 2) {
				floatCheck = /\d|[\b]/;
				isFloat = floatCheck.test(keychar);
			} else {
				isFloat = false;
			}
			checkDeleteKey = (keynum == 8);
			return (isFloat && (nNumbAfterPoint <=2)) || checkDeleteKey || (keynum == -10);	
		});
	}
});

function getCaretPos(obj)
{
	obj.focus();
	if(obj.selectionStart) {
		return obj.selectionStart;//Gecko
	} else if (document.selection) {//IE
		var sel = document.selection.createRange();
		var clone = sel.duplicate();
		sel.collapse(true);
		clone.moveToElementText(obj);
		clone.setEndPoint('EndToEnd', sel);
		return clone.text.length;
	}
	return 0;
}


function checkResellerForm(frm) {
    if(validate_reseller_register_form(frm)) {
        var value = '';
        var errFlag = new Array(); 
        _qfMsg = '';
        countryVal = frm.elements['country'].options[frm.elements['country'].selectedIndex].value;
        if(countryVal == 'US' || countryVal == 'CA') {
            stateElement = $('#select_state')[0];
            value = stateElement.selectedIndex == -1? '': stateElement.options[stateElement.selectedIndex].value;
        } else {
            stateElement = $('#state_text')[0];
            value = stateElement.value;
        }
        if (value == '' && !errFlag['state']) {
            errFlag['state'] = true;
            _qfMsg = _qfMsg + '\n - State / Region / Province is required';
        } 
        if (_qfMsg != '') {
            _qfMsg = 'Invalid information entered.' + _qfMsg;
            _qfMsg = _qfMsg + '\nPlease correct these fields.';
            alert(_qfMsg);
            return false;
        }
        return true;
    }
    return false;
}


function validateAccountRegisterForm(frm, actionType) 
{
    var value = '';
    var errFlag = new Array();
    var _qfGroups = {};
    _qfMsg = '';

    if (actionType == 'register') {
        value = frm.elements['serial'].value;
        if (value == '' && !errFlag['serial']) {
            errFlag['serial'] = true;
            _qfMsg = _qfMsg + '\n - Serial Key is required';
        }
    }
    
      value = frm.elements['firstname'].value;
      if (value == '' && !errFlag['firstname']) {
        errFlag['firstname'] = true;
        _qfMsg = _qfMsg + '\n - First Name is required';
      }

  value = frm.elements['lastname'].value;
  if (value == '' && !errFlag['lastname']) {
    errFlag['lastname'] = true;
    _qfMsg = _qfMsg + '\n - Last Name is required';
  }

  value = frm.elements['u_login'].value;
  if (value == '' && !errFlag['u_login']) {
    errFlag['u_login'] = true;
    _qfMsg = _qfMsg + '\n - Site User Name is required';
  }

  value = frm.elements['email'].value;
  if (value == '' && !errFlag['email']) {
    errFlag['email'] = true;
    _qfMsg = _qfMsg + '\n - E-Mail is required';
  }

  value = frm.elements['email'].value;
  var regex = /^((\"[^\"\f\n\r\t\v\b]+\")|([\w\!\#\$\%\&'\*\+\-\~\/\^\`\|\{\}]+(\.[\w\!\#\$\%\&'\*\+\-\~\/\^\`\|\{\}]+)*))@((\[(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))\])|(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))|((([A-Za-z0-9\-])+\.)+[A-Za-z\-]+))$/;
  if (value != '' && !regex.test(value) && !errFlag['email']) {
    errFlag['email'] = true;
    _qfMsg = _qfMsg + '\n - Invalid email format';
  }

  if(actionType == 'register') {
      value = frm.elements['re_email'].value;
      if (value == '' && !errFlag['re_email']) {
        errFlag['re_email'] = true;
        _qfMsg = _qfMsg + '\n - Confirm E-Mail is required';
      }
    
      value = frm.elements['re_email'].value;
      var regex = /^((\"[^\"\f\n\r\t\v\b]+\")|([\w\!\#\$\%\&'\*\+\-\~\/\^\`\|\{\}]+(\.[\w\!\#\$\%\&'\*\+\-\~\/\^\`\|\{\}]+)*))@((\[(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))\])|(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))|((([A-Za-z0-9\-])+\.)+[A-Za-z\-]+))$/;
      if (value != '' && !regex.test(value) && !errFlag['re_email']) {
        errFlag['re_email'] = true;
        _qfMsg = _qfMsg + '\n - Invalid confirm email format';
      }
  }
  value = frm.elements['country'].selectedIndex == -1? '': frm.elements['country'].options[frm.elements['country'].selectedIndex].value;

  if (value == '' && !errFlag['country']) {
    errFlag['country'] = true;
    _qfMsg = _qfMsg + '\n - Country is required';
  }

    countryVal = frm.elements['country'].options[frm.elements['country'].selectedIndex].value;
    if(countryVal == 'US' || countryVal == 'CA') {
        stateElement = $('#select_state')[0];
        value = stateElement.selectedIndex == -1? '': stateElement.options[stateElement.selectedIndex].value;
    } else {
        stateElement = $('#state_text')[0];
        value = stateElement.value;
    }
    if (value == '' && !errFlag['state']) {
        errFlag['state'] = true;
        _qfMsg = _qfMsg + '\n - State / Province is required';
    }
    
  value = frm.elements['zip'].value;
  if (value == '' && !errFlag['zip']) {
    errFlag['zip'] = true;
    _qfMsg = _qfMsg + '\n - Zip/Postal Code is required';
  }
  
  if(actionType == 'insert_admin' || actionType == 'update_admin') {
      value = frm.elements['client_name'].value;
      if (value == '' && !errFlag['client_name']) {
        errFlag['client_name'] = true;
        _qfMsg = _qfMsg + '\n - Client (auto-complete field) is required';
      }
  } 
      value = frm.elements['address'].value;
      if (value == '' && !errFlag['address']) {
        errFlag['address'] = true;
        _qfMsg = _qfMsg + '\n - Address is required';
      }
    
      value = frm.elements['city'].value;
      if (value == '' && !errFlag['city']) {
        errFlag['city'] = true;
        _qfMsg = _qfMsg + '\n - City is required';
      }
        
      value = frm.elements['zip'].value;
      if (value == '' && !errFlag['zip']) {
        errFlag['zip'] = true;
        _qfMsg = _qfMsg + '\n - Zip/Postal Code is required';
      }
      
      value = frm.elements['phone'].value;
      if (value == '' && !errFlag['phone']) {
        errFlag['phone'] = true;
        _qfMsg = _qfMsg + '\n - Phone is required';
      } 
      if (typeof frm.elements['captcha'] != 'undefined') {
          value = frm.elements['captcha'].value;
          if (value == '' && !errFlag['captcha']) {
            errFlag['captcha'] = true;
            _qfMsg = _qfMsg + '\n - Image Code is required';
          } 
      }

  if (_qfMsg != '') {
    _qfMsg = 'Invalid information entered.' + _qfMsg;
    _qfMsg = _qfMsg + '\nPlease correct these fields.';
    alert(_qfMsg);
    return false;
  }
  return true;
}

function validateAccountUpdateForm(frm) {
  var value = '';
  var errFlag = new Array();
  var _qfGroups = {};
  _qfMsg = '';

  value = frm.elements['firstname'].value;
  if (value == '' && !errFlag['firstname']) {
    errFlag['firstname'] = true;
    _qfMsg = _qfMsg + '\n - First Name is required';
  }

  value = frm.elements['lastname'].value;
  if (value == '' && !errFlag['lastname']) {
    errFlag['lastname'] = true;
    _qfMsg = _qfMsg + '\n - Last Name is required';
  }

  value = frm.elements['email'].value;
  if (value == '' && !errFlag['email']) {
    errFlag['email'] = true;
    _qfMsg = _qfMsg + '\n - E-Mail is required';
  }

  value = frm.elements['email'].value;
  var regex = /^((\"[^\"\f\n\r\t\v\b]+\")|([\w\!\#\$\%\&'\*\+\-\~\/\^\`\|\{\}]+(\.[\w\!\#\$\%\&'\*\+\-\~\/\^\`\|\{\}]+)*))@((\[(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))\])|(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))|((([A-Za-z0-9\-])+\.)+[A-Za-z\-]+))$/;
  if (value != '' && !regex.test(value) && !errFlag['email']) {
    errFlag['email'] = true;
    _qfMsg = _qfMsg + '\n - Email is incorrect';
  }

  value = frm.elements['country'].selectedIndex == -1? '': frm.elements['country'].options[frm.elements['country'].selectedIndex].value;

  if (value == '' && !errFlag['country']) {
    errFlag['country'] = true;
    _qfMsg = _qfMsg + '\n - Country is required';
  }
  
  value = frm.elements['address'].value;
  if (value == '' && !errFlag['address']) {
    errFlag['address'] = true;
    _qfMsg = _qfMsg + '\n - Address is required';
  }

  value = frm.elements['city'].value;
  if (value == '' && !errFlag['city']) {
    errFlag['city'] = true;
    _qfMsg = _qfMsg + '\n - City is required';
  }
  
  countryVal = frm.elements['country'].options[frm.elements['country'].selectedIndex].value;
    if(countryVal == 'US' || countryVal == 'CA') {
        stateElement = $('#select_state')[0];
        value = stateElement.selectedIndex == -1? '': stateElement.options[stateElement.selectedIndex].value;
    } else {
        stateElement = $('#state_text')[0];
        value = stateElement.value;
    }
    if (value == '' && !errFlag['state']) {
        errFlag['state'] = true;
        _qfMsg = _qfMsg + '\n - State / Province is required';
    }
    
  value = frm.elements['zip'].value;
  if (value == '' && !errFlag['zip']) {
    errFlag['zip'] = true;
    _qfMsg = _qfMsg + '\n - Zip/Postal Code is required';
  }
  
  value = frm.elements['phone'].value;
  if (value == '' && !errFlag['phone']) {
    errFlag['phone'] = true;
    _qfMsg = _qfMsg + '\n - Phone is required';
  }

  if (_qfMsg != '') {
    _qfMsg = 'Invalid information entered.' + _qfMsg;
    _qfMsg = _qfMsg + '\nPlease correct these fields.';
    alert(_qfMsg);
    return false;
  }
  return true;
}

function validateInsertUpdateClientForm(frm, actionType) {
  var value = '';
  var errFlag = new Array();
  var _qfGroups = {};
  _qfMsg = '';

  value = frm.elements['name'].value;
  if (value == '' && !errFlag['name']) {
    errFlag['name'] = true;
    _qfMsg = _qfMsg + '\n - Client Name is required';
  }

  value = frm.elements['country'].selectedIndex == -1? '': frm.elements['country'].options[frm.elements['country'].selectedIndex].value;

  if (value == '' && !errFlag['country']) {
    errFlag['country'] = true;
    _qfMsg = _qfMsg + '\n - Country is required';
  }
    
  value = frm.elements['address'].value;
  if (value == '' && !errFlag['address']) {
    errFlag['address'] = true;
    _qfMsg = _qfMsg + '\n - Address is required';
  }

  value = frm.elements['city'].value;
  if (value == '' && !errFlag['city']) {
    errFlag['city'] = true;
    _qfMsg = _qfMsg + '\n - City is required';
  }
  
  countryVal = frm.elements['country'].options[frm.elements['country'].selectedIndex].value;
    if(countryVal == 'US' || countryVal == 'CA') {
        stateElement = $('#select_state')[0];
        value = stateElement.selectedIndex == -1? '': stateElement.options[stateElement.selectedIndex].value;
    } else {
        stateElement = $('#state_text')[0];
        value = stateElement.value;
    }
    if (value == '' && !errFlag['state']) {
        errFlag['state'] = true;
        _qfMsg = _qfMsg + '\n - State / Region / Province is required';
    }
    
  value = frm.elements['zip'].value;
  if (value == '' && !errFlag['zip']) {
    errFlag['zip'] = true;
    _qfMsg = _qfMsg + '\n - Zip/Postal Code is required';
  }
  
  value = frm.elements['phone'].value;
  if (value == '' && !errFlag['phone']) {
    errFlag['phone'] = true;
    _qfMsg = _qfMsg + '\n - Phone is required';
  }
  
  if(actionType == 'insert') {
      value = frm.elements['firstname'].value;
      if (value == '' && !errFlag['firstname']) {
        errFlag['firstname'] = true;
        _qfMsg = _qfMsg + '\n - First Name is required';
      }
    
      value = frm.elements['lastname'].value;
      if (value == '' && !errFlag['lastname']) {
        errFlag['lastname'] = true;
        _qfMsg = _qfMsg + '\n - Last Name is required';
      }
    
      value = frm.elements['login'].value;
      if (value == '' && !errFlag['login']) {
        errFlag['login'] = true;
        _qfMsg = _qfMsg + '\n - Site User Name is required';
      }
    
      value = frm.elements['email'].value;
      if (value == '' && !errFlag['email']) {
        errFlag['email'] = true;
        _qfMsg = _qfMsg + '\n - E-Mail is required';
      }
    
      value = frm.elements['email'].value;
      var regex = /^((\"[^\"\f\n\r\t\v\b]+\")|([\w\!\#\$\%\&'\*\+\-\~\/\^\`\|\{\}]+(\.[\w\!\#\$\%\&'\*\+\-\~\/\^\`\|\{\}]+)*))@((\[(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))\])|(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))|((([A-Za-z0-9\-])+\.)+[A-Za-z\-]+))$/;
      if (value != '' && !regex.test(value) && !errFlag['email']) {
        errFlag['email'] = true;
        _qfMsg = _qfMsg + '\n - Invalid email format';
      }
    
      value = frm.elements['email'].value;
      var regex = /^((\"[^\"\f\n\r\t\v\b]+\")|([\w\!\#\$\%\&'\*\+\-\~\/\^\`\|\{\}]+(\.[\w\!\#\$\%\&'\*\+\-\~\/\^\`\|\{\}]+)*))@((\[(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))\])|(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))|((([A-Za-z0-9\-])+\.)+[A-Za-z\-]+))$/;
      if (value != '' && !regex.test(value) && !errFlag['email']) {
        errFlag['email'] = true;
        _qfMsg = _qfMsg + '\n - Email is incorrect';
      }
  }

  if (_qfMsg != '') {
    _qfMsg = 'Invalid information entered.' + _qfMsg;
    _qfMsg = _qfMsg + '\nPlease correct these fields.';
    alert(_qfMsg);
    return false;
  }
  return true;
}
