function form_expandoDel( name, num ) {
	var obTable = document.getElementById(name + '_expandoitem' + num); 
	obTable.style.display = 'none'; /* parentNode.removeChild(obTable); */
}

function form_expandoAdd( name) {
	var obHidden = document.getElementById(name + '_expandohide');	
	var inOrd	 = ++( document.getElementById(name + '_expandoNextNum').value);
	var stHTML	 = obHidden.innerHTML;
	var obReg	 = /\[n\]/gi;
	stHTML = stHTML.replace( obReg, inOrd );

	if (typeof HTMLElement!="undefined") {	
		var obRange = document.createRange()
		obRange.setStartBefore(obHidden.previousSibling);
		obHidden.parentNode.insertBefore(obRange.createContextualFragment(stHTML),obHidden.previousSibling);		
	} else {
		obHidden.previousSibling.insertAdjacentHTML('beforeBegin',stHTML)
	}
}

var form_dialogInput = null, form_dialogHandle = null, form_dialogDisplay = null;

function form_dialogOpen( obInput, obDisplay, url, height, width ) {
	
	if (form_dialogInput!=null) { form_dialogClose() };
	
	form_dialogInput = obInput;
	form_dialogDisplay = obDisplay;

	form_dialogHandle = window.open(url.replace('[id]',obInput.value),'popup','height=' + height + ', width=' + width +', resizable=no, location=no, scrollbars=no, status=no, menubar=no, toolbar=no');
	form_dialogHandle.focus();
	window.onfocus = form_dialogFocus; 
	
}

function form_openBrowse( ob, type, dir ) {
	var szType = '', szDir='';
	switch (type) {
		case 'image' :
			szType = 'Type=Image&';
			break;
	}
	if (dir.length>0) {
		szDir = 'ServerPath=' + escape(dir) + '&'
	}
	form_dialogOpen( ob, stFCKPath + 'editor/filemanager/browser/default/browser.html?' + szType + szDir + 'Connector=connectors/asp/connector.asp', 400, 600 )
}

function form_dialogFocus () {
	if (form_dialogHandle!=null) {
		if (!form_dialogHandle.closed) {
			form_dialogHandle.focus();
		} else {
			//form_dialogClose( window );
		}
	}
}


function form_dialogClose ( obWin ) {
	if ( obWin==undefined) {
		obWin = window;
	}
	
	if (obWin.form_dialogHandle!=null) {
		if (!obWin.form_dialogHandle.closed) {
			 obWin.form_dialogHandle.close(); 
		}
	}
	window.onfocus = null;
	window.onunload = null;
	obWin.form_dialogHandle = null;
	obWin.form_dialogInput = null;
	obWin.form_dialogDisplay = null;
}

function form_dialogCallBack( inVal, stDisplay ) {
	window.opener.form_dialogInput.value = inVal;
	if (window.opener.form_dialogDisplay!=null) window.opener.form_dialogDisplay.textContent = stDisplay;
	form_dialogClose( window.opener)
}

/* next function is for file selector support and *MUST* be called SetUrl */
function SetUrl( sz ) {
	form_dialogCallBack( sz, null );
}

function form_submit( obForm ) {
	if (form_checkall(obForm)) {
		obForm.submit();
	}
}

function form_checkall( obForm ) {
	
	var coChecks = obForm.getElementsByTagName('input');
	var bReturn = true;
	var bFocus = true;

	var coCheckItem
	for (var i=0;(i<coChecks.length);i++) {
		coCheckItem = coChecks[i];		
		if ((coCheckItem.type=='hidden')&&(coCheckItem.className=='form_check')) {
			/* get name and value */
			var type = coCheckItem.name.substring(0,9);
			var name = coCheckItem.name.substr(10);
			var value = coCheckItem.value;
			var warning = coCheckItem.nextSibling;
		
			switch (type) {
				case 'formregxp' :
					if (form_checkRegExp( name, value, warning, bFocus)) { bReturn = false; bFocus=false;  }
					break;
				case 'formgrpck' :
					if (form_checkGroup( name, value, warning, bFocus)) { bReturn = false; bFocus=false; }
					break;
				case 'formlenck' :
					if (form_checkLength( name, value, warning, bFocus)) { bReturn = false; bFocus=false; }
					break;
			}
		}
	}

	return bReturn;
}
				
