/**
 * This file defines common styles for form elements used throughout the CMS interface.
 * It is an addition to the base styles defined in framework/css/Form.css.
 *
 * @package framework
 * @subpackage admin
 */

/** ----------------------------------------------------
 * Basic form fields
 * ---------------------------------------------------- */	

form.nostyle {
	@include clear-form-field-styles();
}

.field {
	display: block;
	border-bottom: 1px solid $color-shadow-light;
    @include box-shadow(0 1px 0 lighten($color-shadow-light, 16%));

	//TODO: use single border line with shadow instead:: http://daverupert.com/2011/06/two-tone-borders-with-css3/
	//overflow: hidden;

	// bottom padding accounts for the border and we have a negative
	// margin with a postive padding to ensure the bottom border extends
	// over the edges
	padding: 0 0 $grid-y - 1 0;
	margin: 0 0 $grid-y 0;

	&:last-child {
		border-bottom: none;
		@include box-shadow(none);
	}

	// using the legacy version as some of the more complex form fields
	// need to use relative positioning and overflow hidden will not expand
	// the containing boxes
	@include legacy-pie-clearfix();
	
	&.nolabel {
		.middleColumn {
			margin-left: 0;
		}
		.help {
			margin-left: 0;
		}
	}

	&.checkbox label.right{
		margin: $grid-y/2 0 0 0;
		display:inline;
		font-style: normal;
		color: $color-text;
		clear:none;
	}	
	label {		
		&.left {
			float: left;
			display: block;
			width: $grid-x * 22;
			padding: $grid-y $grid-x $grid-y 0;
			line-height: $grid-y * 2;
			font-weight: bold;
			@include text-shadow(1px 1px 0 $color-text-shadow);
		}		
		&.right {
			cursor: pointer;
			clear: both;			
			color: lighten($color-text, 20%);
			display: block;
			font-style: italic;
			margin: $grid-y/2 0 0 $grid-x*23;
		}		
	}
	
	.middleColumn {
		margin-left: $grid-x * 23;
	}
	
	span.readonly {
		padding-top: $grid-y;
		line-height: $grid-y * 2;
		display: block;
	}

	// Additional help text to clarify the field intent,
	// displayed alongside the field (rather than in a tooltip)
	.help {
		clear: both;
		color: lighten($color-text, 20%);
		display: block;
		font-style: italic;
		margin: $grid-y/2 0 0 $grid-x*23;
	}
	&.help {
		label.right {
			clear: both;
			color: lighten($color-text, 20%);
			display: block;
			font-style: italic;
			margin: $grid-y/2 0 0 $grid-x*23;
		}
	}
	
	input.text,
	textarea,
	select,
	.TreeDropdownField {
		width: 100%;
		max-width: $grid-x * 64;
		@include box-sizing(border-box);
		&.help {
			margin:0; //overrides help class adding left margin to the textarea input.
		}
		.help {
			max-width: $grid-x * 64;
		}
	}

	input.text, 
	textarea,
	.TreeDropdownField {
		background: #fff;
		border: 1px solid lighten($color-medium-separator, 20%);
		padding: ($grid-y - 1) ($grid-x - 1);
		line-height: $grid-y * 2;
		margin: 0;
		outline: none;
		@include transition(0.2s box-shadow ease-in);
		@include transition(0.2s border ease-in);
		@include border-radius(4px);
		@include background-image(linear-gradient(#EAEAEA, #fff 10%));
	
		&:focus {
			border: 1px solid lighten($color-medium-separator, 10%);
			border-top-color: $color-medium-separator;
			@include box-shadow(0 1px 3px rgba(0,0,0,0.2) inset);
		}
	}
	
	input[disabled], input.disabled,
	textarea[disabled], textarea.disabled,
	select[disabled], select.disabled {
		color: lighten($color-text, 20%);
		background: #efefef;
		@include background-image(linear-gradient(darken(#efefef, 20%), #efefef 10%, #fff 90%, darken(#efefef, 20%)));
		border: 1px solid lighten($color-medium-separator, 20%);
	}
	&#Action {
    	box-shadow: none;
	}
}

form.stacked .field, .field.stacked {
	label {
		display: block;
		float: none;
		padding-bottom: 10px;
	}
	
	.middleColumn {
		margin-left: 0px;
		clear: left;
	}
}

form.small .field, .field.small {
	label {
		&.left {
			width: $grid-x * 14;
		}
	}
	
	.middleColumn {
		margin-left: $grid-x * 15;
	}

	input.text,
	textarea,
	select,
	.TreeDropdownField {
		width: auto;
	}
}

.field {	
	/* TreeDropdowns */
	.TreeDropdownField {
		padding: 0;
		
		.treedropdownfield-panel {
			border: 1px solid lighten($color-medium-separator, 20%);
			border-top: none;
			
			@include border-bottom-left-radius(4px);
			@include border-bottom-right-radius(4px);
		}
		
		&.treedropdownfield-open-tree {
			@include border-bottom-left-radius(0);
			@include border-bottom-right-radius(0);
		}

		// Hide badges, as they cost too much horizontal space,
		// and mess up rendering for selected node title
		.badge {
			display: none;
		}
	}
	
	/* dropdowns */
	.dropdown {
		select {
			margin-top: $grid-y;
		}
	}
	
	/* chzn override */
	.chzn-container {
		.chzn-results {
			
			li {
				font-size: 11px;
				line-height: $grid-y * 2;
				padding: $grid-y / 2 $grid-x / 2;
			}
		}
	}
	.chzn-container-active {
		.chzn-single {
	  		border: 1px solid lighten($color-medium-separator, 10%);
		}
	}
	
	.chzn-container-single .chzn-single  {
		height: 26px;
		line-height: 26px; /* not relative, as then we'd had to redo most of chzn */
		font-size: $font-base-size;
		
		@include background-image(linear-gradient(#efefef, #fff 10%, #fff 90%, #efefef));
		
		
		&:hover, &:focus, &:active {
			text-decoration: none;
			outline: none;
		}
	
		div {
			width: 24px;
	
			b {
				background-position: 4px 0px;
			}
		}
	}
	
	/* Date Fields */
	input.month, input.day, input.year { 
		width: ($grid-x * 7); 
	}

	input.time { 
		width: ($grid-x * 8); // smaller time field, since input is restricted
	}
	
	/* Hides borders in settings/access. Activated from JS */
	&.remove-splitter {
		border-bottom: none;
		box-shadow: none;
	}
}

/** ----------------------------------------------------
 * Buttons
 * ---------------------------------------------------- */

.cms {

	.Actions, .cms-actions-row {
		> * {
			display: block;
			float: left;
			margin-right: $grid-x;
		}

		> *:last-child {
			margin-right: 0;
		}
	}

	.Actions {
		min-height: 30px;
		overflow: auto;
	}

	input.loading, button.loading,
	input.ui-state-default.loading, .ui-widget-content input.ui-state-default.loading, 
	.ui-widget-header input.ui-state-default.loading {
		.ui-icon {
			background: transparent url(../../images/network-save.gif) no-repeat 0 0;
		}

		color: lighten($color-text-dark, 20%);
		border-color: darken($color-button-disabled, 10%);
		cursor: default;
	}

	input.loading, button.loading {
		&.ss-ui-action-constructive {
			.ui-icon {
				background: transparent url(../../images/network-save-constructive.gif) no-repeat 0 0;
			}
		}
	}

	.ss-ui-button {
		margin-top:0px;
		font-weight: bold;
		text-decoration: none;
		line-height: $grid-y * 2;
		color: lighten($color-text-dark, 10%);
		border: 1px solid $color-button-generic-border;
		border-bottom: 1px solid darken($color-button-generic-border, 10%);
		cursor: pointer;
		background-color: $color-button-generic;
		white-space: nowrap;

		@include background(
			linear-gradient(color-stops(
				lighten($color-button-generic, 10%),
				darken($color-button-generic, 5%)
			))
		);

		@include text-shadow(lighten($color-button-generic, 20%) 0 1px 1px);

		&.ui-state-hover, &:hover {
			text-decoration: none;
			background-color: lighten($color-button-generic, 10%);
			@include background(
				linear-gradient(color-stops(
					lighten($color-button-generic, 20%),
					$color-button-generic
				))
			);
			@include box-shadow(0 0 5px darken($color-button-generic, 20%));
		}

		&:active, &:focus, &.ui-state-active, &.ui-state-focus {
			border: 1px solid darken($color-button-generic, 20%);
			background-color: lighten($color-button-generic, 10%);
			@include background(
				linear-gradient(color-stops(
					lighten($color-button-generic, 20%),
					$color-button-generic
				))
			);
			@include box-shadow(0 0 5px darken($color-button-generic, 20%) inset);
		}
		
		/* constructive */
		&.ss-ui-action-constructive {
			text-shadow:none;
			font-weight: bold;
			color: $color-text-light;
			border-color: $color-button-constructive-border;
			border-bottom-color: darken($color-button-constructive-border, 10%);			
			background-color: $color-button-constructive;
			@include background(
				linear-gradient(color-stops(
					scale-color(lighten($color-button-constructive, 10%), $red:50%),
					$color-button-constructive
				))
			);
			@include text-shadow(darken($color-button-constructive, 3%) 0 -1px -1px);
	
			&.ui-state-hover, &:hover {
				border-color: darken($color-button-constructive-border, 10%);
				background-color: $color-button-constructive;
				@include background(
					linear-gradient(color-stops(
						scale-color(saturate(lighten($color-button-constructive, 10%), 10%), $red:60%),
						lighten($color-button-constructive, 5%)
					))
				);
			}
			&:active, &:focus, &.ui-state-active, &.ui-state-focus {
				background-color: darken($color-button-constructive, 2%);
				@include box-shadow(inset 0 1px 3px rgb(23, 24, 26), 0 1px 0 rgba(255, 255, 255, .6));
			}
		}
		
		/* destructive */
		&.ss-ui-action-destructive {
			color: $color-button-destructive;
			background-color: $color-button-generic;
		}

		&.ss-ui-button-small {
			.ui-button-text {
				padding: ($grid-y/4) ($grid-x/4);
				font-size: $font-base-size - 2;
			}
		}
			
		&.ui-state-highlight {
			background-color: $color-button-highlight;
			border: 1px solid $color-button-highlight-border;
		}

		&.ss-ui-action-minor {
			background: none;
			border: 0;
			color: lighten($color-text-dark, 10%);
			text-decoration: underline;
			
			@include box-shadow(none);
			
			&:hover {
				text-decoration: none;
				color: $color-text-dark;
			}
			&:focus,
			&:active {
				text-decoration: none;
				color: lighten($color-text-dark, 20%);
			}
		}
		
		&.ss-ui-button-loading {
			opacity: 0.8;
		}
	}

	.ss-ui-buttonset {
		.ui-button {
			margin-left: -1px;
		}
	}

	.ss-ui-buttonset {
		margin-left: 1px;
	}
	
	.ss-ui-loading-icon {
		background: url(../../images/network-save.gif) no-repeat;
		display: block;
		width: 16px;
		height: 16px;
	}
}

/** ----------------------------------------------------
 * Grouped form fields
 * ---------------------------------------------------- */
.fieldgroup {
	.fieldgroup-field {
		float: left;
		display: block;
		padding: $grid-y 0 0 $grid-x;

		&.odd {
			
		}
		
		&.even {
			
		}
		
		.field {
			border: none;
			padding-bottom: 0;
		}
	}

	&.stacked {
		.fieldgroup-field {
			float: none;
		}
	}
}

.ss-toggle {
	margin-bottom: $grid-y;

	.ui-accordion-header {
		font-weight: bold;

		&.ui-state-default {
			@include background-image(
				linear-gradient(lighten($color-shadow-light, 15%), $color-shadow-light)
			);
			text-shadow: 0 1px 0 rgba(255, 255, 255, .5);
		}
	}

	.ui-accordion-content {
		padding: $grid-y*2 0 $grid-y 0;

		.field {
			@include box-shadow(none);
			padding-left: $grid-x*2;
			padding-right: $grid-x*2;

			&:last-child {
				margin-bottom: 0;
			}
		}
	}
}
/** ----------------------------------------------------
 * Checkbox Field
 * ---------------------------------------------------- */
.field.checkbox {
	padding-left: $grid-x * 23;
	margin-bottom: $grid-y;

	input {
		margin-left: 0;
	}
}
input.checkbox {
	margin-left: 0
}

/** ----------------------------------------------------
 * Radiobutton Field
 * ---------------------------------------------------- */
.field.radio {
	padding-left: $grid-x * 23;
	margin-bottom: $grid-y;

	input {
		margin-left: 0;
	}
}
input.radio {
	margin-left: 0
}

/** ----------------------------------------------------
 * Optionsets and Checkboxsets
 * ---------------------------------------------------- */
.optionset {
	padding-bottom: 8px;
	
	li {
		float: left;
		display: block;
		width: $grid-x * 27;
		padding-bottom: $grid-x;
		line-height: $grid-y * 2;
		list-style: none;

		input {
			display: inline-block;
			padding-right: 0;
			margin-right: 0;
		}
		
		label {
			display: inline;
			cursor: pointer;
			padding-left: $grid-y;
		}

	}
	
}


/** ----------------------------------------------------
 * HTML Text 
 * ---------------------------------------------------- */

.htmleditor {
	
	textarea {
		visibility: hidden; // enabled by JS
	}

	.mceEditor {
		input, select {
			width: auto;
		}	
	}
	label.left {
		padding-bottom: $grid-y/2;
	}
}


.action-hidden {
	display:  none;
}