function form_expandoDel( name, num ) {
	var obTable = document.getElementById(name + '_expandoitem' + num);
	obTable.removeNode(true);
}
function form_expandoAdd( name) {
	var obHidden = document.getElementById(name + '_expandohide');
	var inOrd	 = ++(obHidden.nextnum);
	var inIndex	 = --(obHidden.index);
	var stHTML	 = obHidden.innerHTML;
	var obReg	 = /\[n\]/gi;
	stHTML = stHTML.replace( obReg, inOrd );
	obReg	 = /\[x\]/gi;
	stHTML = stHTML.replace( obReg, '' );
	obReg		= /\[i\]/gi;
	stHTML = stHTML.replace( obReg, inIndex);
	obHidden.previousSibling.insertAdjacentHTML('beforeBegin',stHTML);		
}

var form_itemHandle, form_dialogHandle;

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_itemHandle = ob;
	form_dialogHandle = window.open(stFCKPath + 'editor/filemanager/browser/default/browser.html?' + szType + szDir + 'Connector=connectors/asp/connector.asp');
	window.onfocus = form_focusDialog;
	window.onunload = form_closeDialog;
}

function form_focusDialog () {
	if (!form_dialogHandle.closed) {
		form_dialogHandle.focus();
	} else {
		window.onfocus = null;
		window.onunload = null;
	}
}

function form_closeDialog () {
	if (!form_dialogHandle.closed) {
		form_dialogHandle.close();
	}
	window.onfocus = null;
	window.onunload = null;
	
}

/* next function is for file selector support and *MUST* be called SetUrl */
function SetUrl( sz ) {
	form_itemHandle.value = sz;
	window.onfocus = null;
	window.onunload = 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);
	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));
	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 obNull = document.getElementById(name + '_null');
	if (obNull.checked) {
		document.getElementById(name).value = 'NULL';
	} else {
		var obDay = document.getElementById(name + '_day');
		var obMonth = document.getElementById(name + '_month');
		var obYear = document.getElementById(name + '_year');
		var dtThis = new Date(obYear.options[obYear.selectedIndex].value, (obMonth.options[obMonth.selectedIndex].value-1), obDay.options[obDay.selectedIndex].value);
		document.getElementById(name).value = (dtThis.getFullYear()) + '-' + form_2digit(dtThis.getMonth()+1) + '-' + form_2digit(dtThis.getDate());
		obDay.selectedIndex = dtThis.getDate()-1;
		obMonth.selectedIndex = dtThis.getMonth();
		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';
	}
}
