// JavaScript Document

function saveProductPrescription(ref) {
	agent.call('save_product_prescription.php','save_product_prescription','',ref,document.getElementById(ref).value);
}

function saveProductOptions() {
	var classes = document.getElementById('opts').value.split(' ');
	
	var opts = Array();
	
	var i;
	for(i=0;i<classes.length;i++)
		opts.push([classes[i],document.getElementById('opt'+classes[i]).options[document.getElementById('opt'+classes[i]).selectedIndex].value]);
	
	agent.call('save_product_options.php','save_product_options','',document.getElementById('productid').value,document.getElementById('variantid').value,opts,document.getElementById('qty').value);
}

function popupImage(type,id) {
	agent.call('popup_image_info.php','get_image_size','cbPopupImage',type,id);
}

function cartPopupImage(inp) {
	var anum = inp.parentNode.parentNode.parentNode.id.substring(3);
	
	var imgid = document.getElementById('itm'+anum+'_pimgid').value;
	agent.call('popup_image_info.php','get_image_size','cbPopupImage','W',imgid);
}

function cbPopupImage(res) {
	//var w = 549;
	//var h = 300;
	var w = res.w + 50;
	var h = res.h + 100;
	var l = Math.floor((screen.width-w)/2);
	var t = Math.floor((screen.height-h)/2);
	window.open('popup_image.php?type='+res.type+'&id='+res.id+'&w='+res.w+'&h='+res.h,'MEyewear',
			'width='+w+',height='+h+',top='+t+',left='+l+'directories=no,'
			+'location=no,menubar=no,resizable=no,scrollbars=no,status=no,'
			+'toolbar=no');
}

function number_format( number, decimals, dec_point, thousands_sep ) {
    var n = number, c = isNaN(decimals = Math.abs(decimals)) ? 2 : decimals;
    var d = dec_point == undefined ? "." : dec_point;
    var t = thousands_sep == undefined ? "," : thousands_sep, s = n < 0 ? "-" : "";
    var i = parseInt(n = Math.abs(+n || 0).toFixed(c)) + "", j = (j = i.length) > 3 ? j % 3 : 0;
    
    return s + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : "");
}

function numbersonly(myfield, e, dec) {
	var key;
	var keychar;
	
	if (window.event)
		key = window.event.keyCode;
	else if (e)
		key = e.which;
	else
		return true;
	keychar = String.fromCharCode(key);
	
	// control keys
	if ((key==null) || (key==0) || (key==8) || (key==9) || (key==13) ||
			(key==27) )
		return true;
	// numbers
	else if ((("0123456789").indexOf(keychar) > -1))
		return true;
	// decimal point jump
	else if (dec && (keychar == ".")) {
		//myfield.form.elements[dec].focus();
		return true;
	} else if(keychar == "+" || keychar == "-") {
		return true;
	}
	else
		return false;
}

function IsNumeric(sText) {
	var ValidChars = "0123456789.";
	var IsNumber=true;
	var Char;
	
	
	for (i = 0; i < sText.length && IsNumber == true; i++) {
		Char = sText.charAt(i); 
		if (ValidChars.indexOf(Char) == -1) {
			IsNumber = false;
		}
	}
	return IsNumber;
}

function isValidEmail(strEmail) {
	var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
	if(!filter.test(strEmail))
		return false;
	return true;
}

function checkContactForm() {
	var missingFields = Array();
	var invalidFields = Array();
	var curField;
	
	if(document.getElementById('title').value == '') {
		missingFields.push('Title');
		document.getElementById('title_lbl').className = 'missing';
	}
	
	if(document.getElementById('first_name').value == '') {
		missingFields.push('First name');
		document.getElementById('first_name_lbl').className = 'missing';
	}
	
	if(document.getElementById('last_name').value == '') {
		missingFields.push('Last name');
		document.getElementById('last_name_lbl').className = 'missing';
	}
	
	if(document.getElementById('address').value == '') {
		missingFields.push('Address');
		document.getElementById('address_lbl').className = 'missing';
	}
	
	if(document.getElementById('city').value == '') {
		missingFields.push('City');
		document.getElementById('city_lbl').className = 'missing';
	}
	
	if(document.getElementById('state').value == '') {
		missingFields.push('State');
		document.getElementById('state_lbl').className = 'missing';
	}
	
	if(document.getElementById('country').value == '') {
		missingFields.push('Country');
		document.getElementById('country_lbl').className = 'missing';
	}
	
	if(document.getElementById('zip').value == '') {
		missingFields.push('Zip / Postal code');
		document.getElementById('zip_lbl').className = 'missing';
	}
	
	if(document.getElementById('phone').value == '') {
		missingFields.push('Phone');
		document.getElementById('phone_lbl').className = 'missing';
	} else if(!IsNumeric(document.getElementById('phone').value)) {
		invalidFields.push('phone');
		document.getElementById('phone_lbl').className = 'invalid';
	}
	
	if(document.getElementById('email').value == '') {
		missingFields.push('E-mail');
		document.getElementById('email_lbl').className = 'missing';
	} else if(!isValidEmail(document.getElementById('email').value)) {
		invalidFields.push('email');
		document.getElementById('email_lbl').className = 'invalid';
	}
	
	if(!IsNumeric(document.getElementById('fax').value)) {
		invalidFields.push('fax');
		document.getElementById('fax_lbl').className = 'invalid';
	}
	
	if(document.getElementById('subject').value == '') {
		missingFields.push('Subject');
		document.getElementById('subject_lbl').className = 'missing';
	}
	
	if(document.getElementById('message').value == '') {
		missingFields.push('Message');
		document.getElementById('message_lbl').className = 'missing';
	}
	
	if(missingFields.length == 0 && invalidFields.length == 0)
		return true;
	
	if(missingFields.length > 0)
		document.getElementById('missing_fields').innerHTML = '<br/>Some required fields are missing: '
			+ missingFields.join(', ');
	if(invalidFields.length > 0) {
		var ifd = document.getElementById('invalid_fields');
		var i;
		while(ifd.firstChild) 
			ifd.removeChild(ifd.firstChild);
		ifd.appendChild(document.createElement('br'));
		ifd.appendChild(document.createTextNode(''));
		ifd.childNodes[1].nodeValue = 'Some fields are invalid';
		var ul = document.createElement('ul');
		for(i=0;i<invalidFields.length;i++) {
			var li = document.createElement('li');
			if(invalidFields[i] == 'zip')
				li.innerHTML = 'Zip / Postal code can contain only numbers';
			else if(invalidFields[i] == 'phone')
				li.innerHTML = 'Phone can contain only numbers';
			else if(invalidFields[i] == 'email')
				li.innerHTML = 'You specified an invalid e-mail address';
			else if(invalidFields[i] == 'fax')
				li.innerHTML = 'Fax can contain only numbers';
			ul.appendChild(li);
		}
		ifd.appendChild(ul);
	}
	
	return false;
}

