Click here to Skip to main content
Click here to Skip to main content
 
Add your own
alternative version

Error Detection Based on Check Digit Schemes

, 27 Nov 2007
A Survey of Popular Check Digit Schemes
checkdigit1.zip
checkdigit1
checkdigit1.dsp
checkdigit1.dsw
Debug
checkdigit2.zip
checkdigit2
checkdigit2.dsp
checkdigit2.dsw
checkdigit3.zip
checkdigit3
checkdigit3.dsp
checkdigit3.dsw
checkdigit4.zip
checkdigit4
checkdigit4.dsp
checkdigit4.dsw
checkdigit5.zip
checkdigit5
checkdigit5.dsp
checkdigit5.dsw
checkdigit6.zip
checkdigit6
checkdigit6.dsp
checkdigit6.dsw
checkdigit7.zip
checkdigit7
checkdigit7.dsp
checkdigit7.dsw
checkdigit8.zip
checkdigit8
checkdigit8.dsp
checkdigit8.dsw
checkdigits.zip
checkdigits
java
com
modp
checkdigits
test
doc
com
modp
checkdigits
class-use
test
class-use
index-files
package-list
resources
inherit.gif
javascript
jsunit
app
css
readme
css
images
green.gif
logo_jsunit.gif
red.gif
intellij
.cvsignore
JsUnit.iml
JsUnit.ipr
jsunit.properties.sample
licenses
logs
.cvsignore
tests
data
staff.dtd
test
decimaldigits.zip
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<!-- Generated by javadoc (build 1.4.2_07) on Fri Jun 24 15:56:26 EDT 2005 -->
<TITLE>
CheckLuhnMod10
</TITLE>

<META NAME="keywords" CONTENT="com.modp.checkdigits.CheckLuhnMod10 class">

<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../stylesheet.css" TITLE="Style">

<SCRIPT type="text/javascript">
function windowTitle()
{
    parent.document.title="CheckLuhnMod10";
}
</SCRIPT>

</HEAD>

<BODY BGCOLOR="white" onload="windowTitle();">


