/************** global variables ****************/ 
var miniwindow = "";
var currentwindowurl = "";
var paymentclicked = false;
var preloadFlag = false;

/************** image functions ****************/ 
function newImage(arg) {
	if (document.images) {
		rslt = new Image();
		rslt.src = arg;
		return rslt;
	}
}

function changeImages() {
	if (document.images && (preloadFlag == true)) {
		for (var i=0; i<changeImages.arguments.length; i+=2) {
			document[changeImages.arguments[i]].src = changeImages.arguments[i+1];
		}
	}
}
/************** image functions ****************/ 

/************** window functions ****************/ 
 
// function is used to load up generic popup window 
function openwindow(htmlpage,winx,winy) { 
  if (!miniwindow || miniwindow.closed || (currentwindowurl != htmlpage)) { 
	var wininit = "width=" + winx + ",height=" + winy + ",scrollbars=yes,resizable=yes"; 
    miniwindow = window.open(htmlpage,'miniwindow',wininit); 
  }  
  currentwindowurl = htmlpage; 
  miniwindow.focus(); 
} 
 
// function is used to close down all pop-up windows when exiting page 
function closewindow() {
  if (miniwindow) { 
    if (!(miniwindow.closed)) miniwindow.close(); 
  } 
} 

// function is used for confirming delete 
function confirmdelete(formname,elementname,elementvalue) { 
  accept = window.confirm("Are you sure you want to delete?"); 
  if (accept == true) {   
	document.forms[formname].elements[elementname].value = elementvalue; 
	document.forms[formname].submit(); 
  } 
  else 
	return; 
} 
/************** helper functions ****************/ 
 
// function is used to validate Integer fields 
function isInteger(inputVal) { 
  if (inputVal != "") { 
    inputStr = inputVal.toString(); 
	for (var i = 0; i < inputStr.length; i++) { 
	  var oneChar = inputStr.charAt(i); 
	  if (i == 0 && oneChar == "-") { 
	    return false; 
	  } 
	  if (oneChar < "0" || oneChar > "9") { 
	    return false; 
	  } 
	} 
  } 
  return true; 
} 
 
/************** validation functions ****************/ 

// function is used in product detail section 
function validateOrder(myform) { 
  var valid = true;
  var count;
  var limit;
  var pac_count = myform.elements["Pac_Count"].value;
  for (var i=0;i<pac_count;i++) {
	count = 0;
	total = 0;
	limit = myform.elements["Pac_ID_"+i+"_Qty_Limit"].value;
	for (var j=0;j<myform.elements["Pac_ID_"+i+"_Count"].value;j++) {
	  total += parseInt(myform.elements["Pac_ID_"+i+"_"+j+"_Qty"].value);
    }
	if (limit != total) {
	  valid = false;
	}
  }
  if (!valid) {
    alert("Quantity selection invalid.  Please make sure that you selected the correct amount specified.");
  }
  return valid; 
}

