//////////////////////////////////////////////////////////
// CD Maker Library Functions                           //
//////////////////////////////////////////////////////////


function selectOption (optionStr) {
////////////////////////////////////////////
//  Swap selected images and set vars.    //
////////////////////////////////////////////

	var restr1 = /^packaging=/i;
	var restr2 = /^color=/i;
	var restr3 = /^type=/i;
	
	// TODO: assign action to set the selected element var (includes image change).
	
	// TYPE //
	if (restr3.test(optionStr)){
		option=optionStr.replace(/type=/i, "");
		switch (option) {
			case 'CD':
				// Swap images.
				document.getElementById("cd").src = "images/cd_sel.jpg";
				document.getElementById("dvd").src = "images/dvd.jpg";
				disktype = "cd"; // Set the selected option in memory.				
				document.getElementById("ico-disktype").src = "images/icon-cd.gif";
				document.getElementById("ico-disktype").style.display = "block";
				// Update Total //
				updateTotal();
				break;
				
			case 'DVD':
				// Swap images.
				document.getElementById("dvd").src = "images/dvd_sel.jpg";
				document.getElementById("cd").src = "images/cd.jpg";
				disktype = "dvd"; // Set the selected option in memory.
				document.getElementById("ico-disktype").src = "images/icon-dvd.gif";
				document.getElementById("ico-disktype").style.display = "block";
				// Update Total //
				updateTotal();
				break;
					
			default:
				handleError("Error 1001: Unmatched option selected.");
				break;		
		}
	}
	// COLOR //
	else if (restr2.test(optionStr)){
		option=optionStr.replace(/color=/i, "");
		switch (option) {
		// TODO: change image names to end with _sel.jpg for rollover function. //
			case 'fullcolor':
				// Swap images.
				document.getElementById("fullcolor").src = "images/full_color_sel.jpg";
				document.getElementById("blackonly").src = "images/black_only_gray.jpg";
				diskstyle = "fullcolor"; // Set the selected option in memory.
				document.getElementById("ico-diskstyle").src = "images/icon-full-color.gif";
				document.getElementById("ico-diskstyle").style.display = "block";
				
				// Update Total //
				updateTotal();
				break;
				
			case 'blackonly':
				// Swap images.
				document.getElementById("fullcolor").src = "images/full_color_gray.jpg";
				document.getElementById("blackonly").src = "images/black_only_sel.jpg";
				diskstyle = "blackonly"; // Set the selected option in memory.
				document.getElementById("ico-diskstyle").src = "images/icon-black-only.gif";
				document.getElementById("ico-diskstyle").style.display = "block";
				// Update Total //
				updateTotal();
				break;
					
			default:
				handleError("Error 1001: Unmatched option selected.");
				break;		
		}
	}
	// CASE //
	else if (restr1.test(optionStr)){
		option=optionStr.replace(/packaging=/i, "");
		switch (option) {
			case 'standardjewel':
				document.getElementById("standard_jewel").src = "images/standard_jewel_sel.jpg";
				document.getElementById("thin_jewel").src = "images/thin_jewel.jpg";
				document.getElementById("flexible_plastic").src = "images/flexible_plastic.jpg";
				document.getElementById("paper_sleeve").src = "images/paper_sleeve.jpg";
				document.getElementById("dvd_style").src = "images/dvd_style.jpg";
				document.getElementById("no_packaging").src="images/icon-no-thanks.gif";
				packaging = "standardjewel";
                document.getElementById("ico-packaging").src = "images/icon-jewelcase.gif";
                document.getElementById("ico-packaging").style.display = "block";
				packageprice = packagepricetbl[0];
				updateTotal();
				break;
				
			case 'thinjewel':
				document.getElementById("thin_jewel").src="images/thin_jewel_sel.jpg";				
				document.getElementById("standard_jewel").src="images/standard_jewel.jpg";
				document.getElementById("flexible_plastic").src="images/flexible_plastic.jpg";
				document.getElementById("paper_sleeve").src="images/paper_sleeve.jpg";
				document.getElementById("dvd_style").src="images/dvd_style.jpg";	
				document.getElementById("no_packaging").src="images/icon-no-thanks.gif";
				packaging = "thinjewel";
                document.getElementById("ico-packaging").src = "images/icon-thinjewel.gif";
                document.getElementById("ico-packaging").style.display = "block";
				packageprice = packagepricetbl[1];
				updateTotal();
				break;
					
			case 'flexibleplastik':
				document.getElementById("flexible_plastic").src="images/flexible_plastic_sel.jpg";				
				document.getElementById("thin_jewel").src="images/thin_jewel.jpg";				
				document.getElementById("standard_jewel").src="images/standard_jewel.jpg";
				document.getElementById("paper_sleeve").src="images/paper_sleeve.jpg";
				document.getElementById("dvd_style").src="images/dvd_style.jpg";		
				document.getElementById("no_packaging").src="images/icon-no-thanks.gif";
				packaging = "flexibleplastik";
                document.getElementById("ico-packaging").src = "images/icon-flexjewel.gif";
                document.getElementById("ico-packaging").style.display = "block";	
				packageprice = packagepricetbl[3];
				updateTotal();
				break;
					
			case 'papersleeve':
				document.getElementById("paper_sleeve").src="images/paper_sleeve_sel.jpg";				
				document.getElementById("flexible_plastic").src="images/flexible_plastic.jpg";				
				document.getElementById("thin_jewel").src="images/thin_jewel.jpg";				
				document.getElementById("standard_jewel").src="images/standard_jewel.jpg";
				document.getElementById("dvd_style").src="images/dvd_style.jpg";				
				document.getElementById("no_packaging").src="images/icon-no-thanks.gif";
				packaging = "papersleeve";
                document.getElementById("ico-packaging").src = "images/icon-papersleeve.gif";
                document.getElementById("ico-packaging").style.display = "block";
				packageprice = packagepricetbl[2];
				updateTotal();
				break;
					
			case 'dvdstyle':
				document.getElementById("dvd_style").src="images/dvd_style_sel.jpg";				
				document.getElementById("paper_sleeve").src="images/paper_sleeve.jpg";				
				document.getElementById("flexible_plastic").src="images/flexible_plastic.jpg";				
				document.getElementById("thin_jewel").src="images/thin_jewel.jpg";				
				document.getElementById("standard_jewel").src="images/standard_jewel.jpg";			
				document.getElementById("no_packaging").src="images/icon-no-thanks.gif";
				packaging = "dvdstyle";	
                document.getElementById("ico-packaging").src = "images/icon-dvdstyle.gif";
                document.getElementById("ico-packaging").style.display = "block";
				packageprice = packagepricetbl[4];
				updateTotal();
				break;
					
			case 'none':
				document.getElementById("dvd_style").src="images/dvd_style.jpg";				
				document.getElementById("paper_sleeve").src="images/paper_sleeve.jpg";				
				document.getElementById("flexible_plastic").src="images/flexible_plastic.jpg";				
				document.getElementById("thin_jewel").src="images/thin_jewel.jpg";				
				document.getElementById("standard_jewel").src="images/standard_jewel.jpg";			
				document.getElementById("no_packaging").src="images/icon-no-thanks_sel.gif";			
				packaging = "None";	
                document.getElementById("ico-packaging").src = "images/icon-no-packaging.gif";
                document.getElementById("ico-packaging").style.display = "block";
				packageprice = 0;
				updateTotal();
				break;

			default:
				handleError("Error 1001: Unmatched option selected.");
				break;		
		}
	}
	
}

