//******************************************************************************
//Common function to validate add/update pages on submit
//******************************************************************************
function Validate_Page(page_id, submit_value)
{
	var tmpPage = page_id;
	var tmpAction = submit_value;
	
	if (tmpAction == "Retrieve") 
	{
		if (request.request_number.value == "")
		{
			alert('Please enter a request number.');
			request.request_number.focus();
			return false;
		}

		if (isNaN(request.request_number.value))
		{
			alert('Request Number must be numeric.');
			request.request_number.focus();
			return false;
		}	
	    
	}
	
	if ((tmpAction == "Update Status") || (tmpAction == "Email"))
	{
		if (request.request_number.value == "")
		{
			alert('Please enter a request number.');
			request.request_number.focus();
			return false;
		}

		if (isNaN(request.request_number.value))
		{
			alert('Request Number must be numeric.');
			request.request_number.focus();
			return false;
		}	
	    
		if (request.request_status.value == "")
		{
			alert('Please select a request status.');
			request.request_status.focus();
			return false;
		}

	}
	
	if ((tmpPage == "IP") && (tmpAction == "Save"))
	{
        var tmpCustFlg = "";
        var tmpConnectType = "";
        var tmpBGPConn = "";
        var tmpTradedFlg = "";
        
        for (var i = 0; i < request.new_customer_flg.length; i++) {
            if (request.new_customer_flg[i].checked) {
                tmpCustFlg = request.new_customer_flg[i].value;
            }
        }

        if (tmpCustFlg == "") 
        {
			alert('Please select a value for New/Existing Customer.');
			request.new_customer_flg[0].focus();
			return false;
        }

		if ((tmpCustFlg == "N") && (request.circuit_id.value == ""))
		{
			alert('Please enter PVC Number or Circuit ID.');
			request.circuit_id.focus();
			return false;
		}

        for (var i = 0; i < request.connect_type.length; i++) {
            if (request.connect_type[i].checked) {
                tmpConnectType = request.connect_type[i].value;
            }
        }

        if (tmpConnectType == "") 
        {
			alert('Please select a value for type of Internet connection.');
			request.connect_type[0].focus();
			return false;
        }

        for (var i = 0; i < request.bgp_connection_flg.length; i++) {
            if (request.bgp_connection_flg[i].checked) {
                tmpBGPConn = request.bgp_connection_flg[i].value;
            }
        }

		if (tmpBGPConn == "")
		{
			alert('Please select a value for BGP connection.');
			request.bgp_connection_flg[0].focus();
			return false;
		}
				
		if (request.prev_addr_space.value == "")
		{
			alert('Please enter previously assigned address space.');
			request.prev_addr_space.focus();
			return false;
		}

        for (var i = 0; i < request.addr_space_traded_flg.length; i++) {
            if (request.addr_space_traded_flg[i].checked) {
                tmpTradedFlg = request.addr_space_traded_flg[i].value;
            }
        }

		if (tmpTradedFlg == "")
		{
			alert('Please select a value for the address space traded flag.');
			request.addr_space_traded_flg[0].focus();
			return false;
		}

		if (request.number_ip_devices.value == "")
		{
			alert('Please enter the number of IP devices on entire network.');
			request.number_ip_devices.focus();
			return false;
		}

		if (isNaN(request.number_ip_devices.value))
		{
			alert('Number of IP devices must be numeric.');
			request.number_ip_devices.focus();
			return false;
		}	

		if (request.number_subnets.value == "")
		{
			alert('Please enter the number of subnets on entire network.');
			request.number_subnets.focus();
			return false;
		}

		if (isNaN(request.number_subnets.value))
		{
			alert('Number of subnets must be numeric.');
			request.number_subnets.focus();
			return false;
		}	

		if (request.initial_host_info.value == "")
		{
			alert('Please enter the initial host information.');
			request.initial_host_info.focus();
			return false;
		}

		if (request.number_addr_requested.value == "")
		{
			alert('Please enter the number of addresses requested.');
			request.number_addr_requested.focus();
			return false;
		}

		if (isNaN(request.number_addr_requested.value))
		{
			alert('Number of addresses must be numeric.');
			request.number_addr_requested.focus();
			return false;
		}	

		if (request.justification.value == "")
		{
			alert('Please enter a justification for the request.');
			request.justification.focus();
			return false;
		}

		if (request.justification.value != "")
		{
			if (request.justification.value.length > 4000)
			{
				alert('Justification cannot be more than 4000 characters.');
				request.justification.focus();
				return false;
			}
		}

		if (request.number_ip_assigned.value == "")
		{
			alert('Please enter the number of IPs assigned.');
			request.number_ip_assigned.focus();
			return false;
		}

		if (isNaN(request.number_ip_assigned.value))
		{
			alert('Number of IPs assigned must be numeric.');
			request.number_ip_assigned.focus();
			return false;
		}	

		if (isNaN(request.account_number.value))
		{
			alert('Account Number must be numeric.');
			request.account_number.focus();
			return false;
		}	
				
		if (request.company_name.value == "")
		{
			alert('Please enter company name.');
			request.company_name.focus();
			return false;
		}	
	
		if (request.company_addr.value == "")
		{
			alert('Please enter company address.');
			request.company_addr.focus();
			return false;
		}	
	
		if (request.company_state.value == "")
		{
			alert('Please select company state.');
			request.company_state.focus();
			return false;
		}	
	
		if (request.company_zip.value == "")
		{
			alert('Please enter company zip code.');
			request.company_zip.focus();
			return false;
		}	
	
		if (request.company_country.value == "")
		{
			alert('Please enter company country.');
			request.company_country.focus();
			return false;
		}	

		if (request.contact_first_name.value == "")
		{
			alert('Please enter contact first name.');
			request.contact_first_name.focus();
			return false;
		}	

		if (request.contact_last_name.value == "")
		{
			alert('Please enter contact last name.');
			request.contact_last_name.focus();
			return false;
		}

		if (request.contact_phone.value == "")
		{
			alert('Please enter contact phone.');
			request.contact_phone.focus();
			return false;
		}

		if (request.contact_email.value == "")
		{
			alert('Please enter contact email.');
			request.contact_email.focus();
			return false;
		}

		if (!test(request.contact_email.value))
		{
		    alert("Please enter a valid email address");
		    request.contact_email.focus();
		    return false;
		}
	
	} //end ip request save validation
	
	if ((tmpPage == "BGP") && (tmpAction == "Save"))
	{
        var tmpCustFlg = "";
        var tmpAltISPFlg = "";
        var tmpMultConnFlg = "";
        var tmpASNFlg = "";
        var tmpAltISPIPFlg = "";
        
        for (var i = 0; i < request.new_customer_flg.length; i++) {
            if (request.new_customer_flg[i].checked) {
                tmpCustFlg = request.new_customer_flg[i].value;
            }
        }

        if (tmpCustFlg == "") 
        {
			alert('Please select a value for New/Existing Customer.');
			request.new_customer_flg[0].focus();
			return false;
        }

		if (request.number_addr_requested.value == "")
		{
			alert('Please enter the number of addresses requested.');
			request.number_addr_requested.focus();
			return false;
		}
			 
		if (isNaN(request.number_addr_requested.value))
		{
			alert('Number of addresses must be numeric.');
			request.number_addr_requested.focus();
			return false;
		}	

        for (var i = 0; i < request.alt_isp_flg.length; i++) {
            if (request.alt_isp_flg[i].checked) {
                tmpAltISPFlg = request.alt_isp_flg[i].value;
            }
        }

		if (tmpAltISPFlg == "")
		{
			alert('Please select a value for connection to other ISPs.');
			request.alt_isp_flg[0].focus();
			return false;
		}
				
        for (var i = 0; i < request.alt_isp_ip_flg.length; i++) {
            if (request.alt_isp_ip_flg[i].checked) {
                tmpAltISPIPFlg = request.alt_isp_ip_flg[i].value;
            }
        }

		if (tmpAltISPIPFlg == "")
		{
			alert('Please select a value for IPs provided by other ISPs.');
			request.alt_isp_ip_flg[0].focus();
			return false;
		}
				
        if ((tmpAltISPIPFlg == "N") && (request.alt_isp_ip_justification.value == ""))
        {
			alert('Please enter an explanation for the above.');
			request.request.alt_isp_ip_justification.focus();
			return false;
        }
        
        for (var i = 0; i < request.itcd_multiple_conn_flg.length; i++) {
            if (request.itcd_multiple_conn_flg[i].checked) {
                tmpMultConnFlg = request.itcd_multiple_conn_flg[i].value;
            }
        }

		if (tmpMultConnFlg == "")
		{
			alert('Please select a value for multiple ITC^DeltaCom connections.');
			request.itcd_multiple_conn_flg[0].focus();
			return false;
		}	
	
		if ((tmpMultConnFlg == "Y") && (request.connection_info.value == ""))
		{
			alert('Please provide connection information.');
			request.connection_info.focus();
			return false;
		}	

        for (var i = 0; i < request.itcd_asn_flg.length; i++) {
            if (request.itcd_asn_flg[i].checked) {
                tmpASNFlg = request.itcd_asn_flg[i].value;
            }
        }

		if (tmpASNFlg == "")
		{
			alert('Please select a value for ITC^DeltaCom-assigned ASN.');
			request.itcd_asn_flg[0].focus();
			return false;
		}
					
		if ((tmpASNFlg == "N") && (request.itcd_asn_number.value == ""))
		{
			alert('Please provide your ASN.');
			request.itcd_asn_number.focus();
			return false;
		}	

		if (request.announce_prefix.value == "")
		{
			alert('Please enter prefixes to announce.');
			request.announce_prefix.focus();
			return false;
		}	
	
		if (request.route_subnets.value == "")
		{
			alert('Please enter route subnets to be advertised.');
			request.route_subnets.focus();
			return false;
		}	

		if (isNaN(request.account_number.value))
		{
			alert('Account Number must be numeric.');
			request.account_number.focus();
			return false;
		}	
				
		if (request.company_name.value == "")
		{
			alert('Please enter company name.');
			request.company_name.focus();
			return false;
		}	
	
		if (request.company_addr.value == "")
		{
			alert('Please enter company address.');
			request.company_addr.focus();
			return false;
		}	
	
		if (request.company_state.value == "")
		{
			alert('Please select company state.');
			request.company_state.focus();
			return false;
		}	
	
		if (request.company_zip.value == "")
		{
			alert('Please enter company zip code.');
			request.company_zip.focus();
			return false;
		}	
	
		if (isNaN(request.company_zip.value))
		{
			alert('Zip Code must be numeric.');
			request.company_zip.focus();
			return false;
		}	

		if (request.company_country.value == "")
		{
			alert('Please enter company country.');
			request.company_country.focus();
			return false;
		}	

		if (request.contact_first_name.value == "")
		{
			alert('Please enter contact first name.');
			request.contact_first_name.focus();
			return false;
		}	

		if (request.contact_last_name.value == "")
		{
			alert('Please enter contact last name.');
			request.contact_last_name.focus();
			return false;
		}

		if (request.contact_phone.value == "")
		{
			alert('Please enter contact phone.');
			request.contact_phone.focus();
			return false;
		}

		if (request.contact_email.value == "")
		{
			alert('Please enter contact email.');
			request.contact_email.focus();
			return false;
		}

		if (!test(request.contact_email.value))
		{
		    alert("Please enter a valid email address");
		    request.contact_email.focus();
		    return false;
		}
	
	} //end bgp request save validation

	//Submit Page
	request.submit_action.value=tmpAction;
	request.request_type.value=tmpPage;
	
	if (tmpAction == "Email")
	{
	    request.action = "send_email.asp";
	}
	request.target = "_self";
	request.submit();
}