function checkOpticianForm() {
	var missingFields = Array();
	var invalidFields = Array();
	var curField;
	
	if(document.getElementById('email').value == '') {
		missingFields.push('E-mail');
		document.getElementById('email_lbl').className = 'missing';
	} else if(!isValidEmail(document.getElementById('email').value)) {
		invalidFields.push('email');
		document.getElementById('email_lbl').className = 'invalid';
	}
	
	if(document.getElementById('message').value == '') {
		missingFields.push('Message');
		document.getElementById('message_lbl').className = 'missing';
	}
	
	if(missingFields.length == 0 && invalidFields.length == 0)
		return true;
	
	if(missingFields.length > 0)
		document.getElementById('missing_fields').innerHTML = '<br/>Some required fields are missing: '
			+ missingFields.join(', ');
	if(invalidFields.length > 0) {
		var ifd = document.getElementById('invalid_fields');
		var i;
		while(ifd.firstChild) 
			ifd.removeChild(ifd.firstChild);
		ifd.appendChild(document.createElement('br'));
		ifd.appendChild(document.createTextNode(''));
		ifd.childNodes[1].nodeValue = 'Some fields are invalid';
		var ul = document.createElement('ul');
		for(i=0;i<invalidFields.length;i++) {
			var li = document.createElement('li');
			if(invalidFields[i] == 'email')
				li.innerHTML = 'You specified an invalid e-mail address';
			ul.appendChild(li);
		}
		ifd.appendChild(ul);
	}
	
	return false;
}

function checkInput(input,type) {
	if(input.value != '') {
		document.getElementById(input.id+"_lbl").className = '';
		if(type == 'n' && !IsNumeric(input.value))
			document.getElementById(input.id+"_lbl").className = 'invalid';
		else if(type == 'm' && !isValidEmail(input.value))
			document.getElementById(input.id+"_lbl").className = 'invalid';
	}
	else
		document.getElementById(input.id+"_lbl").className = 'missing';
}

function deleteCartItem(il) {
	agent.call('del_from_cart.php','delete_cart_item','callbackDeleteCartItem',il.parentNode.parentNode.parentNode.id.substring(3));
}