// function is used in account section 
function validateAccount(myform) {
  var valid = true;
  var acc_firstname = myform.elements["Acc_FirstName"].value; 
  var acc_lastname = myform.elements["Acc_LastName"].value; 
  var acc_address1 =myform.elements["Acc_AddrLine1"].value;
  var acc_city = myform.elements["Acc_City"].value; 
  var acc_state = myform.elements["Acc_State"].value; 
  var acc_zipcode = myform.elements["Acc_ZipCode"].value; 
  var acc_country = myform.elements["Acc_Country"].value; 
  var acc_phone1 = myform.elements["Acc_Phone1"].value; 
  var acc_email = myform.elements["Acc_Email"].value; 
  var acc_password = myform.elements["Acc_Password"].value; 
  var confirmpassword = myform.elements["Confirm_Password"].value;
  var car_type = myform.elements['Car_Type'].value; 
  var car_num = myform.elements['Car_Num'].value;
	if (myform.elements['Car_CVV2Num']) {
		var car_cvv2num = myform.elements['Car_CVV2Num'].value; 
	}
	if (myform.elements['Car_CVV2Select']) {
		var car_cvv2select = myform.elements['Car_CVV2Select'].selectedIndex;
	}
  var car_expyear = myform.elements['Car_ExpYear'].value; 
  var car_expmonth = myform.elements['Car_ExpMonth'].value; 
  var car_holdername = myform.elements['Car_HolderName'].value;
  
  if (acc_firstname.length == 0 || acc_lastname.length == 0 || acc_address1.length == 0 || acc_city.length == 0 || acc_state.length == 0 || acc_zipcode.length == 0 || acc_country.length == 0 || acc_phone1.length == 0 || acc_email.length == 0 || acc_password.length == 0 || confirmpassword.length == 0) { 
    valid = false; 
  }

  if (valid && (myform.elements["savecreditcard"].checked)) { 
    if (car_type == "" || car_num == "" || car_expyear == "" || car_expmonth == "" ||  car_holdername == "") 
      valid = false;

	if (myform.elements['Car_CVV2Select'] && car_cvv2select == 0) {
		valid = false;
	}
  }

  if (valid && acc_password != "" && acc_password.length < 6) {
	alert("Password must be 6 characters or longer.");
	myform.elements["Acc_Password"].value = "";
	myform.elements["Confirm_Password"].value = "";
	valid = false;
  }
 
  if (!valid) alert("All required fields must be filled.");  
 
  if (valid && (myform.elements["savecreditcard"].checked)) { 
    if (car_cvv2select == 3 && car_cvv2num == "") 
    { 
	  alert("You have stated that you have entered in your CVV2 number.  Please fill in your CVV2 number.");   
	  valid = false; 
    } 
  }

  if (valid && (acc_password != confirmpassword)) { 
	alert("Passwords do not match."); 
    myform.elements["Acc_Password"].value = ""; 
	myform.elements["Confirm_Password"].value = ""; 
    valid = false; 
  }

  if (valid && acc_zipcode.length < 5) { 
	alert("Zip code must be 5 letters."); 
    valid = false; 
  }
  
  /*
  if (valid && acc_zipcode.search(" ") != -1) { 
	alert("Zip code cannot contain spaces."); 
    valid = false; 
  }
  */

  return valid; 
}

// function is used in account section 
function validateContact(myform) { 
  var valid = true; 
  var acc_firstname = myform.elements["Acc_FirstName"].value; 
  var acc_lastname = myform.elements["Acc_LastName"].value; 
  var acc_address1 =myform.elements["Acc_AddrLine1"].value; 
  var acc_city = myform.elements["Acc_City"].value; 
  var acc_state = myform.elements["Acc_State"].value; 
  var acc_zipcode = myform.elements["Acc_ZipCode"].value; 
  var acc_country = myform.elements["Acc_Country"].value;
  var acc_phone1 = myform.elements["Acc_Phone1"].value; 
  var acc_email = myform.elements["Acc_Email"].value; 
  var acc_password = myform.elements["Acc_Password"].value; 
  var confirmpassword = myform.elements["Confirm_Password"].value; 
  
  if (acc_firstname.length == 0 || acc_lastname.length == 0 || acc_address1.length == 0 || acc_city.length == 0 || acc_state.length == 0 || acc_zipcode.length == 0 || acc_country.length == 0 || acc_phone1.length == 0 || acc_email.length == 0) { 
    valid = false; 
  } 
   
  if (!valid) alert("All required fields must be filled."); 
 
  if (valid && acc_password != "" && acc_password != confirmpassword) { 
	alert("Passwords do not match."); 
    myform.elements["Acc_Password"].value = ""; 
	myform.elements["Confirm_Password"].value = ""; 
    valid = false; 
  }
 
  if (valid && acc_password != "" && acc_password.length < 6) {
	alert("Password must be 6 characters or longer.");
	myform.elements["Acc_Password"].value = "";
	myform.elements["Confirm_Password"].value = "";
	valid = false;
  }
 
  if (valid && acc_zipcode.length < 5) { 
	alert("Zip code must be 5 letters."); 
    valid = false; 
  }
  
  /*
  if (valid && acc_zipcode.search(" ") != -1) { 
	alert("Zip code cannot contain spaces."); 
    valid = false; 
  }
  */
 
  return valid; 
} 

