/**
	 * Implements a form checkmark
	 *
	 * @param  string              $name                The name of the form element
	 * @param  string              $value               The value of the element
	 * @param  SimpleXMLElement    $node                The xml element for the parameter
	 * @param  string              $control_name        The control name
	 * @param  string              $defaultTask         The task used for toggleable item
	 * @param  string              $defaultTitle        The title to display when item is not toggleable
	 * @param  string              $defaultToggleTitle  The title displayed when item is toggleable
	 * @return string                                   The html for the element
	 */
	function _form_checkmark( $name, $value, &$node, $control_name, $defaultTask = null, $defaultTitle = null, $defaultToggleTitle = null ) {
		if ( $this->_view ) {
			$isToggle								=	( $node->attributes( 'onclick' ) == 'toggle' );
			$checkmarkTask							=	( $defaultTask ? $defaultTask : ( $value ? 'disable/' . $name : 'enable/' . $name ) );
			$checkmarkTitle							=	null;
			$checkmarkToggleTitle					=	null;
			$classes								=	null;
			$iconClass								=	null;
			$iconSize								=	null;
			$textClass								=	null;

			if ( $node->getChildByNameAttributes( 'option' ) ) {
				$valueNode							=	$node->getAnyChildByNameAttr( 'option', 'index', $value );

				if ( ! $valueNode ) {
					$valueNode						=	$node->getAnyChildByNameAttr( 'option', 'value', $value );
				}

				if ( $valueNode ) {
					$checkmarkTitle					=	CBTxt::T( $valueNode->data() );
					$classes						=	RegistryEditView::buildClasses( $valueNode );
					$iconClass						=	$valueNode->attributes( 'iconclass' );
					$iconSize						=	$valueNode->attributes( 'iconsize' );
					$textClass						=	$valueNode->attributes( 'textclass' );

					if ( $isToggle ) {
						$nextOption					=	$valueNode->xpath( '(./following-sibling::option[not(@selectable="false" or @toggleable="false")])[1]' );

						if ( ! $nextOption ) {
							$nextOption				=	$valueNode->xpath( '(../child::option[not(@selectable="false" or @toggleable="false")])[1]' );
						}

						if ( $nextOption ) {
							$checkmarkToggleTitle	=	CBTxt::T( $nextOption[0]->attributes( 'title' ) );
							$checkmarkToggleValue	=	$nextOption[0]->attributes( 'index' );

							if ( ! $checkmarkToggleValue ) {
								$checkmarkToggleValue =	$nextOption[0]->attributes( 'value' );
							}

							if ( $checkmarkToggleValue != $value ) {
								$checkmarkTask		=	'setfield/' . $name . '/' . $checkmarkToggleValue;
							} else {
								// There's nothing to toggle to so lets shut off toggling:
								$isToggle			=	false;
							}
						} else {
							// There's nothing to toggle to so lets shut off toggling:
							$isToggle				=	false;
						}
					}
				}
			} else {
				if ( ! $isToggle ) {
					$checkmarkTitle					=	CBTxt::T( $node->attributes( 'title' ) );
				}
			}

			if ( ! $classes ) {
				$classes							=	RegistryEditView::buildClasses( $node );
				$iconClass							=	$node->attributes( 'iconclass' );
				$iconSize							=	$node->attributes( 'iconsize' );
				$textClass							=	$node->attributes( 'textclass' );
			}

			if ( ! $iconClass ) {
				$classes							.=	' fa';

				if ( $value ) {
					$classes						.=	' fa-check';
				} else {
					$classes						.=	' fa-times';
				}
			}

			if ( ! $iconSize ) {
				$classes							.=	' fa-lg';
			}

			if ( ! $textClass ) {
				if ( $value ) {
					$classes						.=	' text-success';
				} else {
					$classes						.=	' text-danger';
				}
			}

			if ( $isToggle ) {
				if ( ! $checkmarkToggleTitle ) {
					$checkmarkToggleTitle			=	( $defaultToggleTitle ? $defaultToggleTitle : ( $value ? CBTxt::T( 'Disable Item' ) : CBTxt::T( 'Enable Item' ) ) );
				}

				$taskName							=	$this->_controllerView->taskName( false );
				$subTaskName						=	$this->_controllerView->subtaskName( false );
				$subTaskValue						=	$this->_controllerView->subtaskValue( $checkmarkTask, false );
				$fieldId							=	$this->_controllerView->fieldId( 'id', null, false );

				$onClick							=	"return cbListItemTask( this, '" . $taskName . "', '" . $subTaskName . "', '" . $subTaskValue . "', '" . $fieldId . "', '" . $this->_controllerView->pageNav->getRowIndex() . "' );";

				$return								=	'<a href="javascript: void(0);" onclick="' . $onClick . '">'
													.		'<span class="' . htmlspecialchars( trim( $classes ) ) . '" title="' . htmlspecialchars( $checkmarkToggleTitle ) . '"></span>'
													.	'</a>';

				return $return;
			} else {
				if ( ! $checkmarkTitle ) {
					$checkmarkTitle					=	( $defaultTitle ? $defaultTitle : ( $value ? CBTxt::T( 'Enabled' ) : CBTxt::T( 'Disabled' ) ) );
				}

				return '<span class="' . htmlspecialchars( trim( $classes ) ) . '" title="' . htmlspecialchars( $checkmarkTitle ) . '"></span>';
			}
		} else {
			if ( $node->getChildByNameAttributes( 'option' ) ) {
				return $this->_form_list( $name, $value, $node, $control_name, true );
			} else {
				return $this->_form_yesno( $name, $value, $node, $control_name );
			}
		}
	}