function callbackDeleteCartItem(itmnum) {
	if(itmnum >= 0) {
		var curitm = document.getElementById('itm'+itmnum);
		var newnum = 0;
		curitm.parentNode.removeChild(curitm);
		itmnum++;
		curitm = document.getElementById('itm'+itmnum);
		while(curitm) {
			newnum = itmnum - 1;
			curitm.id = 'itm'+newnum;
			curitm.name = 'itm'+newnum;
			
			curitm = document.getElementById('itm'+itmnum+'_eo');
			curitm.id = 'itm'+newnum+'_eo';
			curitm.name = 'itm'+newnum+'_eo';
			
			curitm = document.getElementById('itm'+itmnum+'_so');
			curitm.id = 'itm'+newnum+'_so';
			curitm.name = 'itm'+newnum+'_so';
			
			curitm = document.getElementById('itm'+itmnum+'_edit');
			curitm.id = 'itm'+newnum+'_edit';
			curitm.name = 'itm'+newnum+'_edit';
			
			curitm = document.getElementById('itm'+itmnum+'_label');
			curitm.id = 'itm'+newnum+'_label';
			curitm.name = 'itm'+newnum+'_label';
			
			curitm = document.getElementById('itm'+itmnum+'_prodid');
			curitm.id = 'itm'+newnum+'_prodid';
			curitm.name = 'itm'+newnum+'_prodid';
			
			curitm = document.getElementById('itm'+itmnum+'_image');
			curitm.id = 'itm'+newnum+'_image';
			
			curitm = document.getElementById('itm'+itmnum+'_opts');
			curitm.id = 'itm'+newnum+'_opts';
			var curitmid = 'itm'+itmnum+'_opt';
			var idl = curitmid.length;
			for(i=0;i<curitm.childNodes.length;i++) {
				var curChild = curitm.childNodes[i];
				if(curChild.id)
					if(curChild.id.substring(0,idl) == (curitmid + '_opt'))
						curChild.id = 'itm'+newnum+'_opt'+curChild.id.substring(idl);
			}
			
			curitm = document.getElementById('itm'+itmnum+'_price');
			curitm.id = 'itm'+newnum+'_price';
			
			curitm = document.getElementById('itm'+itmnum+'_qty');
			curitm.id = 'itm'+newnum+'_qty';
			curitm.name = 'itm'+newnum+'_qty';
			
			curitm = document.getElementById('itm'+itmnum+'_oos');
			curitm.id = 'itm'+newnum+'_oos';
			
			curitm = document.getElementById('itm'+itmnum+'_optslbl');
			curitm.id = 'itm'+newnum+'_optslbl';
			
			curitm = document.getElementById('itm'+itmnum+'_pricelbl');
			curitm.id = 'itm'+newnum+'_pricelbl';
			
			curitm = document.getElementById('itm'+itmnum+'_qtylbl');
			curitm.id = 'itm'+newnum+'_qtylbl';
			
			curitm = document.getElementById('itm'+itmnum+'_rsph');
			curitm.id = 'itm'+newnum+'_rsph';
			curitm.name = 'itm'+newnum+'_rsph';
			
			curitm = document.getElementById('itm'+itmnum+'_rcyl');
			curitm.id = 'itm'+newnum+'_rcyl';
			curitm.name = 'itm'+newnum+'_rcyl';
			
			curitm = document.getElementById('itm'+itmnum+'_raxis');
			curitm.id = 'itm'+newnum+'_raxis';
			curitm.name = 'itm'+newnum+'_raxis';
			
			curitm = document.getElementById('itm'+itmnum+'_radd');
			curitm.id = 'itm'+newnum+'_radd';
			curitm.name = 'itm'+newnum+'_radd';
			
			curitm = document.getElementById('itm'+itmnum+'_lsph');
			curitm.id = 'itm'+newnum+'_lsph';
			curitm.name = 'itm'+newnum+'_lsph';
			
			curitm = document.getElementById('itm'+itmnum+'_lcyl');
			curitm.id = 'itm'+newnum+'_lcyl';
			curitm.name = 'itm'+newnum+'_lcyl';
			
			curitm = document.getElementById('itm'+itmnum+'_laxis');
			curitm.id = 'itm'+newnum+'_laxis';
			curitm.name = 'itm'+newnum+'_laxis';
			
			curitm = document.getElementById('itm'+itmnum+'_ladd');
			curitm.id = 'itm'+newnum+'_ladd';
			curitm.name = 'itm'+newnum+'_ladd';
			
			curitm = document.getElementById('itm'+itmnum+'_pd');
			curitm.id = 'itm'+newnum+'_pd';
			curitm.name = 'itm'+newnum+'_pd';
			
			curitm = document.getElementById('itm'+itmnum+'_rsphlbl');
			curitm.id = 'itm'+newnum+'_rsphlbl';
			
			curitm = document.getElementById('itm'+itmnum+'_rcyllbl');
			curitm.id = 'itm'+newnum+'_rcyllbl';
			
			curitm = document.getElementById('itm'+itmnum+'_raxislbl');
			curitm.id = 'itm'+newnum+'_raxislbl';
			
			curitm = document.getElementById('itm'+itmnum+'_raddlbl');
			curitm.id = 'itm'+newnum+'_raddlbl';
			
			curitm = document.getElementById('itm'+itmnum+'_lsphlbl');
			curitm.id = 'itm'+newnum+'_lsphlbl';
			
			curitm = document.getElementById('itm'+itmnum+'_lcyllbl');
			curitm.id = 'itm'+newnum+'_lcyllbl';
			
			curitm = document.getElementById('itm'+itmnum+'_laxislbl');
			curitm.id = 'itm'+newnum+'_laxislbl';
			
			curitm = document.getElementById('itm'+itmnum+'_laddlbl');
			curitm.id = 'itm'+newnum+'_laddlbl';
			
			curitm = document.getElementById('itm'+itmnum+'_pdlbl');
			curitm.id = 'itm'+newnum+'_pdlbl';
			
			curitm = document.getElementById('itm'+itmnum+'_pimgid');
			curitm.id = 'itm'+newnum+'_pimgid';
			
			itmnum++;
			curitm = document.getElementById('itm'+itmnum);
		}
	}
	updateCartSubtotal();
}

function editGiftMessage() {
	document.getElementById('gift_msg_label_box').style.display = 'none';
	document.getElementById('gift_msg_box').style.display = 'block';
	document.getElementById('editgm').style.display = 'none';
	document.getElementById('savegm').style.display = 'inline';
}

function saveGiftMessage() {
	agent.call('gift_message.php','saveGiftMessage','callbackSaveGiftMessage',document.getElementById('gift_message').value);
}

function callbackSaveGiftMessage(msg) {
	document.getElementById('gift_message_label').innerHTML = msg;
	if(msg.length != 0) {
		document.getElementById('gift_message_label').style.display = 'inline';
		document.getElementById('no_gift_message').style.display = 'none';
	} else {
		document.getElementById('gift_message_label').style.display = 'none';
		document.getElementById('no_gift_message').style.display = 'inline';
	}
	document.getElementById('gift_msg_label_box').style.display = 'block';
	document.getElementById('gift_msg_box').style.display = 'none';
	document.getElementById('editgm').style.display = 'inline';
	document.getElementById('savegm').style.display = 'none';
}

function submitCoupon() {
	if(document.getElementById('coupon').value == "") {
		document.getElementById('invalid_coupon').style.display = 'none';
		document.getElementById('valid_coupon').style.display = 'none';
	} else
		agent.call('coupon.php','checkCouponCode','callbackCheckCouponCode', document.getElementById('coupon').value);
}

function callbackCheckCouponCode(res) {
	if(res) {
		document.getElementById('invalid_coupon').style.display = 'none';
		document.getElementById('valid_coupon').style.display = 'block';
	} else {
		document.getElementById('invalid_coupon').style.display = 'block';
		document.getElementById('valid_coupon').style.display = 'none';
	}
}

function editItemOptions(il) {
	curItm = il.parentNode.parentNode.parentNode;
	document.getElementById(curItm.id + "_label").style.display = 'none';
	document.getElementById(curItm.id + "_edit").style.display = 'block';
	document.getElementById(curItm.id + "_eo").style.display = 'none';
	document.getElementById(curItm.id + "_so").style.display = 'inline';
}

function loginFromProduct() {
	saveProductOptions();
	document.location.href = 'login.php';
}