// function is used in account section 
function validateCreditCard(myform,checknum) {
  var valid = true; 
  var car_type = myform.elements['Car_Type'].value; 
  var car_num = myform.elements['Car_Num'].value; 
  var car_cvv2num = myform.elements['Car_CVV2Num'].value; 
  var car_cvv2select = myform.elements['Car_CVV2Select'].selectedIndex; 
  var car_expyear = myform.elements['Car_ExpYear'].value; 
  var car_expmonth = myform.elements['Car_ExpMonth'].value; 
  var car_holdername = myform.elements['Car_HolderName'].value;
  
  if (car_type == "" || car_cvv2select == 0 || car_expyear == "" || car_expmonth == "" ||  car_holdername == "") {
    valid = false; 
  }

  if (checknum && car_num == "") {
    valid = false;
  }
   
  if (!valid) alert("All required fields must be filled."); 
  
  if (car_cvv2select == 3 && car_cvv2num == "") { 
	alert("You have stated that you have entered in your CVV2 number.  Please fill in your CVV2 number.");   
	valid = false; 
  }
  return valid; 
}

function validateZipCode(myform) { 
  var valid = true; 
  var shipzipcode = myform.elements["Pur_ShipZipCode"].value; 
  if (shipzipcode.length < 5) { 
	alert("Zip code must be 5 letters."); 
    valid = false; 
  }

  /*
  if (valid && shipzipcode.search(" ") != -1) { 
	alert("Zip code cannot contain spaces."); 
    valid = false; 
  }
  */
  return valid; 
} 

function copyAttribute(myform) {
  if (document.attributeinfo.elements["Pro_Attr1"]) myform.elements["Pro_Attr1"].value = document.attributeinfo.elements["Pro_Attr1"].value; 
  if (document.attributeinfo.elements["Pro_Attr2"]) myform.elements["Pro_Attr2"].value = document.attributeinfo.elements["Pro_Attr2"].value; 
  if (document.attributeinfo.elements["Pro_Attr3"]) myform.elements["Pro_Attr3"].value = document.attributeinfo.elements["Pro_Attr3"].value; 
  if (document.attributeinfo.elements["Pro_Attr4"]) myform.elements["Pro_Attr4"].value = document.attributeinfo.elements["Pro_Attr4"].value; 
  if (document.attributeinfo.elements["Pro_Attr5"]) myform.elements["Pro_Attr5"].value = document.attributeinfo.elements["Pro_Attr5"].value; 
  if (document.attributeinfo.elements["Pro_Attr6"]) myform.elements["Pro_Attr6"].value = document.attributeinfo.elements["Pro_Attr6"].value; 
  if (document.attributeinfo.elements["Pro_Attr7"]) myform.elements["Pro_Attr7"].value = document.attributeinfo.elements["Pro_Attr7"].value; 
  if (document.attributeinfo.elements["Pro_Attr8"]) myform.elements["Pro_Attr8"].value = document.attributeinfo.elements["Pro_Attr8"].value; 
  if (document.attributeinfo.elements["Pro_Attr9"]) myform.elements["Pro_Attr9"].value = document.attributeinfo.elements["Pro_Attr9"].value; 
  if (document.attributeinfo.elements["Pro_Attr10"]) myform.elements["Pro_Attr10"].value = document.attributeinfo.elements["Pro_Attr10"].value;
} 

function copyBill(myform) { 
  if (myform.elements["sameasbilling"].checked) { 
    myform.elements["Pur_ShipFirstName"].value = myform.elements["Pur_BillFirstName"].value; 
    myform.elements["Pur_ShipMiddleName"].value = myform.elements["Pur_BillMiddleName"].value; 
    myform.elements["Pur_ShipLastName"].value = myform.elements["Pur_BillLastName"].value; 
    myform.elements["Pur_ShipAddrLine1"].value = myform.elements["Pur_BillAddrLine1"].value; 
    myform.elements["Pur_ShipAddrLine2"].value = myform.elements["Pur_BillAddrLine2"].value;
    myform.elements["Pur_ShipCompanyName"].value = myform.elements["Pur_BillCompanyName"].value; 
    //myform.elements["Pur_ShipAddrLine3"].value = myform.elements["Pur_BillAddrLine3"].value; 
    myform.elements["Pur_ShipCity"].value = myform.elements["Pur_BillCity"].value; 
    //myform.elements["Pur_ShipState"].value = myform.elements["Pur_BillState"].value; 
    //alert(myform.elements["Pur_BillState"].value);
	myform.elements["Pur_ShipState"].selectedIndex = myform.elements["Pur_BillState"].selectedIndex;
    myform.elements["Pur_ShipZipCode"].value = myform.elements["Pur_BillZipCode"].value; 
    myform.elements["Pur_ShipCountry"].value = myform.elements["Pur_BillCountry"].value;
	myform.elements["Pur_ShipPhone1"].value = myform.elements["Pur_BillPhone1"].value; 
    //myform.elements["Pur_ShipPhone2"].value = myform.elements["Pur_BillPhone2"].value; 
  } 
} 