function form_checkRegExp( stName, stValue, obWarning, bFocus ) {
	
	var rgCheck = new RegExp(stValue, "gi");
	var inputbox = document.getElementById(stName);
	var bFailed = !rgCheck.test(inputbox.value);
	inputbox.style.backgroundColor	=bFailed?'#FFDDDD':'';
	obWarning.style.display 		=bFailed?'inline':'none';
	if (bFocus&&bFailed) { 
		inputbox.setAttribute('autocomplete','off');
		inputbox.focus(); 
	}
	return (bFailed);
}				
function form_checkLength( stName, stValue, obWarning, bFocus ) {
	var inputbox = document.getElementById(stName);
	 
	var bFailed = ( (inputbox.value.length)>parseInt(stValue));
	inputbox.style.backgroundColor	=bFailed?'#FFDDDD':'';
	obWarning.style.display 		=bFailed?'inline':'none';
	if (bFocus&&bFailed) { 
		inputbox.setAttribute('autocomplete','off');
		inputbox.focus(); 
	}
	return (bFailed);
}

function form_checkGroup( stName, stValue, obWarning, bFocus ) {

	var nMin = stValue.split(",")[0];
	var nMax = stValue.split(",")[1];
	var coChecks = document.getElementsByName(stName);
	var nCurrent = 0;
	
	for (var i=0;i<coChecks.length;i++) {
		if (coChecks[i].checked) { nCurrent++ }
	}
	var bFailed = (nCurrent>nMax||nCurrent<nMin);
	obWarning.style.display 		=bFailed?'inline':'none';
	return (bFailed);
}

function form_checkdate( name ) {

	var obDay = document.getElementById(name + '_day');
	var obMonth = document.getElementById(name + '_month');
	var obYear = document.getElementById(name + '_year');
	var obHour = document.getElementById(name + '_hour');
	var obMin = document.getElementById(name + '_min');
	var obNull = document.getElementById(name + '_null');
	
	if (obNull.checked) {
		document.getElementById(name).value = 'NULL';
		if (obDay != undefined) {
			obDay.disabled=true; obMonth.disabled=true; obYear.disabled=true;
			obDay.selectedIndex=0; obMonth.selectedIndex=0; obYear.selectedIndex=0;
		}
		if (obHour != undefined) {
			obHour.disabled=true; obMin.disabled=true;
			obHour.selectedIndex=0; obMin.selectedIndex=0;
		}
	} else {
		
		if (obDay != undefined) {
			obDay.disabled=false; obMonth.disabled=false; obYear.disabled=false;
			if (obYear.options[obYear.selectedIndex].value=='' || obMonth.options[obMonth.selectedIndex].value=='' || obDay.options[obDay.selectedIndex].value=='' ) {
				document.getElementById(name).value = 'INVALID';
			} else {
				var obDate = new Date(obYear.options[obYear.selectedIndex].value, (obMonth.options[obMonth.selectedIndex].value-1), obDay.options[obDay.selectedIndex].value);
			}
		} else {
			var obDate = new Date()
		}

		if (obHour != undefined) {
			obHour.disabled=false; obMin.disabled=false;
			if (obHour.options[obHour.selectedIndex].value=='' || obMin.options[obMin.selectedIndex].value=='') {
				document.getElementById(name).value = 'INVALID';
			} else {
				if (obDay != undefined) {
					var dtThis = new Date(obDate.getFullYear(), obDate.getMonth(), obDate.getDate(), obHour.options[obHour.selectedIndex].value, obMin.options[obMin.selectedIndex].value);
				} else {
					var dtThis = new Date(1900, 0, 1, obHour.options[obHour.selectedIndex].value, obMin.options[obMin.selectedIndex].value);
				}
			}
		} else {
			var dtThis = obDate
		}
		
		if (!isNaN(new Date(dtThis))) {
			document.getElementById(name).value = (dtThis.getFullYear() + '-' + form_2digit(dtThis.getMonth()+1) + '-' + form_2digit(dtThis.getDate()) + ' ' +  form_2digit(dtThis.getHours()) + ':' + form_2digit(dtThis.getMinutes()) + ':00');

			if (obDay != undefined) {
				obDay.selectedIndex = dtThis.getDate();
				obMonth.selectedIndex = dtThis.getMonth()+1;
				for (var i=0;i<obYear.options.length;i++) if (obYear.options[i].value==dtThis.getFullYear()) obYear.selectedIndex=i;
			}
		}
	}
}