function saveItemOptions(il) {
	curItm = il.parentNode.parentNode.parentNode;
	itmNum = curItm.id.substring(3);
	curItmOpts = document.getElementById('itm'+itmNum+'_opts');
	idl = curItm.id.length + 4;
	var opts = Array();
	var i;
	for(i=0;i<curItmOpts.childNodes.length;i++) {
		var curChild = curItmOpts.childNodes[i];
		if(curChild.id)
			if(curChild.id.substring(0,idl) == (curItm.id + '_opt'))
				opts.push(curChild.value);
	}
	productId = document.getElementById('itm'+itmNum+'_prodid').value;
	qty = document.getElementById('itm'+itmNum+'_qty').value;
	rsph = document.getElementById('itm'+itmNum+'_rsph').value;
	rcyl = document.getElementById('itm'+itmNum+'_rcyl').value;
	raxis = document.getElementById('itm'+itmNum+'_raxis').value;
	radd = document.getElementById('itm'+itmNum+'_radd').value;
	lsph = document.getElementById('itm'+itmNum+'_lsph').value;
	lcyl = document.getElementById('itm'+itmNum+'_lcyl').value;
	laxis = document.getElementById('itm'+itmNum+'_laxis').value;
	ladd = document.getElementById('itm'+itmNum+'_ladd').value;
	pd = document.getElementById('itm'+itmNum+'_pd').value;
	agent.call('save_cart_item_options.php','save_cart_item_options','callbackSaveItemOptions',itmNum,productId,opts,qty,rsph,rcyl,raxis,radd,lsph,lcyl,laxis,ladd,pd);
}

function callbackSaveItemOptions(res) {
	if(res.length == 4) {
		var itmNum = res[0];
		var optStr = res[1];
		var price = res[2];
		var imgid = res[3];
		
		curItm = document.getElementById('itm'+itmNum);
		document.getElementById('itm'+itmNum + "_label").style.display = 'block';
		document.getElementById('itm'+itmNum + "_edit").style.display = 'none';
		document.getElementById('itm'+itmNum + "_eo").style.display = 'inline';
		document.getElementById('itm'+itmNum + "_so").style.display = 'none';
		
		optsLbl = document.getElementById(curItm.id + '_optslbl');
		optsLbl.innerHTML = optStr;
		
		document.getElementById('itm'+itmNum+'_pricelbl').innerHTML = price;
		
		document.getElementById('itm'+itmNum+'_pimgid').value = imgid;
		
		document.getElementById('itm'+itmNum+'_qtylbl').innerHTML = document.getElementById('itm'+itmNum+'_qty').value;
		
		document.getElementById('itm'+itmNum+'_rsphlbl').innerHTML = document.getElementById('itm'+itmNum+'_rsph').options[document.getElementById('itm'+itmNum+'_rsph').selectedIndex].innerHTML;
		document.getElementById('itm'+itmNum+'_rcyllbl').innerHTML = document.getElementById('itm'+itmNum+'_rcyl').options[document.getElementById('itm'+itmNum+'_rcyl').selectedIndex].innerHTML;
		document.getElementById('itm'+itmNum+'_raxislbl').innerHTML = document.getElementById('itm'+itmNum+'_raxis').options[document.getElementById('itm'+itmNum+'_raxis').selectedIndex].innerHTML;
		document.getElementById('itm'+itmNum+'_raddlbl').innerHTML = document.getElementById('itm'+itmNum+'_radd').options[document.getElementById('itm'+itmNum+'_radd').selectedIndex].innerHTML;
		
		document.getElementById('itm'+itmNum+'_lsphlbl').innerHTML = document.getElementById('itm'+itmNum+'_lsph').options[document.getElementById('itm'+itmNum+'_lsph').selectedIndex].innerHTML;
		document.getElementById('itm'+itmNum+'_lcyllbl').innerHTML = document.getElementById('itm'+itmNum+'_lcyl').options[document.getElementById('itm'+itmNum+'_lcyl').selectedIndex].innerHTML;
		document.getElementById('itm'+itmNum+'_laxislbl').innerHTML = document.getElementById('itm'+itmNum+'_laxis').options[document.getElementById('itm'+itmNum+'_laxis').selectedIndex].innerHTML;
		document.getElementById('itm'+itmNum+'_laddlbl').innerHTML = document.getElementById('itm'+itmNum+'_ladd').options[document.getElementById('itm'+itmNum+'_ladd').selectedIndex].innerHTML;
		
		document.getElementById('itm'+itmNum+'_pdlbl').innerHTML = document.getElementById('itm'+itmNum+'_pd').options[document.getElementById('itm'+itmNum+'_pd').selectedIndex].innerHTML;
	}
}

function switchCartVariant(sel) {
	var itmNum = sel.parentNode.parentNode.parentNode.id.substring(3);
	curItmOpts = document.getElementById('itm'+itmNum+'_opts');
	idl = curItm.id.length + 4;
	var opts = Array();
	var i;
	for(i=0;i<curItmOpts.childNodes.length;i++) {
		var curChild = curItmOpts.childNodes[i];
		if(curChild.id)
			if(curChild.id.substring(0,idl) == (curItm.id + '_opt'))
				opts.push(curChild.value);
	}
	productId = document.getElementById('itm'+itmNum+'_prodid').value;
	agent.call('variants.php','switchCartVariant','callbackSwitchCartVariant',itmNum,productId,opts);
}

function callbackSwitchCartVariant(res) {
	if(res.length == 4) {
		var itmNum = res[0];
		var price = res[1];
		var avail = res[2];
		var image = res[3];
				
		var selQty = document.getElementById('itm'+itmNum+'_qty');
		var oldQty = selQty.value;
		var newQty = oldQty;
		if(oldQty > avail)
			newQty = avail;
		while(selQty.hasChildNodes())
			selQty.removeChild(selQty.firstChild);
		var maxQty = Math.min(10,avail);
		var i;
		for(i=1;i<=maxQty;i++) {
			var curOpt = document.createElement('option');
			curOpt.value = i;
			curOpt.innerHTML = i;
			selQty.appendChild(curOpt);
			if(i == newQty)
				curOpt.selected = true;
		}
		if(avail == 0) {
			document.getElementById('itm'+itmNum+'_so').style.display = 'none';
			document.getElementById('itm'+itmNum+'_oos').style.display = 'inline';
			document.getElementById('itm'+itmNum+'_qty').style.display = 'none';
			document.getElementById('checkout_btn').disabled = true;
		} else {
			document.getElementById('itm'+itmNum+'_so').style.display = 'inline';
			document.getElementById('itm'+itmNum+'_oos').style.display = 'none';
			document.getElementById('itm'+itmNum+'_qty').style.display = 'inline';
			document.getElementById('checkout_btn').disabled = false;
	}
		
		document.getElementById('itm'+itmNum+'_price').innerHTML = price;
		
		document.getElementById('itm'+itmNum+'_image').src = 'mexc/images/W/'+image;
		
		updateCartSubtotal();
	}
}