function validateBillShip(myform,checkaccount) {  

  var valid = true; 
  var billfirstname = myform.elements["Pur_BillFirstName"].value; 
  var billlastname = myform.elements["Pur_BillLastName"].value; 
  var billaddrline1 = myform.elements["Pur_BillAddrLine1"].value; 
  var billcity = myform.elements["Pur_BillCity"].value; 
  var billstate = myform.elements["Pur_BillState"].value; 
  var billzipcode = myform.elements["Pur_BillZipCode"].value; 
  var billcountry = myform.elements["Pur_BillCountry"].value; 
  var billphone1 = myform.elements["Pur_BillPhone1"].value;

  var shipfirstname = myform.elements["Pur_ShipFirstName"].value; 
  var shiplastname = myform.elements["Pur_ShipLastName"].value; 
  var shipaddrline1 = myform.elements["Pur_ShipAddrLine1"].value; 
  var shipcity = myform.elements["Pur_ShipCity"].value; 
  var shipstate = myform.elements["Pur_ShipState"].value; 
  var shipzipcode = myform.elements["Pur_ShipZipCode"].value; 
  var shipcountry = myform.elements["Pur_ShipCountry"].value;
	if (myform.elements["Pur_Age_Declaration"]) {
		var agedeclaration = myform.elements["Pur_Age_Declaration"].checked;
	}
  var shipphone1 = myform.elements["Pur_ShipPhone1"].value;
  var acc_email = "";
  var acc_password = "";
  var confirmpassword = "";

  if (billfirstname.length == 0 || billlastname.length == 0 || billaddrline1.length == 0 || billcity.length == 0 || billstate.length == 0 || billzipcode.length == 0 || billcountry.length == 0 || billphone1.length == 0 || shipfirstname.length == 0 || shiplastname.length == 0 || shipaddrline1.length == 0 || shipcity.length == 0 || shipstate.length == 0 || shipzipcode.length == 0 || shipcountry.length == 0 || shipphone1.length == 0) { 
    valid = false; 
  }
  
  if (checkaccount) {
	acc_email = myform.elements["Acc_Email"].value; 
    acc_password = myform.elements["Acc_Password"].value; 
    confirmpassword = myform.elements["Confirm_Password"].value;
	if (acc_email.length == 0 || acc_password.length == 0 || confirmpassword.length == 0) {
	  valid = false;
	}
  }

  if (!valid) alert("All required fields must be filled.");
  
  if (valid && checkaccount && acc_password != "" && acc_password != confirmpassword) {
	alert("Passwords do not match.");
    myform.elements["Acc_Password"].value = "";
	myform.elements["Confirm_Password"].value = "";
    valid = false;
  }

  if (valid && acc_password != "" && acc_password.length < 6) {
	alert("Password must be 6 characters or longer.");
	myform.elements["Acc_Password"].value = "";
	myform.elements["Confirm_Password"].value = "";
	valid = false;
  }

 /* 
  if (valid && !declaration) {
    alert("Age of Majority Declaration must be accepted.");
	valid = false;
  }
  */

  if (valid && (billzipcode.length < 5 || shipzipcode.length < 5)) { 
	alert("Zip code must be 5 letters."); 
    valid = false; 
  }
  
  /*
  if (valid && (billzipcode.search(" ") != -1 || shipzipcode.search(" ") != -1)) { 
	alert("Zip code cannot contain spaces."); 
    valid = false; 
  }
  */

  return valid; 
}