function updateTotal (){
////////////////////////////////////////////////////////////
// Using values found in memory, update the order status. //
// Applies to customization.php                           //
////////////////////////////////////////////////////////////
	var unitprice = 0;
	var totalprice = new Number(0);
	var myx;
	
	// Check to see that quantity is >= 100. //
	if (document.getElementById("frm_quantity").value < 100){
		if (document.getElementById("projecttype").value != "quick"){
			alert ("A minimum quantity of 100 is required");
		}
	}
	
	for (myx in table_dup_prices) {
		var tempa = table_dup_prices[myx];
		if (disktype !== "" && diskstyle != ""){
			var dt = disktype.toUpperCase();
			var ds = "";
			if (diskstyle == "fullcolor"){ ds = "fullcolor"; }
			if (diskstyle == "blackonly"){ ds = "blackonly"; }
			var compstr = "blank"+dt+ds;
			
			if (compstr == tempa[0]){
				// Price Points Used : 100, 500, 1000, 3000 //
				var pricepoint = 0;
				if (document.getElementById("frm_quantity").value <500){ pricepoint = 100; }
				else if (document.getElementById("frm_quantity").value <1000){ pricepoint = 500; }
				else if (document.getElementById("frm_quantity").value <3000){ pricepoint = 1000; }
				else { pricepoint = 3000; }


				if (pricepoint == tempa[1]){
					var floatresult = new Number(tempa[2]*document.getElementById("frm_quantity").value);
					unitprice = floatresult;
                    // Media Upgrade //
                    if (document.getElementById('mediaupgrade').checked){
                        totalprice += (.15 * document.getElementById("frm_quantity").value);
                    }
					totalprice += unitprice;
					totalprice += (document.getElementById("frm_quantity").value*packageprice);
					break;
				}
			}
		}
	}

	
	
	
	if (totalprice > 0){
		document.getElementById("totAmt").innerHTML = "$"+formatAsMoney(totalprice);
		document.getElementById("frm_totAmt").value = "$"+formatAsMoney(totalprice);
	}
	
	finalizeData();
	
}

