Password Generator

by vovkasolovev

HTML

<div id="sec_options">
<div class="chboxl">Password Length:</div>
<div class="chboxr">
<select id="pgLength" onclick="SaveOptions( false );">
<optgroup label="Weak">
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
</optgroup>
<optgroup label="Strong">
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>		
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
<option value="24">24</option>
<option value="25">25</option>
<option value="26">26</option>
<option value="27">27</option>
<option value="28">28</option>
<option value="29">29</option>
<option value="30">30</option>
<option value="31">31</option>
<option value="32">32</option>
<option value="33">33</option>
<option value="34">34</option>
<option value="35">35</option>
<option value="36">36</option>
<option value="37">37</option>
<option value="38">38</option>
<option value="39">39</option>
<option value="40">40</option>
<option value="41">41</option>
<option value="42">42</option>
<option value="43">43</option>
<option value="44">44</option>
<option value="45">45</option>
<option value="46">46</option>
<option value="47">47</option>
<option value="48">48</option>
<option value="49">49</option>
<option value="50">50</option>
</optgroup>
</select>
</div>




<div class="chboxl">Include Numbers:</div>
<div class="chboxr"><label><input type="checkbox" name="Numbers" id="Numbers" onclick="SaveOptions( false );">( e.g. 123456 )</label></div>

<div class="chboxl">Include Lowercase Characters:</div>
<div class="chboxr"><label><input type="checkbox" name="Lowercase" id="Lowercase" onclick="SaveOptions( false );">( e.g. abcdefgh...

JavaScript

function SelectAll(id)
{
	$(id).focus();
	$(id).select();
}


function OnCopy()
{
	var copyText = $("final_pass");

  copyText.select();
  copyText.setSelectionRange(0, 99999); /*For mobile devices*/

  document.execCommand("copy");
}

function auto_grow( element ) 
{
    element.style.height = "5px";
    element.style.height = (element.scrollHeight + 10 )+"px";
}

function MakePhonetic( szPassword )
{
	var theWords = [ "ace", "best", "coffee", "drip", "egg", "fruit", "golf", "hi", "ice", "jack", "korean", "loft", "music", "nut", "omelet", "park", "queen", "rope", "sound", "top", "up", "video", "walmart", "x", "you", "zip" ];
	var szPhonetic = "";
	
	for( var i = 0; i < szPassword.length; i++ )
	{
		var c = szPassword.charCodeAt( i );
		if( 65 <= c && c <= 90 )
		{
			c -= 65;
			szPhonetic += theWords[ c ].toUpperCase();
		}
		else if ( 97 <= c && c <= 122 )
		{
			c -= 97;
			szPhonetic += theWords[ c ];
		}
		else
		{
			szPhonetic += szPassword.substring( i, i + 1 );
		}
		
		szPhonetic+=" ";
	}
	return szPhonetic;
}

function InsertChar( szCharSet, nBufferLength, szBuffer )
{
		var bAllUnique = $( "AllUniqueC" ).checked;
		if( bAllUnique == false )
		{
			var nPos = Math.floor( Math.random() * szCharSet.length );
			var nInsertPos = Math.floor( Math.random() * nBufferLength ); 			
			var szSwap = szBuffer.substring( 0, nInsertPos ) + szCharSet.substring( nPos, nPos+1 ) + szBuffer.substring( nInsertPos, nBufferLength );
			szBuffer = szSwap;
			return szBuffer;	
		}
	
		var szSwap = "";
		var szCharSetCopy = szCharSet;
		while( true )
		{
			if( szCharSetCopy.length == 0 )
			{
				break;	
			}
			var nPos = Math.floor( Math.random() * szCharSetCopy.length );	
			var szNewTmp = szCharSetCopy.substring( nPos, nPos+1 );
			var nTmp = szBuffer.indexOf( szNewTmp );
			
			if( nTmp == -1 )
			{
				var nInsertPos = Math.floor( Math.random() * nBufferLength ); 			
				szSwap = szBuffer.substring( 0, nInsertPos ) + szNewTmp + szBuffer.substring( nInsertPos,...