function updateCartSubtotal() {
	var i=0;
	var subtotal = 0.0;
	var curItm = document.getElementById('itm'+i);
	while(curItm) {
		subtotal += document.getElementById('itm'+i+'_price').innerHTML * document.getElementById('itm'+i+'_qty').value;
		i++;
		curItm = document.getElementById('itm'+i);
	}
	
	document.getElementById('subtotal').innerHTML = number_format(subtotal,2);
}

function gotoCartStep2() {
	var i=0;
	var curItm = document.getElementById('itm'+i);
	while(curItm) {
		saveItemOptions(document.getElementById('itm'+i+'_so'));
		i++;
		curItm = document.getElementById('itm'+i);
	}
}

function copyInputValue(source,dest) {
	if(!document.getElementById('same_address').checked)
		return;
	document.getElementById(dest).value = document.getElementById(source).value;
}

function copySelectValue(source,dest) {
	if(!document.getElementById('same_address').checked)
		return;
	document.getElementById(dest).options[document.getElementById(dest).selectedIndex].selected = false;
	document.getElementById(dest).options[document.getElementById(source).selectedIndex].selected = true;
}

function sameAddress() {
	var same = document.getElementById('same_address').checked;
	
	document.getElementById('s_firstname').disabled = same;
	document.getElementById('s_lastname').disabled = same;
	document.getElementById('s_address').disabled = same;
	document.getElementById('s_city').disabled = same;
	document.getElementById('s_state').disabled = same;
	document.getElementById('s_country').disabled = same;
	document.getElementById('s_zipcode').disabled = same;
	
	if(same) {
		document.getElementById('s_firstname').value = document.getElementById('b_firstname').value;
		document.getElementById('s_lastname').value = document.getElementById('b_lastname').value;
		document.getElementById('s_address').value = document.getElementById('b_address').value;
		document.getElementById('s_city').value = document.getElementById('b_city').value;
		document.getElementById('s_state').options[document.getElementById('s_state').selectedIndex].selected = false;
		document.getElementById('s_state').options[document.getElementById('b_state').selectedIndex].selected = true;
		document.getElementById('s_country').options[document.getElementById('s_country').selectedIndex].selected = false;
		document.getElementById('s_country').options[document.getElementById('b_country').selectedIndex].selected = true;
		document.getElementById('s_zipcode').value = document.getElementById('b_zipcode').value;
	} else {
		document.getElementById('s_firstname').value = '';
		document.getElementById('s_lastname').value = '';
		document.getElementById('s_address').value = '';
		document.getElementById('s_city').value = '';
		document.getElementById('s_state').options[document.getElementById('s_state').selectedIndex].selected = false;
		document.getElementById('s_state').options[0].selected = true;
		var usidx = -1;
		var i = 0;
		while(usidx == -1 && i < document.getElementById('s_country').options.length) {
			if(document.getElementById('s_country').options[i].value == 'US')
				usidx = i;
			i++;
		}
		document.getElementById('s_country').options[document.getElementById('s_country').selectedIndex].selected = false;
		document.getElementById('s_country').options[usidx].selected = true;
		document.getElementById('s_zipcode').value = '';
	}
}

