//
// Filename:	utils.js
// Description:	Provides support for client-side activities
//

// setFocus(fieldName)
// Sets focus to the specified field
function setFocus(fieldName) {
	ele = document.getElementById(fieldName);

	ele.focus();
	if ( (! ele.selectedIndex) & (ele.getAttribute('Type') == 'text') ) {
		document.getElementById(fieldName).select();
	}
}

//
// updateCharCount(ele, maxChars)
//
// Limits ele's content length to maxChars and updates ele's panel with remaining char count
//
function updateCharCount(ele, maxChars) {
	var charCount = ele.value.length;

	// Truncate value if greater than maxChars
	if ( charCount > maxChars ) {
		charCount = maxChars;
		ele.value = ele.value.substr(0, maxChars);
	}

	var remainingChars = maxChars - charCount;
	var eleName = ele.id;
	var panel = eleName + 'Panel';

	document.getElementById(panel).innerHTML = '(' + remainingChars + ' chars)';
}

//
// updateNewsContentType()
//
// Changes the type of content form field based on selected news type
//
function updateNewsContentType() {
	var frmEle = document.getElementById('TypeID');
	var frmVal = frmEle.options[frmEle.selectedIndex].text;
	// var textEle = document.getElementById('Content_Text');
	var textDiv = document.getElementById('FormControl_Text');
	var fileEle = document.getElementById('Content_File');
	var fileDiv = document.getElementById('FormControl_File');
	var urlEle = document.getElementById('Content_URL');
	var urlDiv = document.getElementById('FormControl_URL');

	switch(frmVal) {
		case 'Text':
			// textEle.disabled = false;
			textDiv.style.display = 'block';
			fileEle.disabled = true;
			fileDiv.style.display = 'none';
			urlEle.disabled = true;
			urlDiv.style.display = 'none';
			break;

		case 'Download':
			// textEle.disabled = true;
			textDiv.style.display = 'none';
			fileEle.disabled = false;
			fileDiv.style.display = 'block';
			urlEle.disabled = true;
			urlDiv.style.display = 'none';
			break;

		case 'URL':
			// textEle.disabled = true;
			textDiv.style.display = 'none';
			fileEle.disabled = true;
			fileDiv.style.display = 'none';
			urlEle.disabled = false;
			urlDiv.style.display = 'block';
			if ( urlEle.value == '' ) {
				urlEle.value = 'http://';
			}
			break;
	}
}


//
// updateMediaType()
//
// Enables/disables the Album Thumbnail checkbox based on selected Media Type
//
function updateMediaType() {
	var frmEle = document.getElementById('TypeID');
	var frmVal = frmEle.options[frmEle.selectedIndex].text;
	var chkEle = document.getElementById('AlbumThumbnailInd');
	var chkDiv = document.getElementById('FormControl_AlbumThumbnailInd');

	if ( frmVal == 'Video' ) {
		chkEle.disabled = true;
		chkDiv.disabled = true;
	} else {
		chkEle.disabled = false;
		chkDiv.disabled = false;
	}
}



//
// processHomePageInd()
//
// Checks value of HomePageInd and enables/disables HomePageEndDate accordingly
//
function processHomePageInd() {
	var indEle = document.getElementById('HomePageInd');
	var dateEle = document.getElementById('HomePageEndDate');

	if ( indEle.checked ) {
		enableField(dateEle.id);
		setFocus(dateEle.id);
	} else {
		disableField(dateEle.id);
	}
}



//
// processHighlightInd()
//
// Checks value of HighlightInd and enables/disables UrgentInd accordingly
//
function processHighlightInd() {
	var indEle = document.getElementById('HighlightInd');
	var urgEle = document.getElementById('UrgentInd');

	if ( indEle.checked ) {
		enableField(urgEle.id);
		setFocus(urgEle.id);
	} else {
		disableField(urgEle.id);
	}
}



//
// processEmailAdminInd()
//
// Checks value of EmailAdminInd and enables/disables UserID accordingly
//
function processEmailAdminInd() {
	var indEle = document.getElementById('EmailAdminInd');
	var userEle = document.getElementById('UserID');

	if ( indEle.checked ) {
		enableField(userEle.id);
		setFocus(userEle.id);
	} else {
		disableField(userEle.id);
	}
}