//******************************************************************************
//Function to validate page when "ADD NOTE" is clicked
//******************************************************************************
function Add_Note(page_id, req_type)
{
    var tmpPage = page_id;
    var tmpReqType = req_type;
    
	if (tmpPage == "notes") 
	{
		//Note Description cannot be blank
		if (request.note_desc.value == "") 
		{
			alert('Note Desc is required.');
			request.note_desc.focus();
			return false;
		}	

		//Note Desc cannot be more than 4000 characters
		if (request.note_desc.value.length > 4000)
		{
			alert('Note Description cannot be more than 4000 characters.');
			request.note_desc.focus();
			return false;
		}

	}

	//Submit Page
	request.target = "_self";
	request.action = "add_notes.asp";
	
	if (tmpPage == "notes") 
	{
	    request.submit_action.value="Add Note";
	} else {
	    request.submit_action.value="Update Status";
	}
	request.request_type.value = tmpReqType;
	request.submit();
	
}

//******************************************************************************
//Function to view prior notes/history
//******************************************************************************
function View_Notes_History(submit_value)
{
	//If "VIEW PRIOR NOTES" or "VIEW PRIOR history" is clicked then open appropriate window.
	if ((submit_value == "notes") || (submit_value == "history"))
	{
		view_window(submit_value,"700","400");
		return false;
	}
}