function checkPersonalInfo() {
	var missingFields = Array();
	var invalidFields = Array();
	var curField;
	
	if(document.getElementById('b_firstname').value == '') {
		missingFields.push('Billing first name');
		document.getElementById('b_firstname_lbl').className = 'missing';
	}
	
	if(document.getElementById('b_lastname').value == '') {
		missingFields.push('Billing last name');
		document.getElementById('b_lastname_lbl').className = 'missing';
	}
	
	if(document.getElementById('b_address').value == '') {
		missingFields.push('Billing address');
		document.getElementById('b_address_lbl').className = 'missing';
	}
	
	if(document.getElementById('b_city').value == '') {
		missingFields.push('Billing city');
		document.getElementById('b_city_lbl').className = 'missing';
	}
	
	if(document.getElementById('b_country').value == 'US' &&
			document.getElementById('b_state').value == '') {
		missingFields.push('Billing state');
		document.getElementById('b_state_lbl').className = 'missing';
	}
	
	if(document.getElementById('b_country').value == '') {
		missingFields.push('Billing country');
		document.getElementById('b_country_lbl').className = 'missing';
	}
	
	if(document.getElementById('b_zipcode').value == '') {
		missingFields.push('Billing zip/postal code');
		document.getElementById('b_zipcode_lbl').className = 'missing';
	}
	
	if(document.getElementById('s_firstname').value == '') {
		missingFields.push('Shipping first name');
		document.getElementById('s_firstname_lbl').className = 'missing';
	}
	
	if(document.getElementById('s_lastname').value == '') {
		missingFields.push('Shipping last name');
		document.getElementById('s_lastname_lbl').className = 'missing';
	}
	
	if(document.getElementById('s_address').value == '') {
		missingFields.push('Shipping address');
		document.getElementById('s_address_lbl').className = 'missing';
	}
	
	if(document.getElementById('s_city').value == '') {
		missingFields.push('Shipping city');
		document.getElementById('s_city_lbl').className = 'missing';
	}
	
	if(document.getElementById('s_country').value == 'US' &&
			document.getElementById('s_state').value == '') {
		missingFields.push('Shipping state');
		document.getElementById('s_state_lbl').className = 'missing';
	}
	
	if(document.getElementById('s_country').value == '') {
		missingFields.push('Shipping country');
		document.getElementById('s_country_lbl').className = 'missing';
	}
	
	if(document.getElementById('s_zipcode').value == '') {
		missingFields.push('Shipping zip/postal code');
		document.getElementById('s_zipcode_lbl').className = 'missing';
	}
	
	if(document.getElementById('phone').value == '') {
		missingFields.push('Phone');
		document.getElementById('phone_lbl').className = 'missing';
	} else if(!IsNumeric(document.getElementById('phone').value)) {
		invalidFields.push('phone');
		document.getElementById('phone_lbl').className = 'invalid';
	}
	
	if(document.getElementById('email').value == '') {
		missingFields.push('E-mail');
		document.getElementById('email_lbl').className = 'missing';
	} else if(!isValidEmail(document.getElementById('email').value)) {
		invalidFields.push('email');
		document.getElementById('email_lbl').className = 'invalid';
	}
	
	document.getElementById('missing_fields').innerHTML = '';
	if(missingFields.length > 0)
		document.getElementById('missing_fields').innerHTML = '<br/>Some required fields are missing: '
			+ missingFields.join(', ');
	if(invalidFields.length > 0) {
		var ifd = document.getElementById('invalid_fields');
		var i;
		while(ifd.firstChild) 
			ifd.removeChild(ifd.firstChild);
		ifd.appendChild(document.createElement('br'));
		ifd.appendChild(document.createTextNode(''));
		ifd.childNodes[1].nodeValue = 'Some fields are invalid';
		var ul = document.createElement('ul');
		for(i=0;i<invalidFields.length;i++) {
			var li = document.createElement('li');
			if(invalidFields[i] == 'zip')
				li.innerHTML = 'Zip / Postal code can contain only numbers';
			else if(invalidFields[i] == 'phone')
				li.innerHTML = 'Phone can contain only numbers';
			else if(invalidFields[i] == 'email')
				li.innerHTML = 'You specified an invalid e-mail address';
			else if(invalidFields[i] == 'fax')
				li.innerHTML = 'Fax can contain only numbers';
			ul.appendChild(li);
		}
		ifd.appendChild(ul);
	}
	
	if(missingFields.length == 0 && invalidFields.length == 0)
		return true;
	
	return false;
}

function checkUpdateUserForm() {
	var missingFields = Array();
	var invalidFields = Array();
	var curField;
	
	if(document.getElementById('password').value != '' && document.getElementById('password_confirm').value == '') {
		missingFields.push('Password confirm');
		document.getElementById('password_confirm').className = 'missing';
	} else {
		if(document.getElementById('password').value != '' &&
				document.getElementById('password').value != document.getElementById('password_confirm').value) {
			invalidFields.push('password_confirm');
			document.getElementById('password_confirm').className = 'invalid';
		}
	}
	
	if(document.getElementById('b_firstname').value == '') {
		missingFields.push('Billing first name');
		document.getElementById('b_firstname_lbl').className = 'missing';
	}
	
	if(document.getElementById('b_lastname').value == '') {
		missingFields.push('Billing last name');
		document.getElementById('b_lastname_lbl').className = 'missing';
	}
	
	if(document.getElementById('b_address').value == '') {
		missingFields.push('Billing address');
		document.getElementById('b_address_lbl').className = 'missing';
	}
	
	if(document.getElementById('b_city').value == '') {
		missingFields.push('Billing city');
		document.getElementById('b_city_lbl').className = 'missing';
	}
	
	if(document.getElementById('b_country').value == 'US' &&
			document.getElementById('b_state').value == '') {
		missingFields.push('Billing state');
		document.getElementById('b_state_lbl').className = 'missing';
	}
	
	if(document.getElementById('b_country').value == '') {
		missingFields.push('Billing country');
		document.getElementById('b_country_lbl').className = 'missing';
	}
	
	if(document.getElementById('b_zipcode').value == '') {
		missingFields.push('Billing zip/postal code');
		document.getElementById('b_zipcode_lbl').className = 'missing';
	}
	
	if(document.getElementById('s_firstname').value == '') {
		missingFields.push('Shipping first name');
		document.getElementById('s_firstname_lbl').className = 'missing';
	}
	
	if(document.getElementById('s_lastname').value == '') {
		missingFields.push('Shipping last name');
		document.getElementById('s_lastname_lbl').className = 'missing';
	}
	
	if(document.getElementById('s_address').value == '') {
		missingFields.push('Shipping address');
		document.getElementById('s_address_lbl').className = 'missing';
	}
	
	if(document.getElementById('s_city').value == '') {
		missingFields.push('Shipping city');
		document.getElementById('s_city_lbl').className = 'missing';
	}
	
	if(document.getElementById('s_country').value == 'US' &&
			document.getElementById('s_state').value == '') {
		missingFields.push('Shipping state');
		document.getElementById('s_state_lbl').className = 'missing';
	}
	
	if(document.getElementById('s_country').value == '') {
		missingFields.push('Shipping country');
		document.getElementById('s_country_lbl').className = 'missing';
	}
	
	if(document.getElementById('s_zipcode').value == '') {
		missingFields.push('Shipping zip/postal code');
		document.getElementById('s_zipcode_lbl').className = 'missing';
	}
	
	if(document.getElementById('phone').value == '') {
		missingFields.push('Phone');
		document.getElementById('phone_lbl').className = 'missing';
	} else if(!IsNumeric(document.getElementById('phone').value)) {
		invalidFields.push('phone');
		document.getElementById('phone_lbl').className = 'invalid';
	}
	
	if(document.getElementById('email').value == '') {
		missingFields.push('E-mail');
		document.getElementById('email_lbl').className = 'missing';
	} else if(!isValidEmail(document.getElementById('email').value)) {
		invalidFields.push('email');
		document.getElementById('email_lbl').className = 'invalid';
	}
	
	document.getElementById('missing_fields').innerHTML = '';
	if(missingFields.length > 0)
		document.getElementById('missing_fields').innerHTML = '<br/>Some required fields are missing: '
			+ missingFields.join(', ');
	if(invalidFields.length > 0) {
		var ifd = document.getElementById('invalid_fields');
		var i;
		while(ifd.firstChild) 
			ifd.removeChild(ifd.firstChild);
		ifd.appendChild(document.createElement('br'));
		ifd.appendChild(document.createTextNode(''));
		ifd.childNodes[1].nodeValue = 'Some fields are invalid';
		var ul = document.createElement('ul');
		for(i=0;i<invalidFields.length;i++) {
			var li = document.createElement('li');
			if(invalidFields[i] == 'zip')
				li.innerHTML = 'Zip / Postal code can contain only numbers';
			else if(invalidFields[i] == 'phone')
				li.innerHTML = 'Phone can contain only numbers';
			else if(invalidFields[i] == 'email')
				li.innerHTML = 'You specified an invalid e-mail address';
			else if(invalidFields[i] == 'fax')
				li.innerHTML = 'Fax can contain only numbers';
			else if(invalidFields[i] == 'password_confirm')
				li.innerHTML = 'Password does not match the confirm password';
			ul.appendChild(li);
		}
		ifd.appendChild(ul);
	}
	
	//if(missingFields.length == 0 && invalidFields.length == 0)
	//	return true;
	agent.call('update_user.php','update_user','callbackCheckUpdateUserForm',document.getElementById('login').value);
	
	return false;
}