function formatAsMoney(mnt) {
    mnt -= 0;
    mnt = (Math.round(mnt*100))/100;
    return (mnt == Math.floor(mnt)) ? mnt + '.00' 
              : ( (mnt*10 == Math.floor(mnt*10)) ? 
                       mnt + '0' : mnt);
}

function finalizeData (){
////////////////////////////////////////////////////////////
// Setup form data values from JS variables in memory.    //
////////////////////////////////////////////////////////////

	document.getElementById("frm_disktype").value = disktype;
	document.getElementById("frm_diskstyle").value = diskstyle;
	//document.getElementById("frm_quantity").value = quantity;
	document.getElementById("frm_packaging").value = packaging;
	document.getElementById("frm_artfinal").value = artfinal;
	document.getElementById("frm_projectid").value = projectid;
	document.getElementById("frm_userid").value = userid;
	document.getElementById("frm_ordernum").value = ordernum;
	document.getElementById("frm_isarmcust").value = isarmcust;
	document.getElementById("frm_usearmterms").value = usearmterms;
	document.getElementById("frm_armcsrid").value = armcsrid;
	return true;
}

function rolloverimage (myid,originalsrc,selectedsrc){
///////////////////////////////////////////////////////////////////	
// 
///////////////////////////////////////////////////////////////////
	var re = /_sel.jpg$/i;
	currentstate = document.getElementById(myid).src;
	
	switch (myid){
		case 'cd':
			if (disktype == "cd"){
				return;
			}
			break;
		case 'dvd':
			if (disktype == "dvd"){
				return;
			}
			break;
		default:
			break;
	
	}
	
	
	if (re.test(currentstate)){
		document.getElementById(myid).src = originalsrc;
	}
	else {
		document.getElementById(myid).src = selectedsrc;
	}

	
}

function handleError (errorX){
	alert(errorX);
	return true;
}

function saveNormalProject(){
	var pars = "";
	var url = 'ajax/saveandproceed.php';
	
	var myAjax = new Ajax.Request(url, 
	{
		method: 'get', 
		parameters: pars,
		onComplete: showSummary
		//onComplete: showVars
	})
}

function showVars(){
	document.location.href = "printvars.php";
}

function saveQuickProject(){
	var pars = "";
	var url = 'ajax/saveandproceed.php';
	if (document.getElementById('templateselected') != null){
		pars = "churchtemplate=" +document.getElementById('templateselected');
	}
	else if (document.getElementById('filetableid') != null){
		pars = "quickimage=" + document.getElementById('filetableid').value;
	}
	
	var myAjax = new Ajax.Request(url, 
	{
		method: 'get', 
		parameters: pars,
		onComplete: submitQuickForm
	})
}

function showSummary(){	
	var newurl = "index.php?page=savemyproject&projectname=";
	newurl += document.getElementById('projectname').value;
	document.location.href = newurl;
	
}

function submitQuickForm (){
	document.getElementById('customization').submit();
}

function cloak(divid, hs){
//////////////////////////////////////////////////////////
// Hide or show a specified div.                        //
//////////////////////////////////////////////////////////

if (hs == "show"){
	document.getElementById(divid).style.display = 'block';
}
else {
	document.getElementById(divid).style.display = 'none';
}


}

function debugvals(){

	location.href="/printvars.php";
}

function copyBilling2Shipping(){
	document.getElementById('shiptoname').value = document.getElementById('firstname').value + " " + document.getElementById('lastname').value;
	document.getElementById('shiptocompany').value = document.getElementById('companyname').value;
	document.getElementById('shiptostreet').value = document.getElementById('address').value;
	document.getElementById('shiptosuite').value = document.getElementById('suitename').value;
	document.getElementById('shiptocity').value = document.getElementById('cityname').value;
	document.getElementById('shiptostate').value = document.getElementById('state').value;
	document.getElementById('shiptostate').selectedindex = document.getElementById('state').selectedindex;
	document.getElementById('shiptozip').value = document.getElementById('zipcode').value;
		
}

