﻿// JScript File

	function LoadPage(page)
    {
        AjaxCalls.LoadAjaxPage(page, SessionID, page_callback);
        GetCartSummary();
    }
    
    function GetProdDetail(prod)
    {
        if(prod >= 1)
        {
            SetMyElement('g_prod', prod);
            AjaxCalls.ProductDetail(prod,page_callback);
        }
    }
    
    function page_callback(res)
    {
        //alert(res.value);
        var err = document.getElementById("content");
		res.value == null || res.error != null ? err.innerHTML = res.error.Message: 
        err.innerHTML = res.value;
    }
    
    function write_cart(res)
    {
        //alert(res.value);
        var err = document.getElementById("cart_info");
		res.value == null || res.error != null ? err.innerHTML = res.error.Message: 
        err.innerHTML = res.value;
    }
    
	function SetUnitPrice(ele, row, prod)
	{
		var chk = document.getElementById("us"+row);
		var price = document.getElementById("price" + prod)
		if(chk.checked)
		{
			SetMyElement('g_units',ele.value);
			var ex = chk.value * ele.value;
			price.value = FormatNumber(ex, false, 2);
			SetMyElement('g_price',price.value);
			chk.checked = true;
		}
		else
		{
			ele.value = 0;
			chk.checked = false;
		}
	}
	
	function SetSinglePrice(ele, row, iprice, prodID)
	{
		var price = document.getElementById("price" + prodID)
		SetMyElement('g_prod',prodID);
		SetMyElement('g_unitID',0);
		
		//alert(iprice + "," + ele.value);
		
		if(ele.value >= 1)
		{
			SetMyElement('g_units',ele.value);
			var ex = iprice * ele.value;
			price.value = FormatNumber(ex, false, 2);
			SetMyElement('g_price',price.value);
		}
		else
		{
			ele.value = 0;
		}
	}
	
    function SetProd(ele, start, min, unit, prodID, unitID)
    {
	    var trows = document.getElementById("trows" + prodID)
    	var price = document.getElementById("price" + prodID)
		var loop = parseInt(trows.value) + start;
    	SetMyElement('g_prod',prodID);
    	SetMyElement('g_unitID',unitID);
		
		//alert(start + "," + unit + "," + trows.value + "," + loop);
		
	    for(var i = start; i<loop; i++)
	    {
			//alert(i + "," + unit);
		    var prod = document.getElementById("u"+i);
		    var chk = document.getElementById("us"+i);
		    if(unit == i)
		    {
			    prod.value = min;
			    SetMyElement('g_units',min);
			    prod.disabled = false;
			    var ex = parseInt(min)* ele.value
			    price.value = FormatNumber(ex, false, 2);
			    SetMyElement('g_price',price.value);
			    ele.checked = true;
		    }
		    else
		    {
			    prod.value = "";
			    prod.disabled = true;
			    chk.checked = false;
		    }
	    }
    	
    }
    
	function ValidateAdd(option)
	{
		var vc = true;
		var err_txt = "<hr><div style='text-align:left' class=GoldText><b>New Item Validation ::</b></div>";
		var err = document.getElementById("errText");
		err.innerHTML = "";
			
			if(GetMyElement('g_option') == 0 && option == 'True')
			{
				err_txt += "<div class=error style='text-align:left'><img src='images/validate.gif' align=absmiddle> Please select a product option first...</div>";
				vc = false;
			}
			
			if(GetMyElement('g_units') == 0)
			{
				err_txt += "<div class=error style='text-align:left'><img src='images/validate.gif' align=absmiddle> Please select the amount of items to order...</div>";
				vc = false;
			}
			
			err.innerHTML = err_txt;
		return vc;
	}
	
    function AddToCart(option)
    {
		if(ValidateAdd(option))
		{
	        //alert("Units:" + g_units + " Price:" + g_price + " Prod: " + g_prod);
			var g_units = GetMyElement('g_units');
			var g_price = GetMyElement('g_price');
			var g_prod = GetMyElement('g_prod');
			var g_unitID = GetMyElement('g_unitID');
			var g_option = GetMyElement('g_option');
			
	        if(g_units >= 1)
	        {
	            if(confirm("Add this item to your cart?"))
	            AjaxCalls.AddCartItems(0,SessionID, vendorID, g_prod, g_units, g_option, g_price, g_unitID, user, add_callback);
	         }
	        else
	        {
	            alert("No items have been selected...");
	        }
		}
    }
    
    function add_callback(res)
    {
       if(res.value == 1)
       {
           GetCartSummary();
           GetCartDetail();
       }
	   else
	   {
		SetMyElement('errText', res.error.Message);
	   }
    }
    
    function ChangeOption(prodID)
    {
        var op = document.getElementById("po"+prodID);   
    	SetMyElement('g_option',op.value);
    }
    
    function GetCartSummary()
    {
        AjaxCalls.CartSummary(SessionID, write_cart);
    }
    
     function GetCartDetail(act)
    {
		if(act == "chkout")
			AjaxCalls.CartDetailsCheckout(SessionID, 'client', page_callback);
		else
			AjaxCalls.CartDetails(SessionID, page_callback);
		
    }
    
    function RemoveItem(cartID)
    {
        if(confirm("Are you sure you want remove this item?"))
        {
            AjaxCalls.RemoveCartItem(cartID, remove_callback);
        }
    }
    
    function remove_callback(res)
    {
		if(res.value == 1)
		{
		    GetCartSummary();
		    GetCartDetail();
		}
		else
		{
		    alert("There as an error removing the cart item... " + res.error.Message);
		}
    }
	
	function CopySameAddress()
	{
		SetMyElement("CustomerName", GetMyElement("BillName"));
		SetMyElement("Street", GetMyElement("BillStreet"));
		SetMyElement("City", GetMyElement("BillCity"));
		SetMyElement("State", GetMyElement("BillState"));
		SetMyElement("Zip", GetMyElement("BillZip"));
	}
	
	function DoCheckout()
	{
		if(SessionID != "")
		{
		    //location.href = "https://shop.nvms.com/CheckOut.aspx?s=" + SessionID;
			
			//Development
			location.href = "CheckOut.aspx?s=" + SessionID;
		}
	}
	
	var remember = false;
	
	function SendPassword()
	{
		var em = GetMyElement("email_send");
		AjaxCalls.SendEmailPass(em, SendLoginCallback);
	}
	
	function SendLoginCallback(res)
	{
		//alert(res.value);
		var d = document.getElementById("err_msg");
		res.value == null || res.error != null ? d.innerHTML = res.error.Message: 
		d.innerHTML = res.value;
	}
	
	function SignIn()
	{
		var user = GetMyElement("ReturnEmail");
		var pass = GetMyElement("ReturnPass");
		remember = GetChecked('rememberme');
		
		if(pass.length >= 5)
			AjaxCalls.CustomerSignIn(user, pass, SignInCallback);
		else
			SetMyHTML("SignInError", "Please enter a password with 5 or more characters...");
	}
	
	function SignInCallback(res)
	{
		if(checknum_val(res.value))
		{
			(res.value == 0)?SetMyHTML("SignInError", "Customer account not found for this email/password combination."):
			GetCustomerInfo(res.value);
		}
		else
		{
			SetMyHTML("SignInError", res.value);
		}
	}
	
	function GetCustomerInfo(CustomerID)
	{
		var dTable = AjaxCalls.GetCustomer(CustomerID).value;
		
		if(dTable == null || dTable.error != null)
	    {
	        SetMyHTML("SignInError", "There was an error retrieving your customer data...");
	    }
	    else
		{
			var data = dTable.Tables[0].Rows[0]; 
			SetMyElement("g_clientID", escapeNull(data.CustomerID,0)); 
			SetMyElement("BillName", escapeNull(data.BillName,"")); 
			SetMyElement("BillStreet", escapeNull(data.BillStreet,"")); 
			SetMyElement("BillCity", escapeNull(data.BillCity,"")); 
			SetMyElement("BillState", escapeNull(data.BillState,"")); 
			SetMyElement("BillZip", escapeNull(data.BillZip,"")); 
			SetMyElement("Phone", escapeNull(data.Phone,"")); 
			SetMyElement("Fax", escapeNull(data.Fax,"")); 
			SetMyElement("Email", escapeNull(data.Email,"")); 
			SetMyElement("Password", escapeNull(data.Password,"")); 
			SetMyElement("WebSite", escapeNull(data.WebSite,"")); 
			SetMyElement("CustomerName", escapeNull(data.CustomerName,""));
			SetMyElement("Street", escapeNull(data.Street,"")); 
			SetMyElement("City", escapeNull(data.City,"")); 
			SetMyElement("State", escapeNull(data.State,"")); 
			SetMyElement("Zip", escapeNull(data.Zip,""));	

			SetMyHTML("ReturnHeaderText", "Welcome back " + data.CustomerName + "... If any of the below details are incorrect or missing, please make changes then click next.");
			
			if(remember)
				Cookies.create("NVMSShopID", data.CustomerID, 365);
			
			//Hide Login
			setDisplay("ReturnCustomerHolder", false);
			SetMyHTML("RegError", "");
			
			//Set Header
			if(Cookies.NVMSShopID)
				SetMyHTML("ReturnHeaderText", "Welcome back " + data.CustomerName + "... If this is not you or you would not like us to remember this information again <a class='link' onclick='RemoveAccount()'\>Click Here<\/a\>");
		}
		  
	}
	
	function RemoveAccount()
	{
		try
		{
			Cookies.erase("NVMSShopID");
			alert("Your personal cookie has been removed successfully from this computer...");
		}
		catch(e)
		{
			alert("Account was not found or there was an error removing your cookie, please remove manually...");
		}
	}
	
	
	function ValidateCustomer(){
		var pass = true;
		var ChkFields = new Array('State','City','Street','CustomerName','Password','Phone','BillZip','BillCity','BillState','BillStreet','BillName','Profession');
		// grab all input fields to validate
		var ip = document.getElementsByTagName('input');
		//alert(ChkFields.length);
		
		
		if(!EmailValidate(GetMyElement('Email')))
		{
			SetMyHTML('RegError', "<div class=error style='text-align:left'><img src='images/validate.gif' align=absmiddle> A valid Email Address is required...</div>");
			pass = false;
			return false;
		}
	
		for (var i=0;i < ChkFields.length; i++){
			//Find Element
			var ele = document.getElementById(ChkFields[i]);
			val = ele.value;
			if(val == '')
			{
				ele.style.backgroundColor = '#FFFF00';
				pass = false;
			}
			else
			{
				ele.backgroundColor = '';
			}
		}
		if(!pass)
		{
			SetMyHTML('RegError', 'Please complete hi-lighted fields before saving...');
		}
		return pass;
	}

	function SaveCustomer()
	{
		if(ValidateCustomer())
		{
			var cd = AjaxCalls.GetCustomerClass().value;
			
			cd.CustomerID = GetMyElement("g_clientID"); 
			cd.CustomerName = GetMyElement("CustomerName"); 
			cd.Street = GetMyElement("Street"); 
			cd.City = GetMyElement("City"); 
			cd.State = GetMyElement("State"); 
			cd.Zip = GetMyElement("Zip"); 
			cd.BillName = GetMyElement("BillName"); 
			cd.BillStreet = GetMyElement("BillStreet"); 
			cd.BillCity = GetMyElement("BillCity"); 
			cd.BillState = GetMyElement("BillState"); 
			cd.BillZip = GetMyElement("BillZip"); 
			cd.Email = GetMyElement("Email"); 
			cd.Password = GetMyElement("Password"); 
			cd.WebSite = GetMyElement("WebSite"); 
			cd.Phone = GetMyElement("Phone"); 
			cd.Fax = GetMyElement("Fax"); 
			cd.Notes = GetMyElement("Notes"); 
			cd.Profession = GetMyElement("Profession"); 
			cd.create_user = GetMyElement("create_user"); 
		
			//Pass class to server, Save data
			AjaxCalls.RegisterCustomer(cd, SessionID, SaveCustomerCallback);
		}
	}
	
	function SaveCustomerCallback(res)
	{
		//alert(res.value);
		var d = document.getElementById("RegError");
		res.value == null || res.error != null ? d.innerHTML = res.error.Message: 
		SetMyElement("g_clientID", res.value);
		
		if(res.value >= 1)
		{
			//alert("Customer: " + res.value + " Go to payment screen...");
			LoadSecureForm('SecureForm.htm');
			GetCartDetail('chkout');
		}
		else
		{
			SetMyHTML("RegError", "There was an error creating your account... There seems to be an existing account with this email address.");
		}
	}
	
	function LoadSecureForm(page)
    {
        AjaxCalls.LoadAjaxPage(page, SessionID, sf_callback);
    }
	
	function sf_callback(res)
    {
        //alert(res.value);
        var err = document.getElementById("CustomerDetails");
		res.value == null || res.error != null ? err.innerHTML = res.error.Message: 
        err.innerHTML = res.value;
    }
	
	function SetShipping(ele, price, method)
	{
		//alert(ele.id + "," + price + ", " + method);
		var tot = GetMyElement("ShopTotal");
		var extot = Math.round((parseFloat(tot) + parseFloat(price))*100)/100;
		SetMyElement("ShipMethod", method);
		SetMyHTML("ShipText", method);
		SetMyElement("Shipping", price);
		SetMyElement("OrderTotal", extot);
		var rows = GetMyElement("shiprows");
		
		for(var i = 0; i < rows; i++)
		{
			var pbox = document.getElementById("ship"+i);
			//alert(ele.id + " - setprod" + i);
			if(ele.id == "ship" + i)
			{
				ele.checked = true;
				ShipValid = true;
			}
			else
			{
				pbox.checked = false;
				//ubox.value = "";
			}
		}
	}
	
	function GoBack()
	{
		AjaxCalls.LoadAjaxPage('Customer.htm', SessionID, sf_callback);
		var c = GetMyElement("g_clientID");
		//alert(c);
		GetCustomerInfo(c);
	}
	
	function ValidateCredit()
	{
		var vc = true;
		var err_txt = "<hr><div style='text-align:left' class=GoldText><b>Credit Validation ::</b></div>";
		var err = document.getElementById("SecureFormErr");
		err.innerHTML = "";
			
			if(GetMyElement('OrderTotal') == "")
			{
				err_txt += "<div class=error style='text-align:left'><img src='images/validate.gif' align=absmiddle> Please select a Shipping Method to calculate your final total...</div>";
				vc = false;
			}

			if (GetMyElement('ShipMethod') == "") {
			    err_txt += "<div class=error style='text-align:left'><img src='images/validate.gif' align=absmiddle> Please select a Shipping Method to calculate your final total...</div>";
			    vc = false;
			}
			
			if (GetMyElement('CCName') == "")
			{
				err_txt += "<div class=error style='text-align:left'><img src='images/validate.gif' align=absmiddle> Name on Credit Card is required...</div>";
				vc = false;
			}
			
			if(GetMyElement('CCNumber') == "")
			{
				err_txt += "<div class=error style='text-align:left'><img src='images/validate.gif' align=absmiddle> Your Credit Card number is required...</div>";
				vc = false;
			}
			
			if(GetMyElement('SecurityCode') == "")
			{
				err_txt += "<div class=error style='text-align:left'><img src='images/validate.gif' align=absmiddle> Your Security Code is required...</div>";
				vc = false;
			}
			
			if(GetMyElement('SalesBy') == "")
			{
				err_txt += "<div class=error style='text-align:left'><img src='images/validate.gif' align=absmiddle> Please enter your FSW Contact, if any...</div>";
				vc = false;
			}
			
			err.innerHTML = err_txt;
			
		return vc;
	}

	function CheckPromoCode(ele) {
	    var code = ele.value;
	    var test = AjaxCalls.GetPromoCode(code).value;

	    if (test) {
	        SetMyHTML('code_pass', 'Code passed... Your shipping will be free for this order!');
	        SetMyElement("ShipMethod", 'Free Shipping');
	        SetMyHTML("ShipText", 'Free Shipping');
	        SetMyElement("Shipping", 0);
	        SetMyElement('OrderTotal', FormatNumber(GetMyElement('ShopTotal'), true, 2, false, false, false));
	    }
	    else {
	        SetMyHTML('code_pass', 'This is not a valid code...');
	    }
	    
	}
	
	
	function SubmitOrder()
	{
		var btn = document.getElementById("btnSubmitOrder");
		
		if(ValidateCredit())
		{
			var cd = AjaxCalls.GetOrderClass().value;
			setDisplay("btnSubmitOrder", false);
			cd.CustomerID = GetMyElement("g_clientID");
			cd.SessionID = SessionID;
			cd.OrderTotal = GetMyElement('OrderTotal');
			cd.ShipTotal = GetMyElement('Shipping');
			cd.ShipMethod = GetMyElement('ShipMethod');
			cd.CreditCardName = GetMyElement('CCName');
			cd.CreditCard = GetMyElement('CCNumber');
			cd.CreditCardCode = GetMyElement('SecurityCode');
			cd.SalesBy = GetMyElement('SalesBy');
			cd.PromoCode = GetMyElement('promo_code')
			cd.CreditCardExpDate = GetMyElement('CCMonth') + "/" + GetMyElement('CCYear');
			cd.Notes = GetMyElement("Notes");
			
			AjaxCalls.SubmitValidateOrder(cd, SendOrderCallback);
		}
	}
	
	function SendOrderCallback(res)
	{
		//alert(res.value);
		var ret = res.value;
        var err = document.getElementById("SecureFormErr");
		if(res.value == null || res.error != null)
		{
			err.innerHTML = res.error.Message;
		}
		else
		{
			var retval = ret.split("|");
			if(retval[0] == 0)
			{
				ConfirmOrder();
			}
			else
			{
				err.innerHTML = retval[1];
				setDisplay("btnSubmitOrder", true);
			}
		}
	}
	
	function ConfirmOrder()
	{
		AjaxCalls.LoadAjaxPage('confirm.htm', "", sf_callback);
		setDisplay("content", false);
	}
	
	function ValidateRequest()
	{
		var vc = true;
		var err_txt = "<hr><div style='text-align:left' class=GoldText><b>Request Validation ::</b></div>";
		var err = document.getElementById("req_err");
		err.innerHTML = "";
			
			if(GetMyElement('FullName') == "")
			{
				err_txt += "<div class=error style='text-align:left'><img src='images/validate.gif' align=absmiddle> Please enter your full name...</div>";
				vc = false;
			}
			
			if(GetMyElement('Email') == "")
			{
				err_txt += "<div class=error style='text-align:left'><img src='images/validate.gif' align=absmiddle> Please enter a valid email address...</div>";
				vc = false;
			}
			
			if(GetMyElement('RequestNote') == "")
			{
				err_txt += "<div class=error style='text-align:left'><img src='images/validate.gif' align=absmiddle> Please enter your request notes...</div>";
				vc = false;
			}
			
			err.innerHTML = err_txt;
			
		return vc;
	}
	
	function SendRequest()
	{
		var name = GetMyElement("FullName");
		var email = GetMyElement("Email");
		var notes = GetMyElement("RequestNote");
		
		if(ValidateRequest())
		{
			AjaxCalls.GetSendRequest(email, name, notes, SendRequestCallback);
		}
	}
	
	function SendRequestCallback(res)
	{
		//alert(res.value);
		var ret = res.value;
        var err = document.getElementById("req_err");
		if(res.value == null || res.error != null)
		{
			err.innerHTML = res.error.Message;
		}
		else
		{
			var retval = ret.split("|");
			if(retval[0] == 0)
			{
				ConfirmRequest();
			}
			else
			{
				err.innerHTML = "Error sending messge: " + ret;
			}
		}
	}
	
	function ConfirmRequest()
	{
		AjaxCalls.LoadAjaxPage('confirm_request.htm', "", page_callback);
	}