//
// enableField(id)
//
// Enables the specified form field
//
function enableField(id) {
	// Get reference to field
	var fld = document.getElementById(id);

	// Enable field
	fld.disabled = false;

	// Update styles
	fld.className = fld.className.replace("disabled", "");
	if ( document.getElementById(fld.id + "Label") ) {
		document.getElementById(fld.id + "Label").className = document.getElementById(fld.id + "Label").className.replace("disabled", "");
	}
}


//
// disableField(id)
//
// Disables the specified form field
//
function disableField(id) {
	// Enable field to remove class names
	enableField(id);

	// Get reference to field
	var fld = document.getElementById(id);

	// Disable field
	fld.disabled = true;

	// Update styles
	fld.className += " disabled";
	if ( document.getElementById(fld.id + "Label") ) {
		document.getElementById(fld.id + "Label").className += " disabled";
	}
}


//
// setResource(src)
//
// Sets the value of the Resource field using src field's value
//
function setResource(src) {
	var value = src.value;
	var target = document.getElementById('Resource');

	// Replace white-space characters with underscore
	value = value.replace(/[\t\s]/g, "_");

	// Remove non-alphanumeric characters
	value = value.replace(/\W/g, "");

	// Set target value
	target.value = value;
}


//
// setTime(fldId)
//
// Sets hidden time field value based on time select lists
//
function setTime(fldId) {
	var fld = document.getElementById(fldId);
	var fld_H = document.getElementById(fldId + '_H');
	var val_H = fld_H.options[fld_H.selectedIndex].value;
	var fld_M = document.getElementById(fldId + '_M');
	var val_M = fld_M.options[fld_M.selectedIndex].value;
	var fld_T = document.getElementById(fldId + '_T');
	var val_T = fld_T.options[fld_T.selectedIndex].value;

	// If select fields are not blank, join them and set hidden field value
	if ( (val_H != -1) && (val_M != -1) && (val_T != '') ) {
		fld.value = val_H + ':' + val_M + ' ' + val_T;
	} else {
		fld.value = '';
	}
}


//
// selectAll(fldName, fldCount, checked)
//
// Checks or unchecks all checkboxes on the page
//
function selectAll(fldName, fldCount, checked) {
	var ele = '';

	// Iterate from 1 to fldCount
	for ( var i = 1; i <= fldCount; i++ ) {
		// Get reference to element
		ele = document.getElementById(fldName + i);

		// Set element to checked/unchecked
		ele.checked = checked;
	}
}


//
// swapImage(ele, src)
//
// Swaps the element image's source with the supplied source
//
function swapImage(ele, src) {
	ele.src = src;
}


//
// validatePhoto(frm, fld)
//
// Validates that filename in fld ends in .jpg or .gif then submits frm
//
function validatePhoto(frm, fld, type) {
	var undef;
	var frmEle = document.getElementById(frm);
	var fldEle = document.getElementById(fld);
	var typeEle = document.getElementById(type);
	var typeVal = '';
	if ( typeEle.selectedIndex == undef ) {
		typeVal = typeEle;
	} else {
		typeVal = typeEle.options[typeEle.selectedIndex].text;
	}
	var ext = fldEle.value.split(".")[fldEle.value.split(".").length - 1];

	if ( (typeVal == 'Photo') && (fldEle.value != '') && (ext.toLowerCase() != 'jpg') && (ext.toLowerCase() != 'jpeg') && (ext.toLowerCase() != 'gif') ) {
		alert("ERROR: Photo must be a valid GIF or JPG image file.");
	} else if ( (typeVal == 'Video') && (fldEle.value != '') && (ext.toLowerCase() != 'wmv') && (ext.toLowerCase() != 'asf') && (ext.toLowerCase() != 'mov') && (ext.toLowerCase() != 'qt') && (ext.toLowerCase() != 'mpg') && (ext.toLowerCase() != 'mpeg') ) {
		alert("ERROR: Video must be a valid Windows Media (WMV or ASF), MPG, or QuickTime (MOV or QT) video file.");
	} else {
		frmEle.submit();
	}
}