function callbackCheckUpdateUserForm() {
	document.getElementById('upduser_form').submit();
}

function checkRegisterForm() {
	var missingFields = Array();
	var invalidFields = Array();
	var curField;
	
	if(document.getElementById('login').value == '') {
		missingFields.push('Login');
		document.getElementById('login').className = 'missing';
	}
	
	if(document.getElementById('password').value == '') {
		missingFields.push('Password');
		document.getElementById('password').className = 'missing';
	}
	
	if(document.getElementById('password_confirm').value == '') {
		missingFields.push('Password confirm');
		document.getElementById('password_confirm').className = 'missing';
	} else {
		if(document.getElementById('password').value != '' &&
				document.getElementById('password').value != document.getElementById('password_confirm').value) {
			invalidFields.push('password_confirm');
			document.getElementById('password_confirm').className = 'invalid';
		}
	}
	
	if(document.getElementById('b_firstname').value == '') {
		missingFields.push('Billing first name');
		document.getElementById('b_firstname_lbl').className = 'missing';
	}
	
	if(document.getElementById('b_lastname').value == '') {
		missingFields.push('Billing last name');
		document.getElementById('b_lastname_lbl').className = 'missing';
	}
	
	if(document.getElementById('b_address').value == '') {
		missingFields.push('Billing address');
		document.getElementById('b_address_lbl').className = 'missing';
	}
	
	if(document.getElementById('b_city').value == '') {
		missingFields.push('Billing city');
		document.getElementById('b_city_lbl').className = 'missing';
	}
	
	if(document.getElementById('b_country').value == 'US' &&
			document.getElementById('b_state').value == '') {
		missingFields.push('Billing state');
		document.getElementById('b_state_lbl').className = 'missing';
	}
	
	if(document.getElementById('b_country').value == '') {
		missingFields.push('Billing country');
		document.getElementById('b_country_lbl').className = 'missing';
	}
	
	if(document.getElementById('b_zipcode').value == '') {
		missingFields.push('Billing zip/postal code');
		document.getElementById('b_zipcode_lbl').className = 'missing';
	}
	
	if(document.getElementById('s_firstname').value == '') {
		missingFields.push('Shipping first name');
		document.getElementById('s_firstname_lbl').className = 'missing';
	}
	
	if(document.getElementById('s_lastname').value == '') {
		missingFields.push('Shipping last name');
		document.getElementById('s_lastname_lbl').className = 'missing';
	}
	
	if(document.getElementById('s_address').value == '') {
		missingFields.push('Shipping address');
		document.getElementById('s_address_lbl').className = 'missing';
	}
	
	if(document.getElementById('s_city').value == '') {
		missingFields.push('Shipping city');
		document.getElementById('s_city_lbl').className = 'missing';
	}
	
	if(document.getElementById('s_country').value == 'US' &&
			document.getElementById('s_state').value == '') {
		missingFields.push('Shipping state');
		document.getElementById('s_state_lbl').className = 'missing';
	}
	
	if(document.getElementById('s_country').value == '') {
		missingFields.push('Shipping country');
		document.getElementById('s_country_lbl').className = 'missing';
	}
	
	if(document.getElementById('s_zipcode').value == '') {
		missingFields.push('Shipping zip/postal code');
		document.getElementById('s_zipcode_lbl').className = 'missing';
	}
	
	if(document.getElementById('phone').value == '') {
		missingFields.push('Phone');
		document.getElementById('phone_lbl').className = 'missing';
	} else if(!IsNumeric(document.getElementById('phone').value)) {
		invalidFields.push('phone');
		document.getElementById('phone_lbl').className = 'invalid';
	}
	
	if(document.getElementById('email').value == '') {
		missingFields.push('E-mail');
		document.getElementById('email_lbl').className = 'missing';
	} else if(!isValidEmail(document.getElementById('email').value)) {
		invalidFields.push('email');
		document.getElementById('email_lbl').className = 'invalid';
	}
	
	document.getElementById('missing_fields').innerHTML = '';
	if(missingFields.length > 0)
		document.getElementById('missing_fields').innerHTML = '<br/>Some required fields are missing: '
			+ missingFields.join(', ');
	if(invalidFields.length > 0) {
		var ifd = document.getElementById('invalid_fields');
		var i;
		while(ifd.firstChild) 
			ifd.removeChild(ifd.firstChild);
		ifd.appendChild(document.createElement('br'));
		ifd.appendChild(document.createTextNode(''));
		ifd.childNodes[1].nodeValue = 'Some fields are invalid';
		var ul = document.createElement('ul');
		for(i=0;i<invalidFields.length;i++) {
			var li = document.createElement('li');
			if(invalidFields[i] == 'zip')
				li.innerHTML = 'Zip / Postal code can contain only numbers';
			else if(invalidFields[i] == 'phone')
				li.innerHTML = 'Phone can contain only numbers';
			else if(invalidFields[i] == 'email')
				li.innerHTML = 'You specified an invalid e-mail address';
			else if(invalidFields[i] == 'fax')
				li.innerHTML = 'Fax can contain only numbers';
			else if(invalidFields[i] == 'password_confirm')
				li.innerHTML = 'Password does not match the confirm password';
			ul.appendChild(li);
		}
		ifd.appendChild(ul);
	}
	
	if(missingFields.length == 0 && invalidFields.length == 0)
		agent.call('check_login.php','login_exists','callbackLoginExists',document.getElementById('login').value);
	
	return false;
}

