// add a repeat function to the String object
// example: var string = '-'; alert(string.repeat(5)+"foo");
String.prototype.repeat = function(l){
	return new Array(l+1).join(this);
};


function getURL(url){
	document.location = url;
}

function mouseover(elementName, style){
	id = document.getElementById(elementName);
	id.className = style;
}

function mouseout(elementName, style){
	id = document.getElementById(elementName);
	id.className = style;
}
// General delete confirm message
function deleteConfirm(url, message){
	x = window.confirm("Are you sure you want to delete "+message+"?");
	if(x){
		document.location = url;	
	}

}

function aDivB(domItemNum1, domItemNum2){
	if (document.getElementById){
		var item1 = document.getElementById([domItemNum1]);
		var item2 = document.getElementById([domItemNum2]);
		
		var a = item1.value;
		var b = item2.value;
		// Make sure a and b are floats
		a = parseFloat(a);
		b = parseFloat(b);

		return Math.round((a/b)*100)/100;
	}
}

function scrubPuncuation(string){
		string = string.replace(/[,$#]/ig, '');
		return string;
}

// Menuing functions--------------------------------------------------------



function showHide(theidPrefix, theidNum){
	// show clicked menu element	
	if (document.getElementById) {
		var switch_id = document.getElementById([theidPrefix+theidNum]);

		n = 0;
		while( document.getElementById([theidPrefix+n]) ){
			var id = document.getElementById([theidPrefix+n]);
		
			if(n != theidNum){
				id.className = 'hide';
				// swap image
				if(document.getElementById(theidPrefix+"SubImg"+n)){
					document.getElementById(theidPrefix+"SubImg"+n).src = 'images/icon_plus_b.gif';
				}
			} else {
				id.className = 'show';
				setCurrentMenuItem(theidPrefix, theidNum);
				// swap images
				if(document.getElementById(theidPrefix+"SubImg"+n)){
				document.getElementById(theidPrefix+"SubImg"+n).src = 'images/icon_minus_b.gif';
				}

			}
		n++;
		}
	}
}

function hideMenu(theidPrefix, theidNum){
	// hide clicked menu element	
	if (document.getElementById) {
		var id = document.getElementById([theidPrefix+theidNum]);
		id.className = 'hide';
	}
}

// to be called on page load for the left nav
function refreshNav(theidPrefix){
	n = 0;
	while( document.getElementById([theidPrefix+n]) ){

		var id = document.getElementById([theidPrefix+n]);
		
		if(getCurrentMenuItem() != null){
			if(getCurrentMenuItem() != theidPrefix+n){
			
				id.className = 'hide';
				// swap images
				if(document.getElementById(theidPrefix+"SubImg"+n)){
				document.getElementById(theidPrefix+"SubImg"+n).src = 'images/icon_plus_b.gif';
				}				
			} else {
			
				id.className = 'show';
				// swap images
				if(document.getElementById(theidPrefix+"SubImg"+n)){
					document.getElementById(theidPrefix+"SubImg"+n).src = 'images/icon_minus_b.gif';
				}
			}
		}
		n++;
	}
}

function getCurrentMenuItem(){
	return getCookieData('mgr_currentLeftNavDiv');
}

function setCurrentMenuItem(theidPrefix, theidNum){
	setCookieData('mgr_currentLeftNavDiv', theidPrefix+theidNum, 1);
}

// Generic cookie functions
function setCookieData(name, data, expiredays) {
    var expDate = getExpDate(0, expiredays, 0);
	// setCookie() is defined in cookies.js
    setCookie(name, data, expDate,"","capital-residential.com"); 
}

function getCookieData(name) {
    var data = getCookie(name);
	return data;
}

// Menuing functions--------------------------------------------------------



// New Contract functions--------------------------------------------------------


function spawnElement(theidPrefix, template){ // spawnElement() is derived from showHide() above. 

	if (document.getElementById) {

		// Get specified empty parent to create children under
		var id = document.getElementById(theidPrefix);
		// find next available child name
		n = 0;
		while( document.getElementById([theidPrefix+'_child'+n]) ){
			n++;
		}
		// Create new DOM element
		var newDiv = document.createElement('div');
		id.appendChild(newDiv);
		newDiv.id = theidPrefix+'_child'+n;
		// Get template HTML for the new element
		var temp = document.getElementById(template);
		var newHTML = temp.innerHTML;
		// Create regex object to match keyword for hideAndClearElement(), and replace it
		var regex = /THEIDNUM/;
		newHTML = newHTML.replace(regex, n);
		// Show parent 
		id.className = 'show';
		// Add design specific HTML prefix and suffix to ensure well formatted HTML
		newHTML = '<table>'+newHTML+'</table>';
		// IE compatability code (curse you IE!!!)
		try {
			// Output HTML		
			newDiv.innerHTML = newHTML;
		} 
		catch (e) {
			alert('There was an error creating a new element in spawnElement(). Please report this to Sierra Corporation. ');
//			var wrappingDiv = document.createElement('div');
//			wrappingDiv.innerHTML = newHTML;
//			id.appendChild(wrappingDiv);
		}
		return null;
	}
}

function hideAndClearElement(theidPrefix, theidNum){
	
	// hide element	and clear it's contents
	if (document.getElementById) {
		var para = document.getElementById([theidPrefix]);
    	var child = document.getElementById([theidPrefix+'_child'+theidNum]);
	    var removed = para.removeChild(child);
	}
}


/*******************************************************************************
"myunescape ()", by Charlton Rose http://sharkysoft.com/tutorials/jsa/content/044.html
Permission is granted to use and modifiy this script for any purpose,
provided that this credit header is retained, unmodified, in the script.
*******************************************************************************/
// This function is included to overcome a bug in Netscape's implementation
// of the escape () function:
function myunescape (str)
{
	str = "" + str;
	while (true)
	{
		var i = str . indexOf ('+');
		if (i < 0)
			break;
		str = str . substring (0, i) + '%20' +
			str . substring (i + 1, str . length);
	}
	return unescape (str);
}


// ----------------------------------------------------------------------------------
// Return an object's properties in an alert box. May not work. 
function inspect(object){
	obj = eval(object);
	var temp = "inspect():\n";
	for (x in obj)
	temp += x + ": " + obj[x] + "\n";
	alert (temp);
}
// ----------------------------------------------------------------------------------
// If boxCheck is not empty and toggle is not checked, boxTarget will be disabled. 
// Call without 3rd argument to always disable boxTarget when boxCheck has contents
function checkBoxContents(boxTarget, boxCheck, toggle){
	var boxTarget = document.getElementById(boxTarget);
	var boxCheck = document.getElementById(boxCheck);
	if(typeof toggle == 'undefined'){
		toggle = new Object();
		toggle.checked = false;
	} else {
		var toggle = document.getElementById(toggle);
	}
	
	if(boxCheck.value != ''){ 
		if(toggle.checked != true){
			boxTarget.disabled = true;
		} else {
			boxTarget.disabled = false;
		}
	} else {
		boxTarget.disabled = false;
	}					
}

function clearSelectBox(targetBoxID){
	var box = document.getElementById(targetBoxID);
	box.length = 0;
	box.options[0] = new Option('Select One..','');		
}

function disableSelectBox(targetBoxID){
	var box = document.getElementById(targetBoxID);
	box.disabled = true;
}
// ----------------------------------------------------------------------------------
// data table xform a cell into an input box
function setEditable_OLD(theId, rowID){
	
	if (document.getElementById && document.createElement) {
		var butt = document.createElement('BUTTON');
		var buttext = document.createTextNode('Ready!');
		butt.appendChild(buttext);
		butt.onclick = saveEdit;
	}
}