//
// validateFileName(fld)
//
// Validates that filename in fld does not include non-standard characters
//
function validateFileName(fld) {
	var fnName = fld.value.split('\\');
	var filename = fnName[fnName.length - 1];
	var valid = true;
	var idx = -1; 

	for (var i = 0; i < filename.length; i++ ) {
		if ( filename.charAt(i).search(/[A-Za-z0-9\.\-_ ]/) == -1 ) {
			valid = false;
		}
	}

	if ( ! valid ) {
		alert("ERROR: Filename contains illeagal characters.  Please rename the file and try again.");
	}
}


//
// updateFormFieldType();
//
// Enables/disables the ValueOptions field based on selected Field Type
//
function updateFormFieldType() {
	var frmEle = document.getElementById('TypeID');
	var frmVal = frmEle.options[frmEle.selectedIndex].text;
	var optEle = document.getElementById('ValueOptions');
	var optDiv = document.getElementById('FormControl_ValueOptions');

	if ( (frmVal != 'Select List (Single)') && (frmVal != 'Select List (Multi)') && (frmVal != 'Radio Button') ) {
		optEle.disabled = true;
		optDiv.disabled = true;
	} else {
		optEle.disabled = false;
		optDiv.disabled = false;
	}
}


//
// formatPhoneNumber(ele);
//
// Removes non-numeric characters and formats phone number
//
function formatPhoneNumber(ele) {
	var oldValue = ele.value;
	var tempValue = '';
	var newValue = '';

	// Remove non-numeric characters
	for ( var i = 0 ; i < oldValue.length; i++ ) {
		ch = oldValue.charAt(i);

		if ( (ch.charCodeAt(0) >= 48) && (ch.charCodeAt(0) <= 57) ) {
			tempValue = '' + tempValue + ch;
		}
	}

	// Format string
	for ( var i = 0 ; i < tempValue.length; i++ ) {
		if ( i == 0 ) {
			newValue = '(' + tempValue.charAt(i);
		} else if ( i == 2 ) {
			newValue = newValue + tempValue.charAt(i) + ') ';
		} else if ( i == 5 ) {
			newValue = newValue + tempValue.charAt(i) + '-';
		} else {
			newValue = newValue + tempValue.charAt(i);
		}
	}

	// Return formatted string
	ele.value = newValue;
}


//
// formatNumeric(ele);
//
// Removes non-numeric characters
//
function formatNumeric(ele) {
	var oldValue = ele.value;
	var tempValue = '';

	// Remove non-numeric characters
	for ( var i = 0 ; i < oldValue.length; i++ ) {
		ch = oldValue.charAt(i);

		if ( ((ch.charCodeAt(0) >= 48) && (ch.charCodeAt(0) <= 57) || (ch.charCodeAt(0) == 46)) ) {
			tempValue = '' + tempValue + ch;
		}
	}

	// Return formatted string
	ele.value = tempValue;
}


//
// changeTabContent()
//
// Changes the contents of a tab while maintaining width
//
function changeTabContent(id, val, useWidth) {
	var ele = document.getElementById(id);

	// if using width of "old" content, get width
	if ( useWidth ) {
		ele.style.width = "auto";

		if ( document.all ) {
			w = ele.offsetWidth - 20;
		} else {
			w = ele.offsetWidth - 20;
		}
	}

	// Change content
	ele.innerText = val;

	// if using width of "old" content, set width
	if ( useWidth ) {
		ele.style.width = w + "px";
	}

}


//
// setCookie()
//
// Sets a cookie
//
function setCookie(name, value, expires, path, domain, secure)
{
	var curCookie = name + "=" + escape(value) +
		((expires) ? "; expires=" + expires.toGMTString() : "") +
		((path) ? "; path=" + path : "") +
		((domain) ? "; domain=" + domain : "") +
		((secure) ? "; secure" : "");
	document.cookie = curCookie;
}