function form_2digit( n ) {
	var str = '00'+n;
	return str.substr(str.length-2);
}

function form_toggle( id ) {
	if (typeof(id)=='string') {
		id = document.getElementById(id); 
	};
	swap(id.style, 'display', '', 'none');
	return false;
}

function form_noBubble() {
	event.cancelBubble= true;
	return false;
}

function form_setHidden(  stName, stValue, obForm ) {
	var coElements = document.getElementsByTagName("input");
	var bFound = false;
	for (var i=0;i<coElements.length;i++ ) 
		
		if ((coElements[i].getAttribute("name")==stName)&&(coElements[i].getAttribute("type")=="hidden")) 
			if (!bFound) {
				coElements[i].setAttribute("value",stValue);
				bFound = true;
			} else {
				coElements[i].setAttribute("value","");
			}
		
}

function form_dynamicSelectChange( obName, obItem, arItems, inValue, inSelectedValue ) {
	
	if ( obItem == eval('arDynSel_'+obName+'.length')+1 ) {
		document.getElementById(obName).value = document.getElementById('obDynSel_'+obName+(obItem-1)).value;
	} else {

		var obBox = document.getElementById('obDynSel_'+obName+obItem)
		form_clearBox(obBox);

		if (inValue != '') {
			if ( inSelectedValue=='' | inSelectedValue==undefined ) {
				
				//alert(eval('arDynSelLbls_'+obName+'['+obItem+']'))
				form_addBoxItem(obBox, eval('arDynSelLbls_'+obName+'['+obItem+']'), '')
			}

			for(i=0 ; i<arItems.length ; i=i+3) {
				if ( arItems[i] == inValue ) {
					form_addBoxItem(obBox, arItems[i+2], arItems[i+1])
					if ( arItems[i+1] == inSelectedValue ) {
						obBox.selectedIndex = obBox.length-1
					}
				}
			}
			obBox.disabled = false
		} else {
			form_addBoxItem(obBox, '--', '')
			obBox.disabled = true
		}
		form_dynamicSelectChange( obName, obItem+1, eval('arDynSel_'+obName+'['+(obItem-1)+']'), obBox.value, '' )
	}
}

function form_clearBox(formItem) {
	for(i = formItem.length-1 ; i > -1 ; i--) {
		formItem.options[i] = null;
	}                                                   
}

function form_addBoxItem(formItem, valText, valValue) {
	newoption = new Option(valText, valValue, false, false);
	formItem.options[formItem.length] = newoption;                                          
}

function form_getRadioValue(RadioName) {

	var colRadio = document.getElementsByName(RadioName);

	for (var i = 0; i < colRadio.length; i++) {
		if (colRadio[i].checked) {
			return colRadio[i].value;
		}
	}
	return null;		
}

function form_checkTextLength( formitem ) {
	
	var obDisplay = formitem.nextSibling.firstChild;
	var obCheck = formitem.nextSibling.firstChild.nextSibling.nextSibling;
	var inCharLeft = parseInt(obCheck.value) - parseInt(formitem.value.length);

	if (inCharLeft<0) {
		obDisplay.innerHTML = (-inCharLeft) + ' characters over';
		obDisplay.style.color = 'red';
	} else {
		obDisplay.innerHTML = inCharLeft + ' characters left';
		obDisplay.style.color = 'black';
	}
}

function form_tristate( obImg ) {
	var obHidden = obImg.nextSibling;
	switch (obHidden.value) {
		case '1' :
			form_setTristate( obImg, false )
			break;
		default :
			form_setTristate( obImg, true )
	}
}

function form_setTristate( obImg, boNewState ) {
	var obHidden = obImg.nextSibling;
	switch (boNewState) {
		case false :
			obHidden.value='0';
			obImg.src = Path + 'img/tristate_off.gif';
			obImg.setAttribute('alt', 'Off', 0);
			break;
		case true :
			obHidden.value='1';
			obImg.src = Path + 'img/tristate_on.gif';
			obImg.setAttribute('alt', 'On', 0);
			break;
		default :
			obHidden.value='null';
			obImg.src = Path + 'img/tristate_null.gif';
			obImg.setAttribute('alt', 'Unknown', 0);
	}
}