//*****************************************************************************
// Open Popup windows with standard parameters.
//*****************************************************************************
function openWindowCentered(url,windowName,width,height)
{
	var winLeft = (screen.width-width)/2;
	var winTop = (screen.height - height)/2;
	var options = "'width=" + width + ",height=" + height + ",top=" + winTop + ",left=" + winLeft + ",toolbar=no, directories=no, location=no,status=no, menubar=no, resizable=no, scrollbars=yes'"
	window.open(url,windowName,eval(options));
}

//*****************************************************************************
// View Popup windows with standard parameters.
//*****************************************************************************
function view_window(name, width, height)
{
	openWindowCentered('',name,width,height);
	request.target = name;
	request.action = name + ".asp";
	request.submit();
}

//*****************************************************************************
// Make sure date is in the proper mm/dd/yyyy format
// Input:   dateIn      Input to be tested as date
//*****************************************************************************
function Valid_Date(dateIn) {
    // Assume the best
    var dateValid = true;
    
    // Parse input date to a Java date object
    var chkDate=new Date(Date.parse(dateIn));
    // Convert Java date object input date back to string
    var tmpDateOne = (chkDate.getMonth()+1)+"/"+(chkDate.getDate())+"/"+(chkDate.getYear());
    	
    // Convert input date into array of mm, dd and yyyy
    if (dateIn.indexOf("-")!=-1)
        var dateArray = dateIn.split("-");
    else
        var dateArray = dateIn.split("/");
        
    // Build array version of input date back into string    	
    var tmpDateTwo;
    if ((Math.abs(dateArray[2])< 2000) && (Math.abs(dateArray[2])>= 1900)) {
	    tmpDateTwo=(Math.abs(dateArray[0]))+"/"+(Math.abs(dateArray[1]))+"/"+(Math.abs(dateArray[2])-1900);
	}
	else {
	    tmpDateTwo=(Math.abs(dateArray[0]))+"/"+(Math.abs(dateArray[1]))+"/"+(Math.abs(dateArray[2]));
	}
	
	// Do the string versions match each other?
	if (tmpDateTwo != tmpDateOne) {
	    dateValid = false;
	}
	else {
	    // Do we have non-numeric input
	    if (tmpDateOne=="NaN/NaN/NaN") {
	        dateValid = false;
	    }
	    else {
	        // Is the year too low?
	        if (Math.abs(dateArray[2])< 1000) {
	            dateValid = false;
	        }   // year bad
	    }   // non-numeric input
	}   // dates don't match
	
	// If an error was found, report it
	if (!dateValid) {
	    alert("You've entered an invalid date or date format.\nPlease use MM/DD/YYYY format.");
	}
	
	return dateValid;
}   // Valid_Date