function selectchurchtemplate(imgnum){
	// Update Preview Image Source //
	document.getElementById('cdpreview').src= "/images/church/preview/" + imgnum;
	// Update Form Value //
	document.getElementById('templateselected').value = imgnum;
	
}

function openPopUp(linkURL) {
	window.open(linkURL,'','width=550,height=550')
}

function billingSubmit(theform){
	if (validateBilling()){
		document.getElementById('checkoutform').submit();
	}
}

function validateBilling(){
	// Check that required fields are not empty. //
	//if (document.getElementById('projectname').value == ""){
	//	alert("A project name is required.  Please enter a project name.");
	//	return false;
	//}
	//else 
    
    if (document.getElementById('firstname').value == ""){
		alert("A required field (First Name) is empty.  Please enter a value for First Name.");
		return false;
	}
	else if (document.getElementById('lastname').value == ""){
		alert("A required field (Last Name) is empty.  Please enter a value for Last Name.");
		return false;
	}
	else if (document.getElementById('address').value == ""){
		alert("A required field (Address) is empty.  Please enter a value for Address.");
		return false;
	}
	else if (document.getElementById('emailaddress').value == ""){
		alert("A required field (EmailAddress) is empty.  Please enter a value for EmailAddress.");
		return false;
	}
	//else if (document.getElementById('confirmemail').value == ""){
	//	alert("A required field (Confirm EmailAddress) is empty.  Please enter a value for Confirm EmailAddress.");
	//	return false;
	//}
	else if (document.getElementById('cityname').value == ""){
		alert("A required field (City) is empty.  Please enter a value for City.");
		return false;
	}
	else if (document.getElementById('state').value == ""){
		alert("A required field (State) is empty.  Please enter a value for State.");
		return false;
	}
	else if (document.getElementById('zipcode').value == ""){
		alert("A required field (Zip) is empty.  Please enter a value for Zip.");
		return false;
	}
	else if (document.getElementById('phonenumber').value == ""){
		alert("A required field (Phone) is empty.  Please enter a value for Phone.");
		return false;
	}
	else if (document.getElementById('shiptoname').value == ""){
		alert("A required field (Ship To Name) is empty.  Please enter a value for Ship To Name.");
		return false;
	}
	else if (document.getElementById('shiptostreet').value == ""){
		alert("A required field (Ship To Address) is empty.  Please enter a value for Ship To Address.");
		return false;
	}
	else if (document.getElementById('shiptocity').value == ""){
		alert("A required field (Ship To City) is empty.  Please enter a value for Ship To City.");
		return false;
	}
	else if (document.getElementById('shiptostate').value == ""){
		alert("A required field (Ship to State) is empty.  Please enter a value for Ship To State.");
		return false;
	}
	else if (document.getElementById('shiptozip').value == ""){
		alert("A required field (Ship To Zip) is empty.  Please enter a value for Ship To Zip.");
		return false;
	}
	else {
		return true;
	}

	
}

function validatePayment(){
	
	var blncontinue = true;
	error_message = '';
	if(document.getElementById('rights').checked != true) {
		error_message = 'You Must Agree To The Intellectual Property Rights Agreement To Proceed!';
		//cloak('processing_info', 'hide');
		blncontinue = false;
	}
	if(document.getElementById('terms').checked != true) {
		error_message = 'You Must Agree To The Terms And Conditions To Proceed!';
		//cloak('processing_info', 'hide');
		blncontinue = false;
    }
	if(document.getElementById('colormatch').checked != true) {
		error_message = 'You Must Agree To The Color Matching Policy!';
		//cloak('processing_info', 'hide');
		blncontinue = false;
	}
	/*
	if(document.getElementById('uset').value != '1')
	{
		if (document.getElementById('expyear').value == '0') {
			document.getElementById('expyear').focus();
			error_message = 'Please Select an Expiration Year';
			//cloak('processing_info', 'hide');
			blncontinue = false;
		}
		if (document.getElementById('expmonth') == '0') {
			document.getElementById('expmonth').focus();
			error_message = 'Please Select an Expiration Month';
			//cloak('processing_info', 'hide');
			blncontinue = false;
		}
		if (document.getElementById('cardNumber').length != '16') {
			document.getElementById('cardNumber').focus();
			error_message = 'Please Enter Valid Credit Card Number';
			//cloak('processing_info', 'hide');
			blncontinue = false;	
		}
		if (document.getElementById('cardtype') == '0') {
			document.getElementById('cardtype').focus();
			error_message = 'Please Select A Valid Credit Card Type';
			//cloak('processing_info', 'hide');
			blncontinue = false;
		}
	}
	*/
	if (document.getElementById('ship').options[document.getElementById('ship').selectedIndex].value == 'none') {
		document.getElementById('ship').focus();
		error_message = 'You Must Select A Shipping Method To Continue';
		//cloak('processing_info', 'hide');
		blncontinue = false;
	}
	if (blncontinue == false){		
		alert(error_message);
		return false;
	} 
	else{
		//alert('doing checkout now');
		//doConfirm();
		// passed tests, proceed with https post. - RDF //
		document.getElementById('checkout_form').submit();
	}
	
}