function validateOption(myform) {

	var valid = true; 
	var car_type = myform.elements['TCa_Type'].value; 
	if (myform.elements['TCa_Num']) {
		var car_num = myform.elements['TCa_Num'].value; 
	}
	if (myform.elements['TCa_CVV2Num']) {
		var car_cvv2num = myform.elements['TCa_CVV2Num'].value;
	}

	if (myform.elements['TCa_CVV2Select']) { 
		var car_cvv2select = myform.elements['TCa_CVV2Select'].selectedIndex; 
	}

	var car_expyear = myform.elements['TCa_ExpYear'].value; 
	var car_expmonth = myform.elements['TCa_ExpMonth'].value; 
	var car_holdername = myform.elements['TCa_HolderName'].value;

	if (myform.elements['Trans_AccountNumber']) {
		var trans_accountnumber = myform.elements['Trans_AccountNumber'].value;
	}
	if (myform.elements['Trans_AccountPassword']) {
		var trans_accountpassword = myform.elements['Trans_AccountPassword'].value;
	}

	var trans_type = "";

	// if trans type is an array and first option is checked
	if (myform.elements['Trans_Type'][0]) {
		// if the first option is checked, type is credit card
		if (myform.elements['Trans_Type'][0].checked) {
			//trans_type = "Credit Card";
			trans_type = myform.elements['Trans_Type'][0].value;
		}
	}

	// if trans type is an array and second option is checked
	if (myform.elements['Trans_Type'][1]) {
		if (myform.elements['Trans_Type'][1].checked) {
			// trans_type = "Account";
			trans_type = myform.elements['Trans_Type'][1].value;
		}
	}

	// if trans type isn't defined and Trans_Type is an array error
	if (trans_type == "" && myform.elements['Trans_Type'][0]) {
		valid = false;
	} else {
	// ... otherwise trans type = whatever is checked
		if (!myform.elements['Trans_Type'][0]) {
			trans_type = myform.elements['Trans_Type'].value;
		}
	}

	// handle credit card type validation
	if (trans_type == "Credit Card") {

		if (car_type == "" || car_num == "" || car_cvv2select == 0 || car_expyear == "" || car_expmonth == "" ||  car_holdername == "") {
			valid = false; 
		}
   
		if (!valid) alert("All required fields must be filled."); 

		if (myform.elements['TCa_CVV2Select']) {
			if (car_cvv2select == 3 && car_cvv2num == "") { 
				alert("You have stated that you have entered in your CVV2 number.  Please fill in your CVV2 number.");   
				valid = false; 
			}
		}

	}

	// handle account type validation
	if (trans_type == "Account") {

		if (trans_accountnumber == "") {
			valid = false;
		}
		if (trans_accountpassword == "") {
			valid = false;
		}

		if (!valid) alert("All required fields must be filled.");
	}

	return valid; 
}

// function is used in admin section 
function validateAccountLogin(myform) { 
  var valid = true; 
  var loginemail = myform.elements["Login_Email"].value; 
  var loginpassword = myform.elements["Login_Password"].value; 
  if (loginemail == "" || loginpassword == "") { 
	alert("All required fields must be filled."); 
    valid = false; 
  } 
  return valid; 
} 
 
// function is used in admin section 
function validateSearchPassword(myform) { 
  var valid = true; 
  var loginemail = myform.elements["Login_Email"].value; 
  var loginzipcode = myform.elements["Login_ZipCode"].value;
  if (loginemail == "" || loginzipcode == "") { 
	alert("All required fields must be filled."); 
    valid = false; 
  }

  /*
  if (valid && loginzipcode.search(" ") != -1) { 
	alert("Zip code cannot contain spaces."); 
    valid = false; 
  }
  */

  return valid; 
}

// function for submit once in payment only
function checkPayment(myform) {
  if (!paymentclicked) {
    accept = window.confirm("You have clicked \"payment process\".  Please click \"OK\" for payment to process.\nPlease be patient.  You should see an authorization receipt on your screen within 60 seconds."); 
    if (accept == true) {   
	  paymentclicked = true;
	  return true;
	}
    else 
	  return false;
  } else
	return false;
}

// TigerTel Function
function generateEmail(myform) {
  var firstname = myform.elements["Pur_BillFirstName"].value;
  var lastname = myform.elements["Pur_BillLastName"].value;
  myform.elements["Acc_Email"].value = firstname + lastname + "@bcwinecellar.com";
}

/************** changing fields dynamically functions ****************/ 
function changeFunction(myform,func,action) {
  myform.elements[func].value = action;
  myform.submit();
}