//*****************************************************************************
// Make sure user didn't try to slide a bunch of spaces in as "input"
// Input:   testInput   Input to be tested for all spaces
// Return:  True        when testInput is nothing but spaces or tabs
//*****************************************************************************

function isBlank(testInput) {
    // Check for all spaces
    for (var i = 0; i < testInput.length; i++) {
        var testChar = testInput.charAt(i);
        if ((testChar != " ") && (testChar != "\n") && (testChar != "\t"))
            return false;
    }
        
    return true;
}   // isBlank


function Validate_Form(submit_value)
{
	var tmpAction = submit_value;
	
	if (tmpAction == "Save")
	{
    } 

	request.submit_action.value=tmpAction;
	
	request.target = "_self";
	request.submit();
}

//Function to redirect to a particular page
function goPage(toPage) {
	frmDetail.action = toPage;
	frmDetail.submit();
}   // goPage

//Function to validate email addresses
function test(i_email_addr) {
    var regex = /^[a-zA-Z0-9._-]+@([a-zA-Z0-9.-]+\.)+[a-zA-Z0-9.-]{2,4}$/;
    
    return regex.test(i_email_addr);
}

//******************************************************************************
//Set/Reset form field values for Contact information based on selection of checkbox for
//"Same as customer address" tab.
//******************************************************************************
function SetValues(chk_name)
{
	var tmpname = chk_name;
	if (tmpname == "address")
	{
		var tmpAddr = request.company_addr.value;
		var tmpState = request.company_state.value;
		var tmpZip = request.company_zip.value;
	
		if (request.chkAddr.checked)
		{
			request.contact_addr.value = tmpAddr;
			request.contact_state.value = tmpState;
			request.contact_zip.value = tmpZip;
		} else {
			request.contact_addr.value = "";
			request.contact_state.value = "";
			request.contact_zip.value = "";
		}
	}
	
}