function updateShipping(){
	var sobj = document.getElementById('ship');
	var shipval = sobj.options[sobj.selectedIndex].value;
	document.getElementById('shippingtotal').innerHTML = "$"+shipval;
	shipping = shipval;
	var temp = new Array();
	
	temp = sobj.options[sobj.selectedIndex].text.split('-');
	document.getElementById('shipmethod').value = temp[0];
	document.getElementById('freightamt').value = shipval;
	updatechekouttotals();
}

/** 
 * Bug Fix for: Item Total not added to the Grand Total
 * Created new function to patch https://www.weprintdiscs.com/index.php?page=checkout_payment_v2 because updatechekouttotals() is used elsewhere
 * TODO: if the bug exists for other pages that use updatechekouttotals(), delete updateShippingPatch() and patch updateShipping() instead
 */
function updateShippingPatch(){
	var sobj = document.getElementById('ship');
	
	var shipval = sobj.options[sobj.selectedIndex].value;
	if(shipval == 'none') {
		document.getElementById('shippingtotal').innerHTML = "$0.00";
	
	}
	
	else {
		document.getElementById('shippingtotal').innerHTML = "$"+shipval;
	
	}
	shipping = shipval;
	var temp = new Array();
	
	temp = sobj.options[sobj.selectedIndex].text.split('-');
	document.getElementById('shipmethod').value = temp[0];
	document.getElementById('freightamt').value = shipval;
	updategrandtotal(); //Patched
}

function validateCoupon(code){
	// AJAX request back to server to validate code. //
		
		var pars = 'code=' + code;
		var url = '/ajax/validatecoupon.php';
		//alert(obj.innerHTML);
		var myAjax = new Ajax.Request(url, 
			{
				method: 'get', 
				parameters: pars,
				onComplete: validateCouponResults
			})
}

function validateCouponResults(originalRequest){
	var res = originalRequest.responseText;
	// TODO: Do something with the results. //
	//document.getElementById('couponresult').style.fontWeight = "bold";
	if (res == "INVALID"){
		document.getElementById('couponresult').style.color = "Red";
		document.getElementById('couponresult').innerHTML = res;
	}
	else {
		document.getElementById('couponresult').innerHTML = "CODE OK!";
		document.getElementById('couponresult').style.color = "Green";
		//var temphtml = "";
		var newtotal = 0;
        if (parseFloat(res) != 0 ){
            newtotal = (quantity * parseFloat(res)) + parseFloat(salesTax);
            itotal = newtotal;
		    document.getElementById('od_total').innerHTML = "$"+parseFloat(newtotal);
        }	
	}	
	
}


function updatedropship(){
	var cs = document.getElementById('dropshiptolocation').checked;
	if (cs){
		document.getElementById('dropshiptolocation').value = 1;
	}
	else {
		document.getElementById('dropshiptolocation').value = 0;
	}
}


function addFileUploadInput(fieldname, indexint){
//////////////////////////////////////////////////////
// Return HTML block code for another file upload   //
// input box - name determined by parameters passed.//
//////////////////////////////////////////////////////

    var myHTML = "";
    var contentBlock = document.getElementById('fileInputs');
    var oldHTML = "";
    myHTML = "<li><input type='file' name='"+fieldname+"_"+indexint+"' size='25'></li>";
    oldHTML = contentBlock.innerHTML;
    contentBlock.innerHTML = oldHTML + myHTML;
    document.getElementById('numberfiles').value ++;
    
}





