function run() {
	borderRadiusBehavior();
	formElements();
	
	// top navigation
	$ts("#tsTopNavigation > ul > li").mouseenter( function (e) {
		$sub = $ts(this).find(".sub");
		$sub.show();

		if ( $sub.find("ul").width() < 180 ) {
			$sub.width(180);
			if ( $sub.find('.sub-bg-slice').length > 0 ) // fix for 9-sliced bg
				$sub.width(200); // 10px margin
		}
		
		var left = $ts(this).find("a").position().left;
		var $menu = $ts("#tsTopNavigation");
		var boundsr = $menu.width() - 20; // 10px because the menu goes outside of the grid
		var itemr = left + $sub.width();
		
		if ( itemr > boundsr ) {
			left -= (itemr-boundsr);
			if ( $sub.find('.sub-bg-slice').length > 0 ) // fix for 9-sliced bg
				left += 6;
		}
		else if ( $sub.find('.sub-bg-slice').length > 0 ) // fix for 9-sliced bg
			left -= 6;
		
		$sub.css("left", left);
	
//		alert($sub.width());

	} ).mouseleave( function (e) {
		$ts(this).find(".sub").hide();
	} );
	
}

function borderRadiusBehavior() {
	$ts(".tsImageRoundedBorder.tsRounded4").append('<span class="tsTL"></span> <span class="tsTR"></span> <span class="tsBL"></span> <span class="tsBR"></span>');
}

function formElements() {
	if (typeof($ts("select").selectmenu) == 'function') {
  	$ts("select").each(function() {
			var menuWidthMargin = $ts.browser.msie ? 8 : 4;
			$ts(this).data("menu-width", $ts(this).width() - menuWidthMargin);
  		$ts(this).selectmenu({
				positionOptions: {
					my: "left top",
					at: "left bottom",
					offset: "4 0"
				},
				menuWidth: $ts(this).width() - menuWidthMargin,
  			open: function(e, h){
  				if ($ts("#ui-select-menu-bg").length > 0) {
  					$target = $ts(e.target);
						var menuWidth = $target.data("menu-width");
						
  					$ui = $ts("#" + $target.attr("id") + "-menu");
  					$bg = $ts("#ui-select-menu-bg");
  					
  					$bg.show();
  					$bg.css("left", $ui.position().left - 5);
  					$bg.css("top", $ui.position().top);
  					$bg.width(menuWidth);
  					$bg.height($ui.height());
  					
  					$bg.children("span.c").width($bg.width() - 14);
  					$bg.children("span.c").height($bg.height() - 16);
  					
  					$ui.width(menuWidth - 4);
  					$ui.css("left", $ui.position().left + 2);
  				}
  			},
  			close: function(e, h){
  				if ($ts("#ui-select-menu-bg").length > 0) {
  					$ts("#ui-select-menu-bg").hide();
  				}
  			}
  		});
  	});
		
			
		/*
		 * IE 6-8 can't handle rounded corners and box-shadow.
		 * IE 9 cant handle rounded corners with gradient background
		 */
		if( $ts.browser.msie ) {
			$ts("a.ui-selectmenu").prepend('<span class="cap-left"> </span><span class="cap-right"> </span>');
			
			if( $ts.browser.version < 9 && $ts.browser.version > 6 ) { // IE9 can handle shadow and rounded corners on dropdown by itself
				$ts("body").append($ts('<div id="ui-select-menu-bg" class="uiselect-bg-slice"></div>'))
  	
				$ts(".ui-selectmenu-menu").css("background-color","transparent");
				$ts(".ui-selectmenu-menu li").css("background-color","transparent");
				$ts(".ui-selectmenu-menu li").css("border-left","0");
				$ts(".ui-selectmenu-menu li").css("border-right","0");
			
				$ts("#ui-select-menu-bg").append('<span class="c"></span>' +
							'<span class="tl"></span>' +
							'<span class="t"><span></span></span>' +
							'<span class="tr"></span>' +
							'<span class="r"><span></span></span>' +
							'<span class="br"></span>' +
							'<span class="b"><span></span></span>' +
							'<span class="bl"></span>' +
							'<span class="l"><span></span></span>'); 
			}
		}
  }
	
	if ( typeof($ts("select").checkBox) == 'function' )
		$ts('input[type=checkbox], input[type=radio]').checkBox();
}