<!-- ========= START OF TOP NAVBAR ======= -->
<A NAME="navbar_top"><!-- --></A>
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_top_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="class-use/CheckLuhnMod10.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../index-files/index-1.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../com/modp/checkdigits/CheckISO7064Mod97_10.html" title="class in com.modp.checkdigits"><B>PREV CLASS</B></A>&nbsp;
&nbsp;NEXT CLASS</FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="CheckLuhnMod10.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;<SCRIPT type="text/javascript">
  <!--
  if(window==top) {
    document.writeln('<A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
  <A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>

</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_top"></A>
<!-- ========= END OF TOP NAVBAR ========= -->

<HR>
<!-- ======== START OF CLASS DATA ======== -->
<H2>
<FONT SIZE="-1">
com.modp.checkdigits</FONT>
<BR>
Class CheckLuhnMod10</H2>
<PRE>
java.lang.Object
  <IMG SRC="../../../resources/inherit.gif" ALT="extended by"><B>com.modp.checkdigits.CheckLuhnMod10</B>
</PRE>
<DL>
<DT><B>All Implemented Interfaces:</B> <DD><A HREF="../../../com/modp/checkdigits/CheckDigit.html" title="interface in com.modp.checkdigits">CheckDigit</A></DD>
</DL>
<HR>
<DL>
<DT>public class <B>CheckLuhnMod10</B><DT>extends java.lang.Object<DT>implements <A HREF="../../../com/modp/checkdigits/CheckDigit.html" title="interface in com.modp.checkdigits">CheckDigit</A></DL>

<P>
Implement the Luhn Formula Mod 10 check digit scheme
<P>

<P>
<DL>
<DT><B>Version:</B></DT>
  <DD>1</DD>
<DT><B>Author:</B></DT>
  <DD>nickg</DD>
</DL>
<HR>

<P>
<!-- ======== NESTED CLASS SUMMARY ======== -->


<!-- =========== FIELD SUMMARY =========== -->


<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../com/modp/checkdigits/CheckLuhnMod10.html#CheckLuhnMod10()">CheckLuhnMod10</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
</TABLE>
&nbsp;
<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Method Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/modp/checkdigits/CheckLuhnMod10.html#computeCheck(java.lang.String)">computeCheck</A></B>(java.lang.String&nbsp;digits)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Computes the check digit value</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/modp/checkdigits/CheckLuhnMod10.html#encode(java.lang.String)">encode</A></B>(java.lang.String&nbsp;digits)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Add check digits to a string containing digits</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/modp/checkdigits/CheckLuhnMod10.html#getCheckDigit(java.lang.String)">getCheckDigit</A></B>(java.lang.String&nbsp;digits)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Extract just the check digits from an encoded string</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/modp/checkdigits/CheckLuhnMod10.html#getData(java.lang.String)">getData</A></B>(java.lang.String&nbsp;digits)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Extracts the raw data without the check digits</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../com/modp/checkdigits/CheckLuhnMod10.html#verify(java.lang.String)">verify</A></B>(java.lang.String&nbsp;digits)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Verify a string that has been encoded with a check digit</TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TD><B>Methods inherited from class java.lang.Object</B></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE>equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
</TR>
</TABLE>
&nbsp;
<P>

<!-- ============ FIELD DETAIL =========== -->


<!-- ========= CONSTRUCTOR DETAIL ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=1><FONT SIZE="+2">
<B>Constructor Detail</B></FONT></TD>
</TR>
</TABLE>

<A NAME="CheckLuhnMod10()"><!-- --></A><H3>
CheckLuhnMod10</H3>
<PRE>
public <B>CheckLuhnMod10</B>()</PRE>
<DL>
</DL>

<!-- ============ METHOD DETAIL ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=1><FONT SIZE="+2">
<B>Method Detail</B></FONT></TD>
</TR>
</TABLE>

<A NAME="encode(java.lang.String)"><!-- --></A><H3>
encode</H3>
<PRE>
public java.lang.String <B>encode</B>(java.lang.String&nbsp;digits)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../com/modp/checkdigits/CheckDigit.html" title="interface in com.modp.checkdigits">CheckDigit</A></CODE></B></DD>
<DD>Add check digits to a string containing digits
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../com/modp/checkdigits/CheckDigit.html#encode(java.lang.String)">encode</A></CODE> in interface <CODE><A HREF="../../../com/modp/checkdigits/CheckDigit.html" title="interface in com.modp.checkdigits">CheckDigit</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>digits</CODE> - the input data string containing only digits '0'-'9'
<DT><B>Returns:</B><DD>a new string containing data and check digits</DL>
</DD>
</DL>
<HR>

<A NAME="verify(java.lang.String)"><!-- --></A><H3>
verify</H3>
<PRE>
public boolean <B>verify</B>(java.lang.String&nbsp;digits)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../com/modp/checkdigits/CheckDigit.html" title="interface in com.modp.checkdigits">CheckDigit</A></CODE></B></DD>
<DD>Verify a string that has been encoded with a check digit
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../com/modp/checkdigits/CheckDigit.html#verify(java.lang.String)">verify</A></CODE> in interface <CODE><A HREF="../../../com/modp/checkdigits/CheckDigit.html" title="interface in com.modp.checkdigits">CheckDigit</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>digits</CODE> - input digits
<DT><B>Returns:</B><DD>true if valid, false otherwise</DL>
</DD>
</DL>
<HR>

<A NAME="computeCheck(java.lang.String)"><!-- --></A><H3>
computeCheck</H3>
<PRE>
public int <B>computeCheck</B>(java.lang.String&nbsp;digits)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../com/modp/checkdigits/CheckDigit.html" title="interface in com.modp.checkdigits">CheckDigit</A></CODE></B></DD>
<DD>Computes the check digit value
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../com/modp/checkdigits/CheckDigit.html#computeCheck(java.lang.String)">computeCheck</A></CODE> in interface <CODE><A HREF="../../../com/modp/checkdigits/CheckDigit.html" title="interface in com.modp.checkdigits">CheckDigit</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>digits</CODE> - - a string containing data
<DT><B>Returns:</B><DD>an integer representing the check digit</DL>
</DD>
</DL>
<HR>

<A NAME="getCheckDigit(java.lang.String)"><!-- --></A><H3>
getCheckDigit</H3>
<PRE>
public int <B>getCheckDigit</B>(java.lang.String&nbsp;digits)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../com/modp/checkdigits/CheckDigit.html" title="interface in com.modp.checkdigits">CheckDigit</A></CODE></B></DD>
<DD>Extract just the check digits from an encoded string
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../com/modp/checkdigits/CheckDigit.html#getCheckDigit(java.lang.String)">getCheckDigit</A></CODE> in interface <CODE><A HREF="../../../com/modp/checkdigits/CheckDigit.html" title="interface in com.modp.checkdigits">CheckDigit</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>digits</CODE> - input data containing check and data digits
<DT><B>Returns:</B><DD>the check digit, as an int.</DL>
</DD>
</DL>
<HR>

<A NAME="getData(java.lang.String)"><!-- --></A><H3>
getData</H3>
<PRE>
public java.lang.String <B>getData</B>(java.lang.String&nbsp;digits)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../com/modp/checkdigits/CheckDigit.html" title="interface in com.modp.checkdigits">CheckDigit</A></CODE></B></DD>
<DD>Extracts the raw data without the check digits
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../com/modp/checkdigits/CheckDigit.html#getData(java.lang.String)">getData</A></CODE> in interface <CODE><A HREF="../../../com/modp/checkdigits/CheckDigit.html" title="interface in com.modp.checkdigits">CheckDigit</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>digits</CODE> - -- A string containing only digits 0-9
<DT><B>Returns:</B><DD>a string without check digits</DL>
</DD>
</DL>
<!-- ========= END OF CLASS DATA ========= -->
<HR>


<!-- ======= START OF BOTTOM NAVBAR ====== -->
<A NAME="navbar_bottom"><!-- --></A>
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="class-use/CheckLuhnMod10.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../index-files/index-1.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../com/modp/checkdigits/CheckISO7064Mod97_10.html" title="class in com.modp.checkdigits"><B>PREV CLASS</B></A>&nbsp;
&nbsp;NEXT CLASS</FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="CheckLuhnMod10.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;<SCRIPT type="text/javascript">
  <!--
  if(window==top) {
    document.writeln('<A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
  <A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>

</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_bottom"></A>
<!-- ======== END OF BOTTOM NAVBAR ======= -->

<HR>

</BODY>
</HTML>

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

About the Author

Jeffrey Walton
Systems / Hardware Administrator
United States United States
No Biography provided

| Advertise | Privacy | Mobile
Web04 | 2.8.140721.1 | Last Updated 27 Nov 2007
Article Copyright 2006 by Jeffrey Walton
Everything else Copyright © CodeProject, 1999-2014
Terms of Service
Layout: fixed | fluid