//Find/Remove Duplicate Lines from Text (Javascript) is Copyright 2010 TextMechanic.com All Rights Reserved

function linecnt(){
if(document.form_rdup.input_output.value.length > 0){
f=document.form_rdup;
f.line_count.value=f.input_output.value.split(/\n/).length;}
else document.form_rdup.line_count.value = '0';}

Array.prototype.clean = function(remove_item){
var a;
for (a = 0; a < this.length; a++){
if (this[a] == remove_item){
this.splice(a,1);a--;}
}return this;}

function disrem(){
if (document.form_rdup.find_mode.checked == false) var found_removed = 'removed';
if (document.form_rdup.find_mode.checked == true) var found_removed = 'found';
if (document.form_rdup.dis_rem.checked == true) document.getElementById('removed_div').style.display = 'block';
if (document.form_rdup.dis_rem.checked == true) document.getElementById('removed_div').innerHTML = '<div style="margin-top:10px;">Duplicate lines ' + found_removed + ':</div><textarea name="removed_output" style="width:100%; height:200px; font-family:Arial; font-size:14px; overflow-y:scroll; overflow-x:scroll; border: 1px solid #000000;" wrap="off"></textarea>';
if (document.form_rdup.dis_rem.checked == false) document.getElementById('removed_div').innerHTML = '';
if (document.form_rdup.dis_rem.checked == false) document.getElementById('removed_div').style.display = 'none';}

function cleartext(){
document.form_rdup.input_output.value = '';}

function rduplin(){

if (document.form_rdup.dis_rem.checked == false) document.getElementById('removed_div').style.display = 'none';

if (document.form_rdup.find_mode.checked == false){
var count = 0;
var text = document.form_rdup.input_output.value;
text = text.replace(/\r/g,'');
var listvalues = new Array();
var newlist = new Array();
var removedlist = new Array();
if (document.form_rdup.rel.checked == true) listvalues = text.split('\n').clean('');
if (document.form_rdup.rel.checked == false) listvalues = text.split('\n');
var hash = new Array();
for (var i=0; i<listvalues.length; i++){
if (listvalues[i] != ''){
if (hash[listvalues[i].toLowerCase()] != 1) {newlist = newlist.concat(listvalues[i]); hash[listvalues[i].toLowerCase()] = 1}
else {count++; removedlist = removedlist.concat([i + 1] + '. ' + listvalues[i]);}} else newlist = newlist.concat(listvalues[i]);}
document.form_rdup.input_output.value = newlist.join('\n');
if (document.form_rdup.dis_rem.checked == true) document.form_rdup.removed_output.value = removedlist.clean('').join('\n');
document.getElementById('removed').innerHTML = count + ' removed.';}

if (document.form_rdup.find_mode.checked == true){
var count = 0;
var text = document.form_rdup.input_output.value;
text = text.replace(/\r/g,'');
var listvalues = new Array();
var newlist = new Array();
var removedlist = new Array();
if (document.form_rdup.rel.checked == true) listvalues = text.split('\n').clean('');
if (document.form_rdup.rel.checked == false) listvalues = text.split('\n');
var hash = new Array();
for (var i=0; i<listvalues.length; i++){
if (listvalues[i] != ''){
if (hash[listvalues[i].toLowerCase()] != 1) {newlist = newlist.concat(listvalues[i]); hash[listvalues[i].toLowerCase()] = 1}
else {count++; var dupfound = [i + 1] + '. ' + 'DUPLICATE=>' + listvalues[i] + '<=DUPLICATE'; newlist = newlist.concat(dupfound); removedlist = removedlist.concat([i + 1] + '. ' + listvalues[i]);}} else newlist = newlist.concat(listvalues[i]);}
document.form_rdup.input_output.value = newlist.join('\n');
if (document.form_rdup.dis_rem.checked == true) document.form_rdup.removed_output.value = removedlist.clean('').join('\n');
document.getElementById('removed').innerHTML = count + ' found.';}}

function rduplincs(){

if (document.form_rdup.dis_rem.checked == false) document.getElementById('removed_div').style.display = 'none';

if (document.form_rdup.find_mode.checked == false){
var count = 0;
var text = document.form_rdup.input_output.value;
text = text.replace(/\r/g,'');
var listvalues = new Array();
var newlist = new Array();
var removedlist = new Array();
if (document.form_rdup.rel.checked == true) listvalues = text.split('\n').clean('');
if (document.form_rdup.rel.checked == false) listvalues = text.split('\n');
var hash = new Array();
for (var i=0; i<listvalues.length; i++){
if (listvalues[i] != ''){
if (hash[listvalues[i]] != 1) {newlist = newlist.concat(listvalues[i]); hash[listvalues[i]] = 1}
else {count++; removedlist = removedlist.concat([i + 1] + '. ' + listvalues[i]);}} else newlist = newlist.concat(listvalues[i]);}
document.form_rdup.input_output.value = newlist.join('\n');
if (document.form_rdup.dis_rem.checked == true) document.form_rdup.removed_output.value = removedlist.clean('').join('\n');
document.getElementById('removed').innerHTML = count + ' removed.';}

if (document.form_rdup.find_mode.checked == true){
var count = 0;
var text = document.form_rdup.input_output.value;
text = text.replace(/\r/g,'');
var listvalues = new Array();
var newlist = new Array();
var removedlist = new Array();
if (document.form_rdup.rel.checked == true) listvalues = text.split('\n').clean('');
if (document.form_rdup.rel.checked == false) listvalues = text.split('\n');
var hash = new Array();
for (var i=0; i<listvalues.length; i++){
if (listvalues[i] != ''){
if (hash[listvalues[i]] != 1) {newlist = newlist.concat(listvalues[i]); hash[listvalues[i]] = 1}
else {count++; var dupfound = [i + 1] + '. ' + 'DUPLICATE=>' + listvalues[i] + '<=DUPLICATE'; newlist = newlist.concat(dupfound); removedlist = removedlist.concat([i + 1] + '. ' + listvalues[i]);}} else newlist = newlist.concat(listvalues[i]);}
document.form_rdup.input_output.value = newlist.join('\n');
if (document.form_rdup.dis_rem.checked == true) document.form_rdup.removed_output.value = removedlist.clean('').join('\n');
document.getElementById('removed').innerHTML = count + ' found.';}}

function SelectAll(id) {
document.getElementById(id).focus();
document.getElementById(id).select();}