var Merge = {
	cancel: false, cancelConf: false, doMerge: false, doMergeRow: false, areYouSure: false, mergeForm: false,
	fieldNames: Array(),
	
	init: function() {
		// get some commonly used objects
		Merge.cancel = document.getElementById('cancel');
		Merge.cancelConf = document.getElementById('cancelConf');
		Merge.doMerge = document.getElementById('doMerge');
		Merge.doMergeRow = document.getElementById('doMergeRow');
		Merge.areYouSure = document.getElementById('areYouSure');
		Merge.mergeForm = document.getElementById('submitMerge');
		
		if(!Merge.cancel) {
			return;
		}
		
		// now for some default setup...
		Lib.addEvent(Merge.cancel, 'click', function() { history.back(); });
		Lib.addEvent(Merge.doMerge, 'click', Merge.doConfirm);
		Lib.addEvent(Merge.cancelConf, 'click', Merge.canConfirm);
		Lib.addEvent(Merge.mergeForm, 'submit', Merge.canConfirm);
		
		// now form our field names array...
		Merge.fieldNames = Array(
			'business_name', 'contact_name', 'street_addr',
			'location', 'phone', 'fax', 'email', 'website'
		);
	},
	
	// show the confirm
	doConfirm: function(e) {
		Merge.areYouSure.style.display = 'block';
		Merge.doMergeRow.style.display = 'none';
		
		for(var i in Merge.fieldNames) {
			f = Merge.fieldNames[i];
			objSub = document.getElementById('sub_' + f);
			objCur = document.getElementById('cur_' + f);
			objFin = document.getElementById('fin_' + f);
			objFin.className = 'mergeMisMatch';
			objFin.style.display = 'block';
			
			if(!objSub && !objCur) {
				objFin.style.display = 'none';
				continue;
			}
			
			inputCur = false;
			inputSub = false;
			labelCur = objCur.getElementsByTagName('label')[0];
			labelSub = objSub.getElementsByTagName('label')[0];
			regInput = new RegExp('<input[^>]+>(.+)$', 'i');
			
			if(labelCur) {
				inputCur = labelCur.getElementsByTagName('input')[0];
				inputCur.disabled = true;
			}
			
			if(labelSub) {
				inputSub = labelSub.getElementsByTagName('input')[0];
				inputSub.disabled = true;
			}
			
			if(inputCur && inputSub) {
				if(inputCur.checked) {
					objFin.innerHTML = labelCur.innerHTML.replace(regInput, "$1");
				}
				
				else {
					objFin.innerHTML = labelSub.innerHTML.replace(regInput, "$1");
				}
			}
			
			else if(inputCur && !inputSub) {
				objFin.innerHTML = labelCur.innerHTML.replace(regInput, "$1");
			}
			
			else if(inputSub && !inputCur) {
				objFin.innerHTML = labelSub.innerHTML.replace(regInput, "$1");
			}
			
			else {
				objFin.innerHTML = objCur.innerHTML;
			}
		}
	},
	
	// hide the confirm
	canConfirm: function(e) {
		Merge.areYouSure.style.display = 'none';
		
		try {
			Merge.doMergeRow.style.display = 'table-row';
		} 
		
		catch(csserror) {
			Merge.doMergeRow.style.display = 'block';
		}
		
		for(var i in Merge.fieldNames) {
			f = Merge.fieldNames[i];
			objSub = document.getElementById('sub_' + f);
			objCur = document.getElementById('cur_' + f);
			objFin = document.getElementById('fin_' + f);
			
			if(!objSub && !objCur) {
				objFin.style.display = 'none';
				continue;
			}
			
			inputCur = false;
			inputSub = false;
			labelCur = objCur.getElementsByTagName('label')[0];
			labelSub = objSub.getElementsByTagName('label')[0];
			
			if(labelCur) {
				inputCur = labelCur.getElementsByTagName('input')[0];
				inputCur.disabled = false;
			}
			
			if(labelSub) {
				inputSub = labelSub.getElementsByTagName('input')[0];
				inputSub.disabled = false;
			}
		}
	}
}

Lib.addEvent(window, 'load', Merge.init);