function callbackLoginExists(res) {
	if(!res)
		document.getElementById('reg_form').submit();
	else
		document.getElementById('invalid_fields').innerHTML = 'The username "'+document.getElementById('login').value+'" already exists.';
}

function updateBState() {
	var reqState = false;
	if(document.getElementById('b_country').value == 'US')
		reqState = true;
	document.getElementById('b_state').options[document.getElementById('b_state').selectedIndex].selected = false;
	document.getElementById('b_state').options[0].selected = true;
	
	if(reqState) {
		document.getElementById('b_state').className = '';
		document.getElementById('no_b_state').className = 'hidden';
	} else {
		document.getElementById('b_state').className = 'hidden';
		document.getElementById('no_b_state').className = '';
	}
}

function updateSState() {
	var reqState = false;
	if(document.getElementById('s_country').value == 'US')
		reqState = true;
	
	document.getElementById('s_state').options[document.getElementById('s_state').selectedIndex].selected = false;
	document.getElementById('s_state').options[0].selected = true;
	
	if(reqState) {
		document.getElementById('s_state').className = '';
		document.getElementById('no_s_state').className = 'hidden';
	} else {
		document.getElementById('s_state').className = 'hidden';
		document.getElementById('no_s_state').className = '';
	}
}

function sendToFriend() {
	var missing_fields = Array();
	var invalid_fields = Array();
	
	var name = document.getElementById('stf_name').value;
	var semail = document.getElementById('stf_semail').value;
	var demail = document.getElementById('stf_demail').value;
	
	if(name == '')
		missing_fields.push('your name');
	if(semail == '')
		missing_fields.push('your e-mail');
	else if(!isValidEmail(semail))
		invalid_fields.push('your e-mail');
	if(demail == '')
		missing_fields.push('your friend&rsquo;s e-mail');
	else if(!isValidEmail(demail))
		invalid_fields.push('your friend&rsquo;s e-mail');
	
	var err_str = '';
	
	if(missing_fields.length > 0)
		err_str += 'Some fields are missing: '+missing_fields.join(', ')+"<br/>";
	if(invalid_fields.length > 0)
		err_str += 'Some fields are invalid: '+invalid_fields.join(', ')+"<br/>";
	document.getElementById('prod_send_error').innerHTML = err_str;
	
	if(missing_fields.length == 0 && invalid_fields.length == 0)
		agent.call('send_to_friend.php','send_to_friend','callbackSendToFriend',document.getElementById('stf_pid').value,document.getElementById('stf_product').value,name,semail,demail);
}

function callbackSendToFriend(res) {
	if(res)
		document.getElementById('prod_send_error').innerHTML = "Your message has been sent.";
	else
		document.getElementById('prod_send_error').innerHTML = 'There was a problem sending your message.<br/>Please try again later';
}

function doLogin() {
	var login = document.getElementById('login').value;
	var password = document.getElementById('password').value;
	
	var err_str = '';
	
	if(login.length == 0 && password.length == 0)
		err_str = '<br/>Please insert your login and password<br/>';
	else {
		if(login.length == 0)
			err_str = '<br/>Please insert your login<br/>';
		if(password.length == 0)
			err_str = '<br/>Please insert your password<br/>';
	}
	document.getElementById('login_error').innerHTML = err_str;
	
	if(login.length > 0 && password.length > 0)
		agent.call('do_login.php','do_login','callbackDoLogin',login,password);
}

function callbackDoLogin(res) {
	if(res)
		document.getElementById('flogin').submit();
	else
		document.getElementById('login_error').innerHTML = '<br/>Invalid username or password<br/>';
}

function checkRecoverPassword() {
	var email = document.getElementById('email').value;
	var errBox = document.getElementById('recpwd_error');
	
	if(email == '')
		errBox.innerHTML = '<br/>Please insert your e-mail address<br/>';
	else if(!isValidEmail(email))
		errBox.innerHTML = '<br/>You specified an invalid e-mail address<br/>';
	else
		agent.call('check_recpwd.php','check_recpwd','callbackCheckRecpwd',email);
	return false;
}

function callbackCheckRecpwd(res) {
	if(res)
		document.getElementById('frecpwd').submit();
	else
		document.getElementById('recpwd_error').innerHTML = '<br/>The e-mail address you specified is not existent<br/>';
}

function viewCVV2Help() {
	var w = 712;
	var h = 340;
	var l = Math.floor((screen.width-w)/2);
	var t = Math.floor((screen.height-h)/2);
	window.open('cvv2help.php','meyewear',
		'width='+w+',height='+h+',top='+t+',left='+l+'directories=no,'
		+'location=no,menubar=no,resizable=no,scrollbars=no,status=no,'
		+'toolbar=no');
}

function checkProdAddToCart() {
	if(document.getElementById('pd').value == '') {
		document.getElementById('err_pd').style.display = 'block';
		return false;
	} else {
		document.getElementById('err_pd').style.display = 'none';
		return true;
	}
}
