var popupStatusnewsletter = 0;
function loadpopupnewsl(){
	//loads popup only if it is disabled
	if(popupStatusnewsletter ==0){
		$("#backgroundPopup").css({
			"opacity": "0.7"
		});
		$("#backgroundPopup").fadeIn("slow");
		$("#popupContactnewslatter").fadeIn("slow");
		//$("#qv").css('display','none');
		popupStatusnewsletter  = 1;
		$("#outerWrap a, #outerWrap input, #outerWrap select, #outerWrap button").attr('tabindex',-1);
		$("#popupContact a, #popupContact input, #popupContact select, #popupContact button").attr('tabindex',1);
	}
	
	
}

//disabling popup with jQuery magic!
function disablepopupnewsl(){
	//disables popup only if it is enabled
	if(popupStatusnewsletter==1){
		$("#backgroundPopup").fadeOut();
		$("#popupContactnewslatter").fadeOut();
		
		popupStatusnewsletter = 0;
		$("#outerWrap a, #outerWrap input, #outerWrap select, #outerWrap button").removeAttr('tabindex');
	}
}



function centerPopupnewsl(){
	
	//request data for centering
	var windowWidth = document.documentElement.clientWidth;
	var windowHeight = document.documentElement.clientHeight;
	var popupHeight = $("#popupContactnewslatter").height();
	var popupWidth = $("#popupContactnewslatter").width();
	//centering
	
	  $("#selector").css('display','none');
	  $("#SortBy").css('display','none');

 $("#popupContactnewslatter").css({
		"position": "absolute",
		"top": windowHeight/2-popupHeight/2,
		"left": windowWidth/2-popupWidth/2
	});
	
}	
 




// JavaScript Document
var errmsg="";
var popupStatusCountryChange = 0;
function loadpopupCountryChange(){
	//loads popup only if it is disabled
	if(popupStatusCountryChange ==0){
		$("#backgroundPopup").css({
			"opacity": "0.7"
		});
		$("#backgroundPopup").fadeIn("slow");
		$("#popupCountryChange").fadeIn("slow");
		//$("#qv").css('display','none');
		popupStatusCountryChange  = 1;
		$("#outerWrap a, #outerWrap input, #outerWrap select, #outerWrap button").attr('tabindex',-1);
		$("#popupContact a, #popupContact input, #popupContact select, #popupContact button").attr('tabindex',1);
	}
	
	
}

//disabling popup with jQuery magic!
function disablepopupCountryChange(){
	//disables popup only if it is enabled
	if(popupStatusCountryChange==1){
		$("#backgroundPopup").fadeOut();
		$("#popupCountryChange").fadeOut();
		
		popupStatusCountryChange = 0;
		$("#outerWrap a, #outerWrap input, #outerWrap select, #outerWrap button").removeAttr('tabindex');
	}
}



function centerpopupCountryChange(){
	
	//request data for centering
	var windowWidth = document.documentElement.clientWidth;
	var windowHeight = document.documentElement.clientHeight;
	var popupHeight = $("#popupCountryChange").height();
	var popupWidth = $("#popupCountryChange").width();
	//centering
	
	  $("#selector").css('display','none');
	  $("#SortBy").css('display','none');

 $("#popupCountryChange").css({
		"position": "absolute",
		"top": windowHeight/2-popupHeight/2,
		"left": windowWidth/2-popupWidth/2
	});
	
}	

var popupStatusredirect = 0;
function loadpopupredirect(){
	//loads popup only if it is disabled
	if(popupStatusredirect ==0){
		$("#backgroundPopup").css({
			"opacity": "0.7"
		});
		$("#backgroundPopup").fadeIn("slow");
		$("#popupContactredirect").fadeIn("slow");
		//$("#qv").css('display','none');
		popupStatusredirect  = 1;
		$("#outerWrap a, #outerWrap input, #outerWrap select, #outerWrap button").attr('tabindex',-1);
		$("#popupContact a, #popupContact input, #popupContact select, #popupContact button").attr('tabindex',1);
	}
	
	
}

//disabling popup with jQuery magic!
function disablepopupredirect(){
	//disables popup only if it is enabled
	if(popupStatusredirect==1){
		$("#backgroundPopup").fadeOut();
		$("#popupContactredirect").fadeOut();
		
		popupStatusredirect = 0;
		$("#outerWrap a, #outerWrap input, #outerWrap select, #outerWrap button").removeAttr('tabindex');
	}
}



function centerPopupredirect(){
	
	//request data for centering
	var windowWidth = document.documentElement.clientWidth;
	var windowHeight = document.documentElement.clientHeight;
	var popupHeight = $("#popupContactredirect").height();
	var popupWidth = $("#popupContactredirect").width();
	//centering
	
	  $("#selector").css('display','none');
	  $("#SortBy").css('display','none');

 $("#popupContactredirect").css({
		"position": "absolute",
		"top": windowHeight/2-popupHeight/2,
		"left": windowWidth/2-popupWidth/2
	});
	
}	

reset_chkBox();

function showCVVtip(obj) {
	var offsetleft = offsetTop = 0;
				 
				var ofset = jQuery(obj).offset();
				 offsetleft = (ofset.left)+90;
				 offsetTop = (ofset.top)-40;
				$(".showCVVtipBox").css( {'display' : 'block', 'left' :offsetleft+'px','top':offsetTop+'px'} )
			
}
function addshippingValidation()
{
	$("#add_shipping_address").validate({
		rules: {
			
			firstName:{
				required:true
				//lettersonly:true
			},
			lastName:{
				required:true
				//lettersonly:true
			},
			
			address1: "required",
			addressLine1: "required",
			city: "required",
			state:"required",
			zipCode: "required",
			zip: "required",
			phoneAreaCode:{
				required:true,
				number:true,
				rangelength: [3, 3]
			},
			phoneExchangeCode:{
				required:true,
				number:true,
				rangelength: [3, 3]
			},
			phoneSubscriberNumber:{
				required:true,
				number:true,
				rangelength: [4, 4]
			}
 
		},
		messages: {
		
			firstName: {
				required: "Please Enter First Name."
				//lettersonly: "Please enter only letters"
				
			},
			lastName: {
				required: "Please Enter Last Name."
				//lettersonly: "Please enter only letters"
				
			},
			
			address1: "Please Enter a Valid Address.",
			addressLine1: "Please Enter a Valid Address.",
			city:"Please Enter a City.",
			zipCode:"Please Enter Zipcode.",
			zip:"Please Enter Zipcode.",
			state:"Please Select a State.",
			phoneAreaCode: {
				required: "Please Enter a Phone Number.",
				number: "Please Enter a Valid Phone Number.",
				rangelength:"Please enter a Valid Phone Number."
			},
			phoneExchangeCode: {
				required: "Please Enter a Phone Number.",
				number: "Please Enter a Valid Phone Number.",
				rangelength:"Please Enter a Valid Phone Number."
			},
			phoneSubscriberNumber: {
				required: "Please Enter a Phone Number.",
				number: "Please Enter a Valid Phone Number.",
				rangelength:"Please Enter a Valid Phone Number."
			}
			//lettersonly: function(value, element) {
			//		 return this.optional(element) || /^[a-zA-Z]+$/i.test(value);
			//	}

		}	
	});
}

function showCVVtipclose() {
	$(".showCVVtipBox").css('display','none');		
}

function reset_chkBox() {

	jQuery("Div.btn_reset").click(
			function() {

				// jQuery(this).parent().parent().find('ul li
				// input').attr('checked', false);

				jQuery(this).parent().parent().find('ul li input').each(
						function(index) {

							jQuery(this).attr('checked', false);
							document.forms['facetCheckBox'].submit();

						});

			});
	jQuery("Div.btn_close").click(function() {
		jQuery(this).parent().parent().find('input').attr('checked', false);
	});
}
// Checks the browser and adds classes to the body to reflect it.
var popupStatusForgetPassword = 0;
function loadpopupForgetPassword(){
	//loads popup only if it is disabled
	if(popupStatusForgetPassword==0){
		$("#backgroundPopup").css({"opacity": "0.7"});
		$("#backgroundPopup").fadeIn("slow");
		$("#popupContactForgetPassword").fadeIn("slow");
		popupStatusForgetPassword = 1;
		$("#outerWrap a, #outerWrap input, #outerWrap select, #outerWrap button").attr('tabindex',-1);
		$("#popupContactForgetPassword a, #popupContactForgetPassword input, #popupContactForgetPassword select, #popupContactForgetPassword button").attr('tabindex',0);
		$("#forgetPassDiv input:button").removeAttr('disabled');
	}
}

//disabling popup with jQuery magic!
function disablepopupForgetPassword(){
	//disables popup only if it is enabled
	$("#forgetPassDiv input:button").removeAttr('disabled');
	$("#forgetPassDiv input:button").css('background','#B10034');
	if(popupStatusForgetPassword==1){
		$("#backgroundPopup").fadeOut();
		$("#popupContactForgetPassword").fadeOut();
		$("#popupContactForgetPassword label.error").html("");
		$("#popupContactForgetPassword input:text").removeClass("error");
		popupStatusForgetPassword = 0;
		$("#outerWrap a, #outerWrap input, #outerWrap select, #outerWrap button").removeAttr('tabindex');
	}
}



function centerPopupForgetPassword(){
	
	//request data for centering
	var windowWidth = document.documentElement.clientWidth;
	var windowHeight = document.documentElement.clientHeight;
	var popupHeight = $("#popupContactForgetPassword").height();
	var popupWidth = $("#popupContactForgetPassword").width();
	//centering
	
	  $("#selector").css('display','none');
	  $("#SortBy").css('display','none');
	
	
   $("#popupContactForgetPassword").css({
		"position": "absolute",
		"top": windowHeight/2-popupHeight/2,
		"left": windowWidth/2-popupWidth/2
	});


	//only need force for IE6
	
	$("#backgroundPopup").css({
		"height": document.documentElement.scrollHeight,
		"width": document.documentElement.scrollWidth
	});
	
}
/*PopupVideo Start*/
var popupVideo = 0;
function loadPopup_popupVideo(anchorId, anchorName) { 
	if (popupVideo == 0) {
		var videoPopUp = '<object id="movieObj2" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="450" height="275" id="videoplayer" align="top">';
		videoPopUp = videoPopUp + '<param name="flashvars" value="'+ anchorId +'"/>';
		videoPopUp = videoPopUp + '<param name="movie" value="/swf/VideoPlayerRtmp.swf" />';
		videoPopUp = videoPopUp + '<param name="quality" value="high" />';
		videoPopUp = videoPopUp + '<param name="bgcolor" value="#FFFFFF" />';	    
		videoPopUp = videoPopUp + '<param name="play" value="true" />'; 
		videoPopUp = videoPopUp + '<param name="loop" value="true" />'; 
		videoPopUp = videoPopUp + '<param name="wmode" value="window" />'; 
		videoPopUp = videoPopUp + '<param name="scale" value="showall" />';
		videoPopUp = videoPopUp + '<param name="menu" value="true" />';
		videoPopUp = videoPopUp + '<param name="devicefont" value="false" />';
		videoPopUp = videoPopUp + '<param name="salign" value="" />';
		videoPopUp = videoPopUp + '<param name="allowScriptAccess" value="sameDomain" />';
		
		videoPopUp = videoPopUp + '<param name="allowFullScreen" value="true" /><!--[if !IE]>-->';
		videoPopUp = videoPopUp + '<object id="movieObj1" data="/swf/VideoPlayerRtmp.swf" type="application/x-shockwave-flash" width="450" height="275" align="top">';
		videoPopUp = videoPopUp + '<param name="flashvars" value="'+ anchorId +'"/>';
		videoPopUp = videoPopUp + '<param name="movie" value="/swf/VideoPlayerRtmp.swf" />';
		videoPopUp = videoPopUp + '<param name="quality" value="high" />';
		videoPopUp = videoPopUp + '<param name="bgcolor" value="#FFFFFF" />';	    
		videoPopUp = videoPopUp + '<param name="play" value="true" />'; 
		videoPopUp = videoPopUp + '<param name="loop" value="true" />'; 
		videoPopUp = videoPopUp + '<param name="wmode" value="window" />'; 
		videoPopUp = videoPopUp + '<param name="scale" value="showall" />';
		videoPopUp = videoPopUp + '<param name="menu" value="true" />';
		videoPopUp = videoPopUp + '<param name="devicefont" value="false" />';
		videoPopUp = videoPopUp + '<param name="salign" value="" />';
		videoPopUp = videoPopUp + '<param name="allowScriptAccess" value="sameDomain" />';
		videoPopUp = videoPopUp + '<param name="allowFullScreen" value="true" /><!--<![endif]--></object><!--[if !IE]>--></object><!--[if !IE]>-->';
		$("#moviearea").html(videoPopUp);
		$("#backgroundPopup").css({
			"opacity" : "0.7"
		});
		$("#backgroundPopup").fadeIn("slow");
		$("#popupContactvideo").fadeIn("slow");
		$("#backgroundPopup").fadeIn("slow");
		$("#videoDescription").html("<strong>"+anchorName+"</strong>");
		
		popupVideo = 1;

	}
}

function disablePopup_popupVideo() {
	if (popupVideo == 1) {
		$("#backgroundPopup").fadeOut();
		$("#popupContactvideo").fadeOut();
		popupVideo = 0;
		$("#outerWrap a, #outerWrap input, #outerWrap select, #outerWrap button").removeAttr('tabindex');
	}

}

// centering popup
function center_popupVideo() {

	// request data for centering
	var windowWidth = document.documentElement.clientWidth;
	var windowHeight = document.documentElement.clientHeight;
	var popupHeight = $("#popupContactvideo").height();
	var popupWidth = $("#popupContactvideo").width();
	// centering

	$("#selector").css('display', 'none');
	$("#SortBy").css('display', 'none');

	$("#popupContactvideo").css({
		"position" : "absolute",
		"top" : windowHeight / 2 - popupHeight / 2,
		"left" : windowWidth / 2 - popupWidth / 2
	});
}
/*Popupvideo End*/




var popupContactDelete = 0;
function loadPopup_popupContactDelete(anchorId) {

	if (popupContactDelete == 0) {
		$("#backgroundPopup").css({
			"opacity" : "0.7"
		});
		$("#backgroundPopup").fadeIn("slow");
		$("#popupContactDelete").fadeIn("slow");
		$("#popupContactDelete input.seprtr").bind("click", function() {
			deleteShippingData(anchorId);
			return false;
		});
		popupContactDelete = 1;
	}
}
// disabling popup with jQuery magic!
function disablePopup_popupContactDelete() {
	if (popupContactDelete == 1) {
		$("#backgroundPopup").fadeOut();
		$("#popupContactDelete").fadeOut();
		popupContactDelete = 0;
		$(
				"#outerWrap a, #outerWrap input, #outerWrap select, #outerWrap button")
				.removeAttr('tabindex');
	}

}

// centering popup
function centerpopupContactDelete() {

	// request data for centering
	var windowWidth = document.documentElement.clientWidth;
	var windowHeight = document.documentElement.clientHeight;
	var popupHeight = $("#popupContactDelete").height();
	var popupWidth = $("#popupContactDelete").width();
	// centering

	$("#selector").css('display', 'none');
	$("#SortBy").css('display', 'none');

	$("#popupContactDelete").css({
		"position" : "absolute",
		"top" : windowHeight / 2 - popupHeight / 2,
		"left" : windowWidth / 2 - popupWidth / 2
	});
}

var popupContactCancel = 0;
function loadPopup_popupContactCancel() {

	if (popupContactCancel == 0) {
		$("#backgroundPopup").css({
			"opacity" : "0.7"
		});
		$("#backgroundPopup").fadeIn("slow");
		$("#popupContactCancel").fadeIn("slow");

		popupContactCancel = 1;

	}
}
function disablePopup_popupContactCancel() {
	// disables popup only if it is enabled
	if (popupContactCancel == 1) {
		$("#backgroundPopup").fadeOut();
		$("#popupContactCancel").fadeOut();
		popupContactCancel = 0;
		$(
				"#outerWrap a, #outerWrap input, #outerWrap select, #outerWrap button")
				.removeAttr('tabindex');
	}

}

// centering popup
function centerpopupContactCancel() {

	// request data for centering
	var windowWidth = document.documentElement.clientWidth;
	var windowHeight = document.documentElement.clientHeight;
	var popupHeight = $("#popupContactCancel").height();
	var popupWidth = $("#popupContactCancel").width();
	// centering

	$("#selector").css('display', 'none');
	$("#SortBy").css('display', 'none');

	$("#popupContactCancel").css({
		"position" : "absolute",
		"top" : windowHeight / 2 - popupHeight / 2,
		"left" : windowWidth / 2 - popupWidth / 2
	});
}

var popupSizeFitStatus = 0;
function loadPopup_SizeAndFit() {
	// loads popup only if it is disabled
	if (popupSizeFitStatus == 0) {
		$("#backgroundPopup").css({
			"opacity" : "0.7"
		});
		$("#backgroundPopup").fadeIn("slow");
		$("#popupContactSizeAndFit").fadeIn("slow");
		$("#qv").css('display', 'none');
		popupSizeFitStatus = 1;
		$("#outerWrap a, #outerWrap input, #outerWrap select, #outerWrap button").attr('tabindex', -1);
		$("#popupContact a, #popupContact input, #popupContact select, #popupContact button")	.attr('tabindex', 1);
	}
	// alert($(window).height())
}

// disabling popup with jQuery magic!
function disablePopup_SizeAndFit() {
	// disables popup only if it is enabled
	if (popupSizeFitStatus == 1) {
		$("#backgroundPopup").fadeOut();
		$("#popupContactSizeAndFit").fadeOut();
		popupSizeFitStatus = 0;
		var a = $(".FeaterProductImage a img").css('z-index', '0')
		$(".FeaterProductImage a img").css('src', b);
		$(".FeaterProductImage a img").attr('src', b);

		$(
				"#outerWrap a, #outerWrap input, #outerWrap select, #outerWrap button")
				.removeAttr('tabindex');
	}
	// alert(popupStatus)
}

// centering popup
function centerPopupSizeAndFit() {

	// request data for centering
	var windowWidth = document.documentElement.clientWidth;
	var windowHeight = document.documentElement.clientHeight;
	var popupHeight = $("#popupContactSizeAndFit").height();
	var popupWidth = $("#popupContactSizeAndFit").width();
	// centering

	$("#selector").css('display', 'none');
	$("#SortBy").css('display', 'none');

	$("#popupContactSizeAndFit").css({
		"position" : "absolute",
		"top" : windowHeight / 2 - popupHeight / 2,
		"left" : windowWidth / 2 - popupWidth / 2
	});

	// only need force for IE6

	$("#backgroundPopup").css({"height" : document.documentElement.scrollHeight});

}
var popupAddSugg = 0;
function loadpopupAddSugg () {
	
		var data=$("#suggestedPopUpDiv").html();
		$(".addressoption").html(data);
		
	// loads popup only if it is disabled
	if (popupAddSugg  == 0) {
		$("#backgroundPopup").css({
			"opacity" : "0.7"
		});
		$("#backgroundPopup").fadeIn("slow");
		$("#popupSuggestedAdd").fadeIn("slow");
		$("#qv").css('display', 'none');
		popupAddSugg = 1;
		$("#outerWrap a, #outerWrap input, #outerWrap select, #outerWrap button").attr('tabindex', -1);
		$("#popupContact a, #popupContact input, #popupContact select, #popupContact button")	.attr('tabindex', 1);
		//$(".suggestedAddReturnbtn").remove();
		$(".suggestedAddReturnbtn").before('<input type="button" value="RETURN TO FORM" class="rit btn seprtr mrgn_15" onclick="disablepopupAddSugg();">')
		$(".suggestedAddReturnbtn").remove();
	}
	
}
function disablepopupAddSugg(){
		if(popupAddSugg ==1){
		$("#backgroundPopup").fadeOut();
		$("#popupSuggestedAdd").fadeOut();
		$(".scrollingDiv").fadeOut();
		
		
		popupAddSugg  = 0;
		$("#outerWrap a, #outerWrap input, #outerWrap select, #outerWrap button").removeAttr('tabindex');
		$("input#mellisaValidationCount").val(0);
	}
	
	
	

}
function centerpopupAddSugg () {

	// request data for centering
	var windowWidth = document.documentElement.clientWidth;
	var windowHeight = document.documentElement.clientHeight;
	var popupHeight = $("#popupSuggestedAdd").height();
	var popupWidth = $("#popupSuggestedAdd").width();
	// centering

	$("#selector").css('display', 'none');
	$("#SortBy").css('display', 'none');

	$("#popupSuggestedAdd").css({
		"position" : "absolute",
		"top" : windowHeight / 2 - popupHeight / 2,
		"left" : windowWidth / 2 - popupWidth / 2
	});

	// only need force for IE6

	$("#backgroundPopup").css({"height" : document.documentElement.scrollHeight});

}
$(document).ready(function() 
					{
					
					
					var htmlcountry = $('div#tools ul li').last().html()
					htmlcountry = $.trim(htmlcountry);
					if(htmlcountry == "")
					{
					$('div#tools ul li#social').css('padding-right','0px');
					}
					else
					{
					$('div#tools ul li#social').css('padding-right','36px');
					}
					
	
					$(".showDetail").mouseover(function()
							{
								//alert("hi");
								$(this).find(".detailMsg").css('display','block');
							});
						$(".showDetail").mouseout(function()
							{
								//alert("hi");
								$(this).find(".detailMsg").css('display','none');
							});
	
					$('.timepiecesRepairResult tr')	.each(function(index) {
						
						if(index != 0)
							{
							if(index % 2 == 0)
								{
							
							$(this).addClass("evenrow");
						
								}
							else
								{
							$(this).addClass("oddrow");
								
								}
							}
					
					});
					if ($.browser.msie && $.browser.version.substr(0, 1) < 7) {
						var src = $("#qv img").attr("src");
						$("#qv img").attr("src", src.replace(/\.png$/i, ".gif"));
					}
					var Address_count = 0;
					/*$('#popupContact .viewAll .textContainer ul li')
							.each(
									function(index) {
										
										Address_count = Address_count + 1;
										if (Address_count % 4 == 0) {
									
											$(this).after("<li class='cls' style='margin-bottom:5px; width:560px; border:1px solid #dcdcdc;'></li>");
										}
									});*/
					
					$('#popupContact .viewAll ul.addressline li').each(function(index) {
						Address_count = Address_count+1;
					    if (Address_count % 4 == 0)
					    	{
					    	$(this).find("div.addline").css('border-right','none');
					    	$(this).after("<li class='cls' style='margin-bottom:15px; width:560px; border:1px solid #dcdcdc;'></li>");
					    	}
					});

					$('.product_Info a.productTitleName strong').each(
							function(index) {
								var prod_name = $(this).text();
								var prod_name_length = prod_name.length;
								if (prod_name_length >= 45) {
									prod_name = prod_name.substring(0, 45);
									$(this).text("")
									$(this).text(prod_name + " ...")

								}
							});

					$("#popupContactClose").click(function() {
					    disablepopupCountryChange();
						disablepopupXSS();
						disablepopupredirect();
						disablepopupTP();
						disablePopup();
						disablePopup_SizeAndFit();
						disablepopupForgetPassword();
						disablepopupAddtoCart();
						disablePopup_popupVideo();
						$("#selector").css('display', 'block');
						$("#SortBy").css('display', 'inline');
						$("#pdpImage").remove();
						$("#Color_Finishes_Popup").css('display', 'none');
					});
					
					$('#popupContactClose, .close_img, a#ClosePopup').bind('click', function() {
						disablepopupCountryChange();
						disablePopup();
						disablepopupredirect();
						disablepopupTP();
						disablepopupForgetPassword();
						disablepopupXSS();
						$("#selector").css('display', 'block');
						$("#SortBy").css('display', 'inline');
						});
					
					$('#popupContactCloseSizeAndfit, .close_img').bind('click', function() {
						disablepopupCountryChange();
						disablePopup_SizeAndFit();
						disablepopupredirect();
						disablepopupXSS();
						disablepopupTP();
						});
					
					
					$("#popupContactClose1, a#ClosePopup,  a#popupCancel_close, .close, .close_size_and_fit, .close_img1, .close_img_delete")
							.click(function() {
								disablePopup();
								disablePopup_popupContactCancel();
								disablePopup_SizeAndFit();
								disablePopup_popupContactDelete();
								disablePopup_popupVideo();
								disablepopupredirect();
								disablepopupForgetPassword();
								disablepopupXSS();
								disablepopupCountryChange();
								disablepopupTP();
								});

					$("#backgroundPopup").click(function() {
						disablePopup();
						disablePopup_SizeAndFit();
						disablepopupAddtoCart();
						disablepopupredirect();
						disablepopupForgetPassword();
						disablepopupXSS();
						disablepopupTP();
						disablePopup_popupVideo();
						
						$("#SortBy").css('display', 'inline');
						$("#pdpImage").remove();
						$("#Color_Finishes_Popup").css('display', 'none');
						$(".fb_iframe_widget").css('visibility', 'visible');
					});
					// Press Escape event!
					
					
					$(document).bind('keydown', function(e) {
						if (e.keyCode == 27 && popupStatus == 1) {
							
							disablePopup();
							disablepopupAddtoCart();
							disablePopup_SizeAndFit();
							disablepopupTP();
							disablepopupredirect();
							disablepopupXSS();
                            
							$("#selector").css('display', 'block');
							$("#SortBy").css('display', 'inline');
							$("#pdpImage").remove();
							$("#Color_Finishes_Popup").css('display', 'none');
							disablePopup_popupVideo();

						}
					});
					$(document).bind('keydown', function(e) {
						if (e.keyCode == 27 && popupStatusForgetPassword == 1) {
							disablepopupForgetPassword();
							disablepopupredirect();
							disablepopupTP();
 							
							$("#selector").css('display', 'block');
							$("#SortBy").css('display', 'inline');
							$("#pdpImage").remove();
							$("#Color_Finishes_Popup").css('display', 'none');
						

						}
					});
					$(document).keydown(function(e)
							{
						if(e.keyCode==27 && popupStatus==1){
							disablepopupAddtoCart();
							disablepopupTP();
							disablePopup();
							disablepopupAddtoCart();
							disablePopup_SizeAndFit();
							disablepopupredirect();
							disablepopupXSS();
							
							
							$("#selector").css('display', 'block');
							$("#SortBy").css('display', 'inline');
							$("#pdpImage").remove();
							$("#Color_Finishes_Popup").css('display', 'none');
							disablePopup_popupVideo();
						}
					});
					$(document).keydown(function(e)
							{
						if (e.keyCode == 27 && popupStatusForgetPassword == 1) {
							disablepopupForgetPassword();
							disablepopupXSS();
							
							$("#selector").css('display', 'block');
							$("#SortBy").css('display', 'inline');
							$("#pdpImage").remove();
							$("#Color_Finishes_Popup").css('display', 'none');
							disablepopupTP();

						}
					});
					
					$(document).keydown(function(e)
							{
						if (e.keyCode == 27 && popupXSS == 1) {
							disablepopupXSS();
							
							$("#selector").css('display', 'block');
							$("#SortBy").css('display', 'inline');
							$("#pdpImage").remove();
							$("#Color_Finishes_Popup").css('display', 'none');
							disablepopupTP();
						

						}
					});
					/* MultipleShipment Button */

					$(".ShipItemsHere")	.click(	function() {
										$('ul.addressline LI').each(function(index) {
															var tc = $(this).find('Div.CheckedAddress').css('display')

															if (tc == "block") {
																$(this).find('Div.CheckedAddress').css('display','none')
																$(this).find('Div.ShipItemsHere').css('display','block')
															}

														});
										formName = $(this).next().next().next().find('form').attr('name');
										submitAddressCode = $(this).attr('id');
									
										$(this).next().show();
										$(this).hide();
										var selectedCode;
										$('#verifySippingInfoMain ul.addressline li').each(function(index) {
											 var selectedChkbx=$(this).find('.ShipItemsHere').css('display');
											 if(selectedChkbx == "none")
											{
												selectedCode=$(this).find('.editAddressOpen').attr('id');
												
											}
											 
										 });
										$('.viewAll ul.addressline LI.shippadd').each(function(index) {				
											
											var selectedValue=$(this).find('.editAddressOpen').attr('id');
											if (selectedValue == selectedCode)
												 {
													 
												
												$(this).find('Div.CheckedAddress').css('display','block');
												$(this).find('Div.ShipItemsHere').css('display','none');
												submitAddressCode = $(this).find('Div.ShipItemsHere').attr('id');
												
													
												 }					
										 });
										
										
										if (typeof handleTaxAndTotalCalculationOnAddressChange == 'function') {handleTaxAndTotalCalculationOnAddressChange();
										}
									});

					$('ul.addressline LI').each(function(index) {
								var checked = $(this).find('Div.editDivForm span.selectedAddress').attr('title');

								if (checked == "yes") {
								$(this).find('Div.CheckedAddress').css('display', 'block');
									$(this).find('Div.ShipItemsHere').css('display', 'none');
								}

							});
					/* MultipleShipment end */

					var height;
					var Longheight
					/* Drop Down Mycart */
					$("#top_login_link ul li:nth-child(2)").css('padding-right','0px');
					
					$("#top_login_link ul li").first().mouseover(function() {
										$(this).css('display', 'block');
										$('#CartItems').show();

										var height = $(this).find(".cartgroup").height();
										
										if (height >= 550) {
											
											 if ($.browser.msie) {
												 $(this).find(".cartgroup").css('height', '500px');
												 $(this).find(".cartgroup").css('position', 'relative');
												 $(this).find(".cartgroup").css('overflow-y', 'scroll');
												 $(this).find(".cartgroup").css('overflow-x', 'hidden');
												
											 }else
											 {
											$(this).find(".cartgroup").css( {'height':'500px','overflow':'auto'} );
											 }
											 }

											
										
										$(this).css('border','1px solid #dcdcdc');										
										$(this).next().css('color','#ffffff');
									});

					$("#top_login_link ul li").first().mouseout(function() {
					
						
						$(this).css({'border':'1px solid #ffffff','z-index':'9001'})
						$(this).next().css({'color':'#4D5150','padding-right':'0px'});
						$('#CartItems').hide();
						$('#CartItems').css('display','none');

					});

					var userAgent = navigator.userAgent.toLowerCase();
					$.browser.chrome = /chrome/.test(navigator.userAgent
							.toLowerCase());

					// Is this a version of IE?
					if ($.browser.msie) {
						$('body').addClass('browserIE');

						// Add the version number
						$('body')
								.addClass(
										'browserIE'
												+ $.browser.version.substring(
														0, 1));
					}

					// Is this a version of Chrome?
					if ($.browser.chrome) {

						$('body').addClass('browserChrome');

						// Add the version number
						userAgent = userAgent.substring(userAgent
								.indexOf('chrome/') + 7);
						userAgent = userAgent.substring(0, 1);
						$('body').addClass('browserChrome' + userAgent);

						// If it is chrome then jQuery thinks it's safari so we
						// have to tell it it isn't
						$.browser.safari = false;
					}

					// Is this a version of Safari?
					if ($.browser.safari) {
						$('body').addClass('browserSafari');

						// Add the version number
						userAgent = userAgent.substring(userAgent
								.indexOf('version/') + 8);
						userAgent = userAgent.substring(0, 1);
						$('body').addClass('browserSafari' + userAgent);
					}

					// Is this a version of Mozilla?
					if ($.browser.mozilla) {

						// Is it Firefox?
						if (navigator.userAgent.toLowerCase()
								.indexOf('firefox') != -1) {
							$('body').addClass('browserFirefox');

							// Add the version number
							userAgent = userAgent.substring(userAgent
									.indexOf('firefox/') + 8);
							userAgent = userAgent.substring(0, 1);
							$('body').addClass('browserFirefox' + userAgent);
						}
						// If not then it must be another Mozilla
						else {
							$('body').addClass('browserMozilla');
						}
					}

					// Is this a version of Opera?
					if ($.browser.opera) {
						$('body').addClass('browserOpera');
					}

					$('.Product_wraper UL LI').each(
							function(index) {
								var offset = jQuery(this).offset();
								

								if ($(this).find("Div").hasClass("Badge")) {

									var wdth = $(this).find('span.BadgeText').width();
									$(this).find('span.BadgeText').css('display', 'block');
								}
							});

					$('.Product_wraper UL LI div.LimitedEd').each(
							function(index) {
								var offset = jQuery(this).offset();
								});

					jQuery('.Product_wraper UL LI Div.product_image Img')
							.mouseover(
									function() {
										var offset = jQuery(this).offset();
										var lt = (offset.left)+ (jQuery(this).width() / 2)- 38;
										var tp = (offset.top)+ (jQuery(this).height() / 2)- 15;
										$('#qv').css({'top': tp + 'px','left': lt + 'px'});
										$('#qv').show();
										var pcode = $(this).attr("class");
										var Source = $(this).attr("src");
										$('#qv').find("a").attr('id', pcode);
										$('#qv').find("a").attr('name', Source);
									});
					jQuery('.Product_wraper UL LI Div.product_image Img')
							.mouseout(function() {
								$('#qv').hide();
							});

					jQuery('.Comp_Image').mouseover(
							function() {
								var offset = jQuery(this).offset();
								var lt = (offset.left)+ (jQuery(this).width() / 2) - 38;
								var tp = (offset.top)+ (jQuery(this).height() / 2) - 15;
								$('#qv').css({'top': tp + 'px','left': lt + 'px'});
								$('#qv').show();
								var pcode = $(this).attr("name");
								$('#qv').find("a").attr('id', pcode);
							});
					jQuery('.Comp_Image').mouseout(function() {$('#qv').hide();});
					jQuery('#qv').mouseover(function() {$('#qv').show();});

					// Quick View

					$("a.OpenPopup").click(function() {
						centerPopup();
						loadPopup();
						$(".fb_iframe_widget").css('visibility', 'hidden');
						return false
					});
					$("a.OpenPopupResetPassword").click(function() {
						centerPopupForgetPassword();
						loadpopupForgetPassword();
						$(".fb_iframe_widget").css('visibility', 'hidden');
						return false
					});
					$("a.OpenCancelPopup").click(function() {
						centerpopupContactCancel();
						loadPopup_popupContactCancel();
						return false
					});

					$("a.OpenDeletePopup").click(function() {
						var anchorId = $(this).attr("id");
							
						centerpopupContactDelete();
						loadPopup_popupContactDelete(anchorId)
						return false
					});
					
					$("a.OpenPopupvideo").click(function() {
						var anchorId = $(this).attr("id");
						var anchorName = $(this).attr("name");

						center_popupVideo();
						loadPopup_popupVideo(anchorId, anchorName)
						return false
					});

					$("a.OpenPopupSizeAndFit").click(function() {
						centerPopupSizeAndFit();
						loadPopup_SizeAndFit();
						return false
					});

					$(window).scroll(function() {
						$(".scrollingDiv").stop().animate({
							"marginTop" : ($(window).scrollTop() + 15) + "px"}, "slow");
						$(".scrollingDiv").css('opacity', '1');
					});

					/* Navigation Start */

					$('ul.ftg li').each(function(index) {
										$(this).mouseover(function() {
															if (!($(this)
																	.hasClass('SeeField'))) {
																Current_Li = $(this).text();
																var offset = jQuery(this).position();
																var lt = (offset.left);
																var div_width;
																$("#Nav_Holder_"+ index).css('display','block');
																$("#Nav_Holder_"+ index).css('left',lt+ 'px');
																var colnavLen = $("#Nav_Holder_"+ index).find('.col_nav').length;

																if (colnavLen < 2) {
																	$("#Nav_Holder_"+ index).find('.col_nav').removeClass('topNavMenuBg');
																}

																var offset1 = jQuery("#Nav_Holder_"+ index+ ' ul').offset();
																var liHeight = 0;
																$("#Nav_Holder_"+ index+ ' ul#firstcall li').each(function(index) {
																					if (index < 12) {
																					liHeight = liHeight+ $(this).height();
																					}
																					if (index == 12) {
																						$(this).addClass('second_Col');
																						$(this).addClass('first');
																					}
																					if ((index > 12) && (index < 24)) {
																						$(this).addClass('second_Col');
																					}
																					if (index == 24) {
																						$(this).addClass('third_Col');
																						$(this).addClass('first');
																					}
																					if ((index > 24) && (index < 36)) {
																						$(this).addClass('third_Col');
																					}
																				});
																$("#Nav_Holder_"+ index+ ' ul#firstcall').css('height',liHeight);
																var accum_width = 0;
																$("#Nav_Holder_"+ index).find('.col_nav')
																		.each(function() {
																		accum_width += $(this).width() + 3;
																				});
																$("#Nav_Holder_"+ index).width(accum_width);
																if (accum_width+ lt > 950) {
																	$("#Nav_Holder_"+ index).css({'left':'auto','right':'-1px'});
																} else {
																	$("#Nav_Holder_"+ index).css('left',lt- 1+ 'px');
																}
																var liWidth = $(this).width();
																var ddWidth = $("#Nav_Holder_"+ index).width();
																if (liWidth > ddWidth) {
																	$("#Nav_Holder_"+ index).css('width',liWidth);
																	$("#Nav_Holder_"+ index+ " li").css('width',liWidth - 12);
																	$("#Nav_Holder_"+ index+ " li span").css('width',liWidth - 12);
																}
															}
														});
										$('ul.ftg li').mouseout(
												function() {
													$("#Nav_Holder_" + index).css('display','none')
												});

										$("#Nav_Holder_" + index)
												.mouseover(
														function() {
															$("#Nav_Holder_"+ index).css('display','block')
															$('ul.ftg li').each(
																			function(index) {
																				var act_Text = $(this).text();
																			});
															$('ul.ftg li a').each(function(index) {
																				var act_Text = $(this).text();
																				if (act_Text == Current_Li) {
																				}
																			});
														});

										$("#Nav_Holder_" + index).mouseout(function() {
															$("#Nav_Holder_"+ index).css('display','none')
															$('ul.ftg li').each(function(index) {
																				var act_Text = $(this).text();
																				if (act_Text == Current_Li) {
																				}
																			});
															$('ul.ftg li a').each(function(index) {
																				var act_Text = $(this).text();
																				if (act_Text == Current_Li) {
																				}
																			});
														});
									});

					/* Navigation End */
					/* Color Swatch Product Detail */
					$("#search_form .Category input").click(function() {
						$('#search_form').submit();

					});

					$('.SelectColor ul li').click(function() {

										var pos = $(this).index();
										$('.SelectColor ul li').each(function(index) {

														
													if (index == pos) {$(this).find('span.clr_block').addClass('SelectedColor');
															$(this).addClass('ClickedItem');
															$(this).find('span Img').css('visibility','visible');
															$(this).find('span.clr_block').css({'width':'28px','height':'13px'});
															} else {
																$(this).find('span.clr_block').removeClass('SelectedColor');
																$(this).removeClass('ClickedItem');
																$(this).find('span Img').css('visibility','hidden');
																$(this).find('span.clr_block').css('width','30px');
																$(this).find('span.clr_block').css('height','15px');
															}
														});
									});

									$('.SelectFinishes ul li').click(function() {

										var pos = $(this).index();
										$('.SelectFinishes ul li').each(function(index) {

															if (index == pos) {
															$(this).find('span.clr_block').addClass('SelectedColor');
															$(this).addClass('ClickedItem');
															$(this).find('span Img').css('visibility','visible');
															$(this).find('span.clr_block').css({'width':'28px','height':'13px'});

															} else {
															$(this).find('span.clr_block').removeClass('SelectedColor');
															$(this).removeClass('ClickedItem');
															$(this).find('span Img').css('visibility','hidden');
															$(this).find('span.clr_block').css({'width':'30px','height':'15px'});
															}
														});

									});
					/* Color Swatch Product detail End */
					/* Facet Bubble */
					$(".brd_first .facetWhatsThis").mouseover(
							function() {

								
								var TitleName = $(this).parent().children(".facetTileCat").attr("title");	
								var divId = $(this).parent().children(".facetTileCat").attr("id");	
								var FacetHelpText = $(this).parent().children("#"+'help'+divId).val();	
								var BubblePlace = jQuery(this).offset();
								var BubblePlace_Top = BubblePlace.top;
								var BubblePlace_Left = BubblePlace.left;

								$('.facetBubble').css({'top':BubblePlace_Top + 30 + 'px','left':BubblePlace_Left + 20 + 'px'});
								$('.facetBubble').show();
								$('.facetBubble span.BubbleTitle strong').html(TitleName);
								$('.facetBubble p').html(FacetHelpText);
							});

					$(".brd_first .facetWhatsThis").mouseout(function() {

						$('.facetBubble').hide();
					});

					/* Checkout gift page */
					$("#Checkout .giftwrap input:radio").click(function() {
					$(this).each(function(index) {
					var state = $(this).hasClass('textareaMessage').toString();
							if (state == "true") {
								$(this).siblings(".limit").css('display','block');
								//$(this).siblings("textarea").css('display','block');

															} 
															else {
																$(this).siblings(".limit").css('display','none');
																//$(this).siblings(".textarea").css('display','none');
															}

														});

									
									});
					/* Checkout gift page End */
					/* Facet Bubble End */
					$(".MoreFilter").click(function() {

						$('.MoreFacetLinks').toggle();
						$(this).find("img").toggle();

					});

					jQuery('.Product_wraper UL LI Div.product_image Img').each(
							function(index) {
								var altVal = $(this).attr("alt");
								var altVal_length = altVal.length;
								if (altVal_length >= 26) {
									altVal = altVal.substring(0, 25);
									$(this).attr('alt', altVal);
								}

							});

				});
/* Onready END */
/* validation Start */
/*
 * jQuery validation plug-in 1.5.5
 * 
 * http://bassistance.de/jquery-plugins/jquery-plugin-validation/
 * http://docs.jquery.com/Plugins/Validation
 * 
 * Copyright (c) 2006 - 2008 JÃ¶rn Zaefferer
 * 
 * $Id: jquery.validate.js 6403 2009-06-17 14:27:16Z joern.zaefferer $
 * 
 * Dual licensed under the MIT and GPL licenses:
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.gnu.org/licenses/gpl.html
 */

(function($) {

	$
			.extend(
					$.fn,
					{
						// http://docs.jquery.com/Plugins/Validation/validate
						validate : function(options) {

							// if nothing is selected, return nothing; can't
							// chain anyway
							if (!this.length) {
								options
										&& options.debug
										&& window.console
										&& console
												.warn("nothing selected, can't validate, returning nothing");
								return;
							}

							// check if a validator for this form was already
							// created
							var validator = $.data(this[0], 'validator');
							if (validator) {
								return validator;
							}

							validator = new $.validator(options, this[0]);
							$.data(this[0], 'validator', validator);

							if (validator.settings.onsubmit) {

								// allow suppresing validation by adding a
								// cancel class to the submit button
								this.find("input, button").filter(".cancel")
										.click(function() {
											validator.cancelSubmit = true;
										});

								// when a submitHandler is used, capture the
								// submitting button
								if (validator.settings.submitHandler) {
									this.find("input, button")
											.filter(":submit")
											.click(function() {
												validator.submitButton = this;
											});
								}

								// validate the form on submit
								this
										.submit(function(event) {
											if (validator.settings.debug)
												// prevent form submit to be
												// able to see console output
												event.preventDefault();

											function handle() {
												if (validator.settings.submitHandler) {
													if (validator.submitButton) {
														// insert a hidden input
														// as a replacement for
														// the missing submit
														// button
														var hidden = $(
																"<input type='hidden'/>")
																.attr(
																		"name",
																		validator.submitButton.name)
																.val(
																		validator.submitButton.value)
																.appendTo(
																		validator.currentForm);
													}
													validator.settings.submitHandler
															.call(
																	validator,
																	validator.currentForm);
													if (validator.submitButton) {
														// and clean up
														// afterwards; thanks to
														// no-block-scope,
														// hidden can be
														// referenced
														hidden.remove();
													}
													return false;
												}
												return true;
											}

											// prevent submit for invalid forms
											// or custom submit handlers
											if (validator.cancelSubmit) {
												validator.cancelSubmit = false;
												return handle();
											}
											if (validator.form()) {
												if (validator.pendingRequest) {
													validator.formSubmitted = true;
													return false;
												}
												return handle();
											} else {
												validator.focusInvalid();
												return false;
											}
										});
							}

							return validator;
						},
						// http://docs.jquery.com/Plugins/Validation/valid
						valid : function() {
							if ($(this[0]).is('form')) {
								return this.validate().form();
							} else {
								var valid = true;
								var validator = $(this[0].form).validate();
								this.each(function() {
									valid &= validator.element(this);
								});
								return valid;
							}
						},
						// attributes: space seperated list of attributes to
						// retrieve and remove
						removeAttrs : function(attributes) {
							var result = {}, $element = this;
							$.each(attributes.split(/\s/), function(index,
									value) {
								result[value] = $element.attr(value);
								$element.removeAttr(value);
							});
							return result;
						},
						// http://docs.jquery.com/Plugins/Validation/rules
						rules : function(command, argument) {
							var element = this[0];

							if (command) {
								var settings = $
										.data(element.form, 'validator').settings;
								var staticRules = settings.rules;
								var existingRules = $.validator
										.staticRules(element);
								switch (command) {
								case "add":
									$.extend(existingRules, $.validator
											.normalizeRule(argument));
									staticRules[element.name] = existingRules;
									if (argument.messages)
										settings.messages[element.name] = $
												.extend(
														settings.messages[element.name],
														argument.messages);
									break;
								case "remove":
									if (!argument) {
										delete staticRules[element.name];
										return existingRules;
									}
									var filtered = {};
									$
											.each(
													argument.split(/\s/),
													function(index, method) {
														filtered[method] = existingRules[method];
														delete existingRules[method];
													});
									return filtered;
								}
							}

							var data = $.validator.normalizeRules($.extend({},
									$.validator.metadataRules(element),
									$.validator.classRules(element),
									$.validator.attributeRules(element),
									$.validator.staticRules(element)), element);

							// make sure required is at front
							if (data.required) {
								var param = data.required;
								delete data.required;
								data = $.extend({
									required : param
								}, data);
							}

							return data;
						}
					});

	// Custom selectors
	$.extend($.expr[":"], {
		// http://docs.jquery.com/Plugins/Validation/blank
		blank : function(a) {
			return !$.trim(a.value);
		},
		// http://docs.jquery.com/Plugins/Validation/filled
		filled : function(a) {
			return !!$.trim(a.value);
		},
		// http://docs.jquery.com/Plugins/Validation/unchecked
		unchecked : function(a) {
			return !a.checked;
		}
	});

	// constructor for validator
	$.validator = function(options, form) {
		this.settings = $.extend({}, $.validator.defaults, options);
		this.currentForm = form;
		this.init();
	};

	$.validator.format = function(source, params) {
		if (arguments.length == 1)
			return function() {
				var args = $.makeArray(arguments);
				args.unshift(source);
				return $.validator.format.apply(this, args);
			};
		if (arguments.length > 2 && params.constructor != Array) {
			params = $.makeArray(arguments).slice(1);
		}
		if (params.constructor != Array) {
			params = [ params ];
		}
		$.each(params, function(i, n) {
			source = source.replace(new RegExp("\\{" + i + "\\}", "g"), n);
		});
		return source;
	};

	$
			.extend(
					$.validator,
					{

						defaults : {
							messages : {},
							groups : {},
							rules : {},
							errorClass : "error",
							validClass : "valid",
							errorElement : "label",
							focusInvalid : true,
							errorContainer : $([]),
							errorLabelContainer : $([]),
							onsubmit : true,
							ignore : [],
							ignoreTitle : false,
							onfocusin : function(element) {
								this.lastActive = element;

								// hide error label and remove error class on
								// focus if enabled
								if (this.settings.focusCleanup
										&& !this.blockFocusCleanup) {
									this.settings.unhighlight
											&& this.settings.unhighlight.call(
													this, element,
													this.settings.errorClass,
													this.settings.validClass);
									this.errorsFor(element).hide();
								}
							},
							onfocusout : function(element) {
								if (!this.checkable(element)
										&& (element.name in this.submitted || !this
												.optional(element))) {
									this.element(element);
								}
							},
							onkeyup : function(element) {
								if (element.name in this.submitted
										|| element == this.lastElement) {
									this.element(element);
								}
							},
							onclick : function(element) {
								if (element.name in this.submitted)
									this.element(element);
							},
							highlight : function(element, errorClass,
									validClass) {
								$(element).addClass(errorClass).removeClass(
										validClass);
							},
							unhighlight : function(element, errorClass,
									validClass) {
								$(element).removeClass(errorClass).addClass(
										validClass);
							}
						},

						// http://docs.jquery.com/Plugins/Validation/Validator/setDefaults
						setDefaults : function(settings) {
							$.extend($.validator.defaults, settings);
						},

						messages : {
							required : "This field is required.",
							remote : "Please fix this field.",
							email : "Please enter a valid email address.",
							url : "Please enter a valid URL.",
							date : "Please enter a valid date.",
							dateISO : "Please enter a valid date (ISO).",
							dateDE : "Bitte geben Sie ein gÃ¼ltiges Datum ein.",
							number : "Please enter a valid number.",
							lettersonly : "Bitte geben Sie eine Nummer ein.",
							digits : "Password must have a minimum of 8 characters and should include one upper case letter, one lower case letter and one numeric or special character.",
							creditcard : "Please enter a valid credit card number.",
							equalTo : "Please enter the same value again.",
							accept : "Please enter a value with a valid extension.",
							maxlength : $.validator.format("Please enter no more than {0} characters."),
							minlength : $.validator.format("Please enter at least {0} characters."),
							rangelength : $.validator.format("Please enter a value between {0} and {1} characters long."),
							range : $.validator.format("Please enter a value between {0} and {1}."),
							max : $.validator.format("Please enter a value less than or equal to {0}."),
							min : $.validator.format("Please enter a value greater than or equal to {0}.")
						},

						autoCreateRanges : false,

						prototype : {

							init : function() {
								this.labelContainer = $(this.settings.errorLabelContainer);
								this.errorContext = this.labelContainer.length
										&& this.labelContainer
										|| $(this.currentForm);
								this.containers = $(
										this.settings.errorContainer).add(
										this.settings.errorLabelContainer);
								this.submitted = {};
								this.valueCache = {};
								this.pendingRequest = 0;
								this.pending = {};
								this.invalid = {};
								this.reset();

								var groups = (this.groups = {});
								$.each(this.settings.groups, function(key,
										value) {
									$.each(value.split(/\s/), function(index,
											name) {
										groups[name] = key;
									});
								});
								var rules = this.settings.rules;
								$.each(rules, function(key, value) {
									rules[key] = $.validator
											.normalizeRule(value);
								});

								function delegate(event) {
									var validator = $.data(this[0].form,
											"validator");
									validator.settings["on" + event.type]
											&& validator.settings["on"
													+ event.type].call(
													validator, this[0]);
								}
								$(this.currentForm)
										.delegate(
												"focusin focusout keyup",
												":text, :password, :file, select, textarea",
												delegate).delegate("click",
												":radio, :checkbox", delegate);

								if (this.settings.invalidHandler)
									$(this.currentForm).bind(
											"invalid-form.validate",
											this.settings.invalidHandler);
							},

							// http://docs.jquery.com/Plugins/Validation/Validator/form
							form : function() {
								this.checkForm();
								$.extend(this.submitted, this.errorMap);
								this.invalid = $.extend({}, this.errorMap);
								if (!this.valid())
									$(this.currentForm).triggerHandler(
											"invalid-form", [ this ]);
								this.showErrors();
								return this.valid();
							},

							checkForm : function() {
								this.prepareForm();
								for ( var i = 0, elements = (this.currentElements = this
										.elements()); elements[i]; i++) {
									this.check(elements[i]);
								}
								return this.valid();
							},

							// http://docs.jquery.com/Plugins/Validation/Validator/element
							element : function(element) {
								element = this.clean(element);
								this.lastElement = element;
								this.prepareElement(element);
								this.currentElements = $(element);
								var result = this.check(element);
								if (result) {
									delete this.invalid[element.name];
								} else {
									this.invalid[element.name] = true;
								}
								if (!this.numberOfInvalids()) {
									// Hide error containers on last error
									this.toHide = this.toHide
											.add(this.containers);
								}
								this.showErrors();
								return result;
							},

							// http://docs.jquery.com/Plugins/Validation/Validator/showErrors
							showErrors : function(errors) {
								if (errors) {
									// add items to error list and map
									$.extend(this.errorMap, errors);
									this.errorList = [];
									for ( var name in errors) {
										this.errorList.push({
											message : errors[name],
											element : this.findByName(name)[0]
										});
									}
									// remove items from success list
									this.successList = $
											.grep(
													this.successList,
													function(element) {
														return !(element.name in errors);
													});
								}
								this.settings.showErrors ? this.settings.showErrors
										.call(this, this.errorMap,
												this.errorList)
										: this.defaultShowErrors();
							},

							// http://docs.jquery.com/Plugins/Validation/Validator/resetForm
							resetForm : function() {
								if ($.fn.resetForm)
									$(this.currentForm).resetForm();
								this.submitted = {};
								this.prepareForm();
								this.hideErrors();
								this.elements().removeClass(
										this.settings.errorClass);
							},

							numberOfInvalids : function() {
								return this.objectLength(this.invalid);
							},

							objectLength : function(obj) {
								var count = 0;
								for ( var i in obj)
									count++;
								return count;
							},

							hideErrors : function() {
								this.addWrapper(this.toHide).hide();
							},

							valid : function() {
								return this.size() == 0;
							},

							size : function() {
								return this.errorList.length;
							},

							focusInvalid : function() {
								if (this.settings.focusInvalid) {
									try {
										$(
												this.findLastActive()
														|| this.errorList.length
														&& this.errorList[0].element
														|| []).filter(
												":visible").focus();
									} catch (e) {
										// ignore IE throwing errors when
										// focusing hidden elements
									}
								}
							},

							findLastActive : function() {
								var lastActive = this.lastActive;
								return lastActive
										&& $
												.grep(
														this.errorList,
														function(n) {
															return n.element.name == lastActive.name;
														}).length == 1
										&& lastActive;
							},

							elements : function() {
								var validator = this, rulesCache = {};

								// select all valid inputs inside the form (no
								// submit or reset buttons)
								// workaround $Query([]).add until
								// http://dev.jquery.com/ticket/2114 is solved
								return $([])
										.add(this.currentForm.elements)
										.filter(":input")
										.not(
												":submit, :reset, :image, [disabled]")
										.not(this.settings.ignore)
										.filter(
												function() {
													!this.name
															&& validator.settings.debug
															&& window.console
															&& console
																	.error(
																			"%o has no name assigned",
																			this);

													// select only the first
													// element for each name,
													// and only those with rules
													// specified
													if (this.name in rulesCache
															|| !validator
																	.objectLength($(
																			this)
																			.rules()))
														return false;

													rulesCache[this.name] = true;
													return true;
												});
							},

							clean : function(selector) {
								return $(selector)[0];
							},

							errors : function() {
								return $(this.settings.errorElement + "."
										+ this.settings.errorClass,
										this.errorContext);
							},

							reset : function() {
								this.successList = [];
								this.errorList = [];
								this.errorMap = {};
								this.toShow = $([]);
								this.toHide = $([]);
								this.formSubmitted = false;
								this.currentElements = $([]);
							},

							prepareForm : function() {
								this.reset();
								this.toHide = this.errors()
										.add(this.containers);
							},

							prepareElement : function(element) {
								this.reset();
								this.toHide = this.errorsFor(element);
							},

							check : function(element) {
								element = this.clean(element);

								// if radio/checkbox, validate first element in
								// group instead
								if (this.checkable(element)) {
									element = this.findByName(element.name)[0];
								}

								var rules = $(element).rules();
								var dependencyMismatch = false;
								for (method in rules) {
									var rule = {
										method : method,
										parameters : rules[method]
									};
									try {
										var result = $.validator.methods[method]
												.call(this, element.value
														.replace(/\r/g, ""),
														element,
														rule.parameters);

										// if a method indicates that the field
										// is optional and therefore valid,
										// don't mark it as valid when there are
										// no other rules
										if (result == "dependency-mismatch") {
											dependencyMismatch = true;
											continue;
										}
										dependencyMismatch = false;

										if (result == "pending") {
											this.toHide = this.toHide.not(this
													.errorsFor(element));
											return;
										}

										if (!result) {
											this.formatAndAdd(element, rule);
											return false;
										}
									} catch (e) {
										this.settings.debug
												&& window.console
												&& console
														.log("exception occured when checking element "
																+ element.id
																+ ", check the '"
																+ rule.method
																+ "' method");
										throw e;
									}
								}
								if (dependencyMismatch)
									return;
								if (this.objectLength(rules))
									this.successList.push(element);
								return true;
							},

							// return the custom message for the given element
							// and validation method
							// specified in the element's "messages" metadata
							customMetaMessage : function(element, method) {
								if (!$.metadata)
									return;

								var meta = this.settings.meta ? $(element)
										.metadata()[this.settings.meta] : $(
										element).metadata();

								return meta && meta.messages
										&& meta.messages[method];
							},

							// return the custom message for the given element
							// name and validation method
							customMessage : function(name, method) {
								var m = this.settings.messages[name];
								return m
										&& (m.constructor == String ? m
												: m[method]);
							},

							// return the first defined argument, allowing empty
							// strings
							findDefined : function() {
								for ( var i = 0; i < arguments.length; i++) {
									if (arguments[i] !== undefined)
										return arguments[i];
								}
								return undefined;
							},

							defaultMessage : function(element, method) {
								return this.findDefined(this.customMessage(
										element.name, method), this
										.customMetaMessage(element, method),
								// title is never undefined, so handle empty
								// string as undefined
								!this.settings.ignoreTitle && element.title
										|| undefined,
										$.validator.messages[method],
										"<strong>Warning: No message defined for "
												+ element.name + "</strong>");
							},

							formatAndAdd : function(element, rule) {
								var message = this.defaultMessage(element,
										rule.method);
								if (typeof message == "function")
									message = message.call(this,
											rule.parameters, element);
								this.errorList.push({
									message : message,
									element : element
								});
								this.errorMap[element.name] = message;
								this.submitted[element.name] = message;
							},

							addWrapper : function(toToggle) {
								if (this.settings.wrapper)
									toToggle = toToggle.add(toToggle
											.parent(this.settings.wrapper));
								return toToggle;
							},

							defaultShowErrors : function() {
								for ( var i = 0; this.errorList[i]; i++) {
									var error = this.errorList[i];
									this.settings.highlight
											&& this.settings.highlight.call(
													this, error.element,
													this.settings.errorClass,
													this.settings.validClass);
									this
											.showLabel(error.element,
													error.message);
								}
								if (this.errorList.length) {
									this.toShow = this.toShow
											.add(this.containers);
								}
								if (this.settings.success) {
									for ( var i = 0; this.successList[i]; i++) {
										this.showLabel(this.successList[i]);
									}
								}
								if (this.settings.unhighlight) {
									for ( var i = 0, elements = this
											.validElements(); elements[i]; i++) {
										this.settings.unhighlight.call(this,
												elements[i],
												this.settings.errorClass,
												this.settings.validClass);
									}
								}
								this.toHide = this.toHide.not(this.toShow);
								this.hideErrors();
								this.addWrapper(this.toShow).show();
							},

							validElements : function() {
								return this.currentElements.not(this
										.invalidElements());
							},

							invalidElements : function() {
								return $(this.errorList).map(function() {
									return this.element;
								});
							},

							showLabel : function(element, message) {
								var label = this.errorsFor(element);
								if (label.length) {
									// refresh error/success class
									label.removeClass().addClass(
											this.settings.errorClass);

									// check if we have a generated label,
									// replace the message then
									label.attr("generated")
											&& label.html(message);
									label.addClass("rit");
								} else {
									// create label
									label = $(
											"<" + this.settings.errorElement
													+ "/>").attr({
										"for" : this.idOrName(element),
										generated : true
									}).addClass(this.settings.errorClass).html(
											message || "");
									label = label.addClass("rit");
									if (this.settings.wrapper) {
										// make sure the element is visible,
										// even in IE
										// actually showing the wrapped element
										// is handled elsewhere
										label = label.hide().show().wrap(
												"<" + this.settings.wrapper
														+ "/>").parent();
									}
									if (!this.labelContainer.append(label).length)
										this.settings.errorPlacement ? this.settings
												.errorPlacement(label,
														$(element))
												: label.insertBefore(element);
									
									$(".msgError").html(errmsg);
								}
								if (!message && this.settings.success) {
									label.text("");
									typeof this.settings.success == "string" ? label
											.addClass(this.settings.success)
											: this.settings.success(label);
								}
								this.toShow = this.toShow.add(label);
							},

							errorsFor : function(element) {
								return this.errors().filter(
										"[for='" + this.idOrName(element)
												+ "']");
							},

							idOrName : function(element) {
								return this.groups[element.name]
										|| (this.checkable(element) ? element.name
												: element.id || element.name);
							},

							checkable : function(element) {
								return /radio|checkbox/i.test(element.type);
							},

							findByName : function(name) {
								// select by name and filter by form for
								// performance over form.find("[name=...]")
								var form = this.currentForm;
								return $(document.getElementsByName(name)).map(
										function(index, element) {
											return element.form == form
													&& element.name == name
													&& element || null;
										});
							},

							getLength : function(value, element) {
								switch (element.nodeName.toLowerCase()) {
								case 'select':
									return $("option:selected", element).length;
								case 'input':
									if (this.checkable(element))
										return this.findByName(element.name)
												.filter(':checked').length;
								}
								return value.length;
							},

							depend : function(param, element) {
								return this.dependTypes[typeof param] ? this.dependTypes[typeof param]
										(param, element)
										: true;
							},

							dependTypes : {
								"boolean" : function(param, element) {
									return param;
								},
								"string" : function(param, element) {
									return !!$(param, element.form).length;
								},
								"function" : function(param, element) {
									return param(element);
								}
							},

							optional : function(element) {
								return !$.validator.methods.required.call(this,
										$.trim(element.value), element)
										&& "dependency-mismatch";
							},

							startRequest : function(element) {
								if (!this.pending[element.name]) {
									this.pendingRequest++;
									this.pending[element.name] = true;
								}
							},

							stopRequest : function(element, valid) {
								this.pendingRequest--;
								// sometimes synchronization fails, make sure
								// pendingRequest is never < 0
								if (this.pendingRequest < 0)
									this.pendingRequest = 0;
								delete this.pending[element.name];
								if (valid && this.pendingRequest == 0
										&& this.formSubmitted && this.form()) {
									$(this.currentForm).submit();
								} else if (!valid && this.pendingRequest == 0
										&& this.formSubmitted) {
									$(this.currentForm).triggerHandler(
											"invalid-form", [ this ]);
								}
							},

							previousValue : function(element) {
								return $.data(element, "previousValue")
										|| $.data(element, "previousValue",
												previous = {
													old : null,
													valid : true,
													message : this
															.defaultMessage(
																	element,
																	"remote")
												});
							}

						},

						classRuleSettings : {
							required : {
								required : true
							},
							email : {
								email : true
							},
							url : {
								url : true
							},
							date : {
								date : true
							},
							dateISO : {
								dateISO : true
							},
							dateDE : {
								dateDE : true
							},
							number : {
								number : true
							},
							lettersonly : {
								lettersonly : true
							},
							digits : {
								digits : true
							},
							creditcard : {
								creditcard : true
							}
						},

						addClassRules : function(className, rules) {
							className.constructor == String ? this.classRuleSettings[className] = rules
									: $.extend(this.classRuleSettings,
											className);
						},

						classRules : function(element) {
							var rules = {};
							var classes = $(element).attr('class');
							classes
									&& $
											.each(classes.split(' '),function() {
														if (this in $.validator.classRuleSettings) {
															$.extend(rules,$.validator.classRuleSettings[this]);
														}
													});
							return rules;
						},

						attributeRules : function(element) {
							var rules = {};
							var $element = $(element);

							for (method in $.validator.methods) {
								var value = $element.attr(method);
								if (value) {
									rules[method] = value;
								}
							}

							// maxlength may be returned as -1, 2147483647 (IE)
							// and 524288 (safari) for text inputs
							if (rules.maxlength
									&& /-1|2147483647|524288/
											.test(rules.maxlength)) {
								delete rules.maxlength;
							}

							return rules;
						},

						metadataRules : function(element) {
							if (!$.metadata)
								return {};

							var meta = $.data(element.form, 'validator').settings.meta;
							return meta ? $(element).metadata()[meta] : $(
									element).metadata();
						},

						staticRules : function(element) {
							var rules = {};
							var validator = $.data(element.form, 'validator');
							if (validator.settings.rules) {
								rules = $.validator
										.normalizeRule(validator.settings.rules[element.name])
										|| {};
							}
							return rules;
						},

						normalizeRules : function(rules, element) {
							// handle dependency check
							$
									.each(
											rules,
											function(prop, val) {
												// ignore rule when param is
												// explicitly false, eg.
												// required:false
												if (val === false) {
													delete rules[prop];
													return;
												}
												if (val.param || val.depends) {
													var keepRule = true;
													switch (typeof val.depends) {
													case "string":
														keepRule = !!$(val.depends,element.form).length;
														break;
													case "function":
														keepRule = val.depends.call(element,element);
														break;
													}
													if (keepRule) {
														rules[prop] = val.param !== undefined ? val.param
																: true;
													} else {
														delete rules[prop];
													}
												}
											});

							// evaluate parameters
							$
									.each(
											rules,
											function(rule, parameter) {
												rules[rule] = $
														.isFunction(parameter) ? parameter(element)
														: parameter;
											});

							// clean number parameters
							$.each([ 'minlength', 'maxlength', 'min', 'max' ],
									function() {
										if (rules[this]) {rules[this] = Number(rules[this]);}
									});
							$.each([ 'rangelength', 'range' ], function() {
								if (rules[this]) {
									rules[this] = [ Number(rules[this][0]),
											Number(rules[this][1]) ];
								}
							});

							if ($.validator.autoCreateRanges) {
								// auto-create ranges
								if (rules.min && rules.max) {
									rules.range = [ rules.min, rules.max ];
									delete rules.min;
									delete rules.max;
								}
								if (rules.minlength && rules.maxlength) {
									rules.rangelength = [ rules.minlength,
											rules.maxlength ];
									delete rules.minlength;
									delete rules.maxlength;
								}
							}

							// To support custom messages in metadata ignore
							// rule methods titled "messages"
							if (rules.messages) {
								delete rules.messages
							}

							return rules;
						},

						// Converts a simple string to a {string: true} rule,
						// e.g., "required" to {required:true}
						normalizeRule : function(data) {
							if (typeof data == "string") {
								var transformed = {};
								$.each(data.split(/\s/), function() {
									transformed[this] = true;
								});
								data = transformed;
							}
							return data;
						},

						// http://docs.jquery.com/Plugins/Validation/Validator/addMethod
						addMethod : function(name, method, message) {
							$.validator.methods[name] = method;
							$.validator.messages[name] = message
									|| $.validator.messages[name];
							if (method.length < 3) {
								$.validator.addClassRules(name, $.validator
										.normalizeRule(name));
							}
						},

						methods : {

							// http://docs.jquery.com/Plugins/Validation/Methods/required
							required : function(value, element, param) {
								// check if dependency is met
								if (!this.depend(param, element))
									return "dependency-mismatch";
								switch (element.nodeName.toLowerCase()) {
								case 'select':
									var options = $("option:selected", element);
									return options.length > 0
											&& (element.type == "select-multiple" || ($.browser.msie
													&& !(options[0].attributes['value'].specified) ? options[0].text
													: options[0].value).length > 0);
								case 'input':
									if (this.checkable(element))
										return this.getLength(value, element) > 0;
								default:
									return $.trim(value).length > 0;
								}
							},

							// http://docs.jquery.com/Plugins/Validation/Methods/remote
							remote : function(value, element, param) {
								if (this.optional(element))
									return "dependency-mismatch";

								var previous = this.previousValue(element);

								if (!this.settings.messages[element.name])
									this.settings.messages[element.name] = {};
								this.settings.messages[element.name].remote = typeof previous.message == "function" ? previous
										.message(value)
										: previous.message;

								param = typeof param == "string" && {
									url : param
								} || param;

								if (previous.old !== value) {
									previous.old = value;
									var validator = this;
									this.startRequest(element);
									var data = {};
									data[element.name] = value;
									$
											.ajax($
													.extend(
															true,
															{
																url : param,
																mode : "abort",
																port : "validate"
																		+ element.name,
																dataType : "json",
																data : data,
																success : function(
																		response) {
																	var valid = response === true;
																	if (valid) {
																		var submitted = validator.formSubmitted;
																		validator
																				.prepareElement(element);
																		validator.formSubmitted = submitted;
																		validator.successList
																				.push(element);
																		validator
																				.showErrors();
																	} else {
																		var errors = {};
																		errors[element.name] = previous.message = response
																				|| validator
																						.defaultMessage(
																								element,
																								"remote");
																		validator
																				.showErrors(errors);
																	}
																	previous.valid = valid;
																	validator
																			.stopRequest(
																					element,
																					valid);
																}
															}, param));
									return "pending";
								} else if (this.pending[element.name]) {
									return "pending";
								}
								return previous.valid;
							},

							// http://docs.jquery.com/Plugins/Validation/Methods/minlength
							minlength : function(value, element, param) {
								return this.optional(element)
										|| this.getLength($.trim(value),
												element) >= param;
							},

							// http://docs.jquery.com/Plugins/Validation/Methods/maxlength
							maxlength : function(value, element, param) {
								return this.optional(element)
										|| this.getLength($.trim(value),
												element) <= param;
							},

							// http://docs.jquery.com/Plugins/Validation/Methods/rangelength
							rangelength : function(value, element, param) {
								var length = this.getLength($.trim(value),
										element);
								return this.optional(element)
										|| (length >= param[0] && length <= param[1]);
							},

							// http://docs.jquery.com/Plugins/Validation/Methods/min
							min : function(value, element, param) {
								return this.optional(element) || value >= param;
							},

							// http://docs.jquery.com/Plugins/Validation/Methods/max
							max : function(value, element, param) {
								return this.optional(element) || value <= param;
							},

							// http://docs.jquery.com/Plugins/Validation/Methods/range
							range : function(value, element, param) {
								return this.optional(element)
										|| (value >= param[0] && value <= param[1]);
							},

							// http://docs.jquery.com/Plugins/Validation/Methods/email
							email : function(value, element) {
								// contributed by Scott Gonzalez:
								// http://projects.scottsplayground.com/email_address_validation/
								return this.optional(element)
										|| /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/i
												.test(value);
							},

							// http://docs.jquery.com/Plugins/Validation/Methods/url
							url : function(value, element) {
								// contributed by Scott Gonzalez:
								// http://projects.scottsplayground.com/iri/
								return this.optional(element)
										|| /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i
												.test(value);
							},

							// http://docs.jquery.com/Plugins/Validation/Methods/date
							date : function(value, element) {
								return this.optional(element)
										|| !/Invalid|NaN/.test(new Date(value));
							},

							// http://docs.jquery.com/Plugins/Validation/Methods/dateISO
							dateISO : function(value, element) {
								return this.optional(element)
										|| /^\d{4}[\/-]\d{1,2}[\/-]\d{1,2}$/
												.test(value);
							},

							// http://docs.jquery.com/Plugins/Validation/Methods/dateDE
							dateDE : function(value, element) {
								return this.optional(element)
										|| /^\d\d?\.\d\d?\.\d\d\d?\d?$/
												.test(value);
							},

							//   
							number : function(value, element) {
								return this.optional(element)
										|| /^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/
												.test(value);
							},

							// http://docs.jquery.com/Plugins/Validation/Methods/lettersonly
							lettersonly : function(value, element) {
								return this.optional(element)
								 || /^[a-zA-Z]+$/
								 .test(value);		
								//|| /^-?(?:\d+|\d{1,3}(?:\.\d{3})+)(?:,\d+)?$/.test(value);
							},

							// http://docs.jquery.com/Plugins/Validation/Methods/digits
							digits : function(value, element) {
								return this.optional(element)
										|| /^(?=.*[\d\W])(?=.{8,})(^[\S]*$)?$/
												.test(value);
							},

							// http://docs.jquery.com/Plugins/Validation/Methods/creditcard
							// based on http://en.wikipedia.org/wiki/Luhn
							creditcard : function(value, element) {
								if (this.optional(element))
									return "dependency-mismatch";
								// accept only digits and dashes
								if (/[^0-9-]+/.test(value))
									return false;
								var nCheck = 0, nDigit = 0, bEven = false;

								value = value.replace(/\D/g, "");

								for (n = value.length - 1; n >= 0; n--) {
									var cDigit = value.charAt(n);
									var nDigit = parseInt(cDigit, 10);
									if (bEven) {
										if ((nDigit *= 2) > 9)
											nDigit -= 9;
									}
									nCheck += nDigit;
									bEven = !bEven;
								}

								return (nCheck % 10) == 0;
							},

							// http://docs.jquery.com/Plugins/Validation/Methods/accept
							accept : function(value, element, param) {
								param = typeof param == "string" ? param
										.replace(/,/g, '|') : "png|jpe?g|gif";
								return this.optional(element)
										|| value.match(new RegExp(".(" + param
												+ ")$", "i"));
							},

							// http://docs.jquery.com/Plugins/Validation/Methods/equalTo
							equalTo : function(value, element, param) {
								return value == $(param).val();
							}

						}

					});

	// deprecated, use $.validator.format instead
	$.format = $.validator.format;

})(jQuery);

// ajax mode: abort
// usage: $.ajax({ mode: "abort"[, port: "uniqueport"]});
// if mode:"abort" is used, the previous request on that port (port can be
// undefined) is aborted via XMLHttpRequest.abort()
;
(function($) {
	var ajax = $.ajax;
	var pendingRequests = {};
	$.ajax = function(settings) {
		// create settings for compatibility with ajaxSetup
		settings = $.extend(settings, $.extend({}, $.ajaxSettings, settings));
		var port = settings.port;
		if (settings.mode == "abort") {
			if (pendingRequests[port]) {
				pendingRequests[port].abort();
			}
			return (pendingRequests[port] = ajax.apply(this, arguments));
		}
		return ajax.apply(this, arguments);
	};
})(jQuery);

// provides cross-browser focusin and focusout events
// IE has native support, in other browsers, use event caputuring (neither
// bubbles)

// provides delegate(type: String, delegate: Selector, handler: Callback) plugin
// for easier event delegation
// handler is only called when $(event.target).is(delegate), in the scope of the
// jquery-object for event.target

// provides triggerEvent(type: String, target: Element) to trigger delegated
// events
;
(function($) {
	$.each({
		focus : 'focusin',
		blur : 'focusout'
	}, function(original, fix) {
		$.event.special[fix] = {
			setup : function() {
				if ($.browser.msie)
					return false;
				this.addEventListener(original, $.event.special[fix].handler,
						true);
			},
			teardown : function() {
				if ($.browser.msie)
					return false;
				this.removeEventListener(original,
						$.event.special[fix].handler, true);
			},
			handler : function(e) {
				arguments[0] = $.event.fix(e);
				arguments[0].type = fix;
				return $.event.handle.apply(this, arguments);
			}
		};
	});
	$.extend($.fn, {
		delegate : function(type, delegate, handler) {
			return this.bind(type, function(event) {
				var target = $(event.target);
				if (target.is(delegate)) {
					return handler.apply(target, arguments);
				}
			});
		},
		triggerEvent : function(type, target) {
			return this.triggerHandler(type, [ $.event.fix({
				type : type,
				target : target
			}) ]);
		}
	})
})(jQuery);
/* Validation End */

/* Quick View swacth Mouse over */

function showColor(colorText) {
	$(
			'.PopUp_product_Info .SelectColor ul li,.FeaturesProductRight .SelectColor ul li')
			.mouseover(
					function() {

						var ColorSwatchPos = $(this).offset();
						var ColorSwatchPosTop = ColorSwatchPos.top;
						var ColorSwatchPosLeft = ColorSwatchPos.left;
						$('#Color_Finishes_Popup').html('');
						$('#Color_Finishes_Popup').html(colorText);

						$('#Color_Finishes_Popup').css('display', 'block');
						$('#Color_Finishes_Popup').css('top',
								ColorSwatchPosTop-25 + 'px');

						$('#Color_Finishes_Popup').css('left',
								ColorSwatchPosLeft + 'px');

					});
}

function hideColor() {

	$(
			'.PopUp_product_Info .SelectColor ul li,.FeaturesProductRight .SelectColor ul li')
			.mouseout(function() {
				$('#Color_Finishes_Popup').css('display', 'none');
			});
}

/* End Quick View swacth Mouse over */

/* trim method */
String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g, "");
}


function paymetricPopupSettings(whatisThisText){
	$("#PayNowButton").css('display','none');
	
	$(".PaymentPage_PayNowButton").css('display','none');
	
	$("table.DataIntercept").attr('width','');
	$("table.DataIntercept").find("tr td input").css('margin','0px');
	
	$("table.DataIntercept").find("tr td input").css('width','198px');
	$("table.DataIntercept").find("tr td select").css('width','198px');
	$("table.DataIntercept").find("tr td").css('padding','10px 20px 0px 0');
	
	$(".DataIntercept tr:nth-child(4) td:nth-child(2) input").css('width','20px');
	var ExpDateLabel = $(".DataIntercept tr:nth-child(4) td:nth-child(1)").html();
	$(".DataIntercept tr:nth-child(4) td:nth-child(1)").html("");
	$(".DataIntercept tr:nth-child(4) td:nth-child(1)").html(ExpDateLabel+"(MM/YY)*");
	
	var CardNum = $(".DataIntercept tr:nth-child(2) td:nth-child(1)").html();
	$(".DataIntercept tr:nth-child(2) td:nth-child(1)").html("");
	$(".DataIntercept tr:nth-child(2) td:nth-child(1)").html(CardNum+"*");	
	$(".DataIntercept tr:nth-child(2) td:nth-child(2) input").attr('AUTOCOMPLETE','OFF');
	
	var CardType = $(".DataIntercept tr:nth-child(1) td:nth-child(1)").html();
	
	$(".DataIntercept tr:nth-child(1) td:nth-child(1)").html("");
	$(".DataIntercept tr:nth-child(1) td:nth-child(1)").html(CardType+"*");
	
	
	var CVV = $(".DataIntercept tr:nth-child(6) td:nth-child(1)").html();
	$(".DataIntercept tr:nth-child(6) td:nth-child(1)").html("");
	$(".DataIntercept tr:nth-child(6) td:nth-child(1)").html(CVV+"2*");	
	
	$("table.DataIntercept").find("tr td").css('font-weight','bold');	
	$(".DataIntercept tr:nth-child(6) td:nth-child(2) input").css('width','52px');
	
	var cvvInput = '';
	var cvvInput = $(".DataIntercept tr:nth-child(6) td:nth-child(2)").html();	
	cvvInput = cvvInput.replace('>',' type="password">');	//Masking CVV 	
	$(".DataIntercept tr:nth-child(6) td:nth-child(2)").html(cvvInput);
	$(".DataIntercept tr:nth-child(6) td:nth-child(2)").append('&nbsp;<a class="showCVVtip" href="#" style="cursor:pointer;" onmouseover=showCVVtip(this); onmouseout="showCVVtipclose();">'+whatisThisText+'</a>');

}

function openContactUsPage(linkURL) {
	window.open(linkURL);
}

//Swf object Start
/*	SWFObject v2.2 <http://code.google.com/p/swfobject/> 
	is released under the MIT License <http://www.opensource.org/licenses/mit-license.php> 
*/
var swfobject=function(){var D="undefined",r="object",S="Shockwave Flash",W="ShockwaveFlash.ShockwaveFlash",q="application/x-shockwave-flash",R="SWFObjectExprInst",x="onreadystatechange",O=window,j=document,t=navigator,T=false,U=[h],o=[],N=[],I=[],l,Q,E,B,J=false,a=false,n,G,m=true,M=function(){var aa=typeof j.getElementById!=D&&typeof j.getElementsByTagName!=D&&typeof j.createElement!=D,ah=t.userAgent.toLowerCase(),Y=t.platform.toLowerCase(),ae=Y?/win/.test(Y):/win/.test(ah),ac=Y?/mac/.test(Y):/mac/.test(ah),af=/webkit/.test(ah)?parseFloat(ah.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,X=!+"\v1",ag=[0,0,0],ab=null;if(typeof t.plugins!=D&&typeof t.plugins[S]==r){ab=t.plugins[S].description;if(ab&&!(typeof t.mimeTypes!=D&&t.mimeTypes[q]&&!t.mimeTypes[q].enabledPlugin)){T=true;X=false;ab=ab.replace(/^.*\s+(\S+\s+\S+$)/,"$1");ag[0]=parseInt(ab.replace(/^(.*)\..*$/,"$1"),10);ag[1]=parseInt(ab.replace(/^.*\.(.*)\s.*$/,"$1"),10);ag[2]=/[a-zA-Z]/.test(ab)?parseInt(ab.replace(/^.*[a-zA-Z]+(.*)$/,"$1"),10):0}}else{if(typeof O.ActiveXObject!=D){try{var ad=new ActiveXObject(W);if(ad){ab=ad.GetVariable("$version");if(ab){X=true;ab=ab.split(" ")[1].split(",");ag=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]}}}catch(Z){}}}return{w3:aa,pv:ag,wk:af,ie:X,win:ae,mac:ac}}(),k=function(){if(!M.w3){return}if((typeof j.readyState!=D&&j.readyState=="complete")||(typeof j.readyState==D&&(j.getElementsByTagName("body")[0]||j.body))){f()}if(!J){if(typeof j.addEventListener!=D){j.addEventListener("DOMContentLoaded",f,false)}if(M.ie&&M.win){j.attachEvent(x,function(){if(j.readyState=="complete"){j.detachEvent(x,arguments.callee);f()}});if(O==top){(function(){if(J){return}try{j.documentElement.doScroll("left")}catch(X){setTimeout(arguments.callee,0);return}f()})()}}if(M.wk){(function(){if(J){return}if(!/loaded|complete/.test(j.readyState)){setTimeout(arguments.callee,0);return}f()})()}s(f)}}();function f(){if(J){return}try{var Z=j.getElementsByTagName("body")[0].appendChild(C("span"));Z.parentNode.removeChild(Z)}catch(aa){return}J=true;var X=U.length;for(var Y=0;Y<X;Y++){U[Y]()}}function K(X){if(J){X()}else{U[U.length]=X}}function s(Y){if(typeof O.addEventListener!=D){O.addEventListener("load",Y,false)}else{if(typeof j.addEventListener!=D){j.addEventListener("load",Y,false)}else{if(typeof O.attachEvent!=D){i(O,"onload",Y)}else{if(typeof O.onload=="function"){var X=O.onload;O.onload=function(){X();Y()}}else{O.onload=Y}}}}}function h(){if(T){V()}else{H()}}function V(){var X=j.getElementsByTagName("body")[0];var aa=C(r);aa.setAttribute("type",q);var Z=X.appendChild(aa);if(Z){var Y=0;(function(){if(typeof Z.GetVariable!=D){var ab=Z.GetVariable("$version");if(ab){ab=ab.split(" ")[1].split(",");M.pv=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]}}else{if(Y<10){Y++;setTimeout(arguments.callee,10);return}}X.removeChild(aa);Z=null;H()})()}else{H()}}function H(){var ag=o.length;if(ag>0){for(var af=0;af<ag;af++){var Y=o[af].id;var ab=o[af].callbackFn;var aa={success:false,id:Y};if(M.pv[0]>0){var ae=c(Y);if(ae){if(F(o[af].swfVersion)&&!(M.wk&&M.wk<312)){w(Y,true);if(ab){aa.success=true;aa.ref=z(Y);ab(aa)}}else{if(o[af].expressInstall&&A()){var ai={};ai.data=o[af].expressInstall;ai.width=ae.getAttribute("width")||"0";ai.height=ae.getAttribute("height")||"0";if(ae.getAttribute("class")){ai.styleclass=ae.getAttribute("class")}if(ae.getAttribute("align")){ai.align=ae.getAttribute("align")}var ah={};var X=ae.getElementsByTagName("param");var ac=X.length;for(var ad=0;ad<ac;ad++){if(X[ad].getAttribute("name").toLowerCase()!="movie"){ah[X[ad].getAttribute("name")]=X[ad].getAttribute("value")}}P(ai,ah,Y,ab)}else{p(ae);if(ab){ab(aa)}}}}}else{w(Y,true);if(ab){var Z=z(Y);if(Z&&typeof Z.SetVariable!=D){aa.success=true;aa.ref=Z}ab(aa)}}}}}function z(aa){var X=null;var Y=c(aa);if(Y&&Y.nodeName=="OBJECT"){if(typeof Y.SetVariable!=D){X=Y}else{var Z=Y.getElementsByTagName(r)[0];if(Z){X=Z}}}return X}function A(){return !a&&F("6.0.65")&&(M.win||M.mac)&&!(M.wk&&M.wk<312)}function P(aa,ab,X,Z){a=true;E=Z||null;B={success:false,id:X};var ae=c(X);if(ae){if(ae.nodeName=="OBJECT"){l=g(ae);Q=null}else{l=ae;Q=X}aa.id=R;if(typeof aa.width==D||(!/%$/.test(aa.width)&&parseInt(aa.width,10)<310)){aa.width="310"}if(typeof aa.height==D||(!/%$/.test(aa.height)&&parseInt(aa.height,10)<137)){aa.height="137"}j.title=j.title.slice(0,47)+" - Flash Player Installation";var ad=M.ie&&M.win?"ActiveX":"PlugIn",ac="MMredirectURL="+O.location.toString().replace(/&/g,"%26")+"&MMplayerType="+ad+"&MMdoctitle="+j.title;if(typeof ab.flashvars!=D){ab.flashvars+="&"+ac}else{ab.flashvars=ac}if(M.ie&&M.win&&ae.readyState!=4){var Y=C("div");X+="SWFObjectNew";Y.setAttribute("id",X);ae.parentNode.insertBefore(Y,ae);ae.style.display="none";(function(){if(ae.readyState==4){ae.parentNode.removeChild(ae)}else{setTimeout(arguments.callee,10)}})()}u(aa,ab,X)}}function p(Y){if(M.ie&&M.win&&Y.readyState!=4){var X=C("div");Y.parentNode.insertBefore(X,Y);X.parentNode.replaceChild(g(Y),X);Y.style.display="none";(function(){if(Y.readyState==4){Y.parentNode.removeChild(Y)}else{setTimeout(arguments.callee,10)}})()}else{Y.parentNode.replaceChild(g(Y),Y)}}function g(ab){var aa=C("div");if(M.win&&M.ie){aa.innerHTML=ab.innerHTML}else{var Y=ab.getElementsByTagName(r)[0];if(Y){var ad=Y.childNodes;if(ad){var X=ad.length;for(var Z=0;Z<X;Z++){if(!(ad[Z].nodeType==1&&ad[Z].nodeName=="PARAM")&&!(ad[Z].nodeType==8)){aa.appendChild(ad[Z].cloneNode(true))}}}}}return aa}function u(ai,ag,Y){var X,aa=c(Y);if(M.wk&&M.wk<312){return X}if(aa){if(typeof ai.id==D){ai.id=Y}if(M.ie&&M.win){var ah="";for(var ae in ai){if(ai[ae]!=Object.prototype[ae]){if(ae.toLowerCase()=="data"){ag.movie=ai[ae]}else{if(ae.toLowerCase()=="styleclass"){ah+=' class="'+ai[ae]+'"'}else{if(ae.toLowerCase()!="classid"){ah+=" "+ae+'="'+ai[ae]+'"'}}}}}var af="";for(var ad in ag){if(ag[ad]!=Object.prototype[ad]){af+='<param name="'+ad+'" value="'+ag[ad]+'" />'}}aa.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'+ah+">"+af+"</object>";N[N.length]=ai.id;X=c(ai.id)}else{var Z=C(r);Z.setAttribute("type",q);for(var ac in ai){if(ai[ac]!=Object.prototype[ac]){if(ac.toLowerCase()=="styleclass"){Z.setAttribute("class",ai[ac])}else{if(ac.toLowerCase()!="classid"){Z.setAttribute(ac,ai[ac])}}}}for(var ab in ag){if(ag[ab]!=Object.prototype[ab]&&ab.toLowerCase()!="movie"){e(Z,ab,ag[ab])}}aa.parentNode.replaceChild(Z,aa);X=Z}}return X}function e(Z,X,Y){var aa=C("param");aa.setAttribute("name",X);aa.setAttribute("value",Y);Z.appendChild(aa)}function y(Y){var X=c(Y);if(X&&X.nodeName=="OBJECT"){if(M.ie&&M.win){X.style.display="none";(function(){if(X.readyState==4){b(Y)}else{setTimeout(arguments.callee,10)}})()}else{X.parentNode.removeChild(X)}}}function b(Z){var Y=c(Z);if(Y){for(var X in Y){if(typeof Y[X]=="function"){Y[X]=null}}Y.parentNode.removeChild(Y)}}function c(Z){var X=null;try{X=j.getElementById(Z)}catch(Y){}return X}function C(X){return j.createElement(X)}function i(Z,X,Y){Z.attachEvent(X,Y);I[I.length]=[Z,X,Y]}function F(Z){var Y=M.pv,X=Z.split(".");X[0]=parseInt(X[0],10);X[1]=parseInt(X[1],10)||0;X[2]=parseInt(X[2],10)||0;return(Y[0]>X[0]||(Y[0]==X[0]&&Y[1]>X[1])||(Y[0]==X[0]&&Y[1]==X[1]&&Y[2]>=X[2]))?true:false}function v(ac,Y,ad,ab){if(M.ie&&M.mac){return}var aa=j.getElementsByTagName("head")[0];if(!aa){return}var X=(ad&&typeof ad=="string")?ad:"screen";if(ab){n=null;G=null}if(!n||G!=X){var Z=C("style");Z.setAttribute("type","text/css");Z.setAttribute("media",X);n=aa.appendChild(Z);if(M.ie&&M.win&&typeof j.styleSheets!=D&&j.styleSheets.length>0){n=j.styleSheets[j.styleSheets.length-1]}G=X}if(M.ie&&M.win){if(n&&typeof n.addRule==r){n.addRule(ac,Y)}}else{if(n&&typeof j.createTextNode!=D){n.appendChild(j.createTextNode(ac+" {"+Y+"}"))}}}function w(Z,X){if(!m){return}var Y=X?"visible":"hidden";if(J&&c(Z)){c(Z).style.visibility=Y}else{v("#"+Z,"visibility:"+Y)}}function L(Y){var Z=/[\\\"<>\.;]/;var X=Z.exec(Y)!=null;return X&&typeof encodeURIComponent!=D?encodeURIComponent(Y):Y}var d=function(){if(M.ie&&M.win){window.attachEvent("onunload",function(){var ac=I.length;for(var ab=0;ab<ac;ab++){I[ab][0].detachEvent(I[ab][1],I[ab][2])}var Z=N.length;for(var aa=0;aa<Z;aa++){y(N[aa])}for(var Y in M){M[Y]=null}M=null;for(var X in swfobject){swfobject[X]=null}swfobject=null})}}();return{registerObject:function(ab,X,aa,Z){if(M.w3&&ab&&X){var Y={};Y.id=ab;Y.swfVersion=X;Y.expressInstall=aa;Y.callbackFn=Z;o[o.length]=Y;w(ab,false)}else{if(Z){Z({success:false,id:ab})}}},getObjectById:function(X){if(M.w3){return z(X)}},embedSWF:function(ab,ah,ae,ag,Y,aa,Z,ad,af,ac){var X={success:false,id:ah};if(M.w3&&!(M.wk&&M.wk<312)&&ab&&ah&&ae&&ag&&Y){w(ah,false);K(function(){ae+="";ag+="";var aj={};if(af&&typeof af===r){for(var al in af){aj[al]=af[al]}}aj.data=ab;aj.width=ae;aj.height=ag;var am={};if(ad&&typeof ad===r){for(var ak in ad){am[ak]=ad[ak]}}if(Z&&typeof Z===r){for(var ai in Z){if(typeof am.flashvars!=D){am.flashvars+="&"+ai+"="+Z[ai]}else{am.flashvars=ai+"="+Z[ai]}}}if(F(Y)){var an=u(aj,am,ah);if(aj.id==ah){w(ah,true)}X.success=true;X.ref=an}else{if(aa&&A()){aj.data=aa;P(aj,am,ah,ac);return}else{w(ah,true)}}if(ac){ac(X)}})}else{if(ac){ac(X)}}},switchOffAutoHideShow:function(){m=false},ua:M,getFlashPlayerVersion:function(){return{major:M.pv[0],minor:M.pv[1],release:M.pv[2]}},hasFlashPlayerVersion:F,createSWF:function(Z,Y,X){if(M.w3){return u(Z,Y,X)}else{return undefined}},showExpressInstall:function(Z,aa,X,Y){if(M.w3&&A()){P(Z,aa,X,Y)}},removeSWF:function(X){if(M.w3){y(X)}},createCSS:function(aa,Z,Y,X){if(M.w3){v(aa,Z,Y,X)}},addDomLoadEvent:K,addLoadEvent:s,getQueryParamValue:function(aa){var Z=j.location.search||j.location.hash;if(Z){if(/\?/.test(Z)){Z=Z.split("?")[1]}if(aa==null){return L(Z)}var Y=Z.split("&");for(var X=0;X<Y.length;X++){if(Y[X].substring(0,Y[X].indexOf("="))==aa){return L(Y[X].substring((Y[X].indexOf("=")+1)))}}}return""},expressInstallCallback:function(){if(a){var X=c(R);if(X&&l){X.parentNode.replaceChild(l,X);if(Q){w(Q,true);if(M.ie&&M.win){l.style.display="block"}}if(E){E(B)}}a=false}}}}();
//SwfObject End


//jquery Component Start

/*
 * jQuery UI 1.7.2
 *
 * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
 * Dual licensed under the MIT (MIT-LICENSE.txt)
 * and GPL (GPL-LICENSE.txt) licenses.
 *
 * http://docs.jquery.com/UI
 */
;jQuery.ui || (function($) {

var _remove = $.fn.remove,
	isFF2 = $.browser.mozilla && (parseFloat($.browser.version) < 1.9);

//Helper functions and ui object
$.ui = {version: "1.7.2",
// $.ui.plugin is deprecated.  Use the proxy pattern instead.
	plugin: {
		add: function(module, option, set) {
			var proto = $.ui[module].prototype;
			for(var i in set) {
				proto.plugins[i] = proto.plugins[i] || [];
				proto.plugins[i].push([option, set[i]]);
			}
		},
		call: function(instance, name, args) {
			var set = instance.plugins[name];
			if(!set || !instance.element[0].parentNode) { return; }

			for (var i = 0; i < set.length; i++) {
				if (instance.options[set[i][0]]) {
					set[i][1].apply(instance.element, args);
				}
			}
		}
	},

	contains: function(a, b) {
		return document.compareDocumentPosition
			? a.compareDocumentPosition(b) & 16
			: a !== b && a.contains(b);
	},

	hasScroll: function(el, a) {

		//If overflow is hidden, the element might have extra content, but the user wants to hide it
		if ($(el).css('overflow') == 'hidden') { return false; }

		var scroll = (a && a == 'left') ? 'scrollLeft' : 'scrollTop',
			has = false;

		if (el[scroll] > 0) { return true; }

		el[scroll] = 1;
		has = (el[scroll] > 0);
		el[scroll] = 0;
		return has;
	},

	isOverAxis: function(x, reference, size) {
		//Determines when x coordinate is over "b" element axis
		return (x > reference) && (x < (reference + size));
	},

	isOver: function(y, x, top, left, height, width) {
		//Determines when x, y coordinates is over "b" element
		return $.ui.isOverAxis(y, top, height) && $.ui.isOverAxis(x, left, width);
	},

	keyCode: {
		BACKSPACE: 8,
		CAPS_LOCK: 20,
		COMMA: 188,
		CONTROL: 17,
		DELETE: 46,
		DOWN: 40,
		END: 35,
		ENTER: 13,
		ESCAPE: 27,
		HOME: 36,
		INSERT: 45,
		LEFT: 37,
		NUMPAD_ADD: 107,
		NUMPAD_DECIMAL: 110,
		NUMPAD_DIVIDE: 111,
		NUMPAD_ENTER: 108,
		NUMPAD_MULTIPLY: 106,
		NUMPAD_SUBTRACT: 109,
		PAGE_DOWN: 34,
		PAGE_UP: 33,
		PERIOD: 190,
		RIGHT: 39,
		SHIFT: 16,
		SPACE: 32,
		TAB: 9,
		UP: 38
	}
};

// WAI-ARIA normalization
if (isFF2) {
	var attr = $.attr,
		removeAttr = $.fn.removeAttr,
		ariaNS = "http://www.w3.org/2005/07/aaa",
		ariaState = /^aria-/,
		ariaRole = /^wairole:/;

	$.attr = function(elem, name, value) {
		var set = value !== undefined;

		return (name == 'role'
			? (set
				? attr.call(this, elem, name, "wairole:" + value)
				: (attr.apply(this, arguments) || "").replace(ariaRole, ""))
			: (ariaState.test(name)
				? (set
					? elem.setAttributeNS(ariaNS,
						name.replace(ariaState, "aaa:"), value)
					: attr.call(this, elem, name.replace(ariaState, "aaa:")))
				: attr.apply(this, arguments)));
	};

	$.fn.removeAttr = function(name) {
		return (ariaState.test(name)
			? this.each(function() {
				this.removeAttributeNS(ariaNS, name.replace(ariaState, ""));
			}) : removeAttr.call(this, name));
	};
}

//jQuery plugins
$.fn.extend({
	remove: function() {
		// Safari has a native remove event which actually removes DOM elements,
		// so we have to use triggerHandler instead of trigger (#3037).
		$("*", this).add(this).each(function() {
			$(this).triggerHandler("remove");
		});
		return _remove.apply(this, arguments );
	},

	enableSelection: function() {
		return this.attr('unselectable', 'off').css('MozUserSelect', '').unbind('selectstart.ui');
	},

	disableSelection: function() {
		return this.attr('unselectable', 'on').css('MozUserSelect', 'none').bind('selectstart.ui', function() { return false; });
	},

	scrollParent: function() {
		var scrollParent;
		if(($.browser.msie && (/(static|relative)/).test(this.css('position'))) || (/absolute/).test(this.css('position'))) {
			scrollParent = this.parents().filter(function() {
				return (/(relative|absolute|fixed)/).test($.curCSS(this,'position',1)) && (/(auto|scroll)/).test($.curCSS(this,'overflow',1)+$.curCSS(this,'overflow-y',1)+$.curCSS(this,'overflow-x',1));
			}).eq(0);
		} else {
			scrollParent = this.parents().filter(function() {
				return (/(auto|scroll)/).test($.curCSS(this,'overflow',1)+$.curCSS(this,'overflow-y',1)+$.curCSS(this,'overflow-x',1));
			}).eq(0);
		}

		return (/fixed/).test(this.css('position')) || !scrollParent.length ? $(document) : scrollParent;
	}
});


//Additional selectors
$.extend($.expr[':'], {
	data: function(elem, i, match) {
		return !!$.data(elem, match[3]);
	},

	focusable: function(element) {
		var nodeName = element.nodeName.toLowerCase(),
			tabIndex = $.attr(element, 'tabindex');
		return (/input|select|textarea|button|object/.test(nodeName)
			? !element.disabled
			: 'a' == nodeName || 'area' == nodeName
				? element.href || !isNaN(tabIndex)
				: !isNaN(tabIndex))
			// the element and all of its ancestors must be visible
			// the browser may report that the area is hidden
			&& !$(element)['area' == nodeName ? 'parents' : 'closest'](':hidden').length;
	},

	tabbable: function(element) {
		var tabIndex = $.attr(element, 'tabindex');
		return (isNaN(tabIndex) || tabIndex >= 0) && $(element).is(':focusable');
	}
});


// $.widget is a factory to create jQuery plugins
// taking some boilerplate code out of the plugin code
function getter(namespace, plugin, method, args) {
	function getMethods(type) {
		var methods = $[namespace][plugin][type] || [];
		return (typeof methods == 'string' ? methods.split(/,?\s+/) : methods);
	}

	var methods = getMethods('getter');
	if (args.length == 1 && typeof args[0] == 'string') {
		methods = methods.concat(getMethods('getterSetter'));
	}
	return ($.inArray(method, methods) != -1);
}

$.widget = function(name, prototype) {
	var namespace = name.split(".")[0];
	name = name.split(".")[1];

	// create plugin method
	$.fn[name] = function(options) {
		var isMethodCall = (typeof options == 'string'),
			args = Array.prototype.slice.call(arguments, 1);

		// prevent calls to internal methods
		if (isMethodCall && options.substring(0, 1) == '_') {
			return this;
		}

		// handle getter methods
		if (isMethodCall && getter(namespace, name, options, args)) {
			var instance = $.data(this[0], name);
			return (instance ? instance[options].apply(instance, args)
				: undefined);
		}

		// handle initialization and non-getter methods
		return this.each(function() {
			var instance = $.data(this, name);

			// constructor
			(!instance && !isMethodCall &&
				$.data(this, name, new $[namespace][name](this, options))._init());

			// method call
			(instance && isMethodCall && $.isFunction(instance[options]) &&
				instance[options].apply(instance, args));
		});
	};

	// create widget constructor
	$[namespace] = $[namespace] || {};
	$[namespace][name] = function(element, options) {
		var self = this;

		this.namespace = namespace;
		this.widgetName = name;
		this.widgetEventPrefix = $[namespace][name].eventPrefix || name;
		this.widgetBaseClass = namespace + '-' + name;

		this.options = $.extend({},
			$.widget.defaults,
			$[namespace][name].defaults,
			$.metadata && $.metadata.get(element)[name],
			options);

		this.element = $(element)
			.bind('setData.' + name, function(event, key, value) {
				if (event.target == element) {
					return self._setData(key, value);
				}
			})
			.bind('getData.' + name, function(event, key) {
				if (event.target == element) {
					return self._getData(key);
				}
			})
			.bind('remove', function() {
				return self.destroy();
			});
	};

	// add widget prototype
	$[namespace][name].prototype = $.extend({}, $.widget.prototype, prototype);

	// TODO: merge getter and getterSetter properties from widget prototype
	// and plugin prototype
	$[namespace][name].getterSetter = 'option';
};

$.widget.prototype = {
	_init: function() {},
	destroy: function() {
		this.element.removeData(this.widgetName)
			.removeClass(this.widgetBaseClass + '-disabled' + ' ' + this.namespace + '-state-disabled')
			.removeAttr('aria-disabled');
	},

	option: function(key, value) {
		var options = key,
			self = this;

		if (typeof key == "string") {
			if (value === undefined) {
				return this._getData(key);
			}
			options = {};
			options[key] = value;
		}

		$.each(options, function(key, value) {
			self._setData(key, value);
		});
	},
	_getData: function(key) {
		return this.options[key];
	},
	_setData: function(key, value) {
		this.options[key] = value;

		if (key == 'disabled') {
			this.element
				[value ? 'addClass' : 'removeClass'](
					this.widgetBaseClass + '-disabled' + ' ' +
					this.namespace + '-state-disabled')
				.attr("aria-disabled", value);
		}
	},

	enable: function() {
		this._setData('disabled', false);
	},
	disable: function() {
		this._setData('disabled', true);
	},

	_trigger: function(type, event, data) {
		var callback = this.options[type],
			eventName = (type == this.widgetEventPrefix
				? type : this.widgetEventPrefix + type);

		event = $.Event(event);
		event.type = eventName;

		// copy original event properties over to the new event
		// this would happen if we could call $.event.fix instead of $.Event
		// but we don't have a way to force an event to be fixed multiple times
		if (event.originalEvent) {
			for (var i = $.event.props.length, prop; i;) {
				prop = $.event.props[--i];
				event[prop] = event.originalEvent[prop];
			}
		}

		this.element.trigger(event, data);

		return !($.isFunction(callback) && callback.call(this.element[0], event, data) === false
			|| event.isDefaultPrevented());
	}
};

$.widget.defaults = {
	disabled: false
};


/** Mouse Interaction Plugin **/

$.ui.mouse = {
	_mouseInit: function() {
		var self = this;

		this.element
			.bind('mousedown.'+this.widgetName, function(event) {
				return self._mouseDown(event);
			})
			.bind('click.'+this.widgetName, function(event) {
				if(self._preventClickEvent) {
					self._preventClickEvent = false;
					event.stopImmediatePropagation();
					return false;
				}
			});

		// Prevent text selection in IE
		if ($.browser.msie) {
			this._mouseUnselectable = this.element.attr('unselectable');
			this.element.attr('unselectable', 'on');
		}

		this.started = false;
	},

	// TODO: make sure destroying one instance of mouse doesn't mess with
	// other instances of mouse
	_mouseDestroy: function() {
		this.element.unbind('.'+this.widgetName);

		// Restore text selection in IE
		($.browser.msie
			&& this.element.attr('unselectable', this._mouseUnselectable));
	},

	_mouseDown: function(event) {
		// don't let more than one widget handle mouseStart
		// TODO: figure out why we have to use originalEvent
		event.originalEvent = event.originalEvent || {};
		if (event.originalEvent.mouseHandled) { return; }

		// we may have missed mouseup (out of window)
		(this._mouseStarted && this._mouseUp(event));

		this._mouseDownEvent = event;

		var self = this,
			btnIsLeft = (event.which == 1),
			elIsCancel = (typeof this.options.cancel == "string" ? $(event.target).parents().add(event.target).filter(this.options.cancel).length : false);
		if (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) {
			return true;
		}

		this.mouseDelayMet = !this.options.delay;
		if (!this.mouseDelayMet) {
			this._mouseDelayTimer = setTimeout(function() {
				self.mouseDelayMet = true;
			}, this.options.delay);
		}

		if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {
			this._mouseStarted = (this._mouseStart(event) !== false);
			if (!this._mouseStarted) {
				event.preventDefault();
				return true;
			}
		}

		// these delegates are required to keep context
		this._mouseMoveDelegate = function(event) {
			return self._mouseMove(event);
		};
		this._mouseUpDelegate = function(event) {
			return self._mouseUp(event);
		};
		$(document)
			.bind('mousemove.'+this.widgetName, this._mouseMoveDelegate)
			.bind('mouseup.'+this.widgetName, this._mouseUpDelegate);

		// preventDefault() is used to prevent the selection of text here -
		// however, in Safari, this causes select boxes not to be selectable
		// anymore, so this fix is needed
		($.browser.safari || event.preventDefault());

		event.originalEvent.mouseHandled = true;
		return true;
	},

	_mouseMove: function(event) {
		// IE mouseup check - mouseup happened when mouse was out of window
		if ($.browser.msie && !event.button) {
			return this._mouseUp(event);
		}

		if (this._mouseStarted) {
			this._mouseDrag(event);
			return event.preventDefault();
		}

		if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {
			this._mouseStarted =(this._mouseStart(this._mouseDownEvent, event) !== false);
			(this._mouseStarted ? this._mouseDrag(event) : this._mouseUp(event));
		}

		return !this._mouseStarted;
	},

	_mouseUp: function(event) {
		$(document).unbind('mousemove.'+this.widgetName, this._mouseMoveDelegate).unbind('mouseup.'+this.widgetName, this._mouseUpDelegate);

		if (this._mouseStarted) {
			this._mouseStarted = false;
			this._preventClickEvent = (event.target == this._mouseDownEvent.target);
			this._mouseStop(event);
		}

		return false;
	},

	_mouseDistanceMet: function(event) {
		return (Math.max(
				Math.abs(this._mouseDownEvent.pageX - event.pageX),
				Math.abs(this._mouseDownEvent.pageY - event.pageY)
			) >= this.options.distance
		);
	},

	_mouseDelayMet: function(event) {
		return this.mouseDelayMet;
	},

	// These are placeholder methods, to be overriden by extending plugin
	_mouseStart: function(event) {},
	_mouseDrag: function(event) {},
	_mouseStop: function(event) {},
	_mouseCapture: function(event) { return true; }
};

$.ui.mouse.defaults = {
	cancel: null,
	distance: 1,
	delay: 0
};

})(jQuery);



/*
 * jQuery UI Accordion 1.7.2
 *
 * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
 * Dual licensed under the MIT (MIT-LICENSE.txt)
 * and GPL (GPL-LICENSE.txt) licenses.
 *
 * http://docs.jquery.com/UI/Accordion
 *
 * Depends:
 *	ui.core.js
 */
(function($) {

$.widget("ui.accordion", {

	_init: function() {

		var o = this.options, self = this;
		this.running = 0;

		// if the user set the alwaysOpen option on init
		// then we need to set the collapsible option
		// if they set both on init, collapsible will take priority
		if (o.collapsible == $.ui.accordion.defaults.collapsible &&
			o.alwaysOpen != $.ui.accordion.defaults.alwaysOpen) {
			o.collapsible = !o.alwaysOpen;
		}

		if ( o.navigation ) {
			var current = this.element.find("a").filter(o.navigationFilter);
			if ( current.length ) {
				if ( current.filter(o.header).length ) {
					this.active = current;
				} else {
					this.active = current.parent().parent().prev();
					current.addClass("ui-accordion-content-active");
				}
			}
		}

		this.element.addClass("ui-accordion ui-widget ui-helper-reset");
		
		// in lack of child-selectors in CSS we need to mark top-LIs in a UL-accordion for some IE-fix
		if (this.element[0].nodeName == "UL") {
			this.element.children("li").addClass("ui-accordion-li-fix");
		}

		this.headers = this.element.find(o.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all")
			.bind("mouseenter.accordion", function(){ $(this).addClass('ui-state-hover'); })
			.bind("mouseleave.accordion", function(){ $(this).removeClass('ui-state-hover'); })
			.bind("focus.accordion", function(){ $(this).addClass('ui-state-focus'); })
			.bind("blur.accordion", function(){ $(this).removeClass('ui-state-focus'); });

		this.headers
			.next()
				.addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom");
		this.headers
		    .next()
			    .css('z-index','1');
		
		this.active = this._findActive(this.active || o.active).toggleClass("ui-state-default").toggleClass("ui-state-active").toggleClass("ui-corner-all").toggleClass("ui-corner-top");
		this.active.next().addClass('ui-accordion-content-active');

		//Append icon elements
		$("<span/>").addClass("ui-icon " + o.icons.header).prependTo(this.headers);
		this.active.find(".ui-icon").toggleClass(o.icons.header).toggleClass(o.icons.headerSelected);

		// IE7-/Win - Extra vertical space in lists fixed
		if ($.browser.msie) {
			this.element.find('a').css('zoom', '1');
		}

		this.resize();

		//ARIA
		this.element.attr('role','tablist');

		this.headers.attr('role','tab').bind('keydown', function(event) { return self._keydown(event); }).next().attr('role','tabpanel');

		this.headers
			.not(this.active || "").attr('aria-expanded','false').attr("tabIndex", "-1").next().hide();

		// make sure at least one header is in the tab order
		if (!this.active.length) {
			this.headers.eq(0).attr('tabIndex','0');
		} else {
			this.active.attr('aria-expanded','true').attr('tabIndex', '0');
		}

		// only need links in taborder for Safari
		if (!$.browser.safari)
			this.headers.find('a').attr('tabIndex','-1');

		if (o.event) {
			this.headers.bind((o.event) + ".accordion", function(event) { return self._clickHandler.call(self, event, this); });
		}

	},

	destroy: function() {
		var o = this.options;

		this.element.removeClass("ui-accordion ui-widget ui-helper-reset")
			.removeAttr("role").unbind('.accordion').removeData('accordion');

		this.headers.unbind(".accordion")
			.removeClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-corner-top")
			.removeAttr("role").removeAttr("aria-expanded").removeAttr("tabindex");

		this.headers.find("a").removeAttr("tabindex");
		this.headers.children(".ui-icon").remove();
		var contents = this.headers.next().css("display", "").removeAttr("role").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active");
		if (o.autoHeight || o.fillHeight) {
			contents.css("height", "");
		}
	},
	
	_setData: function(key, value) {
		if(key == 'alwaysOpen') { key = 'collapsible'; value = !value; }
		$.widget.prototype._setData.apply(this, arguments);	
	},

	_keydown: function(event) {

		var o = this.options, keyCode = $.ui.keyCode;

		if (o.disabled || event.altKey || event.ctrlKey)
			return;

		var length = this.headers.length;
		var currentIndex = this.headers.index(event.target);
		var toFocus = false;

		switch(event.keyCode) {
			case keyCode.RIGHT:
			case keyCode.DOWN:
				toFocus = this.headers[(currentIndex + 1) % length];
				break;
			case keyCode.LEFT:
			case keyCode.UP:
				toFocus = this.headers[(currentIndex - 1 + length) % length];
				break;
			case keyCode.SPACE:
			case keyCode.ENTER:
				return this._clickHandler({ target: event.target }, event.target);
		}

		if (toFocus) {
			$(event.target).attr('tabIndex','-1');
			$(toFocus).attr('tabIndex','0');
			toFocus.focus();
			return false;
		}

		return true;

	},

	resize: function() {

		var o = this.options, maxHeight;

		if (o.fillSpace) {
			
			if($.browser.msie) { var defOverflow = this.element.parent().css('overflow'); this.element.parent().css('overflow', 'hidden'); }
			maxHeight = this.element.parent().height();
			if($.browser.msie) { this.element.parent().css('overflow', defOverflow); }
	
			this.headers.each(function() {
				maxHeight -= $(this).outerHeight();
			});

			var maxPadding = 0;
			this.headers.next().each(function() {
				maxPadding = Math.max(maxPadding, $(this).innerHeight() - $(this).height());
			}).height(Math.max(0, maxHeight - maxPadding))
			.css('overflow', 'auto');

		} else if ( o.autoHeight ) {
			maxHeight = 0;
			this.headers.next().each(function() {
				maxHeight = Math.max(maxHeight, $(this).outerHeight());
			}).height(maxHeight);
		}

	},

	activate: function(index) {
		// call clickHandler with custom event
		var active = this._findActive(index)[0];
		this._clickHandler({ target: active }, active);
	},

	_findActive: function(selector) {
		return selector
			? typeof selector == "number"
				? this.headers.filter(":eq(" + selector + ")")
				: this.headers.not(this.headers.not(selector))
			: selector === false
				? $([])
				: this.headers.filter(":eq(0)");
	},

	_clickHandler: function(event, target) {

		var o = this.options;
		if (o.disabled) return false;

		// called only when using activate(false) to close all parts programmatically
		if (!event.target && o.collapsible) {
			this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all")
				.find(".ui-icon").removeClass(o.icons.headerSelected).addClass(o.icons.header);
			this.active.next().addClass('ui-accordion-content-active');
			var toHide = this.active.next(),
				data = {
					options: o,
					newHeader: $([]),
					oldHeader: o.active,
					newContent: $([]),
					oldContent: toHide
				},
				toShow = (this.active = $([]));
			this._toggle(toShow, toHide, data);
			return false;
		}

		// get the click target
		var clicked = $(event.currentTarget || target);
		var clickedIsActive = clicked[0] == this.active[0];

		// if animations are still active, or the active header is the target, ignore click
		if (this.running || (!o.collapsible && clickedIsActive)) {
			return false;
		}

		// switch classes
		this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all")
			.find(".ui-icon").removeClass(o.icons.headerSelected).addClass(o.icons.header);
		this.active.next().addClass('ui-accordion-content-active');
		if (!clickedIsActive) {
			clicked.removeClass("ui-state-default ui-corner-all").addClass("ui-state-active ui-corner-top")
				.find(".ui-icon").removeClass(o.icons.header).addClass(o.icons.headerSelected);
			clicked.next().addClass('ui-accordion-content-active');
		}

		// find elements to show and hide
		var toShow = clicked.next(),
			toHide = this.active.next(),
			data = {
				options: o, newHeader: clickedIsActive && o.collapsible ? $([]) : clicked, oldHeader: this.active,
				newContent: clickedIsActive && o.collapsible ? $([]) : toShow.find('> *'), oldContent: toHide.find('> *')
			},
			down = this.headers.index( this.active[0] ) > this.headers.index( clicked[0] );

		this.active = clickedIsActive ? $([]) : clicked;
		this._toggle(toShow, toHide, data, clickedIsActive, down);

		return false;

	},

	_toggle: function(toShow, toHide, data, clickedIsActive, down) {

		var o = this.options, self = this;

		this.toShow = toShow;
		this.toHide = toHide;
		this.data = data;

		var complete = function() { if(!self) return; return self._completed.apply(self, arguments); };

		// trigger changestart event
		this._trigger("changestart", null, this.data);

		// count elements to animate
		this.running = toHide.size() === 0 ? toShow.size() : toHide.size();

		if (o.animated) {

			var animOptions = {};

			if ( o.collapsible && clickedIsActive ) {
				animOptions = {
					toShow: $([]),
					toHide: toHide,
					complete: complete,
					down: down,
					autoHeight: o.autoHeight || o.fillSpace
				};
			} else {
				animOptions = {
					toShow: toShow,
					toHide: toHide,
					complete: complete,
					down: down,
					autoHeight: o.autoHeight || o.fillSpace
				};
			}

			if (!o.proxied) {
				o.proxied = o.animated;
			}

			if (!o.proxiedDuration) {
				o.proxiedDuration = o.duration;
			}

			o.animated = $.isFunction(o.proxied) ?
				o.proxied(animOptions) : o.proxied;

			o.duration = $.isFunction(o.proxiedDuration) ?
				o.proxiedDuration(animOptions) : o.proxiedDuration;

			var animations = $.ui.accordion.animations,
				duration = o.duration,
				easing = o.animated;

			if (!animations[easing]) {
				animations[easing] = function(options) {
					this.slide(options, {
						easing: easing,
						duration: duration || 700
					});
				};
			}

			animations[easing](animOptions);

		} else {

			if (o.collapsible && clickedIsActive) {
				toShow.toggle();
			} else {
				toHide.hide();
				toShow.show();
			}

			complete(true);

		}

		toHide.prev().attr('aria-expanded','false').attr("tabIndex", "-1").blur();
		toShow.prev().attr('aria-expanded','true').attr("tabIndex", "0").focus();

	},

	_completed: function(cancel) {

		var o = this.options;

		this.running = cancel ? 0 : --this.running;
		if (this.running) return;

		if (o.clearStyle) {
			this.toShow.add(this.toHide).css({
				height: "",
				overflow: ""
			});
		}

		this._trigger('change', null, this.data);
	}

});


$.extend($.ui.accordion, {
	version: "1.7.2",
	defaults: {
		active: null,
		alwaysOpen: true, //deprecated, use collapsible
		animated: 'slide',
		autoHeight: true,
		clearStyle: false,
		collapsible: false,
		event: "click",
		fillSpace: false,
		header: "> li > :first-child,> :not(li):even",
		icons: {
			header: "ui-icon-triangle-1-e",
			headerSelected: "ui-icon-triangle-1-s"
		},
		navigation: false,
		navigationFilter: function() {
			return this.href.toLowerCase() == location.href.toLowerCase();
		}
	},
	animations: {
		slide: function(options, additions) {
			options = $.extend({
				easing: "swing",
				duration: 300
			}, options, additions);
			if ( !options.toHide.size() ) {
				options.toShow.animate({height: "show"}, options);
				return;
			}
			if ( !options.toShow.size() ) {
				options.toHide.animate({height: "hide"}, options);
				return;
			}
			var overflow = options.toShow.css('overflow'),
				percentDone,
				showProps = {},
				hideProps = {},
				fxAttrs = [ "height", "paddingTop", "paddingBottom" ],
				originalWidth;
			// fix width before calculating height of hidden element
			var s = options.toShow;
			originalWidth = s[0].style.width;
			s.width( parseInt(s.parent().width(),10) - parseInt(s.css("paddingLeft"),10) - parseInt(s.css("paddingRight"),10) - (parseInt(s.css("borderLeftWidth"),10) || 0) - (parseInt(s.css("borderRightWidth"),10) || 0) );
			
			$.each(fxAttrs, function(i, prop) {
				hideProps[prop] = 'hide';
				
				var parts = ('' + $.css(options.toShow[0], prop)).match(/^([\d+-.]+)(.*)$/);
				showProps[prop] = {
					value: parts[1],
					unit: parts[2] || 'px'
				};
			});
			options.toShow.css({ height: 0, overflow: 'hidden' }).show();
			options.toHide.filter(":hidden").each(options.complete).end().filter(":visible").animate(hideProps,{
				step: function(now, settings) {
					// only calculate the percent when animating height
					// IE gets very inconsistent results when animating elements
					// with small values, which is common for padding
					if (settings.prop == 'height') {
						percentDone = (settings.now - settings.start) / (settings.end - settings.start);
					}
					
					options.toShow[0].style[settings.prop] =
						(percentDone * showProps[settings.prop].value) + showProps[settings.prop].unit;
				},
				duration: options.duration,
				easing: options.easing,
				complete: function() {
					if ( !options.autoHeight ) {
						options.toShow.css("height", "");
					}
					options.toShow.css("width", originalWidth);
					options.toShow.css({overflow: overflow});
					options.complete();
				}
			});
		},
		bounceslide: function(options) {
			this.slide(options, {
				easing: options.down ? "easeOutBounce" : "swing",
				duration: options.down ? 1000 : 200
			});
		},
		easeslide: function(options) {
			this.slide(options, {
				easing: "easeinout",
				duration: 700
			});
		}
	}
});

})(jQuery);

/*
anythingSlider v1.2

By Chris Coyier: http://css-tricks.com
with major improvements by Doug Neiner: http://pixelgraphics.us/
based on work by Remy Sharp: http://jqueryfordesigners.com/


To use the navigationFormatter function, you must have a function that
accepts two paramaters, and returns a string of HTML text.

index = integer index (1 based);
panel = jQuery wrapped LI item this tab references
@return = Must return a string of HTML/Text

navigationFormatter: function(index, panel){
	return index + " Panel"; // This would have each tab with the text 'X Panel' where X = index
}
*/




(function($){

$.anythingSlider = function(el, options){
    
	
	
	
	// To avoid scope issues, use 'base' instead of 'this'
    // to reference this class from internal events and functions.
    var base = this;
	
	
    
    // Access to jQuery and DOM versions of element
    base.$el = $(el);
    base.el = el; 

	// Set up a few defaults
    base.currentPage = 1;
	base.timer = null;
	base.playing = false;

    // Add a reverse reference to the DOM object
    base.$el.data("AnythingSlider", base);
    

	
    base.init = function(){
        base.options = $.extend({},$.anythingSlider.defaults, options);
		
		// Cache existing DOM elements for later 
		base.$wrapper = base.$el.find('> div').css('overflow', 'hidden');
        base.$slider  = base.$wrapper.find('> ul');
        base.$items   = base.$slider.find('> .noFlash');
        base.$single  = base.$items.filter(':first');
		
		base.$allSlider = $('.victorinoxSlider');
		
		//base.$wrapper = $('.victorinoxSlider');
		//$('.victorinoxSlider').css('backgroundColor','#000');
		
		if(base.$items.length < base.options.elementsForSliding){
		
			base.options.buildNavigation = false;
			base.options.autoPlay = false; 
			base.options.backButtons = false;
			return;
		}
		
		// Build the navigation if needed
		if(base.options.buildNavigation) base.buildNavigation();
    
    	// Get the details
        base.singleWidth = base.$single.outerWidth();
        base.singleHight  = base.$single.outerHeight();
       
        base.pages = base.$items.length;
		

        // Top and tail the list with 'visible' number of items, top has the last section, and tail has the first
		// This supports the "infinite" scrolling
		base.$items.filter(':first').before(base.$items.filter(':last').clone().addClass('cloned'));
       base.$items.filter(':last' ).after(base.$items.filter(':first').clone().addClass('cloned'));

		// We just added two items, time to re-cache the list
        base.$items = base.$slider.find('> li'); // reselect
        
		// Setup our forward/backward navigation
        if(base.options.backButtons){
        	
        	base.buildNextBackButtons();
        }
	
		// If autoPlay functionality is included, then initialize the settings
		if(base.options.autoPlay) {
			base.playing = !base.options.startStopped; // Sets the playing variable to false if startStopped is true
			base.buildAutoPlay();
		};
		
		// If pauseOnHover then add hover effects
		if(base.options.pauseOnHover) {
			base.$el.hover(function(){
				base.clearTimer();
			}, function(){
				base.startStop(base.playing);
			});
		}
		
		// If a hash can not be used to trigger the plugin, then go to page 1
		if((base.options.hashTags == true && !base.gotoHash()) || base.options.hashTags == false){
			base.setCurrentPage(1);
		};
    };

	base.gotoPage = function(page, autoplay){
		// When autoplay isn't passed, we stop the timer
		if(autoplay !== true) autoplay = false; // shug => false to true
		if(!autoplay) base.startStop(false);
		
		if(typeof(page) == "undefined" || page == null) {
			page = 1;
			base.setCurrentPage(1);
		};
		
		// Just check for bounds
		if(page > base.pages + 1) page = base.pages;
		if(page < 0 ) page = 1;

	
		
		
		if(base.options.vertical == true){
			var dir = page < base.currentPage ? -1 : 1,
	                n = Math.abs(base.currentPage - page),
	                top = base.singleHight * dir * n;
			
			base.$wrapper.filter(':not(:animated)').animate({
					scrollTop: '+=' + top
				}, base.options.animationTime, base.options.easing, function() {
		    // $(this).css('top','80px');
		     
		     if (page == 0) {
                    base.$wrapper.scrollTop(base.singleHight * base.pages);
					page = base.pages;
                } else if (page > base.pages) {
                    base.$wrapper.scrollTop(base.singleHight);
                    // reset back to start position
                    page = 1;
                };
				base.setCurrentPage(page);
		     
		     
		   });

		} else {
			var dir = page < base.currentPage ? -1 : 1,
	                n = Math.abs(base.currentPage - page),
	                left = base.singleWidth * dir * n;
			
			
		base.$wrapper.filter(':not(:animated)').animate({
            scrollLeft : '+=' + left
        }, base.options.animationTime, base.options.easing, function () {
            if (page == 0) {
                base.$wrapper.scrollLeft(base.singleWidth * base.pages);
				page = base.pages;
            } else if (page > base.pages) {
                base.$wrapper.scrollLeft(base.singleWidth);
                // reset back to start position
                page = 1;
            };
			base.setCurrentPage(page);
			
        });
		}
       
	};
	
	base.setCurrentPage = function(page, move){
		// Set visual
		if(base.options.buildNavigation){
			base.$nav.find('.cur').removeClass('cur');
			$(base.$navLinks[page - 1]).addClass('cur');	
		};
		
		// Only change left if move does not equal false
		
		if(move !== false && base.options.vertical == false){ 
			base.$wrapper.scrollLeft(base.singleWidth * page);
		}
		else if(move !== false){ 
			base.$wrapper.scrollTop(base.singleHight * page);
		}
		// Update local variable
		base.currentPage = page;
	};
	
	base.goForward = function(autoplay){
		if(autoplay !== true) autoplay = false;
		
		//base.$allSlider.gotoPage(base.currentPage + 1, autoplay);
		
		base.gotoPage(base.currentPage + 1, autoplay);
	};
	
	base.goBack = function(){
		base.gotoPage(base.currentPage - 1);
	};
	
	// This method tries to find a hash that matches panel-X
	// If found, it tries to find a matching item
	// If that is found as well, then that item starts visible
	base.gotoHash = function(){
		if(/^#?panel-\d+$/.test(window.location.hash)){
			var index = parseInt(window.location.hash.substr(7));
			var $item = base.$items.filter(':eq(' + index + ')');
			if($item.length != 0){
				base.setCurrentPage(index);
				return true;
			};
		};
		return false; // A item wasn't found;
	};
   
	// Creates the numbered navigation links
	base.buildNavigation = function(){
		base.$nav = $("<div class='thumbNav'></div>").appendTo(base.$el);
		
		
		
		
		base.$items.each(function(i,el){
			var index = i + 1;
			var $a = $("<a href='#'></a>");
			
			// If a formatter function is present, use it
			if( typeof(base.options.navigationFormatter) == "function"){
				$a.html(base.options.navigationFormatter(index, $(this)));
			} else {
				$a.text(index);
			}
			$a.click(function(e){
                base.gotoPage(index);
                
                if (base.options.hashTags)
					base.setHash('panel-' + index);
					
                e.preventDefault();
			});
			base.$nav.append($a);
		});
		base.$navLinks = base.$nav.find('> a');
		
		
	};
	
	
	// Creates the Forward/Backward buttons
	base.buildNextBackButtons = function(){
		var $forward = $('<a class="arrow forward"></a>'),
			$back    = $('<a class="arrow back"></a>');
			
        // Bind to the forward and back buttons
        $back.click(function(e){
            base.goBack();
			e.preventDefault();
        });

        $forward.click(function(e){
            base.goForward();
			e.preventDefault();
        });

		// Append elements to page
		base.$wrapper.after($back).after($forward);
	};
	
	// Creates the Start/Stop button
	base.buildAutoPlay = function(){

		base.$startStop = $("<a href='#' clase='start-stop'></a>").html(base.playing ? base.options.stopText :  base.options.startText);
		base.$el.append(base.$startStop);            
        base.$startStop.click(function(e){
			base.startStop(!base.playing);
			e.preventDefault();
        });

		// Use the same setting, but trigger the start;
		base.startStop(base.playing);
	};
	
	// Handles stopping and playing the slideshow
	// Pass startStop(false) to stop and startStop(true) to play
	base.startStop = function(playing){
		if(playing !== true) playing = false; // Default if not supplied is false
		
		// Update variable
		base.playing = playing;
		
		// Toggle playing and text
		if(base.options.autoPlay) base.$startStop.toggleClass("playing", playing).html( playing ? base.options.stopText : base.options.startText );
		
		if(playing){
			base.clearTimer(); // Just in case this was triggered twice in a row
			base.timer = window.setInterval(function(){
				base.goForward(true);
			}, base.options.delay);
		} else {
			base.clearTimer();
		};
	};
	
	base.clearTimer = function(){
		// Clear the timer only if it is set
		if(base.timer) window.clearInterval(base.timer);
	};
	
	// Taken from AJAXY jquery.history Plugin
	base.setHash = function ( hash ) {
		// Write hash
		if ( typeof window.location.hash !== 'undefined' ) {
			if ( window.location.hash !== hash ) {
				window.location.hash = hash;
			};
		} else if ( location.hash !== hash ) {
			location.hash = hash;
		};
		
		// Done
		return hash;
	};
	// <-- End AJAXY code


	// Trigger the initialization
    base.init();
};


$.anythingSlider.defaults = {
    easing: "swing",                // Anything other than "linear" or "swing" requires the easing plugin
    autoPlay: true,                 // This turns off the entire FUNCTIONALY, not just if it starts running or not
    startStopped: false,            // If autoPlay is on, this can force it to start stopped
    delay: 3000,                    // How long between slide transitions in AutoPlay mode
    animationTime: 600,             // How long the slide transition takes
    hashTags: true,                 // Should links change the hashtag in the URL?
    buildNavigation: true,          // If true, builds and list of anchor links to link to each slide
    pauseOnHover: true,             // If true, and autoPlay is enabled, the show will pause on hover
	startText: "Start",             // Start text
	stopText: "Stop",               // Stop text
	navigationFormatter: null,      // Details at the top of the file on this use (advanced use)
	elementsForSliding: 2,			// Elements are needed for sliding
	backButtons: true,				// Are enough elements, show backbuttons
	vertical: false
};


$.fn.anythingSlider = function(options){
	if(typeof(options) == "object"){
	    return this.each(function(i){			
			(new $.anythingSlider(this, options));

            // This plugin supports multiple instances, but only one can support hash-tag support
			// This disables hash-tags on all items but the first one
			options.hashTags = false;
        });	
	} else if (typeof(options) == "number") {

		return this.each(function(i){
			var anySlide = $(this).data('AnythingSlider');
			if(anySlide){
				anySlide.gotoPage(options);
			}
		});
	}
};


})(jQuery);

/*
 * jQuery EasIng v1.1.2 - http://gsgd.co.uk/sandbox/jquery.easIng.php
 *
 * Uses the built In easIng capabilities added In jQuery 1.1
 * to offer multiple easIng options
 *
 * Copyright (c) 2007 George Smith
 * Licensed under the MIT License:
 *   http://www.opensource.org/licenses/mit-license.php
 */

// t: current time, b: begInnIng value, c: change In value, d: duration

jQuery.extend( jQuery.easing,
{
	easeInQuad: function (x, t, b, c, d) {
		return c*(t/=d)*t + b;
	},
	easeOutQuad: function (x, t, b, c, d) {
		return -c *(t/=d)*(t-2) + b;
	},
	easeInOutQuad: function (x, t, b, c, d) {
		if ((t/=d/2) < 1) return c/2*t*t + b;
		return -c/2 * ((--t)*(t-2) - 1) + b;
	},
	easeInCubic: function (x, t, b, c, d) {
		return c*(t/=d)*t*t + b;
	},
	easeOutCubic: function (x, t, b, c, d) {
		return c*((t=t/d-1)*t*t + 1) + b;
	},
	easeInOutCubic: function (x, t, b, c, d) {
		if ((t/=d/2) < 1) return c/2*t*t*t + b;
		return c/2*((t-=2)*t*t + 2) + b;
	},
	easeInQuart: function (x, t, b, c, d) {
		return c*(t/=d)*t*t*t + b;
	},
	easeOutQuart: function (x, t, b, c, d) {
		return -c * ((t=t/d-1)*t*t*t - 1) + b;
	},
	easeInOutQuart: function (x, t, b, c, d) {
		if ((t/=d/2) < 1) return c/2*t*t*t*t + b;
		return -c/2 * ((t-=2)*t*t*t - 2) + b;
	},
	easeInQuint: function (x, t, b, c, d) {
		return c*(t/=d)*t*t*t*t + b;
	},
	easeOutQuint: function (x, t, b, c, d) {
		return c*((t=t/d-1)*t*t*t*t + 1) + b;
	},
	easeInOutQuint: function (x, t, b, c, d) {
		if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;
		return c/2*((t-=2)*t*t*t*t + 2) + b;
	},
	easeInSine: function (x, t, b, c, d) {
		return -c * Math.cos(t/d * (Math.PI/2)) + c + b;
	},
	easeOutSine: function (x, t, b, c, d) {
		return c * Math.sin(t/d * (Math.PI/2)) + b;
	},
	easeInOutSine: function (x, t, b, c, d) {
		return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;
	},
	easeInExpo: function (x, t, b, c, d) {
		return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;
	},
	easeOutExpo: function (x, t, b, c, d) {
		return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;
	},
	easeInOutExpo: function (x, t, b, c, d) {
		if (t==0) return b;
		if (t==d) return b+c;
		if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;
		return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;
	},
	easeInCirc: function (x, t, b, c, d) {
		return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;
	},
	easeOutCirc: function (x, t, b, c, d) {
		return c * Math.sqrt(1 - (t=t/d-1)*t) + b;
	},
	easeInOutCirc: function (x, t, b, c, d) {
		if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;
		return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;
	},
	easeInElastic: function (x, t, b, c, d) {
		var s=1.70158;var p=0;var a=c;
		if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;
		if (a < Math.abs(c)) { a=c; var s=p/4; }
		else var s = p/(2*Math.PI) * Math.asin (c/a);
		return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
	},
	easeOutElastic: function (x, t, b, c, d) {
		var s=1.70158;var p=0;var a=c;
		if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;
		if (a < Math.abs(c)) { a=c; var s=p/4; }
		else var s = p/(2*Math.PI) * Math.asin (c/a);
		return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
	},
	easeInOutElastic: function (x, t, b, c, d) {
		var s=1.70158;var p=0;var a=c;
		if (t==0) return b;  if ((t/=d/2)==2) return b+c;  if (!p) p=d*(.3*1.5);
		if (a < Math.abs(c)) { a=c; var s=p/4; }
		else var s = p/(2*Math.PI) * Math.asin (c/a);
		if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
		return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b;
	},
	easeInBack: function (x, t, b, c, d, s) {
		if (s == undefined) s = 1.70158;
		return c*(t/=d)*t*((s+1)*t - s) + b;
	},
	easeOutBack: function (x, t, b, c, d, s) {
		if (s == undefined) s = 1.70158;
		return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
	},
	easeInOutBack: function (x, t, b, c, d, s) {
		if (s == undefined) s = 1.70158; 
		if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;
		return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;
	},
	easeInBounce: function (x, t, b, c, d) {
		return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b;
	},
	easeOutBounce: function (x, t, b, c, d) {
		if ((t/=d) < (1/2.75)) {
			return c*(7.5625*t*t) + b;
		} else if (t < (2/2.75)) {
			return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;
		} else if (t < (2.5/2.75)) {
			return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;
		} else {
			return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;
		}
	},
	easeInOutBounce: function (x, t, b, c, d) {
		if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b;
		return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b;
	}
});

/*
 * jQuery UI Tabs 1.7.2
 *
 * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
 * Dual licensed under the MIT (MIT-LICENSE.txt)
 * and GPL (GPL-LICENSE.txt) licenses.
 *
 * http://docs.jquery.com/UI/Tabs
 *
 * Depends:
 *	ui.core.js
 */
(function($) {

$.widget("ui.tabs", {

	_init: function() {
		if (this.options.deselectable !== undefined) {
			this.options.collapsible = this.options.deselectable;
		}
		this._tabify(true);
	},

	_setData: function(key, value) {
		if (key == 'selected') {
			if (this.options.collapsible && value == this.options.selected) {
				return;
			}
			this.select(value);
		}
		else {
			this.options[key] = value;
			if (key == 'deselectable') {
				this.options.collapsible = value;
			}
			this._tabify();
		}
	},

	_tabId: function(a) {
		return a.title && a.title.replace(/\s/g, '_').replace(/[^A-Za-z0-9\-_:\.]/g, '') ||
			this.options.idPrefix + $.data(a);
	},

	_sanitizeSelector: function(hash) {
		return hash.replace(/:/g, '\\:'); // we need this because an id may contain a ":"
	},

	_cookie: function() {
		var cookie = this.cookie || (this.cookie = this.options.cookie.name || 'ui-tabs-' + $.data(this.list[0]));
		return $.cookie.apply(null, [cookie].concat($.makeArray(arguments)));
	},

	_ui: function(tab, panel) {
		return {
			tab: tab,
			panel: panel,
			index: this.anchors.index(tab)
		};
	},

	_cleanup: function() {
		// restore all former loading tabs labels
		this.lis.filter('.ui-state-processing').removeClass('ui-state-processing')
				.find('span:data(label.tabs)')
				.each(function() {
					var el = $(this);
					el.html(el.data('label.tabs')).removeData('label.tabs');
				});
	},

	_tabify: function(init) {

		this.list = this.element.children('ul:first');
		this.lis = $('li:has(a[href])', this.list);
		this.anchors = this.lis.map(function() { return $('a', this)[0]; });
		this.panels = $([]);

		var self = this, o = this.options;

		var fragmentId = /^#.+/; // Safari 2 reports '#' for an empty hash
		this.anchors.each(function(i, a) {
			var href = $(a).attr('href');

			// For dynamically created HTML that contains a hash as href IE < 8 expands
			// such href to the full page url with hash and then misinterprets tab as ajax.
			// Same consideration applies for an added tab with a fragment identifier
			// since a[href=#fragment-identifier] does unexpectedly not match.
			// Thus normalize href attribute...
			var hrefBase = href.split('#')[0], baseEl;
			if (hrefBase && (hrefBase === location.toString().split('#')[0] ||
					(baseEl = $('base')[0]) && hrefBase === baseEl.href)) {
				href = a.hash;
				a.href = href;
			}

			// inline tab
			if (fragmentId.test(href)) {
				self.panels = self.panels.add(self._sanitizeSelector(href));
			}

			// remote tab
			else if (href != '#') { // prevent loading the page itself if href is just "#"
				$.data(a, 'href.tabs', href); // required for restore on destroy

				// TODO until #3808 is fixed strip fragment identifier from url
				// (IE fails to load from such url)
				$.data(a, 'load.tabs', href.replace(/#.*$/, '')); // mutable data

				var id = self._tabId(a);
				a.href = '#' + id;
				var $panel = $('#' + id);
				if (!$panel.length) {
					$panel = $(o.panelTemplate).attr('id', id).addClass('ui-tabs-panel ui-widget-content ui-corner-bottom')
						.insertAfter(self.panels[i - 1] || self.list);
					$panel.data('destroy.tabs', true);
				}
				self.panels = self.panels.add($panel);
			}

			// invalid tab href
			else {
				o.disabled.push(i);
			}
		});

		// initialization from scratch
		if (init) {

			// attach necessary classes for styling
			this.element.addClass('ui-tabs ui-widget ui-widget-content ui-corner-all');
			this.list.addClass('ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all');
			this.lis.addClass('ui-state-default ui-corner-top');
			this.panels.addClass('ui-tabs-panel ui-widget-content ui-corner-bottom');

			// Selected tab
			// use "selected" option or try to retrieve:
			// 1. from fragment identifier in url
			// 2. from cookie
			// 3. from selected class attribute on <li>
			if (o.selected === undefined) {
				if (location.hash) {
					this.anchors.each(function(i, a) {
						if (a.hash == location.hash) {
							o.selected = i;
							return false; // break
						}
					});
				}
				if (typeof o.selected != 'number' && o.cookie) {
					o.selected = parseInt(self._cookie(), 10);
				}
				if (typeof o.selected != 'number' && this.lis.filter('.ui-tabs-selected').length) {
					o.selected = this.lis.index(this.lis.filter('.ui-tabs-selected'));
				}
				o.selected = o.selected || 0;
			}
			else if (o.selected === null) { // usage of null is deprecated, TODO remove in next release
				o.selected = -1;
			}

			// sanity check - default to first tab...
			o.selected = ((o.selected >= 0 && this.anchors[o.selected]) || o.selected < 0) ? o.selected : 0;

			// Take disabling tabs via class attribute from HTML
			// into account and update option properly.
			// A selected tab cannot become disabled.
			o.disabled = $.unique(o.disabled.concat(
				$.map(this.lis.filter('.ui-state-disabled'),
					function(n, i) { return self.lis.index(n); } )
			)).sort();

			if ($.inArray(o.selected, o.disabled) != -1) {
				o.disabled.splice($.inArray(o.selected, o.disabled), 1);
			}

			// highlight selected tab
			this.panels.addClass('ui-tabs-hide');
			this.lis.removeClass('ui-tabs-selected ui-state-active');
			if (o.selected >= 0 && this.anchors.length) { // check for length avoids error when initializing empty list
				this.panels.eq(o.selected).removeClass('ui-tabs-hide');
				this.lis.eq(o.selected).addClass('ui-tabs-selected ui-state-active');

				// seems to be expected behavior that the show callback is fired
				self.element.queue("tabs", function() {
					self._trigger('show', null, self._ui(self.anchors[o.selected], self.panels[o.selected]));
				});
				
				this.load(o.selected);
			}

			// clean up to avoid memory leaks in certain versions of IE 6
			$(window).bind('unload', function() {
				self.lis.add(self.anchors).unbind('.tabs');
				self.lis = self.anchors = self.panels = null;
			});

		}
		// update selected after add/remove
		else {
			o.selected = this.lis.index(this.lis.filter('.ui-tabs-selected'));
		}

		// update collapsible
		this.element[o.collapsible ? 'addClass' : 'removeClass']('ui-tabs-collapsible');

		// set or update cookie after init and add/remove respectively
		if (o.cookie) {
			this._cookie(o.selected, o.cookie);
		}

		// disable tabs
		for (var i = 0, li; (li = this.lis[i]); i++) {
			$(li)[$.inArray(i, o.disabled) != -1 &&
				!$(li).hasClass('ui-tabs-selected') ? 'addClass' : 'removeClass']('ui-state-disabled');
		}

		// reset cache if switching from cached to not cached
		if (o.cache === false) {
			this.anchors.removeData('cache.tabs');
		}

		// remove all handlers before, tabify may run on existing tabs after add or option change
		this.lis.add(this.anchors).unbind('.tabs');

		if (o.event != 'mouseover') {
			var addState = function(state, el) {
				if (el.is(':not(.ui-state-disabled)')) {
					el.addClass('ui-state-' + state);
				}
			};
			var removeState = function(state, el) {
				el.removeClass('ui-state-' + state);
			};
			this.lis.bind('mouseover.tabs', function() {
				addState('hover', $(this));
			});
			this.lis.bind('mouseout.tabs', function() {
				removeState('hover', $(this));
			});
			this.anchors.bind('focus.tabs', function() {
				addState('focus', $(this).closest('li'));
			});
			this.anchors.bind('blur.tabs', function() {
				removeState('focus', $(this).closest('li'));
			});
		}

		// set up animations
		var hideFx, showFx;
		if (o.fx) {
			if ($.isArray(o.fx)) {
				hideFx = o.fx[0];
				showFx = o.fx[1];
			}
			else {
				hideFx = showFx = o.fx;
			}
		}

		// Reset certain styles left over from animation
		// and prevent IE's ClearType bug...
		function resetStyle($el, fx) {
			$el.css({ display: '' });
			if ($.browser.msie && fx.opacity) {
				$el[0].style.removeAttribute('filter');
			}
		}

		// Show a tab...
		var showTab = showFx ?
			function(clicked, $show) {
				$(clicked).closest('li').removeClass('ui-state-default').addClass('ui-tabs-selected ui-state-active');
				$show.hide().removeClass('ui-tabs-hide') // avoid flicker that way
					.animate(showFx, showFx.duration || 'normal', function() {
						resetStyle($show, showFx);
						self._trigger('show', null, self._ui(clicked, $show[0]));
					});
			} :
			function(clicked, $show) {
				$(clicked).closest('li').removeClass('ui-state-default').addClass('ui-tabs-selected ui-state-active');
				$show.removeClass('ui-tabs-hide');
				self._trigger('show', null, self._ui(clicked, $show[0]));
			};

		// Hide a tab, $show is optional...
		var hideTab = hideFx ?
			function(clicked, $hide) {
				$hide.animate(hideFx, hideFx.duration || 'normal', function() {
					self.lis.removeClass('ui-tabs-selected ui-state-active').addClass('ui-state-default');
					$hide.addClass('ui-tabs-hide');
					resetStyle($hide, hideFx);
					self.element.dequeue("tabs");
				});
			} :
			function(clicked, $hide, $show) {
				self.lis.removeClass('ui-tabs-selected ui-state-active').addClass('ui-state-default');
				$hide.addClass('ui-tabs-hide');
				self.element.dequeue("tabs");
			};

		// attach tab event handler, unbind to avoid duplicates from former tabifying...
		this.anchors.bind(o.event + '.tabs', function() {
			var el = this, $li = $(this).closest('li'), $hide = self.panels.filter(':not(.ui-tabs-hide)'),
					$show = $(self._sanitizeSelector(this.hash));

			// If tab is already selected and not collapsible or tab disabled or
			// or is already loading or click callback returns false stop here.
			// Check if click handler returns false last so that it is not executed
			// for a disabled or loading tab!
			if (($li.hasClass('ui-tabs-selected') && !o.collapsible) ||
				$li.hasClass('ui-state-disabled') ||
				$li.hasClass('ui-state-processing') ||
				self._trigger('select', null, self._ui(this, $show[0])) === false) {
				this.blur();
				return false;
			}

			o.selected = self.anchors.index(this);

			self.abort();

			// if tab may be closed
			if (o.collapsible) {
				if ($li.hasClass('ui-tabs-selected')) {
					o.selected = -1;

					if (o.cookie) {
						self._cookie(o.selected, o.cookie);
					}

					self.element.queue("tabs", function() {
						hideTab(el, $hide);
					}).dequeue("tabs");
					
					this.blur();
					return false;
				}
				else if (!$hide.length) {
					if (o.cookie) {
						self._cookie(o.selected, o.cookie);
					}
					
					self.element.queue("tabs", function() {
						showTab(el, $show);
					});

					self.load(self.anchors.index(this)); // TODO make passing in node possible, see also http://dev.jqueryui.com/ticket/3171
					
					this.blur();
					return false;
				}
			}

			if (o.cookie) {
				self._cookie(o.selected, o.cookie);
			}

			// show new tab
			if ($show.length) {
				if ($hide.length) {
					self.element.queue("tabs", function() {
						hideTab(el, $hide);
					});
				}
				self.element.queue("tabs", function() {
					showTab(el, $show);
				});
				
				self.load(self.anchors.index(this));
			}
			else {
				throw 'jQuery UI Tabs: Mismatching fragment identifier.';
			}

			// Prevent IE from keeping other link focussed when using the back button
			// and remove dotted border from clicked link. This is controlled via CSS
			// in modern browsers; blur() removes focus from address bar in Firefox
			// which can become a usability and annoying problem with tabs('rotate').
			if ($.browser.msie) {
				this.blur();
			}

		});

		// disable click in any case
		this.anchors.bind('click.tabs', function(){return false;});

	},

	destroy: function() {
		var o = this.options;

		this.abort();
		
		this.element.unbind('.tabs')
			.removeClass('ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible')
			.removeData('tabs');

		this.list.removeClass('ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all');

		this.anchors.each(function() {
			var href = $.data(this, 'href.tabs');
			if (href) {
				this.href = href;
			}
			var $this = $(this).unbind('.tabs');
			$.each(['href', 'load', 'cache'], function(i, prefix) {
				$this.removeData(prefix + '.tabs');
			});
		});

		this.lis.unbind('.tabs').add(this.panels).each(function() {
			if ($.data(this, 'destroy.tabs')) {
				$(this).remove();
			}
			else {
				$(this).removeClass([
					'ui-state-default',
					'ui-corner-top',
					'ui-tabs-selected',
					'ui-state-active',
					'ui-state-hover',
					'ui-state-focus',
					'ui-state-disabled',
					'ui-tabs-panel',
					'ui-widget-content',
					'ui-corner-bottom',
					'ui-tabs-hide'
				].join(' '));
			}
		});

		if (o.cookie) {
			this._cookie(null, o.cookie);
		}
	},

	add: function(url, label, index) {
		if (index === undefined) {
			index = this.anchors.length; // append by default
		}

		var self = this, o = this.options,
			$li = $(o.tabTemplate.replace(/#\{href\}/g, url).replace(/#\{label\}/g, label)),
			id = !url.indexOf('#') ? url.replace('#', '') : this._tabId($('a', $li)[0]);

		$li.addClass('ui-state-default ui-corner-top').data('destroy.tabs', true);

		// try to find an existing element before creating a new one
		var $panel = $('#' + id);
		if (!$panel.length) {
			$panel = $(o.panelTemplate).attr('id', id).data('destroy.tabs', true);
		}
		$panel.addClass('ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide');

		if (index >= this.lis.length) {
			$li.appendTo(this.list);
			$panel.appendTo(this.list[0].parentNode);
		}
		else {
			$li.insertBefore(this.lis[index]);
			$panel.insertBefore(this.panels[index]);
		}

		o.disabled = $.map(o.disabled,
			function(n, i) { return n >= index ? ++n : n; });

		this._tabify();

		if (this.anchors.length == 1) { // after tabify
			$li.addClass('ui-tabs-selected ui-state-active');
			$panel.removeClass('ui-tabs-hide');
			this.element.queue("tabs", function() {
				self._trigger('show', null, self._ui(self.anchors[0], self.panels[0]));
			});
				
			this.load(0);
		}

		// callback
		this._trigger('add', null, this._ui(this.anchors[index], this.panels[index]));
	},

	remove: function(index) {
		var o = this.options, $li = this.lis.eq(index).remove(),
			$panel = this.panels.eq(index).remove();

		// If selected tab was removed focus tab to the right or
		// in case the last tab was removed the tab to the left.
		if ($li.hasClass('ui-tabs-selected') && this.anchors.length > 1) {
			this.select(index + (index + 1 < this.anchors.length ? 1 : -1));
		}

		o.disabled = $.map($.grep(o.disabled, function(n, i) { return n != index; }),
			function(n, i) { return n >= index ? --n : n; });

		this._tabify();

		// callback
		this._trigger('remove', null, this._ui($li.find('a')[0], $panel[0]));
	},

	enable: function(index) {
		var o = this.options;
		if ($.inArray(index, o.disabled) == -1) {
			return;
		}

		this.lis.eq(index).removeClass('ui-state-disabled');
		o.disabled = $.grep(o.disabled, function(n, i) { return n != index; });

		// callback
		this._trigger('enable', null, this._ui(this.anchors[index], this.panels[index]));
	},

	disable: function(index) {
		var self = this, o = this.options;
		if (index != o.selected) { // cannot disable already selected tab
			this.lis.eq(index).addClass('ui-state-disabled');

			o.disabled.push(index);
			o.disabled.sort();

			// callback
			this._trigger('disable', null, this._ui(this.anchors[index], this.panels[index]));
		}
	},

	select: function(index) {
		if (typeof index == 'string') {
			index = this.anchors.index(this.anchors.filter('[href$=' + index + ']'));
		}
		else if (index === null) { // usage of null is deprecated, TODO remove in next release
			index = -1;
		}
		if (index == -1 && this.options.collapsible) {
			index = this.options.selected;
		}

		this.anchors.eq(index).trigger(this.options.event + '.tabs');
	},

	load: function(index) {
		var self = this, o = this.options, a = this.anchors.eq(index)[0], url = $.data(a, 'load.tabs');

		this.abort();

		// not remote or from cache
		if (!url || this.element.queue("tabs").length !== 0 && $.data(a, 'cache.tabs')) {
			this.element.dequeue("tabs");
			return;
		}

		// load remote from here on
		this.lis.eq(index).addClass('ui-state-processing');

		if (o.spinner) {
			var span = $('span', a);
			span.data('label.tabs', span.html()).html(o.spinner);
		}

		this.xhr = $.ajax($.extend({}, o.ajaxOptions, {
			url: url,
			success: function(r, s) {
				$(self._sanitizeSelector(a.hash)).html(r);

				// take care of tab labels
				self._cleanup();

				if (o.cache) {
					$.data(a, 'cache.tabs', true); // if loaded once do not load them again
				}

				// callbacks
				self._trigger('load', null, self._ui(self.anchors[index], self.panels[index]));
				try {
					o.ajaxOptions.success(r, s);
				}
				catch (e) {}

				// last, so that load event is fired before show...
				self.element.dequeue("tabs");
			}
		}));
	},

	abort: function() {
		// stop possibly running animations
		this.element.queue([]);
		this.panels.stop(false, true);

		// terminate pending requests from other tabs
		if (this.xhr) {
			this.xhr.abort();
			delete this.xhr;
		}

		// take care of tab labels
		this._cleanup();

	},

	url: function(index, url) {
		this.anchors.eq(index).removeData('cache.tabs').data('load.tabs', url);
	},

	length: function() {
		return this.anchors.length;
	}

});

$.extend($.ui.tabs, {
	version: '1.7.2',
	getter: 'length',
	defaults: {
		ajaxOptions: null,
		cache: false,
		cookie: null, // e.g. { expires: 7, path: '/', domain: 'jquery.com', secure: true }
		collapsible: false,
		disabled: [],
		event: 'click',
		fx: null, // e.g. { height: 'toggle', opacity: 'toggle', duration: 200 }
		idPrefix: 'ui-tabs-',
		panelTemplate: '<div></div>',
		spinner: '<em>Loading&#8230;</em>',
		tabTemplate: '<li><a href="#{href}"><span>#{label}</span></a></li>'
	}
});

/*
 * Tabs Extensions
 */

/*
 * Rotate
 */
$.extend($.ui.tabs.prototype, {
	rotation: null,
	rotate: function(ms, continuing) {

		var self = this, o = this.options;
		
		var rotate = self._rotate || (self._rotate = function(e) {
			clearTimeout(self.rotation);
			self.rotation = setTimeout(function() {
				var t = o.selected;
				self.select( ++t < self.anchors.length ? t : 0 );
			}, ms);
			
			if (e) {
				e.stopPropagation();
			}
		});
		
		var stop = self._unrotate || (self._unrotate = !continuing ?
			function(e) {
				if (e.clientX) { // in case of a true click
					self.rotate(null);
				}
			} :
			function(e) {
				t = o.selected;
				rotate();
			});

		// start rotation
		if (ms) {
			this.element.bind('tabsshow', rotate);
			this.anchors.bind(o.event + '.tabs', stop);
			rotate();
		}
		// stop rotation
		else {
			clearTimeout(self.rotation);
			this.element.unbind('tabsshow', rotate);
			this.anchors.unbind(o.event + '.tabs', stop);
			delete this._rotate;
			delete this._unrotate;
		}
	}
});

})(jQuery);

/*
 * jQuery UI Draggable 1.7.2
 *
 * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
 * Dual licensed under the MIT (MIT-LICENSE.txt)
 * and GPL (GPL-LICENSE.txt) licenses.
 *
 * http://docs.jquery.com/UI/Draggables
 *
 * Depends:
 *	ui.core.js
 */
(function($) {

$.widget("ui.draggable", $.extend({}, $.ui.mouse, {

	_init: function() {

		if (this.options.helper == 'original' && !(/^(?:r|a|f)/).test(this.element.css("position")))
			this.element[0].style.position = 'relative';

		(this.options.addClasses && this.element.addClass("ui-draggable"));
		(this.options.disabled && this.element.addClass("ui-draggable-disabled"));

		this._mouseInit();

	},

	destroy: function() {
		if(!this.element.data('draggable')) return;
		this.element
			.removeData("draggable")
			.unbind(".draggable")
			.removeClass("ui-draggable"
				+ " ui-draggable-dragging"
				+ " ui-draggable-disabled");
		this._mouseDestroy();
	},

	_mouseCapture: function(event) {

		var o = this.options;

		if (this.helper || o.disabled || $(event.target).is('.ui-resizable-handle'))
			return false;

		//Quit if we're not on a valid handle
		this.handle = this._getHandle(event);
		if (!this.handle)
			return false;

		return true;

	},

	_mouseStart: function(event) {

		var o = this.options;

		//Create and append the visible helper
		this.helper = this._createHelper(event);

		//Cache the helper size
		this._cacheHelperProportions();

		//If ddmanager is used for droppables, set the global draggable
		if($.ui.ddmanager)
			$.ui.ddmanager.current = this;

		/*
		 * - Position generation -
		 * This block generates everything position related - it's the core of draggables.
		 */

		//Cache the margins of the original element
		this._cacheMargins();

		//Store the helper's css position
		this.cssPosition = this.helper.css("position");
		this.scrollParent = this.helper.scrollParent();

		//The element's absolute position on the page minus margins
		this.offset = this.element.offset();
		this.offset = {
			top: this.offset.top - this.margins.top,
			left: this.offset.left - this.margins.left
		};

		$.extend(this.offset, {
			click: { //Where the click happened, relative to the element
				left: event.pageX - this.offset.left,
				top: event.pageY - this.offset.top
			},
			parent: this._getParentOffset(),
			relative: this._getRelativeOffset() //This is a relative to absolute position minus the actual position calculation - only used for relative positioned helper
		});

		//Generate the original position
		this.originalPosition = this._generatePosition(event);
		this.originalPageX = event.pageX;
		this.originalPageY = event.pageY;

		//Adjust the mouse offset relative to the helper if 'cursorAt' is supplied
		if(o.cursorAt)
			this._adjustOffsetFromHelper(o.cursorAt);

		//Set a containment if given in the options
		if(o.containment)
			this._setContainment();

		//Call plugins and callbacks
		this._trigger("start", event);

		//Recache the helper size
		this._cacheHelperProportions();

		//Prepare the droppable offsets
		if ($.ui.ddmanager && !o.dropBehaviour)
			$.ui.ddmanager.prepareOffsets(this, event);

		this.helper.addClass("ui-draggable-dragging");
		this._mouseDrag(event, true); //Execute the drag once - this causes the helper not to be visible before getting its correct position
		return true;
	},

	_mouseDrag: function(event, noPropagation) {

		//Compute the helpers position
		this.position = this._generatePosition(event);
		this.positionAbs = this._convertPositionTo("absolute");

		//Call plugins and callbacks and use the resulting position if something is returned
		if (!noPropagation) {
			var ui = this._uiHash();
			this._trigger('drag', event, ui);
			this.position = ui.position;
		}

		if(!this.options.axis || this.options.axis != "y") this.helper[0].style.left = this.position.left+'px';
		if(!this.options.axis || this.options.axis != "x") this.helper[0].style.top = this.position.top+'px';
		if($.ui.ddmanager) $.ui.ddmanager.drag(this, event);

		return false;
	},

	_mouseStop: function(event) {

		//If we are using droppables, inform the manager about the drop
		var dropped = false;
		if ($.ui.ddmanager && !this.options.dropBehaviour)
			dropped = $.ui.ddmanager.drop(this, event);

		//if a drop comes from outside (a sortable)
		if(this.dropped) {
			dropped = this.dropped;
			this.dropped = false;
		}

		if((this.options.revert == "invalid" && !dropped) || (this.options.revert == "valid" && dropped) || this.options.revert === true || ($.isFunction(this.options.revert) && this.options.revert.call(this.element, dropped))) {
			var self = this;
			$(this.helper).animate(this.originalPosition, parseInt(this.options.revertDuration, 10), function() {
				self._trigger("stop", event);
				self._clear();
			});
		} else {
			this._trigger("stop", event);
			this._clear();
		}

		return false;
	},

	_getHandle: function(event) {

		var handle = !this.options.handle || !$(this.options.handle, this.element).length ? true : false;
		$(this.options.handle, this.element)
			.find("*")
			.andSelf()
			.each(function() {
				if(this == event.target) handle = true;
			});

		return handle;

	},

	_createHelper: function(event) {

		var o = this.options;
		var helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event])) : (o.helper == 'clone' ? this.element.clone() : this.element);

		if(!helper.parents('body').length)
			helper.appendTo((o.appendTo == 'parent' ? this.element[0].parentNode : o.appendTo));

		if(helper[0] != this.element[0] && !(/(fixed|absolute)/).test(helper.css("position")))
			helper.css("position", "absolute");

		return helper;

	},

	_adjustOffsetFromHelper: function(obj) {
		if(obj.left != undefined) this.offset.click.left = obj.left + this.margins.left;
		if(obj.right != undefined) this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;
		if(obj.top != undefined) this.offset.click.top = obj.top + this.margins.top;
		if(obj.bottom != undefined) this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;
	},

	_getParentOffset: function() {

		//Get the offsetParent and cache its position
		this.offsetParent = this.helper.offsetParent();
		var po = this.offsetParent.offset();

		// This is a special case where we need to modify a offset calculated on start, since the following happened:
		// 1. The position of the helper is absolute, so it's position is calculated based on the next positioned parent
		// 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't the document, which means that
		//    the scroll is included in the initial calculation of the offset of the parent, and never recalculated upon drag
		if(this.cssPosition == 'absolute' && this.scrollParent[0] != document && $.ui.contains(this.scrollParent[0], this.offsetParent[0])) {
			po.left += this.scrollParent.scrollLeft();
			po.top += this.scrollParent.scrollTop();
		}

		if((this.offsetParent[0] == document.body) //This needs to be actually done for all browsers, since pageX/pageY includes this information
		|| (this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() == 'html' && $.browser.msie)) //Ugly IE fix
			po = { top: 0, left: 0 };

		return {
			top: po.top + (parseInt(this.offsetParent.css("borderTopWidth"),10) || 0),
			left: po.left + (parseInt(this.offsetParent.css("borderLeftWidth"),10) || 0)
		};

	},

	_getRelativeOffset: function() {

		if(this.cssPosition == "relative") {
			var p = this.element.position();
			return {
				top: p.top - (parseInt(this.helper.css("top"),10) || 0) + this.scrollParent.scrollTop(),
				left: p.left - (parseInt(this.helper.css("left"),10) || 0) + this.scrollParent.scrollLeft()
			};
		} else {
			return { top: 0, left: 0 };
		}

	},

	_cacheMargins: function() {
		this.margins = {
			left: (parseInt(this.element.css("marginLeft"),10) || 0),
			top: (parseInt(this.element.css("marginTop"),10) || 0)
		};
	},

	_cacheHelperProportions: function() {
		this.helperProportions = {
			width: this.helper.outerWidth(),
			height: this.helper.outerHeight()
		};
	},

	_setContainment: function() {

		var o = this.options;
		if(o.containment == 'parent') o.containment = this.helper[0].parentNode;
		if(o.containment == 'document' || o.containment == 'window') this.containment = [
			0 - this.offset.relative.left - this.offset.parent.left,
			0 - this.offset.relative.top - this.offset.parent.top,
			$(o.containment == 'document' ? document : window).width() - this.helperProportions.width - this.margins.left,
			($(o.containment == 'document' ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top
		];

		if(!(/^(document|window|parent)$/).test(o.containment) && o.containment.constructor != Array) {
			var ce = $(o.containment)[0]; if(!ce) return;
			var co = $(o.containment).offset();
			var over = ($(ce).css("overflow") != 'hidden');

			this.containment = [
				co.left + (parseInt($(ce).css("borderLeftWidth"),10) || 0) + (parseInt($(ce).css("paddingLeft"),10) || 0) - this.margins.left,
				co.top + (parseInt($(ce).css("borderTopWidth"),10) || 0) + (parseInt($(ce).css("paddingTop"),10) || 0) - this.margins.top,
				co.left+(over ? Math.max(ce.scrollWidth,ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css("borderLeftWidth"),10) || 0) - (parseInt($(ce).css("paddingRight"),10) || 0) - this.helperProportions.width - this.margins.left,
				co.top+(over ? Math.max(ce.scrollHeight,ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css("borderTopWidth"),10) || 0) - (parseInt($(ce).css("paddingBottom"),10) || 0) - this.helperProportions.height - this.margins.top
			];
		} else if(o.containment.constructor == Array) {
			this.containment = o.containment;
		}

	},

	_convertPositionTo: function(d, pos) {

		if(!pos) pos = this.position;
		var mod = d == "absolute" ? 1 : -1;
		var o = this.options, scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.ui.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);

		return {
			top: (
				pos.top																	// The absolute mouse position
				+ this.offset.relative.top * mod										// Only for relative positioned nodes: Relative offset from element to offset parent
				+ this.offset.parent.top * mod											// The offsetParent's offset without borders (offset + border)
				- ($.browser.safari && this.cssPosition == 'fixed' ? 0 : ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod)
			),
			left: (
				pos.left																// The absolute mouse position
				+ this.offset.relative.left * mod										// Only for relative positioned nodes: Relative offset from element to offset parent
				+ this.offset.parent.left * mod											// The offsetParent's offset without borders (offset + border)
				- ($.browser.safari && this.cssPosition == 'fixed' ? 0 : ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ) * mod)
			)
		};

	},

	_generatePosition: function(event) {

		var o = this.options, scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.ui.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);

		// This is another very weird special case that only happens for relative elements:
		// 1. If the css position is relative
		// 2. and the scroll parent is the document or similar to the offset parent
		// we have to refresh the relative offset during the scroll so there are no jumps
		if(this.cssPosition == 'relative' && !(this.scrollParent[0] != document && this.scrollParent[0] != this.offsetParent[0])) {
			this.offset.relative = this._getRelativeOffset();
		}

		var pageX = event.pageX;
		var pageY = event.pageY;

		/*
		 * - Position constraining -
		 * Constrain the position to a mix of grid, containment.
		 */

		if(this.originalPosition) { //If we are not dragging yet, we won't check for options

			if(this.containment) {
				if(event.pageX - this.offset.click.left < this.containment[0]) pageX = this.containment[0] + this.offset.click.left;
				if(event.pageY - this.offset.click.top < this.containment[1]) pageY = this.containment[1] + this.offset.click.top;
				if(event.pageX - this.offset.click.left > this.containment[2]) pageX = this.containment[2] + this.offset.click.left;
				if(event.pageY - this.offset.click.top > this.containment[3]) pageY = this.containment[3] + this.offset.click.top;
			}

			if(o.grid) {
				var top = this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1];
				pageY = this.containment ? (!(top - this.offset.click.top < this.containment[1] || top - this.offset.click.top > this.containment[3]) ? top : (!(top - this.offset.click.top < this.containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top;

				var left = this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0];
				pageX = this.containment ? (!(left - this.offset.click.left < this.containment[0] || left - this.offset.click.left > this.containment[2]) ? left : (!(left - this.offset.click.left < this.containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left;
			}

		}

		return {
			top: (
				pageY																// The absolute mouse position
				- this.offset.click.top													// Click offset (relative to the element)
				- this.offset.relative.top												// Only for relative positioned nodes: Relative offset from element to offset parent
				- this.offset.parent.top												// The offsetParent's offset without borders (offset + border)
				+ ($.browser.safari && this.cssPosition == 'fixed' ? 0 : ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ))
			),
			left: (
				pageX																// The absolute mouse position
				- this.offset.click.left												// Click offset (relative to the element)
				- this.offset.relative.left												// Only for relative positioned nodes: Relative offset from element to offset parent
				- this.offset.parent.left												// The offsetParent's offset without borders (offset + border)
				+ ($.browser.safari && this.cssPosition == 'fixed' ? 0 : ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ))
			)
		};

	},

	_clear: function() {
		this.helper.removeClass("ui-draggable-dragging");
		if(this.helper[0] != this.element[0] && !this.cancelHelperRemoval) this.helper.remove();
		//if($.ui.ddmanager) $.ui.ddmanager.current = null;
		this.helper = null;
		this.cancelHelperRemoval = false;
	},

	// From now on bulk stuff - mainly helpers

	_trigger: function(type, event, ui) {
		ui = ui || this._uiHash();
		$.ui.plugin.call(this, type, [event, ui]);
		if(type == "drag") this.positionAbs = this._convertPositionTo("absolute"); //The absolute position has to be recalculated after plugins
		return $.widget.prototype._trigger.call(this, type, event, ui);
	},

	plugins: {},

	_uiHash: function(event) {
		return {
			helper: this.helper,
			position: this.position,
			absolutePosition: this.positionAbs, //deprecated
			offset: this.positionAbs
		};
	}

}));

$.extend($.ui.draggable, {
	version: "1.7.2",
	eventPrefix: "drag",
	defaults: {
		addClasses: true,
		appendTo: "parent",
		axis: false,
		cancel: ":input,option",
		connectToSortable: false,
		containment: false,
		cursor: "auto",
		cursorAt: false,
		delay: 0,
		distance: 1,
		grid: false,
		handle: false,
		helper: "original",
		iframeFix: false,
		opacity: false,
		refreshPositions: false,
		revert: false,
		revertDuration: 500,
		scope: "default",
		scroll: true,
		scrollSensitivity: 20,
		scrollSpeed: 20,
		snap: false,
		snapMode: "both",
		snapTolerance: 20,
		stack: false,
		zIndex: false
	}
});

$.ui.plugin.add("draggable", "connectToSortable", {
	start: function(event, ui) {

		var inst = $(this).data("draggable"), o = inst.options,
			uiSortable = $.extend({}, ui, { item: inst.element });
		inst.sortables = [];
		$(o.connectToSortable).each(function() {
			var sortable = $.data(this, 'sortable');
			if (sortable && !sortable.options.disabled) {
				inst.sortables.push({
					instance: sortable,
					shouldRevert: sortable.options.revert
				});
				sortable._refreshItems();	//Do a one-time refresh at start to refresh the containerCache
				sortable._trigger("activate", event, uiSortable);
			}
		});

	},
	stop: function(event, ui) {

		//If we are still over the sortable, we fake the stop event of the sortable, but also remove helper
		var inst = $(this).data("draggable"),
			uiSortable = $.extend({}, ui, { item: inst.element });

		$.each(inst.sortables, function() {
			if(this.instance.isOver) {

				this.instance.isOver = 0;

				inst.cancelHelperRemoval = true; //Don't remove the helper in the draggable instance
				this.instance.cancelHelperRemoval = false; //Remove it in the sortable instance (so sortable plugins like revert still work)

				//The sortable revert is supported, and we have to set a temporary dropped variable on the draggable to support revert: 'valid/invalid'
				if(this.shouldRevert) this.instance.options.revert = true;

				//Trigger the stop of the sortable
				this.instance._mouseStop(event);

				this.instance.options.helper = this.instance.options._helper;

				//If the helper has been the original item, restore properties in the sortable
				if(inst.options.helper == 'original')
					this.instance.currentItem.css({ top: 'auto', left: 'auto' });

			} else {
				this.instance.cancelHelperRemoval = false; //Remove the helper in the sortable instance
				this.instance._trigger("deactivate", event, uiSortable);
			}

		});

	},
	drag: function(event, ui) {

		var inst = $(this).data("draggable"), self = this;

		var checkPos = function(o) {
			var dyClick = this.offset.click.top, dxClick = this.offset.click.left;
			var helperTop = this.positionAbs.top, helperLeft = this.positionAbs.left;
			var itemHeight = o.height, itemWidth = o.width;
			var itemTop = o.top, itemLeft = o.left;

			return $.ui.isOver(helperTop + dyClick, helperLeft + dxClick, itemTop, itemLeft, itemHeight, itemWidth);
		};

		$.each(inst.sortables, function(i) {
			
			//Copy over some variables to allow calling the sortable's native _intersectsWith
			this.instance.positionAbs = inst.positionAbs;
			this.instance.helperProportions = inst.helperProportions;
			this.instance.offset.click = inst.offset.click;
			
			if(this.instance._intersectsWith(this.instance.containerCache)) {

				//If it intersects, we use a little isOver variable and set it once, so our move-in stuff gets fired only once
				if(!this.instance.isOver) {

					this.instance.isOver = 1;
					//Now we fake the start of dragging for the sortable instance,
					//by cloning the list group item, appending it to the sortable and using it as inst.currentItem
					//We can then fire the start event of the sortable with our passed browser event, and our own helper (so it doesn't create a new one)
					this.instance.currentItem = $(self).clone().appendTo(this.instance.element).data("sortable-item", true);
					this.instance.options._helper = this.instance.options.helper; //Store helper option to later restore it
					this.instance.options.helper = function() { return ui.helper[0]; };

					event.target = this.instance.currentItem[0];
					this.instance._mouseCapture(event, true);
					this.instance._mouseStart(event, true, true);

					//Because the browser event is way off the new appended portlet, we modify a couple of variables to reflect the changes
					this.instance.offset.click.top = inst.offset.click.top;
					this.instance.offset.click.left = inst.offset.click.left;
					this.instance.offset.parent.left -= inst.offset.parent.left - this.instance.offset.parent.left;
					this.instance.offset.parent.top -= inst.offset.parent.top - this.instance.offset.parent.top;

					inst._trigger("toSortable", event);
					inst.dropped = this.instance.element; //draggable revert needs that
					//hack so receive/update callbacks work (mostly)
					inst.currentItem = inst.element;
					this.instance.fromOutside = inst;

				}

				//Provided we did all the previous steps, we can fire the drag event of the sortable on every draggable drag, when it intersects with the sortable
				if(this.instance.currentItem) this.instance._mouseDrag(event);

			} else {

				//If it doesn't intersect with the sortable, and it intersected before,
				//we fake the drag stop of the sortable, but make sure it doesn't remove the helper by using cancelHelperRemoval
				if(this.instance.isOver) {

					this.instance.isOver = 0;
					this.instance.cancelHelperRemoval = true;
					
					//Prevent reverting on this forced stop
					this.instance.options.revert = false;
					
					// The out event needs to be triggered independently
					this.instance._trigger('out', event, this.instance._uiHash(this.instance));
					
					this.instance._mouseStop(event, true);
					this.instance.options.helper = this.instance.options._helper;

					//Now we remove our currentItem, the list group clone again, and the placeholder, and animate the helper back to it's original size
					this.instance.currentItem.remove();
					if(this.instance.placeholder) this.instance.placeholder.remove();

					inst._trigger("fromSortable", event);
					inst.dropped = false; //draggable revert needs that
				}

			};

		});

	}
});

$.ui.plugin.add("draggable", "cursor", {
	start: function(event, ui) {
		var t = $('body'), o = $(this).data('draggable').options;
		if (t.css("cursor")) o._cursor = t.css("cursor");
		t.css("cursor", o.cursor);
	},
	stop: function(event, ui) {
		var o = $(this).data('draggable').options;
		if (o._cursor) $('body').css("cursor", o._cursor);
	}
});

$.ui.plugin.add("draggable", "iframeFix", {
	start: function(event, ui) {
		var o = $(this).data('draggable').options;
		$(o.iframeFix === true ? "iframe" : o.iframeFix).each(function() {
			$('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>')
			.css({
				width: this.offsetWidth+"px", height: this.offsetHeight+"px",
				position: "absolute", opacity: "0.001", zIndex: 1000
			})
			.css($(this).offset())
			.appendTo("body");
		});
	},
	stop: function(event, ui) {
		$("div.ui-draggable-iframeFix").each(function() { this.parentNode.removeChild(this); }); //Remove frame helpers
	}
});

$.ui.plugin.add("draggable", "opacity", {
	start: function(event, ui) {
		var t = $(ui.helper), o = $(this).data('draggable').options;
		if(t.css("opacity")) o._opacity = t.css("opacity");
		t.css('opacity', o.opacity);
	},
	stop: function(event, ui) {
		var o = $(this).data('draggable').options;
		if(o._opacity) $(ui.helper).css('opacity', o._opacity);
	}
});

$.ui.plugin.add("draggable", "scroll", {
	start: function(event, ui) {
		var i = $(this).data("draggable");
		if(i.scrollParent[0] != document && i.scrollParent[0].tagName != 'HTML') i.overflowOffset = i.scrollParent.offset();
	},
	drag: function(event, ui) {

		var i = $(this).data("draggable"), o = i.options, scrolled = false;

		if(i.scrollParent[0] != document && i.scrollParent[0].tagName != 'HTML') {

			if(!o.axis || o.axis != 'x') {
				if((i.overflowOffset.top + i.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity)
					i.scrollParent[0].scrollTop = scrolled = i.scrollParent[0].scrollTop + o.scrollSpeed;
				else if(event.pageY - i.overflowOffset.top < o.scrollSensitivity)
					i.scrollParent[0].scrollTop = scrolled = i.scrollParent[0].scrollTop - o.scrollSpeed;
			}

			if(!o.axis || o.axis != 'y') {
				if((i.overflowOffset.left + i.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity)
					i.scrollParent[0].scrollLeft = scrolled = i.scrollParent[0].scrollLeft + o.scrollSpeed;
				else if(event.pageX - i.overflowOffset.left < o.scrollSensitivity)
					i.scrollParent[0].scrollLeft = scrolled = i.scrollParent[0].scrollLeft - o.scrollSpeed;
			}

		} else {

			if(!o.axis || o.axis != 'x') {
				if(event.pageY - $(document).scrollTop() < o.scrollSensitivity)
					scrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed);
				else if($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity)
					scrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed);
			}

			if(!o.axis || o.axis != 'y') {
				if(event.pageX - $(document).scrollLeft() < o.scrollSensitivity)
					scrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed);
				else if($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity)
					scrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed);
			}

		}

		if(scrolled !== false && $.ui.ddmanager && !o.dropBehaviour)
			$.ui.ddmanager.prepareOffsets(i, event);

	}
});

$.ui.plugin.add("draggable", "snap", {
	start: function(event, ui) {

		var i = $(this).data("draggable"), o = i.options;
		i.snapElements = [];

		$(o.snap.constructor != String ? ( o.snap.items || ':data(draggable)' ) : o.snap).each(function() {
			var $t = $(this); var $o = $t.offset();
			if(this != i.element[0]) i.snapElements.push({
				item: this,
				width: $t.outerWidth(), height: $t.outerHeight(),
				top: $o.top, left: $o.left
			});
		});

	},
	drag: function(event, ui) {

		var inst = $(this).data("draggable"), o = inst.options;
		var d = o.snapTolerance;

		var x1 = ui.offset.left, x2 = x1 + inst.helperProportions.width,
			y1 = ui.offset.top, y2 = y1 + inst.helperProportions.height;

		for (var i = inst.snapElements.length - 1; i >= 0; i--){

			var l = inst.snapElements[i].left, r = l + inst.snapElements[i].width,
				t = inst.snapElements[i].top, b = t + inst.snapElements[i].height;

			//Yes, I know, this is insane ;)
			if(!((l-d < x1 && x1 < r+d && t-d < y1 && y1 < b+d) || (l-d < x1 && x1 < r+d && t-d < y2 && y2 < b+d) || (l-d < x2 && x2 < r+d && t-d < y1 && y1 < b+d) || (l-d < x2 && x2 < r+d && t-d < y2 && y2 < b+d))) {
				if(inst.snapElements[i].snapping) (inst.options.snap.release && inst.options.snap.release.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item })));
				inst.snapElements[i].snapping = false;
				continue;
			}

			if(o.snapMode != 'inner') {
				var ts = Math.abs(t - y2) <= d;
				var bs = Math.abs(b - y1) <= d;
				var ls = Math.abs(l - x2) <= d;
				var rs = Math.abs(r - x1) <= d;
				if(ts) ui.position.top = inst._convertPositionTo("relative", { top: t - inst.helperProportions.height, left: 0 }).top - inst.margins.top;
				if(bs) ui.position.top = inst._convertPositionTo("relative", { top: b, left: 0 }).top - inst.margins.top;
				if(ls) ui.position.left = inst._convertPositionTo("relative", { top: 0, left: l - inst.helperProportions.width }).left - inst.margins.left;
				if(rs) ui.position.left = inst._convertPositionTo("relative", { top: 0, left: r }).left - inst.margins.left;
			}

			var first = (ts || bs || ls || rs);

			if(o.snapMode != 'outer') {
				var ts = Math.abs(t - y1) <= d;
				var bs = Math.abs(b - y2) <= d;
				var ls = Math.abs(l - x1) <= d;
				var rs = Math.abs(r - x2) <= d;
				if(ts) ui.position.top = inst._convertPositionTo("relative", { top: t, left: 0 }).top - inst.margins.top;
				if(bs) ui.position.top = inst._convertPositionTo("relative", { top: b - inst.helperProportions.height, left: 0 }).top - inst.margins.top;
				if(ls) ui.position.left = inst._convertPositionTo("relative", { top: 0, left: l }).left - inst.margins.left;
				if(rs) ui.position.left = inst._convertPositionTo("relative", { top: 0, left: r - inst.helperProportions.width }).left - inst.margins.left;
			}

			if(!inst.snapElements[i].snapping && (ts || bs || ls || rs || first))
				(inst.options.snap.snap && inst.options.snap.snap.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item })));
			inst.snapElements[i].snapping = (ts || bs || ls || rs || first);

		};

	}
});

$.ui.plugin.add("draggable", "stack", {
	start: function(event, ui) {

		var o = $(this).data("draggable").options;

		var group = $.makeArray($(o.stack.group)).sort(function(a,b) {
			return (parseInt($(a).css("zIndex"),10) || o.stack.min) - (parseInt($(b).css("zIndex"),10) || o.stack.min);
		});

		$(group).each(function(i) {
			this.style.zIndex = o.stack.min + i;
		});

		this[0].style.zIndex = o.stack.min + group.length;

	}
});

$.ui.plugin.add("draggable", "zIndex", {
	start: function(event, ui) {
		var t = $(ui.helper), o = $(this).data("draggable").options;
		if(t.css("zIndex")) o._zIndex = t.css("zIndex");
		t.css('zIndex', o.zIndex);
	},
	stop: function(event, ui) {
		var o = $(this).data("draggable").options;
		if(o._zIndex) $(ui.helper).css('zIndex', o._zIndex);
	}
});

})(jQuery);

/*
 * jQuery UI Resizable 1.7.2
 *
 * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
 * Dual licensed under the MIT (MIT-LICENSE.txt)
 * and GPL (GPL-LICENSE.txt) licenses.
 *
 * http://docs.jquery.com/UI/Resizables
 *
 * Depends:
 *	ui.core.js
 */
(function($) {

$.widget("ui.resizable", $.extend({}, $.ui.mouse, {

	_init: function() {

		var self = this, o = this.options;
		this.element.addClass("ui-resizable");

		$.extend(this, {
			_aspectRatio: !!(o.aspectRatio),
			aspectRatio: o.aspectRatio,
			originalElement: this.element,
			_proportionallyResizeElements: [],
			_helper: o.helper || o.ghost || o.animate ? o.helper || 'ui-resizable-helper' : null
		});

		//Wrap the element if it cannot hold child nodes
		if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)) {

			//Opera fix for relative positioning
			if (/relative/.test(this.element.css('position')) && $.browser.opera)
				this.element.css({ position: 'relative', top: 'auto', left: 'auto' });

			//Create a wrapper element and set the wrapper to the new current internal element
			this.element.wrap(
				$('<div class="ui-wrapper" style="overflow: hidden;"></div>').css({
					position: this.element.css('position'),
					width: this.element.outerWidth(),
					height: this.element.outerHeight(),
					top: this.element.css('top'),
					left: this.element.css('left')
				})
			);

			//Overwrite the original this.element
			this.element = this.element.parent().data(
				"resizable", this.element.data('resizable')
			);

			this.elementIsWrapper = true;

			//Move margins to the wrapper
			this.element.css({ marginLeft: this.originalElement.css("marginLeft"), marginTop: this.originalElement.css("marginTop"), marginRight: this.originalElement.css("marginRight"), marginBottom: this.originalElement.css("marginBottom") });
			this.originalElement.css({ marginLeft: 0, marginTop: 0, marginRight: 0, marginBottom: 0});

			//Prevent Safari textarea resize
			this.originalResizeStyle = this.originalElement.css('resize');
			this.originalElement.css('resize', 'none');

			//Push the actual element to our proportionallyResize internal array
			this._proportionallyResizeElements.push(this.originalElement.css({ position: 'static', zoom: 1, display: 'block' }));

			// avoid IE jump (hard set the margin)
			this.originalElement.css({ margin: this.originalElement.css('margin') });

			// fix handlers offset
			this._proportionallyResize();

		}

		this.handles = o.handles || (!$('.ui-resizable-handle', this.element).length ? "e,s,se" : { n: '.ui-resizable-n', e: '.ui-resizable-e', s: '.ui-resizable-s', w: '.ui-resizable-w', se: '.ui-resizable-se', sw: '.ui-resizable-sw', ne: '.ui-resizable-ne', nw: '.ui-resizable-nw' });
		if(this.handles.constructor == String) {

			if(this.handles == 'all') this.handles = 'n,e,s,w,se,sw,ne,nw';
			var n = this.handles.split(","); this.handles = {};

			for(var i = 0; i < n.length; i++) {

				var handle = $.trim(n[i]), hname = 'ui-resizable-'+handle;
				var axis = $('<div class="ui-resizable-handle ' + hname + '"></div>');

				// increase zIndex of sw, se, ne, nw axis
				//TODO : this modifies original option
				if(/sw|se|ne|nw/.test(handle)) axis.css({ zIndex: ++o.zIndex });

				//TODO : What's going on here?
				if ('se' == handle) {
					axis.addClass('ui-icon ui-icon-gripsmall-diagonal-se');
				};

				//Insert into internal handles object and append to element
				this.handles[handle] = '.ui-resizable-'+handle;
				this.element.append(axis);
			}

		}

		this._renderAxis = function(target) {

			target = target || this.element;

			for(var i in this.handles) {

				if(this.handles[i].constructor == String)
					this.handles[i] = $(this.handles[i], this.element).show();

				//Apply pad to wrapper element, needed to fix axis position (textarea, inputs, scrolls)
				if (this.elementIsWrapper && this.originalElement[0].nodeName.match(/textarea|input|select|button/i)) {

					var axis = $(this.handles[i], this.element), padWrapper = 0;

					//Checking the correct pad and border
					padWrapper = /sw|ne|nw|se|n|s/.test(i) ? axis.outerHeight() : axis.outerWidth();

					//The padding type i have to apply...
					var padPos = [ 'padding',
						/ne|nw|n/.test(i) ? 'Top' :
						/se|sw|s/.test(i) ? 'Bottom' :
						/^e$/.test(i) ? 'Right' : 'Left' ].join("");

					target.css(padPos, padWrapper);

					this._proportionallyResize();

				}

				//TODO: What's that good for? There's not anything to be executed left
				if(!$(this.handles[i]).length)
					continue;

			}
		};

		//TODO: make renderAxis a prototype function
		this._renderAxis(this.element);

		this._handles = $('.ui-resizable-handle', this.element)
			.disableSelection();

		//Matching axis name
		this._handles.mouseover(function() {
			if (!self.resizing) {
				if (this.className)
					var axis = this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);
				//Axis, default = se
				self.axis = axis && axis[1] ? axis[1] : 'se';
			}
		});

		//If we want to auto hide the elements
		if (o.autoHide) {
			this._handles.hide();
			$(this.element)
				.addClass("ui-resizable-autohide")
				.hover(function() {
					$(this).removeClass("ui-resizable-autohide");
					self._handles.show();
				},
				function(){
					if (!self.resizing) {
						$(this).addClass("ui-resizable-autohide");
						self._handles.hide();
					}
				});
		}

		//Initialize the mouse interaction
		this._mouseInit();

	},

	destroy: function() {

		this._mouseDestroy();

		var _destroy = function(exp) {
			$(exp).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing")
				.removeData("resizable").unbind(".resizable").find('.ui-resizable-handle').remove();
		};

		//TODO: Unwrap at same DOM position
		if (this.elementIsWrapper) {
			_destroy(this.element);
			var wrapper = this.element;
			wrapper.parent().append(
				this.originalElement.css({
					position: wrapper.css('position'),
					width: wrapper.outerWidth(),
					height: wrapper.outerHeight(),
					top: wrapper.css('top'),
					left: wrapper.css('left')
				})
			).end().remove();
		}

		this.originalElement.css('resize', this.originalResizeStyle);
		_destroy(this.originalElement);

	},

	_mouseCapture: function(event) {

		var handle = false;
		for(var i in this.handles) {
			if($(this.handles[i])[0] == event.target) handle = true;
		}

		return this.options.disabled || !!handle;

	},

	_mouseStart: function(event) {

		var o = this.options, iniPos = this.element.position(), el = this.element;

		this.resizing = true;
		this.documentScroll = { top: $(document).scrollTop(), left: $(document).scrollLeft() };

		// bugfix for http://dev.jquery.com/ticket/1749
		if (el.is('.ui-draggable') || (/absolute/).test(el.css('position'))) {
			el.css({ position: 'absolute', top: iniPos.top, left: iniPos.left });
		}

		//Opera fixing relative position
		if ($.browser.opera && (/relative/).test(el.css('position')))
			el.css({ position: 'relative', top: 'auto', left: 'auto' });

		this._renderProxy();

		var curleft = num(this.helper.css('left')), curtop = num(this.helper.css('top'));

		if (o.containment) {
			curleft += $(o.containment).scrollLeft() || 0;
			curtop += $(o.containment).scrollTop() || 0;
		}

		//Store needed variables
		this.offset = this.helper.offset();
		this.position = { left: curleft, top: curtop };
		this.size = this._helper ? { width: el.outerWidth(), height: el.outerHeight() } : { width: el.width(), height: el.height() };
		this.originalSize = this._helper ? { width: el.outerWidth(), height: el.outerHeight() } : { width: el.width(), height: el.height() };
		this.originalPosition = { left: curleft, top: curtop };
		this.sizeDiff = { width: el.outerWidth() - el.width(), height: el.outerHeight() - el.height() };
		this.originalMousePosition = { left: event.pageX, top: event.pageY };

		//Aspect Ratio
		this.aspectRatio = (typeof o.aspectRatio == 'number') ? o.aspectRatio : ((this.originalSize.width / this.originalSize.height) || 1);

	    var cursor = $('.ui-resizable-' + this.axis).css('cursor');
	    $('body').css('cursor', cursor == 'auto' ? this.axis + '-resize' : cursor);

		el.addClass("ui-resizable-resizing");
		this._propagate("start", event);
		return true;
	},

	_mouseDrag: function(event) {

		//Increase performance, avoid regex
		var el = this.helper, o = this.options, props = {},
			self = this, smp = this.originalMousePosition, a = this.axis;

		var dx = (event.pageX-smp.left)||0, dy = (event.pageY-smp.top)||0;
		var trigger = this._change[a];
		if (!trigger) return false;

		// Calculate the attrs that will be change
		var data = trigger.apply(this, [event, dx, dy]), ie6 = $.browser.msie && $.browser.version < 7, csdif = this.sizeDiff;

		if (this._aspectRatio || event.shiftKey)
			data = this._updateRatio(data, event);

		data = this._respectSize(data, event);

		// plugins callbacks need to be called first
		this._propagate("resize", event);

		el.css({
			top: this.position.top + "px", left: this.position.left + "px",
			width: this.size.width + "px", height: this.size.height + "px"
		});

		if (!this._helper && this._proportionallyResizeElements.length)
			this._proportionallyResize();

		this._updateCache(data);

		// calling the user callback at the end
		this._trigger('resize', event, this.ui());

		return false;
	},

	_mouseStop: function(event) {

		this.resizing = false;
		var o = this.options, self = this;

		if(this._helper) {
			var pr = this._proportionallyResizeElements, ista = pr.length && (/textarea/i).test(pr[0].nodeName),
						soffseth = ista && $.ui.hasScroll(pr[0], 'left') /* TODO - jump height */ ? 0 : self.sizeDiff.height,
							soffsetw = ista ? 0 : self.sizeDiff.width;

			var s = { width: (self.size.width - soffsetw), height: (self.size.height - soffseth) },
				left = (parseInt(self.element.css('left'), 10) + (self.position.left - self.originalPosition.left)) || null,
				top = (parseInt(self.element.css('top'), 10) + (self.position.top - self.originalPosition.top)) || null;

			if (!o.animate)
				this.element.css($.extend(s, { top: top, left: left }));

			self.helper.height(self.size.height);
			self.helper.width(self.size.width);

			if (this._helper && !o.animate) this._proportionallyResize();
		}

		$('body').css('cursor', 'auto');

		this.element.removeClass("ui-resizable-resizing");

		this._propagate("stop", event);

		if (this._helper) this.helper.remove();
		return false;

	},

	_updateCache: function(data) {
		var o = this.options;
		this.offset = this.helper.offset();
		if (isNumber(data.left)) this.position.left = data.left;
		if (isNumber(data.top)) this.position.top = data.top;
		if (isNumber(data.height)) this.size.height = data.height;
		if (isNumber(data.width)) this.size.width = data.width;
	},

	_updateRatio: function(data, event) {

		var o = this.options, cpos = this.position, csize = this.size, a = this.axis;

		if (data.height) data.width = (csize.height * this.aspectRatio);
		else if (data.width) data.height = (csize.width / this.aspectRatio);

		if (a == 'sw') {
			data.left = cpos.left + (csize.width - data.width);
			data.top = null;
		}
		if (a == 'nw') {
			data.top = cpos.top + (csize.height - data.height);
			data.left = cpos.left + (csize.width - data.width);
		}

		return data;
	},

	_respectSize: function(data, event) {

		var el = this.helper, o = this.options, pRatio = this._aspectRatio || event.shiftKey, a = this.axis,
				ismaxw = isNumber(data.width) && o.maxWidth && (o.maxWidth < data.width), ismaxh = isNumber(data.height) && o.maxHeight && (o.maxHeight < data.height),
					isminw = isNumber(data.width) && o.minWidth && (o.minWidth > data.width), isminh = isNumber(data.height) && o.minHeight && (o.minHeight > data.height);

		if (isminw) data.width = o.minWidth;
		if (isminh) data.height = o.minHeight;
		if (ismaxw) data.width = o.maxWidth;
		if (ismaxh) data.height = o.maxHeight;

		var dw = this.originalPosition.left + this.originalSize.width, dh = this.position.top + this.size.height;
		var cw = /sw|nw|w/.test(a), ch = /nw|ne|n/.test(a);

		if (isminw && cw) data.left = dw - o.minWidth;
		if (ismaxw && cw) data.left = dw - o.maxWidth;
		if (isminh && ch)	data.top = dh - o.minHeight;
		if (ismaxh && ch)	data.top = dh - o.maxHeight;

		// fixing jump error on top/left - bug #2330
		var isNotwh = !data.width && !data.height;
		if (isNotwh && !data.left && data.top) data.top = null;
		else if (isNotwh && !data.top && data.left) data.left = null;

		return data;
	},

	_proportionallyResize: function() {

		var o = this.options;
		if (!this._proportionallyResizeElements.length) return;
		var element = this.helper || this.element;

		for (var i=0; i < this._proportionallyResizeElements.length; i++) {

			var prel = this._proportionallyResizeElements[i];

			if (!this.borderDif) {
				var b = [prel.css('borderTopWidth'), prel.css('borderRightWidth'), prel.css('borderBottomWidth'), prel.css('borderLeftWidth')],
					p = [prel.css('paddingTop'), prel.css('paddingRight'), prel.css('paddingBottom'), prel.css('paddingLeft')];

				this.borderDif = $.map(b, function(v, i) {
					var border = parseInt(v,10)||0, padding = parseInt(p[i],10)||0;
					return border + padding;
				});
			}

			if ($.browser.msie && !(!($(element).is(':hidden') || $(element).parents(':hidden').length)))
				continue;

			prel.css({
				height: (element.height() - this.borderDif[0] - this.borderDif[2]) || 0,
				width: (element.width() - this.borderDif[1] - this.borderDif[3]) || 0
			});

		};

	},

	_renderProxy: function() {

		var el = this.element, o = this.options;
		this.elementOffset = el.offset();

		if(this._helper) {

			this.helper = this.helper || $('<div style="overflow:hidden;"></div>');

			// fix ie6 offset TODO: This seems broken
			var ie6 = $.browser.msie && $.browser.version < 7, ie6offset = (ie6 ? 1 : 0),
			pxyoffset = ( ie6 ? 2 : -1 );

			this.helper.addClass(this._helper).css({
				width: this.element.outerWidth() + pxyoffset,
				height: this.element.outerHeight() + pxyoffset,
				position: 'absolute',
				left: this.elementOffset.left - ie6offset +'px',
				top: this.elementOffset.top - ie6offset +'px',
				zIndex: ++o.zIndex //TODO: Don't modify option
			});

			this.helper
				.appendTo("body")
				.disableSelection();

		} else {
			this.helper = this.element;
		}

	},

	_change: {
		e: function(event, dx, dy) {
			return { width: this.originalSize.width + dx };
		},
		w: function(event, dx, dy) {
			var o = this.options, cs = this.originalSize, sp = this.originalPosition;
			return { left: sp.left + dx, width: cs.width - dx };
		},
		n: function(event, dx, dy) {
			var o = this.options, cs = this.originalSize, sp = this.originalPosition;
			return { top: sp.top + dy, height: cs.height - dy };
		},
		s: function(event, dx, dy) {
			return { height: this.originalSize.height + dy };
		},
		se: function(event, dx, dy) {
			return $.extend(this._change.s.apply(this, arguments), this._change.e.apply(this, [event, dx, dy]));
		},
		sw: function(event, dx, dy) {
			return $.extend(this._change.s.apply(this, arguments), this._change.w.apply(this, [event, dx, dy]));
		},
		ne: function(event, dx, dy) {
			return $.extend(this._change.n.apply(this, arguments), this._change.e.apply(this, [event, dx, dy]));
		},
		nw: function(event, dx, dy) {
			return $.extend(this._change.n.apply(this, arguments), this._change.w.apply(this, [event, dx, dy]));
		}
	},

	_propagate: function(n, event) {
		$.ui.plugin.call(this, n, [event, this.ui()]);
		(n != "resize" && this._trigger(n, event, this.ui()));
	},

	plugins: {},

	ui: function() {
		return {
			originalElement: this.originalElement,
			element: this.element,
			helper: this.helper,
			position: this.position,
			size: this.size,
			originalSize: this.originalSize,
			originalPosition: this.originalPosition
		};
	}

}));

$.extend($.ui.resizable, {
	version: "1.7.2",
	eventPrefix: "resize",
	defaults: {
		alsoResize: false,
		animate: false,
		animateDuration: "slow",
		animateEasing: "swing",
		aspectRatio: false,
		autoHide: false,
		cancel: ":input,option",
		containment: false,
		delay: 0,
		distance: 1,
		ghost: false,
		grid: false,
		handles: "e,s,se",
		helper: false,
		maxHeight: null,
		maxWidth: null,
		minHeight: 10,
		minWidth: 10,
		zIndex: 1000
	}
});

/*
 * Resizable Extensions
 */

$.ui.plugin.add("resizable", "alsoResize", {

	start: function(event, ui) {

		var self = $(this).data("resizable"), o = self.options;

		_store = function(exp) {
			$(exp).each(function() {
				$(this).data("resizable-alsoresize", {
					width: parseInt($(this).width(), 10), height: parseInt($(this).height(), 10),
					left: parseInt($(this).css('left'), 10), top: parseInt($(this).css('top'), 10)
				});
			});
		};

		if (typeof(o.alsoResize) == 'object' && !o.alsoResize.parentNode) {
			if (o.alsoResize.length) { o.alsoResize = o.alsoResize[0];	_store(o.alsoResize); }
			else { $.each(o.alsoResize, function(exp, c) { _store(exp); }); }
		}else{
			_store(o.alsoResize);
		}
	},

	resize: function(event, ui){
		var self = $(this).data("resizable"), o = self.options, os = self.originalSize, op = self.originalPosition;

		var delta = {
			height: (self.size.height - os.height) || 0, width: (self.size.width - os.width) || 0,
			top: (self.position.top - op.top) || 0, left: (self.position.left - op.left) || 0
		},

		_alsoResize = function(exp, c) {
			$(exp).each(function() {
				var el = $(this), start = $(this).data("resizable-alsoresize"), style = {}, css = c && c.length ? c : ['width', 'height', 'top', 'left'];

				$.each(css || ['width', 'height', 'top', 'left'], function(i, prop) {
					var sum = (start[prop]||0) + (delta[prop]||0);
					if (sum && sum >= 0)
						style[prop] = sum || null;
				});

				//Opera fixing relative position
				if (/relative/.test(el.css('position')) && $.browser.opera) {
					self._revertToRelativePosition = true;
					el.css({ position: 'absolute', top: 'auto', left: 'auto' });
				}

				el.css(style);
			});
		};

		if (typeof(o.alsoResize) == 'object' && !o.alsoResize.nodeType) {
			$.each(o.alsoResize, function(exp, c) { _alsoResize(exp, c); });
		}else{
			_alsoResize(o.alsoResize);
		}
	},

	stop: function(event, ui){
		var self = $(this).data("resizable");

		//Opera fixing relative position
		if (self._revertToRelativePosition && $.browser.opera) {
			self._revertToRelativePosition = false;
			el.css({ position: 'relative' });
		}

		$(this).removeData("resizable-alsoresize-start");
	}
});

$.ui.plugin.add("resizable", "animate", {

	stop: function(event, ui) {
		var self = $(this).data("resizable"), o = self.options;

		var pr = self._proportionallyResizeElements, ista = pr.length && (/textarea/i).test(pr[0].nodeName),
					soffseth = ista && $.ui.hasScroll(pr[0], 'left') /* TODO - jump height */ ? 0 : self.sizeDiff.height,
						soffsetw = ista ? 0 : self.sizeDiff.width;

		var style = { width: (self.size.width - soffsetw), height: (self.size.height - soffseth) },
					left = (parseInt(self.element.css('left'), 10) + (self.position.left - self.originalPosition.left)) || null,
						top = (parseInt(self.element.css('top'), 10) + (self.position.top - self.originalPosition.top)) || null;

		self.element.animate(
			$.extend(style, top && left ? { top: top, left: left } : {}), {
				duration: o.animateDuration,
				easing: o.animateEasing,
				step: function() {

					var data = {
						width: parseInt(self.element.css('width'), 10),
						height: parseInt(self.element.css('height'), 10),
						top: parseInt(self.element.css('top'), 10),
						left: parseInt(self.element.css('left'), 10)
					};

					if (pr && pr.length) $(pr[0]).css({ width: data.width, height: data.height });

					// propagating resize, and updating values for each animation step
					self._updateCache(data);
					self._propagate("resize", event);

				}
			}
		);
	}

});

$.ui.plugin.add("resizable", "containment", {

	start: function(event, ui) {
		var self = $(this).data("resizable"), o = self.options, el = self.element;
		var oc = o.containment,	ce = (oc instanceof $) ? oc.get(0) : (/parent/.test(oc)) ? el.parent().get(0) : oc;
		if (!ce) return;

		self.containerElement = $(ce);

		if (/document/.test(oc) || oc == document) {
			self.containerOffset = { left: 0, top: 0 };
			self.containerPosition = { left: 0, top: 0 };

			self.parentData = {
				element: $(document), left: 0, top: 0,
				width: $(document).width(), height: $(document).height() || document.body.parentNode.scrollHeight
			};
		}

		// i'm a node, so compute top, left, right, bottom
		else {
			var element = $(ce), p = [];
			$([ "Top", "Right", "Left", "Bottom" ]).each(function(i, name) { p[i] = num(element.css("padding" + name)); });

			self.containerOffset = element.offset();
			self.containerPosition = element.position();
			self.containerSize = { height: (element.innerHeight() - p[3]), width: (element.innerWidth() - p[1]) };

			var co = self.containerOffset, ch = self.containerSize.height,	cw = self.containerSize.width,
						width = ($.ui.hasScroll(ce, "left") ? ce.scrollWidth : cw ), height = ($.ui.hasScroll(ce) ? ce.scrollHeight : ch);

			self.parentData = {
				element: ce, left: co.left, top: co.top, width: width, height: height
			};
		}
	},

	resize: function(event, ui) {
		var self = $(this).data("resizable"), o = self.options,
				ps = self.containerSize, co = self.containerOffset, cs = self.size, cp = self.position,
				pRatio = self._aspectRatio || event.shiftKey, cop = { top:0, left:0 }, ce = self.containerElement;

		if (ce[0] != document && (/static/).test(ce.css('position'))) cop = co;

		if (cp.left < (self._helper ? co.left : 0)) {
			self.size.width = self.size.width + (self._helper ? (self.position.left - co.left) : (self.position.left - cop.left));
			if (pRatio) self.size.height = self.size.width / o.aspectRatio;
			self.position.left = o.helper ? co.left : 0;
		}

		if (cp.top < (self._helper ? co.top : 0)) {
			self.size.height = self.size.height + (self._helper ? (self.position.top - co.top) : self.position.top);
			if (pRatio) self.size.width = self.size.height * o.aspectRatio;
			self.position.top = self._helper ? co.top : 0;
		}

		self.offset.left = self.parentData.left+self.position.left;
		self.offset.top = self.parentData.top+self.position.top;

		var woset = Math.abs( (self._helper ? self.offset.left - cop.left : (self.offset.left - cop.left)) + self.sizeDiff.width ),
					hoset = Math.abs( (self._helper ? self.offset.top - cop.top : (self.offset.top - co.top)) + self.sizeDiff.height );

		var isParent = self.containerElement.get(0) == self.element.parent().get(0),
		    isOffsetRelative = /relative|absolute/.test(self.containerElement.css('position'));

		if(isParent && isOffsetRelative) woset -= self.parentData.left;

		if (woset + self.size.width >= self.parentData.width) {
			self.size.width = self.parentData.width - woset;
			if (pRatio) self.size.height = self.size.width / self.aspectRatio;
		}

		if (hoset + self.size.height >= self.parentData.height) {
			self.size.height = self.parentData.height - hoset;
			if (pRatio) self.size.width = self.size.height * self.aspectRatio;
		}
	},

	stop: function(event, ui){
		var self = $(this).data("resizable"), o = self.options, cp = self.position,
				co = self.containerOffset, cop = self.containerPosition, ce = self.containerElement;

		var helper = $(self.helper), ho = helper.offset(), w = helper.outerWidth() - self.sizeDiff.width, h = helper.outerHeight() - self.sizeDiff.height;

		if (self._helper && !o.animate && (/relative/).test(ce.css('position')))
			$(this).css({ left: ho.left - cop.left - co.left, width: w, height: h });

		if (self._helper && !o.animate && (/static/).test(ce.css('position')))
			$(this).css({ left: ho.left - cop.left - co.left, width: w, height: h });

	}
});

$.ui.plugin.add("resizable", "ghost", {

	start: function(event, ui) {

		var self = $(this).data("resizable"), o = self.options, cs = self.size;

		self.ghost = self.originalElement.clone();
		self.ghost
			.css({ opacity: .25, display: 'block', position: 'relative', height: cs.height, width: cs.width, margin: 0, left: 0, top: 0 })
			.addClass('ui-resizable-ghost')
			.addClass(typeof o.ghost == 'string' ? o.ghost : '');

		self.ghost.appendTo(self.helper);

	},

	resize: function(event, ui){
		var self = $(this).data("resizable"), o = self.options;
		if (self.ghost) self.ghost.css({ position: 'relative', height: self.size.height, width: self.size.width });
	},

	stop: function(event, ui){
		var self = $(this).data("resizable"), o = self.options;
		if (self.ghost && self.helper) self.helper.get(0).removeChild(self.ghost.get(0));
	}

});

$.ui.plugin.add("resizable", "grid", {

	resize: function(event, ui) {
		var self = $(this).data("resizable"), o = self.options, cs = self.size, os = self.originalSize, op = self.originalPosition, a = self.axis, ratio = o._aspectRatio || event.shiftKey;
		o.grid = typeof o.grid == "number" ? [o.grid, o.grid] : o.grid;
		var ox = Math.round((cs.width - os.width) / (o.grid[0]||1)) * (o.grid[0]||1), oy = Math.round((cs.height - os.height) / (o.grid[1]||1)) * (o.grid[1]||1);

		if (/^(se|s|e)$/.test(a)) {
			self.size.width = os.width + ox;
			self.size.height = os.height + oy;
		}
		else if (/^(ne)$/.test(a)) {
			self.size.width = os.width + ox;
			self.size.height = os.height + oy;
			self.position.top = op.top - oy;
		}
		else if (/^(sw)$/.test(a)) {
			self.size.width = os.width + ox;
			self.size.height = os.height + oy;
			self.position.left = op.left - ox;
		}
		else {
			self.size.width = os.width + ox;
			self.size.height = os.height + oy;
			self.position.top = op.top - oy;
			self.position.left = op.left - ox;
		}
	}

});

var num = function(v) {
	return parseInt(v, 10) || 0;
};

var isNumber = function(value) {
	return !isNaN(parseInt(value, 10));
};

})(jQuery);


/*
 * jQuery UI Dialog 1.7.2
 *
 * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
 * Dual licensed under the MIT (MIT-LICENSE.txt)
 * and GPL (GPL-LICENSE.txt) licenses.
 *
 * http://docs.jquery.com/UI/Dialog
 *
 * Depends:
 *	ui.core.js
 *	ui.draggable.js
 *	ui.resizable.js
 */
(function($) {

var setDataSwitch = {
		dragStart: "start.draggable",
		drag: "drag.draggable",
		dragStop: "stop.draggable",
		maxHeight: "maxHeight.resizable",
		minHeight: "minHeight.resizable",
		maxWidth: "maxWidth.resizable",
		minWidth: "minWidth.resizable",
		resizeStart: "start.resizable",
		resize: "drag.resizable",
		resizeStop: "stop.resizable"
	},
	
	uiDialogClasses =
		'ui-dialog ' +
		'ui-widget ' +
		'ui-widget-content ' +
		'ui-corner-all ';

$.widget("ui.dialog", {

	_init: function() {
		this.originalTitle = this.element.attr('title');

		var self = this,
			options = this.options,

			title = options.title || this.originalTitle || '&nbsp;',
			titleId = $.ui.dialog.getTitleId(this.element),

			uiDialog = (this.uiDialog = $('<div/>'))
				.appendTo(document.body)
				.hide()
				.addClass(uiDialogClasses + options.dialogClass)
				.css({
					position: 'absolute',
					overflow: 'hidden',
					zIndex: options.zIndex
				})
				// setting tabIndex makes the div focusable
				// setting outline to 0 prevents a border on focus in Mozilla
				.attr('tabIndex', -1).css('outline', 0).keydown(function(event) {
					(options.closeOnEscape && event.keyCode
						&& event.keyCode == $.ui.keyCode.ESCAPE && self.close(event));
				})
				.attr({
					role: 'dialog',
					'aria-labelledby': titleId
				})
				.mousedown(function(event) {
					self.moveToTop(false, event);
				}),

			uiDialogContent = this.element
				.show()
				.removeAttr('title')
				.addClass(
					'ui-dialog-content ' +
					'ui-widget-content')
				.appendTo(uiDialog),

			uiDialogTitlebar = (this.uiDialogTitlebar = $('<div></div>'))
				.addClass(
					'ui-dialog-titlebar ' +
					'ui-widget-header ' +
					'ui-corner-all ' +
					'ui-helper-clearfix'
				)
				.prependTo(uiDialog),

			uiDialogTitlebarClose = $('<a href="#"/>')
				.addClass(
					'ui-dialog-titlebar-close ' +
					'ui-corner-all'
				)
				.attr('role', 'button')
				.hover(
					function() {
						uiDialogTitlebarClose.addClass('ui-state-hover');
					},
					function() {
						uiDialogTitlebarClose.removeClass('ui-state-hover');
					}
				)
				.focus(function() {
					uiDialogTitlebarClose.addClass('ui-state-focus');
				})
				.blur(function() {
					uiDialogTitlebarClose.removeClass('ui-state-focus');
				})
				.mousedown(function(ev) {
					ev.stopPropagation();
				})
				.click(function(event) {
					self.close(event);
					return false;
				})
				.appendTo(uiDialogTitlebar),

			uiDialogTitlebarCloseText = (this.uiDialogTitlebarCloseText = $('<span/>'))
				.addClass(
					'ui-icon ' +
					'ui-icon-closethick'
				)
				.text(options.closeText)
				.appendTo(uiDialogTitlebarClose),

			uiDialogTitle = $('<span/>')
				.addClass('ui-dialog-title')
				.attr('id', titleId)
				.html(title)
				.prependTo(uiDialogTitlebar);

		uiDialogTitlebar.find("*").add(uiDialogTitlebar).disableSelection();

		(options.draggable && $.fn.draggable && this._makeDraggable());
		(options.resizable && $.fn.resizable && this._makeResizable());

		this._createButtons(options.buttons);
		this._isOpen = false;

		(options.bgiframe && $.fn.bgiframe && uiDialog.bgiframe());
		(options.autoOpen && this.open());
		
	},

	destroy: function() {
		(this.overlay && this.overlay.destroy());
		this.uiDialog.hide();
		this.element
			.unbind('.dialog')
			.removeData('dialog')
			.removeClass('ui-dialog-content ui-widget-content')
			.hide().appendTo('body');
		this.uiDialog.remove();

		(this.originalTitle && this.element.attr('title', this.originalTitle));
	},

	close: function(event) {
		var self = this;
		
		if (false === self._trigger('beforeclose', event)) {
			return;
		}

		(self.overlay && self.overlay.destroy());
		self.uiDialog.unbind('keypress.ui-dialog');

		(self.options.hide
			? self.uiDialog.hide(self.options.hide, function() {
				self._trigger('close', event);
			})
			: self.uiDialog.hide() && self._trigger('close', event));

		$.ui.dialog.overlay.resize();

		self._isOpen = false;
		
		// adjust the maxZ to allow other modal dialogs to continue to work (see #4309)
		if (self.options.modal) {
			var maxZ = 0;
			$('.ui-dialog').each(function() {
				if (this != self.uiDialog[0]) {
					maxZ = Math.max(maxZ, $(this).css('z-index'));
				}
			});
			$.ui.dialog.maxZ = maxZ;
		}
	},

	isOpen: function() {
		return this._isOpen;
	},

	// the force parameter allows us to move modal dialogs to their correct
	// position on open
	moveToTop: function(force, event) {

		if ((this.options.modal && !force)
			|| (!this.options.stack && !this.options.modal)) {
			return this._trigger('focus', event);
		}
		
		if (this.options.zIndex > $.ui.dialog.maxZ) {
			$.ui.dialog.maxZ = this.options.zIndex;
		}
		(this.overlay && this.overlay.$el.css('z-index', $.ui.dialog.overlay.maxZ = ++$.ui.dialog.maxZ));

		//Save and then restore scroll since Opera 9.5+ resets when parent z-Index is changed.
		//  http://ui.jquery.com/bugs/ticket/3193
		var saveScroll = { scrollTop: this.element.attr('scrollTop'), scrollLeft: this.element.attr('scrollLeft') };
		this.uiDialog.css('z-index', ++$.ui.dialog.maxZ);
		this.element.attr(saveScroll);
		this._trigger('focus', event);
	},

	open: function() {
		if (this._isOpen) { return; }
		
		

		var options = this.options,
			uiDialog = this.uiDialog;

		this.overlay = options.modal ? new $.ui.dialog.overlay(this) : null;
		(uiDialog.next().length && uiDialog.appendTo('body'));
		this._size();
		this._position(options.position);
		uiDialog.show(options.show);
		this.moveToTop(true);

		// prevent tabbing out of modal dialogs
		(options.modal && uiDialog.bind('keypress.ui-dialog', function(event) {
			if (event.keyCode != $.ui.keyCode.TAB) {
				return;
			}

			var tabbables = $(':tabbable', this),
				first = tabbables.filter(':first')[0],
				last  = tabbables.filter(':last')[0];

			if (event.target == last && !event.shiftKey) {
				setTimeout(function() {
					first.focus();
				}, 1);
			} else if (event.target == first && event.shiftKey) {
				setTimeout(function() {
					last.focus();
				}, 1);
			}
		}));

		// set focus to the first tabbable element in the content area or the first button
		// if there are no tabbable elements, set focus on the dialog itself
		$([])
			.add(uiDialog.find('.ui-dialog-content :tabbable:first'))
			.add(uiDialog.find('.ui-dialog-buttonpane :tabbable:first'))
			.add(uiDialog)
			.filter(':first')
			.focus();

		this._trigger('open');
		this._isOpen = true;
	},

	_createButtons: function(buttons) {
		var self = this,
			hasButtons = false,
			uiDialogButtonPane = $('<div></div>')
				.addClass(
					'ui-dialog-buttonpane ' +
					'ui-widget-content ' +
					'ui-helper-clearfix'
				);

		// if we already have a button pane, remove it
		this.uiDialog.find('.ui-dialog-buttonpane').remove();

		(typeof buttons == 'object' && buttons !== null &&
			$.each(buttons, function() { return !(hasButtons = true); }));
		if (hasButtons) {
			$.each(buttons, function(name, fn) {
				$('<button type="button"></button>')
					.addClass(
						'ui-state-default ' +
						'ui-corner-all'
					)
					.text(name)
					.click(function() { fn.apply(self.element[0], arguments); })
					.hover(
						function() {
							$(this).addClass('ui-state-hover');
						},
						function() {
							$(this).removeClass('ui-state-hover');
						}
					)
					.focus(function() {
						$(this).addClass('ui-state-focus');
					})
					.blur(function() {
						$(this).removeClass('ui-state-focus');
					})
					.appendTo(uiDialogButtonPane);
			});
			uiDialogButtonPane.appendTo(this.uiDialog);
		}
	},

	_makeDraggable: function() {
		var self = this,
			options = this.options,
			heightBeforeDrag;

		this.uiDialog.draggable({
			cancel: '.ui-dialog-content',
			handle: '.ui-dialog-titlebar',
			containment: 'document',
			start: function() {
				heightBeforeDrag = options.height;
				$(this).height($(this).height()).addClass("ui-dialog-dragging");
				(options.dragStart && options.dragStart.apply(self.element[0], arguments));
			},
			drag: function() {
				(options.drag && options.drag.apply(self.element[0], arguments));
			},
			stop: function() {
				$(this).removeClass("ui-dialog-dragging").height(heightBeforeDrag);
				(options.dragStop && options.dragStop.apply(self.element[0], arguments));
				$.ui.dialog.overlay.resize();
			}
		});
	},

	_makeResizable: function(handles) {
		handles = (handles === undefined ? this.options.resizable : handles);
		var self = this,
			options = this.options,
			resizeHandles = typeof handles == 'string'
				? handles
				: 'n,e,s,w,se,sw,ne,nw';

		this.uiDialog.resizable({
			cancel: '.ui-dialog-content',
			alsoResize: this.element,
			maxWidth: options.maxWidth,
			maxHeight: options.maxHeight,
			minWidth: options.minWidth,
			minHeight: options.minHeight,
			start: function() {
				$(this).addClass("ui-dialog-resizing");
				(options.resizeStart && options.resizeStart.apply(self.element[0], arguments));
			},
			resize: function() {
				(options.resize && options.resize.apply(self.element[0], arguments));
			},
			handles: resizeHandles,
			stop: function() {
				$(this).removeClass("ui-dialog-resizing");
				options.height = $(this).height();
				options.width = $(this).width();
				(options.resizeStop && options.resizeStop.apply(self.element[0], arguments));
				$.ui.dialog.overlay.resize();
			}
		})
		.find('.ui-resizable-se').addClass('ui-icon ui-icon-grip-diagonal-se');
	},

	_position: function(pos) {
		var wnd = $(window), doc = $(document),
			pTop = doc.scrollTop(), pLeft = doc.scrollLeft(),
			minTop = pTop;

		if ($.inArray(pos, ['center','top','right','bottom','left']) >= 0) {
			pos = [
				pos == 'right' || pos == 'left' ? pos : 'center',
				pos == 'top' || pos == 'bottom' ? pos : 'middle'
			];
		}
		if (pos.constructor != Array) {
			pos = ['center', 'middle'];
		}
		if (pos[0].constructor == Number) {
			pLeft += pos[0];
		} else {
			switch (pos[0]) {
				case 'left':
					pLeft += 0;
					break;
				case 'right':
					pLeft += wnd.width() - this.uiDialog.outerWidth();
					break;
				default:
				case 'center':
					pLeft += (wnd.width() - this.uiDialog.outerWidth()) / 2;
			}
		}
		if (pos[1].constructor == Number) {
			pTop += pos[1];
		} else {
			switch (pos[1]) {
				case 'top':
					
					pTop += 0;
					break;
				case 'bottom':
					pTop += wnd.height() - this.uiDialog.outerHeight();
					break;
				default:
				case 'middle':
					pTop += (wnd.height() - this.uiDialog.outerHeight()) / 2;
			}
		}

		// prevent the dialog from being too high (make sure the titlebar
		// is accessible)
		
		//pTop = Math.max(pTop, minTop);
		// hug, set to 0 so it is always at the top
		pTop = 0;
		this.uiDialog.css({top: pTop, left: pLeft});
	},

	_setData: function(key, value){
		(setDataSwitch[key] && this.uiDialog.data(setDataSwitch[key], value));
		switch (key) {
			case "buttons":
				this._createButtons(value);
				break;
			case "closeText":
				this.uiDialogTitlebarCloseText.text(value);
				break;
			case "dialogClass":
				this.uiDialog
					.removeClass(this.options.dialogClass)
					.addClass(uiDialogClasses + value);
				break;
			case "draggable":
				(value
					? this._makeDraggable()
					: this.uiDialog.draggable('destroy'));
				break;
			case "height":
				this.uiDialog.height(value);
				break;
			case "position":
				this._position(value);
				break;
			case "resizable":
				var uiDialog = this.uiDialog,
					isResizable = this.uiDialog.is(':data(resizable)');

				// currently resizable, becoming non-resizable
				(isResizable && !value && uiDialog.resizable('destroy'));

				// currently resizable, changing handles
				(isResizable && typeof value == 'string' &&
					uiDialog.resizable('option', 'handles', value));

				// currently non-resizable, becoming resizable
				(isResizable || this._makeResizable(value));
				break;
			case "title":
				$(".ui-dialog-title", this.uiDialogTitlebar).html(value || '&nbsp;');
				break;
			case "width":
				this.uiDialog.width(value);
				break;
		}

		$.widget.prototype._setData.apply(this, arguments);
	},

	_size: function() {
		/* If the user has resized the dialog, the .ui-dialog and .ui-dialog-content
		 * divs will both have width and height set, so we need to reset them
		 */
		var options = this.options;

		// reset content sizing
		this.element.css({
			height: 0,
			minHeight: 0,
			width: 'auto'
		});

		// reset wrapper sizing
		// determine the height of all the non-content elements
		var nonContentHeight = this.uiDialog.css({
				height: 'auto',
				width: options.width
			})
			.height();

		this.element
			.css({
				minHeight: Math.max(options.minHeight - nonContentHeight, 0),
				height: options.height == 'auto'
					? 'auto'
					: Math.max(options.height - nonContentHeight, 0)
			});
	}
});

$.extend($.ui.dialog, {
	version: "1.7.2",
	defaults: {
		autoOpen: true,
		bgiframe: false,
		buttons: {},
		closeOnEscape: true,
		closeText: 'close',
		dialogClass: '',
		draggable: true,
		hide: null,
		height: 'auto',
		maxHeight: false,
		maxWidth: false,
		minHeight: 150,
		minWidth: 150,
		modal: false,
		position: 'center',
		resizable: true,
		show: null,
		stack: true,
		title: '',
		width: 300,
		zIndex: 1000
	},

	getter: 'isOpen',

	uuid: 0,
	maxZ: 0,

	getTitleId: function($el) {
		return 'ui-dialog-title-' + ($el.attr('id') || ++this.uuid);
	},

	overlay: function(dialog) {
		this.$el = $.ui.dialog.overlay.create(dialog);
	}
});

$.extend($.ui.dialog.overlay, {
	instances: [],
	maxZ: 0,
	events: $.map('focus,mousedown,mouseup,keydown,keypress,click'.split(','),
		function(event) { return event + '.dialog-overlay'; }).join(' '),
	create: function(dialog) {
		if (this.instances.length === 0) {
			// prevent use of anchors and inputs
			// we use a setTimeout in case the overlay is created from an
			// event that we're going to be cancelling (see #2804)
			setTimeout(function() {
				// handle $(el).dialog().dialog('close') (see #4065)
				if ($.ui.dialog.overlay.instances.length) {
					$(document).bind($.ui.dialog.overlay.events, function(event) {
						var dialogZ = $(event.target).parents('.ui-dialog').css('zIndex') || 0;
						return (dialogZ > $.ui.dialog.overlay.maxZ);
					});
				}
			}, 1);

			// allow closing by pressing the escape key
			$(document).bind('keydown.dialog-overlay', function(event) {
				(dialog.options.closeOnEscape && event.keyCode
						&& event.keyCode == $.ui.keyCode.ESCAPE && dialog.close(event));
			});

			// handle window resize
			$(window).bind('resize.dialog-overlay', $.ui.dialog.overlay.resize);
		}

		var $el = $('<div></div>').appendTo(document.body)
			.addClass('ui-widget-overlay').css({
				width: this.width(),
				height: this.height()
			});

		(dialog.options.bgiframe && $.fn.bgiframe && $el.bgiframe());

		this.instances.push($el);
		return $el;
	},

	destroy: function($el) {
		this.instances.splice($.inArray(this.instances, $el), 1);

		if (this.instances.length === 0) {
			$([document, window]).unbind('.dialog-overlay');
		}

		$el.remove();
		
		// adjust the maxZ to allow other modal dialogs to continue to work (see #4309)
		var maxZ = 0;
		$.each(this.instances, function() {
			maxZ = Math.max(maxZ, this.css('z-index'));
		});
		this.maxZ = maxZ;
	},

	height: function() {
		// handle IE 6
		if ($.browser.msie && $.browser.version < 7) {
			var scrollHeight = Math.max(
				document.documentElement.scrollHeight,
				document.body.scrollHeight
			);
			var offsetHeight = Math.max(
				document.documentElement.offsetHeight,
				document.body.offsetHeight
			);

			if (scrollHeight < offsetHeight) {
				return $(window).height() + 'px';
			} else {
				return scrollHeight + 'px';
			}
		// handle "good" browsers
		} else {
			return $(document).height() + 'px';
		}
	},

	width: function() {
		// handle IE 6
		if ($.browser.msie && $.browser.version < 7) {
			var scrollWidth = Math.max(
				document.documentElement.scrollWidth,
				document.body.scrollWidth
			);
			var offsetWidth = Math.max(
				document.documentElement.offsetWidth,
				document.body.offsetWidth
			);

			if (scrollWidth < offsetWidth) {
				return $(window).width() + 'px';
			} else {
				return scrollWidth + 'px';
			}
		// handle "good" browsers
		} else {
			return $(document).width() + 'px';
		}
	},

	resize: function() {
		/* If the dialog is draggable and the user drags it past the
		 * right edge of the window, the document becomes wider so we
		 * need to stretch the overlay. If the user then drags the
		 * dialog back to the left, the document will become narrower,
		 * so we need to shrink the overlay to the appropriate size.
		 * This is handled by shrinking the overlay before setting it
		 * to the full document size.
		 */
		var $overlays = $([]);
		$.each($.ui.dialog.overlay.instances, function() {
			$overlays = $overlays.add(this);
		});

		$overlays.css({
			width: 0,
			height: 0
		}).css({
			width: $.ui.dialog.overlay.width(),
			height: $.ui.dialog.overlay.height()
		});
	}
});

$.extend($.ui.dialog.overlay.prototype, {
	destroy: function() {
		$.ui.dialog.overlay.destroy(this.$el);
	}
});

})(jQuery);

/**
 * jquery.simpletip 1.3.1. A simple tooltip plugin
 * 
 * Copyright (c) 2009 Craig Thompson
 * http://craigsworks.com
 *
 * Licensed under GPLv3
 * http://www.opensource.org/licenses/gpl-3.0.html
 *
 * Launch  : February 2009
 * Version : 1.3.1
 * Released: February 5, 2009 - 11:04am
 */
(function($){

   function Simpletip(elem, conf)
   {
      var self = this;
      elem = jQuery(elem);
      
      var tooltip = jQuery(document.createElement('div'))
                     .addClass(conf.baseClass)
                     .addClass( (conf.fixed) ? conf.fixedClass : '' )
                     .addClass( (conf.persistent) ? conf.persistentClass : '' )
                     .html(conf.content)
                     .appendTo('body');
      
      if(!conf.hidden) tooltip.show();
      else tooltip.hide();
      
      if(!conf.persistent)
      {
          elem.hover(
                  function(event){ self.show(event) },
                  function(){ 
                    	setTimeout(
                    			function() {
                    				if(tooltip.hasClass('isCurrentlyHovered') == false) {
                      						self.hide();
                    				}
                    			}
                    			,100
                      	);
                  }
                  			
               );

	       tooltip.hover(
	   	      	function(){ tooltip.addClass('isCurrentlyHovered') },
	   	      	function(){ tooltip.removeClass('isCurrentlyHovered'); tooltip.hide(); }
	   	   );
         
         if(!conf.fixed)
         {
            elem.mousemove( function(event){ 
               if(tooltip.css('display') !== 'none') self.updatePos(event); 
            });
         };
      }
      else
      {
         elem.click(function(event)
         {
            if(event.target === elem.get(0))
            {
               if(tooltip.css('display') !== 'none')
                  self.hide();
               else
                  self.show();
            };
         });
         
         jQuery(window).mousedown(function(event)
         { 
            if(tooltip.css('display') !== 'none')
            {
               var check = (conf.focus) ? jQuery(event.target).parents('.tooltip').andSelf().filter(function(){ return this === tooltip.get(0) }).length : 0;
               if(check === 0) self.hide();
            };
         });
      };
      
      
      jQuery.extend(self,
      {
         getVersion: function()
         {
            return [1, 2, 0];
         },
         
         getParent: function()
         {
            return elem;
         },
         
         getTooltip: function()
         {
            return tooltip;
         },
         
         getPos: function()
         {
            return tooltip.offset();
         },
         
         setPos: function(posX, posY)
         {
            var elemPos = elem.offset();
            
            if(typeof posX == 'string') posX = parseInt(posX) + elemPos.left;
            if(typeof posY == 'string') posY = parseInt(posY) + elemPos.top;
            
            tooltip.css({ left: posX, top: posY });
            
            return self;
         },
         
         show: function(event)
         {
            conf.onBeforeShow.call(self);
            
            self.updatePos( (conf.fixed) ? null : event );
            
            switch(conf.showEffect)
            {
               case 'fade': 
                  tooltip.fadeIn(conf.showTime); break;
               case 'slide': 
                  tooltip.slideDown(conf.showTime, self.updatePos); break;
               case 'custom':
                  conf.showCustom.call(tooltip, conf.showTime); break;
               default:
               case 'none':
                  tooltip.show(); break;
            };
            
            tooltip.addClass(conf.activeClass);
            
            conf.onShow.call(self);
            
            return self;
         },
         
         hide: function()
         {
            conf.onBeforeHide.call(self);
            
            switch(conf.hideEffect)
            {
               case 'fade': 
                  tooltip.fadeOut(conf.hideTime); break;
               case 'slide': 
                  tooltip.slideUp(conf.hideTime); break;
               case 'custom':
                  conf.hideCustom.call(tooltip, conf.hideTime); break;
               default:
               case 'none':
                  tooltip.hide(); break;
            };
            
            tooltip.removeClass(conf.activeClass);
            
            conf.onHide.call(self);
            
            return self;
         },
         
         update: function(content)
         {
            tooltip.html(content);
            conf.content = content;
            
            return self;
         },
         
         load: function(uri, data)
         {
            conf.beforeContentLoad.call(self);
            
            tooltip.load(uri, data, function(){ conf.onContentLoad.call(self); });
            
            return self;
         },
         
         boundryCheck: function(posX, posY)
         {
            var newX = posX + tooltip.outerWidth();
            var newY = posY + tooltip.outerHeight();
            
            var windowWidth = jQuery(window).width() + jQuery(window).scrollLeft();
            var windowHeight = jQuery(window).height() + jQuery(window).scrollTop();
            
            return [(newX >= windowWidth), (newY >= windowHeight)];
         },
         
         updatePos: function(event)
         {
            var tooltipWidth = tooltip.outerWidth();
            var tooltipHeight = tooltip.outerHeight();
            
            if(!event && conf.fixed)
            {
               if(conf.position.constructor == Array)
               {
                  posX = parseInt(conf.position[0]);
                  posY = parseInt(conf.position[1]);
               }
               else if(jQuery(conf.position).attr('nodeType') === 1)
               {
                  var offset = jQuery(conf.position).offset();
                  posX = offset.left;
                  posY = offset.top;
               }
               else
               {
                  var elemPos = elem.offset();
                  var elemWidth = elem.outerWidth();
                  var elemHeight = elem.outerHeight();
                  
                  switch(conf.position)
                  {
                     case 'top':
                        var posX = elemPos.left - (tooltipWidth / 2) + (elemWidth / 2);
                        var posY = elemPos.top - tooltipHeight;
                        break;
                        
                     case 'bottom':
                        var posX = elemPos.left - (tooltipWidth / 2) + (elemWidth / 2);
                        var posY = elemPos.top + elemHeight;
                        break;
                     
                     case 'left':
                        var posX = elemPos.left - tooltipWidth;
                        var posY = elemPos.top - (tooltipHeight / 2) + (elemHeight / 2);
                        break;
                        
                     case 'right':
                        var posX = elemPos.left + elemWidth;
                        var posY = elemPos.top - (tooltipHeight / 2) + (elemHeight / 2);
                        break;
                     
                     default:
                     case 'default':
                        var posX = (elemWidth / 2) + elemPos.left + 20;
                        var posY = elemPos.top;
                        break;
                  };
               };
            }
            else
            {
               var posX = event.pageX;
               var posY = event.pageY;
            };
            
            if(typeof conf.position != 'object')
            {
               posX = posX + conf.offset[0];
               posY = posY + conf.offset[1]; 
               
               if(conf.boundryCheck)
               {
                  var overflow = self.boundryCheck(posX, posY);
                                    
                  if(overflow[0]) posX = posX - (tooltipWidth / 2) - (2 * conf.offset[0]);
                  if(overflow[1]) posY = posY - (tooltipHeight / 2) - (2 * conf.offset[1]);
               }
            }
            else
            {
               if(typeof conf.position[0] == "string") posX = String(posX);
               if(typeof conf.position[1] == "string") posY = String(posY);
            };
            
            self.setPos(posX, posY);
            
            return self;
         }
      });
   };
   
   jQuery.fn.simpletip = function(conf)
   { 
      // Check if a simpletip is already present
      var api = jQuery(this).eq(typeof conf == 'number' ? conf : 0).data("simpletip");
      if(api) return api;
      
      // Default configuration
      var defaultConf = {
         // Basics
         content: 'A simple tooltip',
         persistent: false,
         focus: false,
         hidden: true,
         
         // Positioning
         position: 'default',
         offset: [0, 0],
         boundryCheck: true,
         fixed: true,
         
         // Effects
         showEffect: 'fade',
         showTime: 150,
         showCustom: null,
         hideEffect: 'fade',
         hideTime: 150,
         hideCustom: null,
         
         // Selectors and classes
         baseClass: 'tooltip',
         activeClass: 'active',
         fixedClass: 'fixed',
         persistentClass: 'persistent',
         focusClass: 'focus',
         
         // Callbacks
         onBeforeShow: function(){},
         onShow: function(){},
         onBeforeHide: function(){},
         onHide: function(){},
         beforeContentLoad: function(){},
         onContentLoad: function(){}
      };
      jQuery.extend(defaultConf, conf);
      
      this.each(function()
      {
         var el = new Simpletip(jQuery(this), defaultConf);
         jQuery(this).data("simpletip", el);  
      });
      
      return this; 
   };
})();
//Jquery Component End

//jsonComment.js start

/* 
 * jSonComments
 * Author:  Christoph Stickel <mixer2@gmail.com>
 * License: Released under MIT License
 * 
 */
 
(function(a){a.fn.jSonComments=function(c){var b=a.extend({},a.fn.jSonComments.defaults,c);if(!this.data(b.dataAttribute)||!b.cache)if(c=a(this).html().match(new RegExp("<!-- *"+b.keyword+"((.|\n|\r)*?)--\>","i"))){try{var d=a.parseJSON(c[1])}catch(e){throw{type:1,toString:function(){return e}};}a(this).data(b.dataAttribute,d)}else{var f=a(this).selector;throw{type:2,toString:function(){return"No JSON Comment found. Please check if "+f+" contains <!-- "+b.keyword+" --\>."}};}return this.data(b.dataAttribute)};
a.fn.jSonComments.defaults={dataAttribute:"jSonCommentsData",keyword:"Metadata",cache:"true"}})(jQuery);

//jsonComment.js End


//tradegotic.js Start
/*!
 * The following copyright notice may not be removed under any circumstances.
 * 
 * Copyright:
 *  The digitally encoded machine readable software for producing the
 Typefaces
 * licensed to you is copyrighted (c) 1989, 1992 Adobe Systems.
 All Rights
 * Reserved. This software is the property of Adobe Systems
 Incorporated and its
 * licensors, and may not be reproduced, used, 
 displayed, modified, disclosed or
 * transferred without the express 
 written approval of Adobe.
 
 The digitally
 * encoded machine readable outline data for producing
 the Typefaces licensed to
 * you is copyrighted (c) 1981 Linotype-Hell AG
 and/or its subsidiaries. All
 * Rights Reserved.
 This data is the property of Linotype-Hell AG and/or its
 * subsidiaries
 and may not be reproduced, used, displayed, modified, disclosed or
 * 
 transferred without the express written approval of Linotype-Hell AG 
 and/or
 * its subsidiaries.
 */
//Cufon.registerFont({"w":500,"face":{"font-family":"TradeGothic","font-weight":700,"font-stretch":"normal","units-per-em":"1000","panose-1":"2 0 8 3 0 0 0 0 0 0","ascent":"800","descent":"-200","x-height":"10","bbox":"-167 -971 1000 227.754","underline-thickness":"50","underline-position":"-100","stemv":"126","unicode-range":"U+0020-U+FB02"},"glyphs":{" ":{"w":278},"!":{"d":"212,-722r-28,478r-90,0r-28,-478r146,0xm210,0r-142,0r0,-142r142,0r0,142","w":278},"\"":{"d":"199,-452r0,-270r110,0r0,270r-110,0xm24,-452r0,-270r110,0r0,270r-110,0","w":333},"#":{"d":"506,-300r0,94r-99,0r-29,206r-96,0r28,-206r-99,0r-29,206r-96,0r28,-206r-94,0r0,-94r107,0r18,-122r-94,0r0,-94r106,0r29,-206r96,0r-28,206r99,0r29,-206r96,0r-28,206r86,0r0,94r-98,0r-18,122r86,0xm341,-422r-99,0r-18,122r99,0","w":556},"$":{"d":"19,-127r86,-78v31,43,76,83,127,93r0,-206v-104,-30,-200,-98,-200,-211v0,-118,90,-188,200,-193r0,-64r78,0r0,64v84,14,144,55,190,106r-78,75v-29,-35,-65,-66,-112,-71r0,184v112,40,212,93,212,228v0,121,-95,197,-212,200r0,114r-78,0r0,-115v-69,0,-164,-60,-213,-126xm232,-450r0,-168v-46,1,-86,29,-86,79v0,44,42,76,86,89xm310,-295r0,185v52,0,90,-35,90,-86v0,-59,-43,-78,-90,-99","w":556},"%":{"d":"214,-722v101,0,180,82,180,180v0,98,-79,180,-180,180v-101,0,-180,-82,-180,-180v0,-98,79,-180,180,-180xm214,-624v-45,0,-82,39,-82,82v0,43,37,82,82,82v45,0,82,-39,82,-82v0,-43,-37,-82,-82,-82xm675,-360v101,0,180,82,180,180v0,98,-79,180,-180,180v-101,0,-180,-82,-180,-180v0,-98,79,-180,180,-180xm675,-262v-45,0,-82,39,-82,82v0,43,37,82,82,82v45,0,82,-39,82,-82v0,-43,-37,-82,-82,-82xm197,10r415,-742r85,0r-415,742r-85,0","w":889},"&":{"d":"274,-648v-40,0,-63,34,-63,78v0,42,17,74,41,114v38,-34,86,-67,86,-125v0,-31,-22,-67,-64,-67xm507,-363r111,31v-23,60,-49,121,-86,180v29,20,63,36,100,40r0,122v-69,0,-114,-16,-182,-74v-47,46,-110,74,-181,74v-139,0,-235,-68,-235,-200v0,-100,50,-153,122,-200v-38,-57,-59,-102,-59,-162v0,-124,87,-180,185,-180v98,0,170,72,170,163v0,93,-72,147,-139,200v39,53,82,102,129,147v26,-47,51,-91,65,-141xm172,-208v-3,117,140,129,196,64v-55,-48,-102,-100,-144,-154v-31,24,-52,48,-52,90","w":667},"\u2019":{"d":"49,-432r51,-148r-60,0r0,-142r142,0r0,142r-63,148r-70,0","w":222},"(":{"d":"304,84r-118,0v-81,-114,-136,-255,-136,-408v0,-153,55,-294,136,-408r118,0v-77,108,-144,233,-144,408v0,175,67,300,144,408","w":333},")":{"d":"147,84r-118,0v77,-108,144,-233,144,-408v0,-175,-67,-300,-144,-408r118,0v81,114,136,255,136,408v0,153,-55,294,-136,408","w":333},"*":{"d":"200,-722r100,0r-29,145r4,5r133,-68r26,89r-146,18r-2,6r106,104r-75,57r-64,-134r-6,0r-64,134r-75,-57r106,-104r-2,-6r-146,-18r26,-89r133,68r4,-5"},"+":{"d":"239,-333r0,-211r122,0r0,211r211,0r0,122r-211,0r0,211r-122,0r0,-211r-211,0r0,-122r211,0","w":600},",":{"d":"77,148r51,-148r-60,0r0,-142r142,0r0,142r-63,148r-70,0","w":278},"-":{"d":"289,-217r-246,0r0,-110r246,0r0,110","w":333},".":{"d":"210,0r-142,0r0,-142r142,0r0,142","w":278},"\/":{"d":"336,-732r-272,742r-122,0r272,-742r122,0","w":278},"0":{"d":"36,-240r0,-242v0,-154,86,-250,242,-250v156,0,242,96,242,250r0,242v0,154,-86,250,-242,250v-156,0,-242,-96,-242,-250xm168,-467r0,212v0,117,36,151,110,151v74,0,110,-34,110,-151r0,-212v0,-117,-36,-151,-110,-151v-74,0,-110,34,-110,151","w":556},"1":{"d":"235,0r0,-552r-111,0r0,-79v106,-21,124,-57,158,-101r79,0r0,732r-126,0","w":556},"2":{"d":"495,0r-455,0r0,-117v288,-274,334,-326,334,-402v0,-58,-32,-99,-96,-99v-77,0,-110,47,-103,121r-132,0v-10,-138,72,-235,225,-235v141,0,238,72,238,210v0,167,-195,296,-299,408r288,0r0,114","w":556},"3":{"d":"34,-212r132,0v0,74,33,108,107,108v68,0,105,-45,105,-107v0,-81,-46,-112,-146,-113r0,-114v93,0,129,-26,129,-93v0,-50,-33,-87,-93,-87v-49,0,-85,35,-87,84r-132,0v1,-133,99,-198,220,-198v130,0,224,68,224,196v0,63,-30,128,-87,157v77,30,104,93,104,174v0,143,-105,215,-235,215v-162,0,-241,-86,-241,-222","w":556},"4":{"d":"110,-292r207,0r0,-282r-2,0xm0,-306r306,-416r137,0r0,430r101,0r0,102r-101,0r0,190r-126,0r0,-190r-317,0r0,-116","w":556},"5":{"d":"35,-207r132,0v-3,67,38,103,103,103v86,0,112,-56,112,-157v0,-89,-30,-139,-105,-139v-45,0,-81,22,-106,56r-109,0r0,-378r417,0r0,114r-303,0r0,150v38,-27,78,-44,131,-44v154,0,207,96,207,244v0,167,-69,268,-242,268v-180,0,-237,-108,-237,-217","w":556},"6":{"d":"168,-295r0,40v0,117,36,151,110,151v69,0,104,-50,104,-133v0,-80,-43,-117,-104,-117v-42,0,-76,28,-110,59xm501,-533r-132,0v-2,-49,-42,-85,-91,-85v-74,0,-110,34,-110,151r0,67v45,-34,98,-56,155,-56v126,0,191,98,191,214v0,148,-72,252,-236,252v-156,0,-242,-96,-242,-250r0,-242v0,-154,86,-250,242,-250v125,0,213,69,223,199","w":556},"7":{"d":"30,-608r0,-114r456,0r0,66r-195,656r-144,0r200,-608r-317,0","w":556},"8":{"d":"388,-209v0,-67,-43,-111,-110,-111v-67,0,-110,44,-110,111v0,62,29,105,110,105v81,0,110,-43,110,-105xm370,-525v0,-51,-38,-93,-92,-93v-54,0,-92,42,-92,93v0,51,41,91,92,91v51,0,92,-40,92,-91xm520,-205v0,143,-105,215,-242,215v-137,0,-242,-72,-242,-215v0,-81,28,-144,105,-174v-57,-29,-87,-94,-87,-157v0,-134,99,-196,224,-196v125,0,224,62,224,196v0,63,-30,128,-87,157v77,30,105,93,105,174","w":556},"9":{"d":"388,-427r0,-40v0,-117,-36,-151,-110,-151v-69,0,-104,50,-104,133v0,80,43,117,104,117v42,0,76,-28,110,-59xm55,-189r132,0v2,49,42,85,91,85v74,0,110,-34,110,-151r0,-67v-45,34,-98,56,-155,56v-126,0,-191,-98,-191,-214v0,-148,72,-252,236,-252v156,0,242,96,242,250r0,242v0,154,-86,250,-242,250v-125,0,-213,-69,-223,-199","w":556},":":{"d":"210,0r-142,0r0,-142r142,0r0,142xm210,-300r-142,0r0,-142r142,0r0,142","w":278},";":{"d":"77,148r51,-148r-60,0r0,-142r142,0r0,142r-63,148r-70,0xm210,-300r-142,0r0,-142r142,0r0,142","w":278},"<":{"d":"572,-108r0,117r-544,-233r0,-96r544,-233r0,117r-389,164","w":600},"=":{"d":"572,-455r0,122r-544,0r0,-122r544,0xm572,-211r0,122r-544,0r0,-122r544,0","w":600},">":{"d":"28,9r0,-117r389,-164r-389,-164r0,-117r544,233r0,96","w":600},"?":{"d":"125,-542r-115,-32v25,-99,99,-158,201,-158v95,0,187,59,187,170v0,92,-144,192,-144,272r0,50r-110,0r0,-98v0,-48,128,-176,128,-234v0,-34,-31,-58,-63,-58v-41,0,-81,44,-84,88xm270,0r-142,0r0,-142r142,0r0,142","w":444},"@":{"d":"411,-452v-62,0,-107,60,-107,117v0,48,29,83,77,83v113,0,158,-200,30,-200xm510,-142v-31,0,-51,-23,-56,-53v-25,28,-64,53,-100,53v-86,0,-160,-82,-160,-176v0,-120,80,-236,205,-236v49,0,91,19,119,62r12,-50r90,0r-57,283v0,11,4,19,15,19v46,0,101,-55,101,-162v0,-160,-113,-246,-265,-246v-167,0,-275,123,-275,288v0,175,121,286,291,286v77,0,147,-28,197,-70r92,0v-69,99,-174,154,-297,154v-211,0,-385,-156,-385,-370v0,-211,171,-372,380,-372v176,0,346,118,346,302v0,220,-191,288,-253,288","w":800},"A":{"d":"278,-566r-68,292r137,0r-67,-292r-2,0xm146,0r-133,0r179,-722r177,0r174,722r-132,0r-35,-152r-191,0","w":556},"B":{"d":"62,0r0,-722r194,0v148,0,233,62,233,186v0,63,-31,115,-89,150v76,48,106,88,106,178v0,143,-96,208,-242,208r-202,0xm200,-322r0,208r58,0v72,0,110,-42,110,-105v1,-86,-73,-110,-168,-103xm200,-608r0,172v82,8,151,-19,151,-85v0,-53,-31,-87,-96,-87r-55,0","w":556},"C":{"d":"188,-508r0,294v0,80,35,102,90,102v55,0,90,-22,90,-102r0,-48r138,0v10,189,-84,272,-228,272v-134,0,-228,-64,-228,-242r0,-258v0,-178,94,-242,228,-242v135,0,229,65,228,244r-138,0v5,-84,-28,-122,-90,-122v-55,0,-90,22,-90,102","w":556},"D":{"d":"62,0r0,-722r192,0v158,0,252,68,252,250r0,222v-6,182,-94,250,-252,250r-192,0xm200,-600r0,478v110,6,168,-14,168,-144r0,-190v2,-123,-53,-152,-168,-144","w":556},"E":{"d":"450,0r-388,0r0,-722r378,0r0,122r-240,0r0,166r183,0r0,122r-183,0r0,190r250,0r0,122"},"F":{"d":"200,0r-138,0r0,-722r360,0r0,122r-222,0r0,166r174,0r0,122r-174,0r0,312","w":444},"G":{"d":"428,0r-21,-60v-37,42,-77,70,-129,70v-134,0,-228,-64,-228,-242r0,-258v0,-178,94,-242,228,-242v141,0,217,81,222,245r-138,0v0,-93,-34,-123,-84,-123v-55,0,-90,22,-90,102r0,294v0,80,35,102,90,102v67,0,91,-64,84,-144r-97,0r0,-114r235,0r0,370r-72,0","w":556},"H":{"d":"208,0r-138,0r0,-722r138,0r0,288r195,0r0,-288r138,0r0,722r-138,0r0,-312r-195,0r0,312","w":611},"I":{"d":"208,0r-138,0r0,-722r138,0r0,722","w":278},"J":{"d":"125,-722r138,0r0,569v7,119,-110,182,-253,160r0,-122v65,9,115,1,115,-66r0,-541","w":333},"K":{"d":"200,0r-138,0r0,-722r138,0r0,298r2,0r179,-298r151,0r-186,291r207,431r-155,0r-144,-303r-54,82r0,221","w":556},"L":{"d":"422,0r-360,0r0,-722r138,0r0,600r222,0r0,122","w":444},"M":{"d":"188,0r-118,0r0,-722r193,0r125,474r2,0r125,-474r193,0r0,722r-118,0r0,-568r-2,0r-147,568r-104,0r-147,-568r-2,0r0,568","w":778},"N":{"d":"196,0r-126,0r0,-722r151,0r192,428r2,0r0,-428r126,0r0,722r-132,0r-211,-466r-2,0r0,466","w":611},"O":{"d":"50,-232r0,-258v0,-178,94,-242,228,-242v134,0,228,64,228,242r0,258v0,178,-94,242,-228,242v-134,0,-228,-64,-228,-242xm188,-508r0,294v0,80,35,102,90,102v55,0,90,-22,90,-102r0,-294v0,-80,-35,-102,-90,-102v-55,0,-90,22,-90,102","w":556},"P":{"d":"208,0r-138,0r0,-722r199,0v170,0,253,80,253,216v0,156,-118,231,-314,216r0,290xm208,-608r0,204r74,0v68,0,102,-34,102,-102v0,-68,-34,-102,-102,-102r-74,0","w":556},"Q":{"d":"549,-67r0,120v-67,0,-111,-31,-145,-71v-36,20,-78,28,-126,28v-134,0,-228,-64,-228,-242r0,-258v0,-178,94,-242,228,-242v134,0,228,64,228,242v0,136,19,308,-29,399v19,14,42,23,72,24xm269,-180r0,-120v47,5,72,35,99,66r0,-274v0,-80,-35,-102,-90,-102v-55,0,-90,22,-90,102r0,294v-5,104,73,116,142,91v-19,-27,-38,-49,-61,-57","w":556},"R":{"d":"534,0r-148,0r-120,-294r-66,0r0,294r-138,0r0,-722r200,0v166,0,245,80,245,216v0,90,-32,155,-109,184xm200,-608r0,200v95,5,169,0,169,-100v0,-99,-73,-105,-169,-100","w":556},"S":{"d":"491,-557r-124,36v-23,-68,-53,-97,-101,-97v-49,0,-76,30,-76,79v0,109,308,117,308,343v0,124,-85,206,-230,206v-112,0,-199,-61,-236,-203r136,-29v16,87,66,118,107,118v48,0,85,-32,85,-86v0,-136,-308,-138,-308,-340v0,-124,74,-202,217,-202v123,0,198,73,222,175","w":556},"T":{"d":"20,-722r460,0r0,122r-161,0r0,600r-138,0r0,-600r-161,0r0,-122"},"U":{"d":"70,-722r138,0r0,505v0,69,30,105,97,105v67,0,98,-36,98,-105r0,-505r138,0r0,506v0,159,-94,226,-236,226v-142,0,-235,-67,-235,-226r0,-506","w":611},"V":{"d":"200,0r-185,-722r136,0r127,516r2,0r126,-516r135,0r-184,722r-157,0","w":556},"W":{"d":"174,0r-151,-722r128,0r97,472r2,0r99,-472r133,0r100,472r2,0r96,-472r129,0r-158,722r-133,0r-101,-494r-2,0r-109,494r-132,0","w":833},"X":{"d":"174,-722r104,216r104,-216r148,0r-175,342r192,380r-149,0r-120,-255r-120,255r-149,0r194,-380r-177,-342r148,0","w":556},"Y":{"d":"159,-722r121,291r117,-291r147,0r-197,430r0,292r-138,0r0,-292r-197,-430r147,0","w":556},"Z":{"d":"61,-600r0,-122r400,0r0,116r-273,484r279,0r0,122r-434,0r0,-117r273,-483r-245,0"},"[":{"d":"284,74r-234,0r0,-796r234,0r0,60r-124,0r0,676r124,0r0,60","w":333},"\\":{"d":"214,10r-272,-742r122,0r272,742r-122,0","w":278},"]":{"d":"49,-722r234,0r0,796r-234,0r0,-60r124,0r0,-676r-124,0r0,-60","w":333},"^":{"d":"169,-320r-117,0r194,-402r108,0r194,402r-119,0r-129,-282","w":600},"_":{"d":"500,125r-500,0r0,-50r500,0r0,50"},"\u2018":{"d":"173,-732r-51,148r60,0r0,142r-142,0r0,-142r63,-148r70,0","w":222},"a":{"d":"174,-385r-126,0v9,-121,101,-169,202,-169v134,0,185,68,185,165r0,345v0,15,3,30,7,44r-126,0v-3,-14,-5,-31,-9,-53v-70,85,-275,100,-275,-67v0,-126,120,-180,277,-227r0,-40v0,-47,-29,-65,-65,-65v-38,0,-70,28,-70,67xm309,-134r0,-132v-75,26,-151,68,-151,125v0,36,22,57,56,57v38,0,65,-20,95,-50"},"b":{"d":"186,-421r0,298v25,27,48,39,76,39v34,0,62,-22,62,-130r0,-116v0,-108,-28,-130,-62,-130v-28,0,-51,12,-76,39xm176,0r-116,0r0,-722r126,0r0,228v60,-44,92,-60,126,-60v98,0,138,76,138,216r0,132v0,140,-40,216,-138,216v-58,0,-110,-45,-136,-76r0,66"},"c":{"d":"449,-356r-125,0v6,-58,-20,-88,-74,-88v-44,0,-74,22,-74,64r0,216v0,42,30,64,74,64v58,1,81,-36,74,-98v41,2,90,-4,126,2v0,144,-74,206,-200,206v-126,0,-200,-62,-200,-206r0,-152v0,-144,74,-206,200,-206v123,0,197,60,199,198"},"d":{"d":"314,-123r0,-298v-25,-27,-48,-39,-76,-39v-34,0,-62,22,-62,130r0,116v0,108,28,130,62,130v28,0,51,-12,76,-39xm440,0r-116,0v-2,-21,4,-49,-2,-66v-22,34,-78,76,-134,76v-98,0,-138,-76,-138,-216r0,-132v0,-140,40,-216,138,-216v34,0,66,16,126,60r0,-228r126,0r0,722"},"e":{"d":"450,-242r-274,0r0,72v0,54,32,78,74,78v53,0,74,-34,74,-76r126,0v-6,112,-73,178,-200,178v-120,0,-200,-74,-200,-193r0,-178v0,-119,80,-193,200,-193v117,0,200,74,200,185r0,127xm176,-344r148,0v4,-64,-11,-109,-74,-108v-62,0,-79,44,-74,108"},"f":{"d":"270,-726r0,104v-44,-4,-79,4,-79,46r0,56r75,0r0,102r-75,0r0,418r-126,0r0,-418r-57,0r0,-102r57,0r0,-52v-2,-152,84,-173,205,-154","w":278},"g":{"d":"292,-347v0,-70,-22,-105,-66,-105v-48,0,-66,33,-66,118v0,68,22,102,60,102v54,0,72,-20,72,-115xm478,-554r0,110v-30,-10,-53,-10,-82,4v8,36,16,63,16,96v5,155,-87,239,-234,207v-7,10,-22,19,-22,32v0,68,316,-37,316,160v0,93,-96,137,-242,137v-134,0,-208,-38,-208,-99v0,-41,46,-66,76,-85v-30,-18,-52,-42,-52,-77v0,-43,45,-72,76,-91v-61,-40,-82,-98,-82,-189v0,-117,45,-205,186,-205v52,0,110,24,142,63v32,-40,63,-63,110,-63xm306,36r-138,-12v-13,13,-26,24,-26,44v0,28,41,40,115,40v60,0,95,-15,95,-43v0,-18,-8,-26,-46,-29"},"h":{"d":"186,0r-126,0r0,-722r126,0r0,240v42,-40,85,-72,137,-72v77,0,117,39,117,140r0,414r-126,0r0,-400v0,-36,-12,-60,-46,-60v-26,0,-55,25,-82,49r0,411"},"i":{"d":"76,-544r126,0r0,544r-126,0r0,-544xm202,-638r-126,0r0,-114r126,0r0,114","w":278},"j":{"d":"76,-544r126,0r0,588v-2,121,-90,160,-200,145r0,-111v54,0,74,-16,74,-50r0,-572xm202,-638r-126,0r0,-114r126,0r0,114","w":278},"k":{"d":"192,0r-126,0r0,-722r126,0r0,389r2,0r134,-211r141,0r-125,184r136,360r-133,0r-92,-255r-63,89r0,166"},"l":{"d":"76,0r0,-722r126,0r0,722r-126,0","w":278},"m":{"d":"60,0r0,-544r122,0r0,62v41,-37,82,-72,135,-72v47,0,81,32,96,82v39,-43,79,-82,134,-82v76,0,115,46,115,144r0,410r-126,0r0,-414v-3,-90,-87,-28,-112,3r0,411r-126,0r0,-414v-3,-89,-90,-29,-112,3r0,411r-126,0","w":722},"n":{"d":"186,0r-126,0r0,-544r122,0r0,62v46,-40,89,-72,141,-72v77,0,117,39,117,140r0,414r-126,0r0,-400v0,-36,-12,-60,-46,-60v-26,0,-55,25,-82,49r0,411"},"o":{"d":"50,-196r0,-152v0,-144,74,-206,200,-206v126,0,200,62,200,206r0,152v0,144,-74,206,-200,206v-126,0,-200,-62,-200,-206xm176,-380r0,216v0,42,30,64,74,64v44,0,74,-22,74,-64r0,-216v0,-42,-30,-64,-74,-64v-44,0,-74,22,-74,64"},"p":{"d":"186,-421r0,298v25,27,48,39,76,39v34,0,62,-22,62,-130r0,-116v0,-108,-28,-130,-62,-130v-28,0,-51,12,-76,39xm60,-544r116,0v2,21,-4,49,2,66v22,-34,78,-76,134,-76v98,0,138,76,138,216r0,132v0,140,-40,216,-138,216v-34,0,-66,-16,-126,-60r0,242r-126,0r0,-736"},"q":{"d":"314,-123r0,-298v-25,-27,-48,-39,-76,-39v-34,0,-62,22,-62,130r0,116v0,108,28,130,62,130v28,0,51,-12,76,-39xm324,-544r116,0r0,736r-126,0r0,-242v-60,44,-92,60,-126,60v-98,0,-138,-76,-138,-216r0,-132v0,-140,40,-216,138,-216v58,0,110,45,136,76r0,-66"},"r":{"d":"186,0r-126,0r0,-544r123,0v2,23,-4,53,2,72v29,-54,67,-82,130,-82r0,136v-21,-6,-45,-14,-67,-14v-41,0,-62,31,-62,60r0,372","w":333},"s":{"d":"404,-418r-104,40v-17,-50,-49,-74,-87,-74v-29,0,-51,21,-51,49v0,84,246,86,246,248v0,108,-76,165,-181,165v-76,0,-144,-19,-205,-155r113,-31v11,51,42,84,92,84v38,0,61,-18,61,-48v0,-104,-246,-79,-246,-262v0,-103,83,-152,172,-152v94,0,159,54,190,136","w":444},"t":{"d":"56,-418r-50,0r0,-102r50,0r0,-148r126,0r0,148r81,0r0,102r-81,0r0,278v-2,35,42,44,82,39r0,106v-102,16,-208,1,-208,-103r0,-320","w":278},"u":{"d":"314,-544r126,0r0,544r-122,0r0,-62v-46,40,-89,72,-141,72v-77,0,-117,-39,-117,-140r0,-414r126,0r0,400v0,36,12,60,46,60v26,0,55,-25,82,-49r0,-411"},"v":{"d":"138,-544r83,350r2,0r83,-350r126,0r-148,544r-124,0r-148,-544r126,0","w":444},"w":{"d":"143,0r-130,-544r118,0r73,340r2,0r73,-340r108,0r77,340r2,0r69,-340r118,0r-128,544r-118,0r-77,-340r-2,0r-67,340r-118,0","w":667},"x":{"d":"155,-280r-138,-264r134,0r71,156r73,-156r134,0r-138,265r147,279r-134,0r-82,-176r-82,176r-134,0","w":444},"y":{"d":"32,190r0,-110v66,17,128,-36,128,-70v0,-32,-10,-69,-23,-115r-126,-439r128,0r85,360r2,0r79,-360r128,0r-145,542v-42,162,-102,203,-256,192","w":444},"z":{"d":"51,-434r0,-110r362,0r0,108r-231,326r231,0r0,110r-382,0r0,-108r227,-326r-207,0","w":444},"{":{"d":"261,-732r0,60v-53,-3,-84,3,-84,61r0,194v2,60,-35,80,-79,93v48,8,79,34,79,91r0,196v-1,58,31,64,84,61r0,60v-109,6,-194,-3,-194,-119r0,-197v0,-50,-31,-63,-71,-63r0,-60v40,0,71,-13,71,-63r0,-195v7,-115,86,-126,194,-119","w":333},"|":{"d":"50,10r0,-742r122,0r0,742r-122,0","w":222},"}":{"d":"72,84r0,-60v53,3,84,-3,84,-61r0,-194v-2,-60,35,-80,79,-93v-48,-8,-79,-34,-79,-91r0,-196v1,-58,-31,-64,-84,-61r0,-60v109,-6,194,3,194,119r0,197v0,50,31,63,71,63r0,60v-40,0,-71,13,-71,63r0,195v-7,115,-86,126,-194,119","w":333},"~":{"d":"414,-179v-91,0,-138,-73,-238,-73v-42,0,-68,40,-85,77r-39,-96v24,-46,63,-93,135,-93v75,0,174,73,234,73v38,0,64,-40,89,-78r38,98v-31,45,-67,92,-134,92","w":600},"\u00a1":{"d":"212,178r-146,0r28,-478r90,0xm68,-544r142,0r0,142r-142,0r0,-142","w":278},"\u00a2":{"d":"193,-135r77,-309v-53,-1,-84,21,-84,64r0,216v0,10,2,20,7,29xm479,-356r-125,0v1,-28,0,-50,-16,-64r-82,319v72,5,109,-24,98,-97v41,2,90,-4,126,2v2,156,-92,217,-246,204r-36,132r-89,0r42,-154v-58,-31,-91,-90,-91,-182r0,-152v-2,-155,90,-217,239,-204r34,-124r89,0r-39,144v61,26,95,84,96,176","w":556},"\u00a3":{"d":"112,-318r-96,0r0,-88r83,0v-8,-43,-15,-89,-15,-131v0,-129,95,-195,204,-195v162,0,233,81,233,214r-126,0v-5,-62,-27,-104,-95,-104v-52,0,-84,36,-84,90v0,45,8,86,15,126r132,0r0,88r-120,0v0,26,-6,126,-25,170v37,24,74,44,124,44v50,0,67,-41,71,-114r120,0v0,118,-30,228,-181,228v-68,0,-100,-10,-188,-65v-52,46,-84,65,-141,65r0,-122v74,2,102,-108,89,-206","w":556},"\u2044":{"d":"-167,10r405,-742r96,0r-405,742r-96,0","w":167},"\u00a5":{"d":"499,-452r0,88r-126,0r-32,72r158,0r0,88r-162,0r0,204r-118,0r0,-204r-162,0r0,-88r158,0r-32,-72r-126,0r0,-88r86,0r-125,-270r122,0r140,322r136,-322r122,0r-125,270r86,0","w":556},"\u0192":{"d":"26,181r16,-103v60,23,99,19,117,-73r71,-371r-98,0r0,-88r119,0v43,-238,94,-307,269,-266r-18,100v-11,-5,-28,-10,-44,-10v-44,2,-66,44,-85,176r99,0r0,88r-116,0r-64,329v-22,112,-57,229,-193,229v-24,0,-50,-2,-73,-11","w":556},"\u00a7":{"d":"402,-652r-68,54v-21,-25,-47,-50,-82,-50v-27,0,-47,18,-47,42v0,78,243,196,243,331v0,66,-48,103,-109,114v30,32,52,72,52,117v0,83,-68,128,-144,128v-85,0,-120,-37,-161,-85r68,-53v14,28,46,54,90,54v27,0,51,-18,51,-48v0,-84,-243,-220,-243,-326v0,-90,42,-120,104,-130v-30,-36,-47,-65,-47,-112v0,-64,57,-116,134,-116v69,0,115,25,159,80xm148,-401v-15,26,149,192,165,174v25,0,39,-20,39,-44v15,-16,-146,-182,-165,-167v-20,0,-38,15,-39,37"},"\u00a4":{"d":"537,-160r-58,58r-57,-58v-63,64,-225,65,-288,0r-57,58r-58,-58r56,-56v-59,-69,-60,-221,0,-290r-56,-56r58,-58r57,58v63,-64,225,-65,288,0r57,-58r58,58r-56,56v59,69,60,221,0,290xm414,-361v0,-82,-51,-148,-136,-148v-85,0,-136,66,-136,148v0,82,51,148,136,148v85,0,136,-66,136,-148","w":556},"'":{"d":"56,-452r0,-270r110,0r0,270r-110,0","w":222},"\u201c":{"d":"173,-732r-51,148r60,0r0,142r-142,0r0,-142r63,-148r70,0xm395,-732r-51,148r60,0r0,142r-142,0r0,-142r63,-148r70,0","w":444},"\u00ab":{"d":"386,-112r-122,-160r122,-160r110,0r-122,160r122,160r-110,0xm182,-112r-122,-160r122,-160r110,0r-122,160r122,160r-110,0","w":556},"\u2039":{"d":"38,-272r122,-160r110,0r-122,160r122,160r-110,0","w":333},"\u203a":{"d":"295,-272r-122,160r-110,0r122,-160r-122,-160r110,0","w":333},"\ufb01":{"d":"322,-520r126,0r0,520r-126,0r0,-520xm448,-614r-126,0r0,-114r126,0r0,114xm270,-726r0,104v-44,-4,-79,4,-79,46r0,56r75,0r0,102r-75,0r0,418r-126,0r0,-418r-57,0r0,-102r57,0r0,-52v-2,-152,84,-173,205,-154"},"\ufb02":{"d":"322,0r0,-722r126,0r0,722r-126,0xm270,-726r0,104v-44,-4,-79,4,-79,46r0,56r75,0r0,102r-75,0r0,418r-126,0r0,-418r-57,0r0,-102r57,0r0,-52v-2,-152,84,-173,205,-154"},"\u2013":{"d":"500,-230r-500,0r0,-84r500,0r0,84"},"\u2020":{"d":"66,-467r0,-96r162,27r-26,-196r96,0r-26,196r162,-27r0,96r-159,-27r25,170v-14,114,-22,268,-31,398r-38,0v-9,-130,-17,-284,-31,-398r25,-170"},"\u2021":{"d":"200,-329r25,-177r-159,27r0,-96r162,27r-26,-184r96,0r-26,184r162,-27r0,96r-159,-27r25,177r-25,177r159,-27r0,96r-162,-27r26,184r-96,0r26,-184r-162,27r0,-96r159,27"},"\u00b7":{"d":"139,-348v45,0,76,37,76,76v0,39,-31,76,-76,76v-45,0,-76,-37,-76,-76v0,-39,31,-76,76,-76","w":278},"\u00b6":{"d":"190,84r0,-454v-112,0,-180,-66,-180,-173v0,-119,62,-179,214,-179r322,0r0,84r-68,0r0,722r-110,0r0,-722r-68,0r0,722r-110,0","w":556},"\u2022":{"d":"69,-361v0,-100,80,-180,180,-180v100,0,181,80,181,180v0,100,-81,181,-181,181v-100,0,-180,-81,-180,-181"},"\u201a":{"d":"49,148r51,-148r-60,0r0,-142r142,0r0,142r-63,148r-70,0","w":222},"\u201e":{"d":"49,148r51,-148r-60,0r0,-142r142,0r0,142r-63,148r-70,0xm271,148r51,-148r-60,0r0,-142r142,0r0,142r-63,148r-70,0","w":444},"\u201d":{"d":"49,-432r51,-148r-60,0r0,-142r142,0r0,142r-63,148r-70,0xm271,-432r51,-148r-60,0r0,-142r142,0r0,142r-63,148r-70,0","w":444},"\u00bb":{"d":"292,-272r-122,160r-110,0r122,-160r-122,-160r110,0xm496,-272r-122,160r-110,0r122,-160r-122,-160r110,0","w":556},"\u2026":{"d":"238,0r-142,0r0,-142r142,0r0,142xm904,0r-142,0r0,-142r142,0r0,142xm571,0r-142,0r0,-142r142,0r0,142","w":1000},"\u2030":{"d":"162,-722v82,0,148,67,148,148v0,81,-66,148,-148,148v-82,0,-148,-67,-148,-148v0,-81,66,-148,148,-148xm162,-640v-38,0,-66,29,-66,66v0,37,28,66,66,66v38,0,66,-29,66,-66v0,-37,-28,-66,-66,-66xm477,-214v-38,0,-66,29,-66,66v0,37,28,66,66,66v38,0,66,-29,66,-66v0,-37,-28,-66,-66,-66xm477,-296v82,0,148,67,148,148v0,81,-66,148,-148,148v-82,0,-148,-67,-148,-148v0,-81,66,-148,148,-148xm838,-214v-38,0,-66,29,-66,66v0,37,28,66,66,66v38,0,66,-29,66,-66v0,-37,-28,-66,-66,-66xm838,-296v82,0,148,67,148,148v0,81,-66,148,-148,148v-82,0,-148,-67,-148,-148v0,-81,66,-148,148,-148xm76,10r408,-742r77,0r-408,742r-77,0","w":1000},"\u00bf":{"d":"319,-2r115,32v-25,99,-99,158,-201,158v-95,0,-187,-59,-187,-170v0,-92,144,-192,144,-272r0,-50r110,0r0,98v0,48,-128,176,-128,234v0,34,31,58,63,58v41,0,81,-44,84,-88xm174,-544r142,0r0,142r-142,0r0,-142","w":444},"`":{"d":"-24,-756r155,0r93,146r-101,0","w":278},"\u00b4":{"d":"147,-756r155,0r-147,146r-101,0","w":278},"\u02c6":{"d":"76,-756r126,0r114,146r-113,0r-64,-82r-64,82r-113,0","w":278},"\u02dc":{"d":"257,-744r65,0v-13,63,-39,121,-111,121v-72,1,-166,-81,-192,7r-63,0v10,-63,44,-122,115,-122v79,0,159,83,186,-6","w":278},"\u00af":{"d":"313,-640r-348,0r0,-74r348,0r0,74","w":278},"\u02d8":{"d":"241,-754r66,0v-13,100,-76,146,-175,146v-95,0,-154,-49,-161,-146r64,0v6,56,55,70,104,70v53,0,92,-15,102,-70","w":278},"\u02d9":{"d":"79,-732r120,0r0,114r-120,0r0,-114","w":278},"\u00a8":{"d":"-16,-732r120,0r0,114r-120,0r0,-114xm174,-732r120,0r0,114r-120,0r0,-114","w":278},"\u02da":{"d":"138,-604v-59,0,-106,-48,-106,-107v0,-58,47,-107,106,-107v58,0,108,49,108,107v0,59,-50,107,-108,107xm138,-764v-30,0,-52,24,-52,53v0,30,22,53,52,53v29,0,54,-23,54,-53v0,-29,-25,-53,-54,-53","w":278},"\u00b8":{"d":"2,203r19,-42v43,17,120,36,131,-22v0,-41,-52,-42,-86,-29r-21,-20r59,-90r53,0r-42,61v49,-16,126,11,123,73v-6,110,-153,109,-236,69","w":278},"\u02dd":{"d":"59,-756r151,0r-141,146r-97,0xm239,-756r155,0r-147,146r-101,0","w":278},"\u02db":{"d":"258,-21r0,12v-53,20,-142,58,-142,125v0,86,110,44,149,9r20,34v-45,30,-95,59,-151,59v-57,0,-104,-31,-104,-91v0,-105,149,-135,228,-148","w":278},"\u02c7":{"d":"202,-610r-126,0r-114,-146r113,0r64,82r64,-82r113,0","w":278},"\u2014":{"d":"1000,-230r-1000,0r0,-84r1000,0r0,84","w":1000},"\u00c6":{"d":"466,-612r-156,314r174,0r0,-314r-18,0xm162,0r-148,0r370,-722r532,0r0,122r-294,0r0,166r221,0r0,122r-221,0r0,190r306,0r0,122r-444,0r0,-176r-236,0","w":1000},"\u00aa":{"d":"16,-627v4,-75,63,-105,135,-105v88,0,121,40,121,99v0,77,-6,163,4,233r-86,0v-2,-8,-3,-19,-5,-32v-39,51,-175,60,-175,-40v0,-76,78,-110,172,-138v2,-31,-1,-53,-34,-52v-25,0,-42,16,-42,35r-90,0xm182,-490r0,-58v-41,16,-82,33,-82,63v0,46,70,22,82,-5","w":300},"\u0141":{"d":"200,-316r0,194r222,0r0,122r-360,0r0,-260r-62,25r0,-116r62,-25r0,-346r138,0r0,290r163,-66r-1,116","w":444},"\u00d8":{"d":"190,-262r162,-316v-15,-24,-41,-32,-74,-32v-55,0,-90,22,-90,102r0,246r2,0xm366,-433r-154,299v14,16,38,22,66,22v55,0,90,-22,90,-102r0,-219r-2,0xm446,-770r104,0r-73,140v49,91,29,263,29,398v0,178,-94,242,-228,242v-45,0,-86,-7,-120,-25r-48,93r-104,0r81,-156v-59,-86,-37,-271,-37,-412v0,-178,94,-242,228,-242v50,0,95,9,132,30","w":556},"\u0152":{"d":"196,-436r0,150v0,132,38,174,142,174v89,0,112,-46,112,-130r0,-238v0,-84,-23,-130,-112,-130v-104,0,-142,42,-142,174xm588,-600r0,166r223,0r0,122r-223,0r0,190r306,0r0,122r-413,0v-70,0,-95,10,-176,10v-149,0,-247,-105,-247,-283r0,-191v0,-182,116,-268,284,-268v96,0,132,10,216,10r327,0r0,122r-297,0","w":944},"\u00ba":{"d":"20,-518r0,-91v0,-86,48,-123,130,-123v81,0,130,37,130,123r0,91v0,87,-49,124,-130,124v-82,0,-130,-37,-130,-124xm110,-620r0,114v0,25,11,38,40,38v28,0,40,-13,40,-38r0,-114v0,-25,-12,-38,-40,-38v-29,0,-40,13,-40,38","w":300},"\u00e6":{"d":"316,-134r0,-132v-68,26,-144,68,-144,125v0,36,22,57,56,57v38,0,65,-20,88,-50xm716,-242r-274,0r0,72v0,54,32,78,74,78v53,0,74,-34,74,-76r126,0v-6,112,-73,178,-200,178v-90,0,-144,-45,-165,-70v-84,64,-131,70,-180,70v-76,0,-125,-42,-125,-130v0,-126,120,-180,270,-227v4,-58,-6,-105,-58,-105v-38,0,-70,28,-70,67r-126,0v11,-187,237,-213,330,-107v32,-36,79,-62,134,-62v107,0,190,74,190,185r0,127xm442,-344r148,0v4,-64,-11,-109,-74,-108v-62,0,-79,44,-74,108","w":778},"\u0131":{"d":"202,0r-126,0r0,-544r126,0r0,544","w":278},"\u0142":{"d":"202,-377r0,377r-126,0r0,-313r-74,37r0,-94r74,-37r0,-315r126,0r0,251r74,-37r0,94","w":278},"\u00f8":{"d":"178,-209r118,-223v-45,-27,-120,-8,-120,52r0,171r2,0xm322,-317r-111,209v47,21,117,0,113,-56v-4,-49,4,-108,-2,-153xm156,-6r-63,118r-89,0r88,-164v-55,-55,-42,-186,-42,-296v0,-144,74,-206,200,-206v39,0,73,6,102,19r51,-95r89,0r-78,146v49,57,32,183,36,288v7,182,-143,237,-294,190"},"\u0153":{"d":"176,-380r0,216v0,42,30,64,74,64v44,0,74,-22,74,-64r0,-216v0,-42,-30,-64,-74,-64v-44,0,-74,22,-74,64xm728,-242r-278,0r0,72v0,54,36,78,78,78v53,0,74,-34,74,-76r126,0v-6,112,-73,178,-200,178v-62,0,-111,-30,-140,-72v-28,42,-75,72,-144,72v-120,0,-194,-62,-194,-206r0,-152v0,-144,74,-206,194,-206v69,0,116,30,144,72v29,-42,78,-72,146,-72v111,0,194,74,194,185r0,127xm450,-344r152,0v4,-64,-11,-109,-74,-108v-62,0,-84,42,-78,108","w":778},"\u00df":{"d":"186,0r-126,0r0,-523v0,-118,42,-199,189,-199v115,0,179,71,179,201v0,48,-21,104,-65,128v73,39,94,101,94,201v-1,166,-95,235,-221,187r0,-114v60,24,95,2,95,-90v0,-76,-15,-125,-94,-125r0,-102v45,-2,71,-34,71,-88v0,-51,-17,-88,-66,-88v-39,0,-56,28,-56,59r0,553"},"\u00b9":{"d":"143,-292r0,-330r-67,0r0,-54v62,-12,77,-30,95,-56r62,0r0,440r-90,0","w":333},"\u00ac":{"d":"450,-89r0,-244r-422,0r0,-122r544,0r0,366r-122,0","w":600},"\u03bc":{"d":"314,-544r126,0r0,544r-122,0r0,-62v-43,37,-83,68,-132,72r0,182r-126,0r0,-736r126,0r0,400v0,36,12,60,46,60v26,0,55,-25,82,-49r0,-411"},"\u2122":{"d":"592,-722r94,250r93,-250r153,0r0,412r-106,0r0,-280r-2,0r-98,280r-81,0r-98,-280r-2,0r0,280r-106,0r0,-412r153,0xm373,-722r0,84r-115,0r0,328r-112,0r0,-328r-114,0r0,-84r341,0","w":1000},"\u00d0":{"d":"8,-312r0,-122r54,0r0,-288r192,0v158,0,252,68,252,250r0,222v-6,182,-94,250,-252,250r-192,0r0,-312r-54,0xm288,-434r0,122r-88,0r0,190v110,6,168,-14,168,-144r0,-190v2,-123,-53,-152,-168,-144r0,166r88,0","w":556},"\u00bd":{"d":"147,-292r0,-330r-67,0r0,-54v62,-12,77,-30,95,-56r62,0r0,440r-90,0xm791,0r-296,0r0,-75v183,-161,213,-192,213,-237v0,-29,-17,-54,-58,-54v-51,0,-66,26,-63,67r-90,0v-7,-85,47,-141,146,-141v92,0,155,43,155,126v0,100,-119,177,-186,240r179,0r0,74xm135,10r405,-742r96,0r-405,742r-96,0","w":834},"\u00b1":{"d":"239,-410r0,-134r122,0r0,134r211,0r0,122r-211,0r0,134r-122,0r0,-134r-211,0r0,-122r211,0xm28,0r0,-122r544,0r0,122r-544,0","w":600},"\u00de":{"d":"208,0r-138,0r0,-722r138,0r0,132v194,-14,314,59,314,216v0,156,-118,231,-314,216r0,158xm208,-476r0,204r74,0v68,0,102,-34,102,-102v0,-68,-34,-102,-102,-102r-74,0","w":556},"\u00bc":{"d":"540,-184r102,0v-2,-42,4,-93,-2,-131xm444,-184r199,-249r89,0r0,249r66,0r0,70r-66,0r0,114r-90,0r0,-114r-198,0r0,-70xm147,-292r0,-330r-67,0r0,-54v62,-12,77,-30,95,-56r62,0r0,440r-90,0xm153,10r405,-742r96,0r-405,742r-96,0","w":834},"\u00f7":{"d":"572,-211r-544,0r0,-122r544,0r0,122xm204,-495v0,-52,44,-95,96,-95v50,0,94,44,94,95v0,48,-44,95,-93,95v-53,0,-97,-43,-97,-95xm204,-49v0,-53,44,-95,96,-95v50,0,94,43,94,95v0,47,-44,95,-93,95v-53,0,-97,-44,-97,-95","w":600},"\u00a6":{"d":"50,10r0,-284r122,0r0,284r-122,0xm50,-448r0,-284r122,0r0,284r-122,0","w":222},"\u00b0":{"d":"200,-502v48,0,82,-39,82,-87v0,-48,-34,-87,-82,-87v-48,0,-82,39,-82,87v0,48,34,87,82,87xm200,-446v-81,0,-144,-63,-144,-143v0,-80,63,-143,144,-143v81,0,144,63,144,143v0,80,-63,143,-144,143","w":400},"\u00fe":{"d":"186,-421r0,298v25,27,48,39,76,39v34,0,62,-22,62,-130r0,-116v0,-108,-28,-130,-62,-130v-28,0,-51,12,-76,39xm60,-722r124,0r0,234r2,0v14,-24,70,-66,126,-66v98,0,138,76,138,216r0,132v0,140,-40,216,-138,216v-34,0,-66,-16,-126,-60r0,242r-126,0r0,-914"},"\u00be":{"d":"540,-184r102,0v-2,-42,4,-93,-2,-131xm444,-184r199,-249r89,0r0,249r66,0r0,70r-66,0r0,114r-90,0r0,-114r-198,0r0,-70xm36,-420r90,0v0,42,19,60,65,60v41,0,65,-24,65,-60v0,-48,-30,-64,-91,-64r0,-74v55,0,79,-13,79,-54v0,-24,-21,-46,-56,-46v-30,0,-51,21,-52,49r-90,0v1,-84,64,-123,143,-123v84,0,145,41,145,117v0,38,-19,77,-56,95v50,18,68,55,68,104v0,86,-69,130,-153,130v-106,0,-157,-53,-157,-134xm173,10r405,-742r96,0r-405,742r-96,0","w":834},"\u00b2":{"d":"311,-292r-296,0r0,-75v183,-161,213,-192,213,-237v0,-29,-17,-54,-58,-54v-51,0,-66,26,-63,67r-90,0v-7,-85,47,-141,146,-141v92,0,155,43,155,126v0,100,-119,177,-186,240r179,0r0,74","w":333},"\u00ae":{"d":"337,-325r0,167r-88,0r0,-407r153,0v106,0,167,30,167,123v0,75,-44,104,-101,108r94,176r-97,0r-87,-167r-41,0xm337,-493r0,96v62,-2,151,16,140,-54v12,-49,-84,-42,-140,-42xm400,10v-200,0,-383,-138,-383,-371v0,-233,183,-371,383,-371v200,0,383,138,383,371v0,233,-183,371,-383,371xm669,-361v0,-168,-122,-283,-269,-283v-150,0,-269,115,-269,283v0,168,119,283,269,283v147,0,269,-115,269,-283","w":800},"\u2212":{"d":"572,-211r-544,0r0,-122r544,0r0,122","w":600},"\u00f0":{"d":"176,-350r0,190v0,39,30,60,74,60v44,0,74,-21,74,-60r0,-190v0,-40,-30,-60,-74,-60v-44,0,-74,20,-74,60xm176,-708r118,-14v11,12,21,24,32,37r108,-37r30,74r-91,32v75,122,77,253,77,433v0,135,-74,193,-200,193v-126,0,-200,-58,-200,-193r0,-143v-2,-150,98,-209,243,-190v-5,-22,-14,-43,-25,-64r-110,38r-30,-74r95,-33v-15,-20,-31,-39,-47,-59"},"\u00d7":{"d":"214,-272r-186,-187r87,-85r185,185r186,-185r86,85r-186,187r186,186r-86,86r-186,-186r-185,186r-87,-86","w":600},"\u00b3":{"d":"10,-420r90,0v0,42,19,60,65,60v41,0,65,-24,65,-60v0,-48,-30,-64,-91,-64r0,-74v55,0,79,-13,79,-54v0,-24,-21,-46,-56,-46v-30,0,-51,21,-52,49r-90,0v1,-84,64,-123,143,-123v84,0,145,41,145,117v0,38,-19,77,-56,95v50,18,68,55,68,104v0,86,-69,130,-153,130v-106,0,-157,-53,-157,-134","w":333},"\u00a9":{"d":"400,10v-200,0,-383,-138,-383,-371v0,-233,183,-371,383,-371v200,0,383,138,383,371v0,233,-183,371,-383,371xm669,-361v0,-168,-122,-283,-269,-283v-150,0,-269,115,-269,283v0,168,119,283,269,283v147,0,269,-115,269,-283xm504,-305r90,0v-16,102,-93,157,-179,157v-126,0,-207,-94,-207,-216v0,-124,77,-216,205,-216v89,0,161,52,177,152r-86,0v-9,-46,-48,-64,-91,-64v-65,0,-101,49,-101,126v0,74,41,130,103,130v49,0,84,-21,89,-69","w":800},"\u00c1":{"d":"278,-566r-68,292r137,0r-67,-292r-2,0xm146,0r-133,0r179,-722r177,0r174,722r-132,0r-35,-152r-191,0xm286,-909r155,0r-147,146r-101,0","w":556},"\u00c2":{"d":"278,-566r-68,292r137,0r-67,-292r-2,0xm146,0r-133,0r179,-722r177,0r174,722r-132,0r-35,-152r-191,0xm215,-909r126,0r114,146r-113,0r-64,-82r-64,82r-113,0","w":556},"\u00c4":{"d":"278,-566r-68,292r137,0r-67,-292r-2,0xm146,0r-133,0r179,-722r177,0r174,722r-132,0r-35,-152r-191,0xm123,-885r120,0r0,114r-120,0r0,-114xm313,-885r120,0r0,114r-120,0r0,-114","w":556},"\u00c0":{"d":"278,-566r-68,292r137,0r-67,-292r-2,0xm146,0r-133,0r179,-722r177,0r174,722r-132,0r-35,-152r-191,0xm115,-909r155,0r93,146r-101,0","w":556},"\u00c5":{"d":"278,-566r-68,292r137,0r-67,-292r-2,0xm146,0r-133,0r179,-722r177,0r174,722r-132,0r-35,-152r-191,0xm277,-757v-59,0,-106,-48,-106,-107v0,-58,47,-107,106,-107v58,0,108,49,108,107v0,59,-50,107,-108,107xm277,-917v-30,0,-52,24,-52,53v0,30,22,53,52,53v29,0,54,-23,54,-53v0,-29,-25,-53,-54,-53","w":556},"\u00c3":{"d":"278,-566r-68,292r137,0r-67,-292r-2,0xm146,0r-133,0r179,-722r177,0r174,722r-132,0r-35,-152r-191,0xm396,-897r65,0v-13,63,-39,121,-111,121v-72,1,-166,-81,-192,7r-63,0v10,-63,44,-122,115,-122v79,0,159,83,186,-6","w":556},"\u00c7":{"d":"188,-508r0,294v0,80,35,102,90,102v55,0,90,-22,90,-102r0,-48r138,0v10,189,-84,272,-228,272v-134,0,-228,-64,-228,-242r0,-258v0,-178,94,-242,228,-242v135,0,229,65,228,244r-138,0v5,-84,-28,-122,-90,-122v-55,0,-90,22,-90,102xm141,203r19,-42v43,17,120,36,131,-22v0,-41,-52,-42,-86,-29r-21,-20r59,-90r53,0r-42,61v49,-16,126,11,123,73v-6,110,-153,109,-236,69","w":556},"\u00c9":{"d":"450,0r-388,0r0,-722r378,0r0,122r-240,0r0,166r183,0r0,122r-183,0r0,190r250,0r0,122xm258,-909r155,0r-147,146r-101,0"},"\u00ca":{"d":"450,0r-388,0r0,-722r378,0r0,122r-240,0r0,166r183,0r0,122r-183,0r0,190r250,0r0,122xm187,-909r126,0r114,146r-113,0r-64,-82r-64,82r-113,0"},"\u00cb":{"d":"450,0r-388,0r0,-722r378,0r0,122r-240,0r0,166r183,0r0,122r-183,0r0,190r250,0r0,122xm95,-885r120,0r0,114r-120,0r0,-114xm285,-885r120,0r0,114r-120,0r0,-114"},"\u00c8":{"d":"450,0r-388,0r0,-722r378,0r0,122r-240,0r0,166r183,0r0,122r-183,0r0,190r250,0r0,122xm87,-909r155,0r93,146r-101,0"},"\u00cd":{"d":"208,0r-138,0r0,-722r138,0r0,722xm147,-909r155,0r-147,146r-101,0","w":278},"\u00ce":{"d":"208,0r-138,0r0,-722r138,0r0,722xm76,-909r126,0r114,146r-113,0r-64,-82r-64,82r-113,0","w":278},"\u00cf":{"d":"208,0r-138,0r0,-722r138,0r0,722xm-16,-885r120,0r0,114r-120,0r0,-114xm174,-885r120,0r0,114r-120,0r0,-114","w":278},"\u00cc":{"d":"208,0r-138,0r0,-722r138,0r0,722xm-24,-909r155,0r93,146r-101,0","w":278},"\u00d1":{"d":"196,0r-126,0r0,-722r151,0r192,428r2,0r0,-428r126,0r0,722r-132,0r-211,-466r-2,0r0,466xm424,-897r65,0v-13,63,-39,121,-111,121v-72,1,-166,-81,-192,7r-63,0v10,-63,44,-122,115,-122v79,0,159,83,186,-6","w":611},"\u00d3":{"d":"50,-232r0,-258v0,-178,94,-242,228,-242v134,0,228,64,228,242r0,258v0,178,-94,242,-228,242v-134,0,-228,-64,-228,-242xm188,-508r0,294v0,80,35,102,90,102v55,0,90,-22,90,-102r0,-294v0,-80,-35,-102,-90,-102v-55,0,-90,22,-90,102xm286,-909r155,0r-147,146r-101,0","w":556},"\u00d4":{"d":"50,-232r0,-258v0,-178,94,-242,228,-242v134,0,228,64,228,242r0,258v0,178,-94,242,-228,242v-134,0,-228,-64,-228,-242xm188,-508r0,294v0,80,35,102,90,102v55,0,90,-22,90,-102r0,-294v0,-80,-35,-102,-90,-102v-55,0,-90,22,-90,102xm215,-909r126,0r114,146r-113,0r-64,-82r-64,82r-113,0","w":556},"\u00d6":{"d":"50,-232r0,-258v0,-178,94,-242,228,-242v134,0,228,64,228,242r0,258v0,178,-94,242,-228,242v-134,0,-228,-64,-228,-242xm188,-508r0,294v0,80,35,102,90,102v55,0,90,-22,90,-102r0,-294v0,-80,-35,-102,-90,-102v-55,0,-90,22,-90,102xm123,-885r120,0r0,114r-120,0r0,-114xm313,-885r120,0r0,114r-120,0r0,-114","w":556},"\u00d2":{"d":"50,-232r0,-258v0,-178,94,-242,228,-242v134,0,228,64,228,242r0,258v0,178,-94,242,-228,242v-134,0,-228,-64,-228,-242xm188,-508r0,294v0,80,35,102,90,102v55,0,90,-22,90,-102r0,-294v0,-80,-35,-102,-90,-102v-55,0,-90,22,-90,102xm115,-909r155,0r93,146r-101,0","w":556},"\u00d5":{"d":"50,-232r0,-258v0,-178,94,-242,228,-242v134,0,228,64,228,242r0,258v0,178,-94,242,-228,242v-134,0,-228,-64,-228,-242xm188,-508r0,294v0,80,35,102,90,102v55,0,90,-22,90,-102r0,-294v0,-80,-35,-102,-90,-102v-55,0,-90,22,-90,102xm396,-897r65,0v-13,63,-39,121,-111,121v-72,1,-166,-81,-192,7r-63,0v10,-63,44,-122,115,-122v79,0,159,83,186,-6","w":556},"\u0160":{"d":"491,-557r-124,36v-23,-68,-53,-97,-101,-97v-49,0,-76,30,-76,79v0,109,308,117,308,343v0,124,-85,206,-230,206v-112,0,-199,-61,-236,-203r136,-29v16,87,66,118,107,118v48,0,85,-32,85,-86v0,-136,-308,-138,-308,-340v0,-124,74,-202,217,-202v123,0,198,73,222,175xm341,-763r-126,0r-114,-146r113,0r64,82r64,-82r113,0","w":556},"\u00da":{"d":"70,-722r138,0r0,505v0,69,30,105,97,105v67,0,98,-36,98,-105r0,-505r138,0r0,506v0,159,-94,226,-236,226v-142,0,-235,-67,-235,-226r0,-506xm314,-909r155,0r-147,146r-101,0","w":611},"\u00db":{"d":"70,-722r138,0r0,505v0,69,30,105,97,105v67,0,98,-36,98,-105r0,-505r138,0r0,506v0,159,-94,226,-236,226v-142,0,-235,-67,-235,-226r0,-506xm243,-909r126,0r114,146r-113,0r-64,-82r-64,82r-113,0","w":611},"\u00dc":{"d":"70,-722r138,0r0,505v0,69,30,105,97,105v67,0,98,-36,98,-105r0,-505r138,0r0,506v0,159,-94,226,-236,226v-142,0,-235,-67,-235,-226r0,-506xm151,-885r120,0r0,114r-120,0r0,-114xm341,-885r120,0r0,114r-120,0r0,-114","w":611},"\u00d9":{"d":"70,-722r138,0r0,505v0,69,30,105,97,105v67,0,98,-36,98,-105r0,-505r138,0r0,506v0,159,-94,226,-236,226v-142,0,-235,-67,-235,-226r0,-506xm143,-909r155,0r93,146r-101,0","w":611},"\u00dd":{"d":"159,-722r121,291r117,-291r147,0r-197,430r0,292r-138,0r0,-292r-197,-430r147,0xm286,-909r155,0r-147,146r-101,0","w":556},"\u0178":{"d":"159,-722r121,291r117,-291r147,0r-197,430r0,292r-138,0r0,-292r-197,-430r147,0xm123,-885r120,0r0,114r-120,0r0,-114xm313,-885r120,0r0,114r-120,0r0,-114","w":556},"\u017d":{"d":"61,-600r0,-122r400,0r0,116r-273,484r279,0r0,122r-434,0r0,-117r273,-483r-245,0xm313,-763r-126,0r-114,-146r113,0r64,82r64,-82r113,0"},"\u00e1":{"d":"174,-385r-126,0v9,-121,101,-169,202,-169v134,0,185,68,185,165r0,345v0,15,3,30,7,44r-126,0v-3,-14,-5,-31,-9,-53v-70,85,-275,100,-275,-67v0,-126,120,-180,277,-227r0,-40v0,-47,-29,-65,-65,-65v-38,0,-70,28,-70,67xm309,-134r0,-132v-75,26,-151,68,-151,125v0,36,22,57,56,57v38,0,65,-20,95,-50xm258,-756r155,0r-147,146r-101,0"},"\u00e2":{"d":"174,-385r-126,0v9,-121,101,-169,202,-169v134,0,185,68,185,165r0,345v0,15,3,30,7,44r-126,0v-3,-14,-5,-31,-9,-53v-70,85,-275,100,-275,-67v0,-126,120,-180,277,-227r0,-40v0,-47,-29,-65,-65,-65v-38,0,-70,28,-70,67xm309,-134r0,-132v-75,26,-151,68,-151,125v0,36,22,57,56,57v38,0,65,-20,95,-50xm187,-756r126,0r114,146r-113,0r-64,-82r-64,82r-113,0"},"\u00e4":{"d":"174,-385r-126,0v9,-121,101,-169,202,-169v134,0,185,68,185,165r0,345v0,15,3,30,7,44r-126,0v-3,-14,-5,-31,-9,-53v-70,85,-275,100,-275,-67v0,-126,120,-180,277,-227r0,-40v0,-47,-29,-65,-65,-65v-38,0,-70,28,-70,67xm309,-134r0,-132v-75,26,-151,68,-151,125v0,36,22,57,56,57v38,0,65,-20,95,-50xm95,-732r120,0r0,114r-120,0r0,-114xm285,-732r120,0r0,114r-120,0r0,-114"},"\u00e0":{"d":"174,-385r-126,0v9,-121,101,-169,202,-169v134,0,185,68,185,165r0,345v0,15,3,30,7,44r-126,0v-3,-14,-5,-31,-9,-53v-70,85,-275,100,-275,-67v0,-126,120,-180,277,-227r0,-40v0,-47,-29,-65,-65,-65v-38,0,-70,28,-70,67xm309,-134r0,-132v-75,26,-151,68,-151,125v0,36,22,57,56,57v38,0,65,-20,95,-50xm87,-756r155,0r93,146r-101,0"},"\u00e5":{"d":"174,-385r-126,0v9,-121,101,-169,202,-169v134,0,185,68,185,165r0,345v0,15,3,30,7,44r-126,0v-3,-14,-5,-31,-9,-53v-70,85,-275,100,-275,-67v0,-126,120,-180,277,-227r0,-40v0,-47,-29,-65,-65,-65v-38,0,-70,28,-70,67xm309,-134r0,-132v-75,26,-151,68,-151,125v0,36,22,57,56,57v38,0,65,-20,95,-50xm249,-604v-59,0,-106,-48,-106,-107v0,-58,47,-107,106,-107v58,0,108,49,108,107v0,59,-50,107,-108,107xm249,-764v-30,0,-52,24,-52,53v0,30,22,53,52,53v29,0,54,-23,54,-53v0,-29,-25,-53,-54,-53"},"\u00e3":{"d":"174,-385r-126,0v9,-121,101,-169,202,-169v134,0,185,68,185,165r0,345v0,15,3,30,7,44r-126,0v-3,-14,-5,-31,-9,-53v-70,85,-275,100,-275,-67v0,-126,120,-180,277,-227r0,-40v0,-47,-29,-65,-65,-65v-38,0,-70,28,-70,67xm309,-134r0,-132v-75,26,-151,68,-151,125v0,36,22,57,56,57v38,0,65,-20,95,-50xm368,-744r65,0v-13,63,-39,121,-111,121v-72,1,-166,-81,-192,7r-63,0v10,-63,44,-122,115,-122v79,0,159,83,186,-6"},"\u00e7":{"d":"449,-356r-125,0v6,-58,-20,-88,-74,-88v-44,0,-74,22,-74,64r0,216v0,42,30,64,74,64v58,1,81,-36,74,-98v41,2,90,-4,126,2v0,144,-74,206,-200,206v-126,0,-200,-62,-200,-206r0,-152v0,-144,74,-206,200,-206v123,0,197,60,199,198xm113,203r19,-42v43,17,120,36,131,-22v0,-41,-52,-42,-86,-29r-21,-20r59,-90r53,0r-42,61v49,-16,126,11,123,73v-6,110,-153,109,-236,69"},"\u00e9":{"d":"450,-242r-274,0r0,72v0,54,32,78,74,78v53,0,74,-34,74,-76r126,0v-6,112,-73,178,-200,178v-120,0,-200,-74,-200,-193r0,-178v0,-119,80,-193,200,-193v117,0,200,74,200,185r0,127xm176,-344r148,0v4,-64,-11,-109,-74,-108v-62,0,-79,44,-74,108xm258,-756r155,0r-147,146r-101,0"},"\u00ea":{"d":"450,-242r-274,0r0,72v0,54,32,78,74,78v53,0,74,-34,74,-76r126,0v-6,112,-73,178,-200,178v-120,0,-200,-74,-200,-193r0,-178v0,-119,80,-193,200,-193v117,0,200,74,200,185r0,127xm176,-344r148,0v4,-64,-11,-109,-74,-108v-62,0,-79,44,-74,108xm187,-756r126,0r114,146r-113,0r-64,-82r-64,82r-113,0"},"\u00eb":{"d":"450,-242r-274,0r0,72v0,54,32,78,74,78v53,0,74,-34,74,-76r126,0v-6,112,-73,178,-200,178v-120,0,-200,-74,-200,-193r0,-178v0,-119,80,-193,200,-193v117,0,200,74,200,185r0,127xm176,-344r148,0v4,-64,-11,-109,-74,-108v-62,0,-79,44,-74,108xm95,-732r120,0r0,114r-120,0r0,-114xm285,-732r120,0r0,114r-120,0r0,-114"},"\u00e8":{"d":"450,-242r-274,0r0,72v0,54,32,78,74,78v53,0,74,-34,74,-76r126,0v-6,112,-73,178,-200,178v-120,0,-200,-74,-200,-193r0,-178v0,-119,80,-193,200,-193v117,0,200,74,200,185r0,127xm176,-344r148,0v4,-64,-11,-109,-74,-108v-62,0,-79,44,-74,108xm87,-756r155,0r93,146r-101,0"},"\u00ed":{"d":"202,0r-126,0r0,-544r126,0r0,544xm147,-756r155,0r-147,146r-101,0","w":278},"\u00ee":{"d":"202,0r-126,0r0,-544r126,0r0,544xm76,-756r126,0r114,146r-113,0r-64,-82r-64,82r-113,0","w":278},"\u00ef":{"d":"202,0r-126,0r0,-544r126,0r0,544xm-16,-732r120,0r0,114r-120,0r0,-114xm174,-732r120,0r0,114r-120,0r0,-114","w":278},"\u00ec":{"d":"202,0r-126,0r0,-544r126,0r0,544xm-24,-756r155,0r93,146r-101,0","w":278},"\u00f1":{"d":"186,0r-126,0r0,-544r122,0r0,62v46,-40,89,-72,141,-72v77,0,117,39,117,140r0,414r-126,0r0,-400v0,-36,-12,-60,-46,-60v-26,0,-55,25,-82,49r0,411xm368,-744r65,0v-13,63,-39,121,-111,121v-72,1,-166,-81,-192,7r-63,0v10,-63,44,-122,115,-122v79,0,159,83,186,-6"},"\u00f3":{"d":"50,-196r0,-152v0,-144,74,-206,200,-206v126,0,200,62,200,206r0,152v0,144,-74,206,-200,206v-126,0,-200,-62,-200,-206xm176,-380r0,216v0,42,30,64,74,64v44,0,74,-22,74,-64r0,-216v0,-42,-30,-64,-74,-64v-44,0,-74,22,-74,64xm258,-756r155,0r-147,146r-101,0"},"\u00f4":{"d":"50,-196r0,-152v0,-144,74,-206,200,-206v126,0,200,62,200,206r0,152v0,144,-74,206,-200,206v-126,0,-200,-62,-200,-206xm176,-380r0,216v0,42,30,64,74,64v44,0,74,-22,74,-64r0,-216v0,-42,-30,-64,-74,-64v-44,0,-74,22,-74,64xm187,-756r126,0r114,146r-113,0r-64,-82r-64,82r-113,0"},"\u00f6":{"d":"50,-196r0,-152v0,-144,74,-206,200,-206v126,0,200,62,200,206r0,152v0,144,-74,206,-200,206v-126,0,-200,-62,-200,-206xm176,-380r0,216v0,42,30,64,74,64v44,0,74,-22,74,-64r0,-216v0,-42,-30,-64,-74,-64v-44,0,-74,22,-74,64xm95,-732r120,0r0,114r-120,0r0,-114xm285,-732r120,0r0,114r-120,0r0,-114"},"\u00f2":{"d":"50,-196r0,-152v0,-144,74,-206,200,-206v126,0,200,62,200,206r0,152v0,144,-74,206,-200,206v-126,0,-200,-62,-200,-206xm176,-380r0,216v0,42,30,64,74,64v44,0,74,-22,74,-64r0,-216v0,-42,-30,-64,-74,-64v-44,0,-74,22,-74,64xm87,-756r155,0r93,146r-101,0"},"\u00f5":{"d":"50,-196r0,-152v0,-144,74,-206,200,-206v126,0,200,62,200,206r0,152v0,144,-74,206,-200,206v-126,0,-200,-62,-200,-206xm176,-380r0,216v0,42,30,64,74,64v44,0,74,-22,74,-64r0,-216v0,-42,-30,-64,-74,-64v-44,0,-74,22,-74,64xm368,-744r65,0v-13,63,-39,121,-111,121v-72,1,-166,-81,-192,7r-63,0v10,-63,44,-122,115,-122v79,0,159,83,186,-6"},"\u0161":{"d":"404,-418r-104,40v-17,-50,-49,-74,-87,-74v-29,0,-51,21,-51,49v0,84,246,86,246,248v0,108,-76,165,-181,165v-76,0,-144,-19,-205,-155r113,-31v11,51,42,84,92,84v38,0,61,-18,61,-48v0,-104,-246,-79,-246,-262v0,-103,83,-152,172,-152v94,0,159,54,190,136xm285,-610r-126,0r-114,-146r113,0r64,82r64,-82r113,0","w":444},"\u00fa":{"d":"314,-544r126,0r0,544r-122,0r0,-62v-46,40,-89,72,-141,72v-77,0,-117,-39,-117,-140r0,-414r126,0r0,400v0,36,12,60,46,60v26,0,55,-25,82,-49r0,-411xm249,-756r155,0r-147,146r-101,0"},"\u00fb":{"d":"314,-544r126,0r0,544r-122,0r0,-62v-46,40,-89,72,-141,72v-77,0,-117,-39,-117,-140r0,-414r126,0r0,400v0,36,12,60,46,60v26,0,55,-25,82,-49r0,-411xm178,-756r126,0r114,146r-113,0r-64,-82r-64,82r-113,0"},"\u00fc":{"d":"314,-544r126,0r0,544r-122,0r0,-62v-46,40,-89,72,-141,72v-77,0,-117,-39,-117,-140r0,-414r126,0r0,400v0,36,12,60,46,60v26,0,55,-25,82,-49r0,-411xm86,-732r120,0r0,114r-120,0r0,-114xm276,-732r120,0r0,114r-120,0r0,-114"},"\u00f9":{"d":"314,-544r126,0r0,544r-122,0r0,-62v-46,40,-89,72,-141,72v-77,0,-117,-39,-117,-140r0,-414r126,0r0,400v0,36,12,60,46,60v26,0,55,-25,82,-49r0,-411xm78,-756r155,0r93,146r-101,0"},"\u00fd":{"d":"32,190r0,-110v66,17,128,-36,128,-70v0,-32,-10,-69,-23,-115r-126,-439r128,0r85,360r2,0r79,-360r128,0r-145,542v-42,162,-102,203,-256,192xm230,-756r155,0r-147,146r-101,0","w":444},"\u00ff":{"d":"32,190r0,-110v66,17,128,-36,128,-70v0,-32,-10,-69,-23,-115r-126,-439r128,0r85,360r2,0r79,-360r128,0r-145,542v-42,162,-102,203,-256,192xm67,-732r120,0r0,114r-120,0r0,-114xm257,-732r120,0r0,114r-120,0r0,-114","w":444},"\u017e":{"d":"51,-434r0,-110r362,0r0,108r-231,326r231,0r0,110r-382,0r0,-108r227,-326r-207,0xm285,-610r-126,0r-114,-146r113,0r64,82r64,-82r113,0","w":444},"\u00a0":{"w":278}}});


//tradegothic.js End

//Configuration.js
	
	$(document).ready(function(){
        $("#youMayAlsoLike").tabs({
			 	
				select: function(e, ui){ 
						setTimeout(function() { 
								//Cufon.replace('.ui-tabs-nav li', {}, false); 
						}, 10); 
						
				} 
			}


		
		);
		$("#productDetailInfo").tabs({
			select: function(e, ui){ 
						setTimeout(function() { 
								//Cufon.replace('.ui-tabs-nav li', {}, false); 
						}, 10); 
						
				} 
			}
		);
		$("#productSpecification").tabs({
			select: function(e, ui){ 
						setTimeout(function() { 
								//Cufon.replace('.ui-tabs-nav li', {}, false); 
						}, 10); 
						
				} 
			}
		);
		$("#AccModification").tabs({
			select: function(e, ui){ 
						setTimeout(function() { 
								//Cufon.replace('.ui-tabs-nav li', {}, false); 
								
								
								
						}, 10); 
						
				} 
			}
		);
		$("#productRating").tabs({
			select: function(e, ui){ 
						setTimeout(function() { 
								//Cufon.replace('.ui-tabs-nav li', {}, false); 
						}, 10); 
						
				} 
			}
		);
				$("#productCrossSell").tabs({
			select: function(e, ui){ 
						setTimeout(function() { 
								//Cufon.replace('.ui-tabs-nav li', {}, false); 
						}, 10); 
						
				} 
			}
		);
		
		$("#facetedSearchTabs").tabs().addClass('ui-tabs-vertical ui-helper-clearfix');
		$("#facetedSearchTabs li").removeClass('ui-corner-top');
		
		//Tooltip
		$(".accessoriesTooltipWrap").each(function(i){

			accessoriesTooltipContent = $('#accessoriesTooltipContent-'+i).html();
			
			
			$(this).simpletip({ 
				fixed: true,
				position: 'top',
				content: accessoriesTooltipContent,
				showEffect: 'fade',
				hideEffect: 'fade'
			}); 
		});
		
		$(".colorTooltipWrap").each(function(y){

			colorTooltipContent = $('#colorTooltipContent-'+y).html();
			
			
			$(this).simpletip({ 
				fixed: true,
				position: ["10","-32"],
				
			
				content: colorTooltipContent,
				showEffect: 'fade',
				hideEffect: 'fade'
			}); 
		});
		
		//Dialog
		$(document).ready(function() {
	  	    $("#sizingChart").dialog({
	  	    	autoOpen: false,
	  	    	modal: true,
	  	    	width: 532,
	  	    	hide: '',
				show: '',
				closeText: ''
	  	    	
	  	    });
	  	    $('#openSizingChart').click(function() {
	  	    	$('#sizingChart').dialog('open');
	  	    });
	  	  });
		
      });
  

    
    String.prototype.endsWith = function(str)
    {return (this.match(str+"$")==str)}
    
     function formatText(index, panel) {
		  return index + "";
	 }
    
     $(function () {
        
            $('.sliderHeader').anythingSlider({
                easing: "easeOutQuint",        	// Anything other than "linear" or "swing" requires the easing plugin
                autoPlay: true,                 // This turns off the entire FUNCTIONALY, not just if it starts running or not.
                delay: 10000,                    // How long between slide transitions in AutoPlay mode
                startStopped: false,            // If autoPlay is on, this can force it to start stopped
                animationTime: 900,             // How long the slide transition takes
                hashTags: false,                // Should links change the hashtag in the URL?
                buildNavigation: true,          // If true, builds and list of anchor links to link to each slide
        		pauseOnHover: true,             // If true, and autoPlay is enabled, the show will pause on hover
        		startText: "",             		// Start text
		        stopText: "",               	// Stop text
		        navigationFormatter: formatText,// Details at the top of the file on this use (advanced use)
		        elementsForSliding: 2,			// Elements are needed for sliding
		        backButtons: false, 				// Are enough elements, show backbuttons
		        vertical: false
            });

            
      });

      $(function () {
            
            $('.sliderContent').anythingSlider({
                easing: "easeOutQuint",        	// Anything other than "linear" or "swing" requires the easing plugin
                autoPlay: true,                 // This turns off the entire FUNCTIONALY, not just if it starts running or not.
                delay: 10000,                    // How long between slide transitions in AutoPlay mode
                startStopped: false,            // If autoPlay is on, this can force it to start stopped
                animationTime: 900,             // How long the slide transition takes
                hashTags: false,                // Should links change the hashtag in the URL?
                buildNavigation: true,          // If true, builds and list of anchor links to link to each slide
        		pauseOnHover: true,             // If true, and autoPlay is enabled, the show will pause on hover
        		startText: "",             		// Start text
		        stopText: "",               	// Stop text
		        navigationFormatter: formatText,// Details at the top of the file on this use (advanced use)
		        elementsForSliding: 2,			// Elements are needed for sliding
		        backButtons: true, 				// Are enough elements, show backbuttons
		        vertical: false
            });

            
        });

      $(function () {
            $('.sliderNews').anythingSlider({
                easing: "easeOutQuint",        	// Anything other than "linear" or "swing" requires the easing plugin
                autoPlay: true,                 // This turns off the entire FUNCTIONALY, not just if it starts running or not.
                delay: 5000,                    // How long between slide transitions in AutoPlay mode
                startStopped: false,            // If autoPlay is on, this can force it to start stopped
                animationTime: 400,             // How long the slide transition takes
                hashTags: false,                // Should links change the hashtag in the URL?
                buildNavigation: false,          // If true, builds and list of anchor links to link to each slide
        		pauseOnHover: true,             // If true, and autoPlay is enabled, the show will pause on hover
        		startText: "",             		// Start text
		        stopText: "",               	// Stop text
		        navigationFormatter: formatText,// Details at the top of the file on this use (advanced use)
		        elementsForSliding: 2,			// Elements are needed for sliding
		        backButtons: true, 				// Are enough elements, show backbuttons
		        vertical: true
            });
        });

      $(function () {
            $('.sliderAccessories').anythingSlider({
                easing: "linear",        	    // Anything other than "linear" or "swing" requires the easing plugin
                autoPlay: true,                 // This turns off the entire FUNCTIONALY, not just if it starts running or not.
                delay: 1000,                    // How long between slide transitions in AutoPlay mode
                startStopped: true,             // If autoPlay is on, this can force it to start stopped
                animationTime: 400,             // How long the slide transition takes
                hashTags: false,                // Should links change the hashtag in the URL?
                buildNavigation: false,         // If true, builds and list of anchor links to link to each slide
        		pauseOnHover: false,            // If true, and autoPlay is enabled, the show will pause on hover
        		startText: "",             		// Start text
		        stopText: "",               	// Stop text
		        navigationFormatter: formatText,// Details at the top of the file on this use (advanced use)
		        elementsForSliding: 2,			// Elements are needed for sliding
		        backButtons: true, 				// Are enough elements, show backbuttons
		        vertical: false
            });
        });
     
	  $(document).ready(function(){
		$("#accordion").accordion({ autoHeight: false, collapsible: true, active: false }); 
		$("#language").accordion({ autoHeight: false, collapsible: true, active: false });
		$("#country").accordion({ autoHeight: false, collapsible: true, active: false });
	  });
	

    <!-- CUFON Initializer -->
  
	
<!-- JQZOOM Initializer -->
	 
	
	//function startZoom()  {
		var options = {
			xOffset: 0,
			yOffset: 0,
			zoomWidth: 470,
			zoomHeight: 368,
			title: false,
			position:'left'
		};
		var myJqzoomObject;
		$(function() {
			myJqzoomObject = $(".jqzoom").jqzoom(options);
		});
	
//Configuration.js

//popup.js start

/***************************/
//@Author: Adrian "yEnS" Mato Gondelle
//@website: www.yensdesign.com
//@email: yensamg@gmail.com
//@license: Feel free to use it, but keep this credits please!					
/***************************/

//SETTING UP OUR POPUP
//0 means disabled; 1 means enabled;


//loading popup with jQuery magic!
var popupStatusAddtoCart = 0;
function loadpopupAddtoCart(){
	//loads popup only if it is disabled
	if(popupStatusAddtoCart==0){
		$("#backgroundPopup").css({
			"opacity": "0.7"
		});
		$("#backgroundPopup").fadeIn("slow");
		$("#popupContactAddtoCart").fadeIn("slow");
		//$("#qv").css('display','none');
		popupStatusAddtoCart = 1;
		$("#outerWrap a, #outerWrap input, #outerWrap select, #outerWrap button").attr('tabindex',-1);
		$("#popupContact a, #popupContact input, #popupContact select, #popupContact button").attr('tabindex',1);
	}
	//alert($(window).height())
	//Five Seconds Time-Out of the Popup Box	
	var t=setTimeout("disablepopupAddtoCart()",5000);
	
}

//disabling popup with jQuery magic!
function disablepopupAddtoCart(){
	//disables popup only if it is enabled
	if(popupStatusAddtoCart==1){
		$("#backgroundPopup").fadeOut();
		$("#popupContactAddtoCart").fadeOut();
		
		popupStatusAddtoCart = 0;
		$("#outerWrap a, #outerWrap input, #outerWrap select, #outerWrap button").removeAttr('tabindex');
	}
}
var popupStatus = 0;
function loadPopup(){
	//loads popup only if it is disabled
	if(popupStatus==0){
		$("#backgroundPopup").css({
			"opacity": "0.7"
		});
		$("#backgroundPopup").fadeIn("slow");
		$("#popupContact").fadeIn("slow");
		$("#qv").hide();
		popupStatus = 1;
		$("#outerWrap a, #outerWrap input, #outerWrap select, #outerWrap button").attr('tabindex',-1);
		$("#popupContact a, #popupContact input, #popupContact select, #popupContact button").attr('tabindex',1);
	}
}
var popupStatusTP = 0;
function loadPopupTP(){
	//loads popup only if it is disabled
	if(popupStatusTP==0){
		$("#backgroundPopup").css({
			"opacity": "0.7"
		});
		$("#backgroundPopup").fadeIn("slow");
		$("#popupContactTP").fadeIn("slow");
		$("#qv").hide();
		popupStatusTP = 1;
		$("#outerWrap a, #outerWrap input, #outerWrap select, #outerWrap button").attr('tabindex',-1);
		$("#popupContact a, #popupContact input, #popupContact select, #popupContact button").attr('tabindex',1);
	}
}
$(document).keypress(function(e) {
	if (e.keyCode == 27 && popupStatus == 1) {
		disablePopup();
		disablepopupAddtoCart();
		disablePopup_SizeAndFit();
		$("#selector").css('display', 'block');
		$("#SortBy").css('display', 'inline');
		$("#pdpImage").remove();
		$("#Color_Finishes_Popup").css('display', 'none');

	}
});
//disabling popup with jQuery magic!
function disablePopup(){
	 $("#selector").css('display', 'block');
		$("#SortBy").css('display', 'inline');
	//disables popup only if it is enabled
	var selectedState = $("body").find(".scrollingDiv").hasClass("suggestedAdd");
					
	if (selectedState) //if Suggested Div is Displayed
	{
		var selectedAddState = $("#popupSuggestedAdd").css("display");
		if(selectedAddState == "none")
		{		
			if(popupStatus==1){
				$("#backgroundPopup").fadeOut();
				$("#popupContact").fadeOut();
				$(".scrollingDiv").fadeOut();
				popupStatus = 0;
				$("#outerWrap a, #outerWrap input, #outerWrap select, #outerWrap button").removeAttr('tabindex');
				$("input#mellisaValidationCount").val(0);
			}
		}	
	}else{ //if Suggested Div is not opened
		if(popupStatus==1){
			$("#backgroundPopup").fadeOut();
			$("#popupContact").fadeOut();
			$(".scrollingDiv").fadeOut();
			
			
			popupStatus = 0;
			$("#outerWrap a, #outerWrap input, #outerWrap select, #outerWrap button").removeAttr('tabindex');
			$("input#mellisaValidationCount").val(0);
		}
	}	
	$("#popupContact #EmailForm input:text").removeClass("error");
	$("#popupContact #EmailForm label.error").html("");
	
	$("#add_shipping_address").find("input:text").each(function(index)
			 {
		 		$(this).attr('value','')
			 });
	$("#EmailForm").find("input:text, textarea").each(function(index)
			 {
		 		$(this).attr('value','')
			 });
	$("#add_shipping_address").find("input:checkbox").each(function(index)
			 {
		 		$(this).attr('checked', false);

			 });
	
	$("#popupContact .editAddress").find("input:text, select").each(function(index)
			{
				
				$(this).removeClass('error');
				
				if($(this).prev().hasClass('error')){
					$(this).prev().html("");
					$(".msgError").html("");
				}
				
			});
	$("#popupContact .editAddress").find("label.error").each(function(index)
			{
				$(this).html("");
				$(".alertBox").remove();
			});
	
	$("#add_shipping_address , #add_payment, .msgError").find("label.error").each(function(index)
			{
				//alert($(this).html());
				$(this).html("");
				
			});
	$("#add_payment").find("label.error").each(function(index)
			{
				//alert($(this).html());
				$(this).html("");
				
			});
	
	$("#add_payment .subhead ,#add_payment #Paymetric_ErrorLogging").html("");
	$("#add_payment .DataIntercept").find("input:text").css('background-color','#ffffff');
	$("#add_payment .DataIntercept").find("input:password").css('background-color','#ffffff');
	$(".editBillingAddress ul.floatingContentCityState li").find("label.error").html("");
	$("#add_shipping_address, #add_payment").find("input:text, select").each(function(index)
			 {
		$(this).removeClass('error');
		if($(this).prev().hasClass('error')){
			$(this).prev().html("");
			$(".msgError").html("");
		}	 				 		
				 });
	
	$("#add_shipping_address").find("select").each(function(index)
		 {
		 		$(this).children().first().attr('selected','selected');
		 				 		
			 });
	$("#add_payment").find("input:text, input:password").each(function(index)
			 {
		 		
				$(this).attr('value','')
			 });
	
	
	
	
	$("#add_payment").find("select").each(function(index)
			 {
			 		$(this).children().first().attr('selected','selected');
			 				 		
				 });
	$("#add_payment").find("input:checkbox").each(function(index)
			 {
		 		$(this).attr('checked', false);

			 });
	

}
function centerPopupAddtoCart(){
	
	//request data for centering
	var windowWidth = document.documentElement.clientWidth;
	var windowHeight = document.documentElement.clientHeight;
	var popupHeight = $("#popupContactAddtoCart").height();
	var popupWidth = $("#popupContactAddtoCart").width();
	//centering
	
	  $("#selector").css('display','none');
	  $("#SortBy").css('display','none');
	
	
   $("#popupContactAddtoCart").css({
		"position": "absolute",
		"top": windowHeight/2-popupHeight/2,
		"left": windowWidth/2-popupWidth/2
	});


	//only need force for IE6
	
	$("#backgroundPopup").css({
		"height": document.documentElement.scrollHeight,
		"width": document.documentElement.scrollWidth
	});
	
}


//centering popup
function centerPopup(){
	
	//request data for centering
	var windowWidth = document.documentElement.clientWidth;
	var windowHeight = document.documentElement.clientHeight;
	var popupHeight = $("#popupContact").height();
	var popupWidth = $("#popupContact").width();
	var popupHeightSuggested = $("#popupSuggestedAdd").height();
	var popupWidthSuggested = $("#popupSuggestedAdd").width();
	//centering
	
	  $("#selector").css('display','none');
	  $("#SortBy").css('display','none');
	
	
   $("#popupContact").css({
		"position": "absolute",
		"top": windowHeight/2-popupHeight/2,
		"left": windowWidth/2-popupWidth/2
	});
	$("#popupSuggestedAdd").css({
		"position": "absolute",
		"top": windowHeight/2-popupHeightSuggested/2,
		"left": windowWidth/2-popupWidthSuggested/2
	});


	//only need force for IE6
	
	$("#backgroundPopup").css({
		"height": document.documentElement.scrollHeight,
		"width": document.documentElement.scrollWidth
	});
	
}

var popupXSS = 0;
function loadpopupXSS () {
	
		
	if (popupXSS  == 0) {
		$("#backgroundPopup").css({
			"opacity" : "0.7"
		});
		$("#backgroundPopup").fadeIn("slow");
		$("#popupContactXSS").fadeIn("slow");
		$("#qv").css('display', 'none');
		popupXSS = 1;
		$("#outerWrap a, #outerWrap input, #outerWrap select, #outerWrap button").attr('tabindex', -1);
		$("#popupContact a, #popupContact input, #popupContact select, #popupContact button")	.attr('tabindex', 1);
	
	}
	
}
function disablepopupXSS(){
	
	if(popupXSS ==1){
		$("#backgroundPopup").fadeOut();
		$("#popupContactXSS").fadeOut();
		$(".scrollingDiv").fadeOut();
		
		
		popupXSS  = 0;
		$("#outerWrap a, #outerWrap input, #outerWrap select, #outerWrap button").removeAttr('tabindex');
	}
}
function centerpopupXSS () {

	// request data for centering
	var windowWidth = document.documentElement.clientWidth;
	var windowHeight = document.documentElement.clientHeight;
	var popupHeight = $("#popupContactXSS").height();
	var popupWidth = $("#popupContactXSS").width();
	// centering

	$("#selector").css('display', 'none');
	$("#SortBy").css('display', 'none');

	$("#popupContactXSS").css({
		"position" : "absolute",
		"top" : windowHeight / 2 - popupHeight / 2,
		"left" : windowWidth / 2 - popupWidth / 2
	});

	// only need force for IE6

	$("#backgroundPopup").css({"height" : document.documentElement.scrollHeight});

}


var popupContactTPstatus = 0;
function loadpopupTP () {
	
		
	if (popupContactTPstatus  == 0) {
		$("#backgroundPopup").css({
			"opacity" : "0.7"
		});
		$("#backgroundPopup").fadeIn("slow");
		$("#popupContactTP").fadeIn("slow");
		$("#qv").css('display', 'none');
		popupContactTPstatus = 1;
		$("#outerWrap a, #outerWrap input, #outerWrap select, #outerWrap button").attr('tabindex', -1);
		$("#popupContact a, #popupContact input, #popupContact select, #popupContact button")	.attr('tabindex', 1);
	
	}
	
}
function disablepopupTP(){
	
	if(popupContactTPstatus ==1){
		$("#backgroundPopup").fadeOut();
		$("#popupContactTP").fadeOut();
		$(".scrollingDiv").fadeOut();
		
		
		popupContactTPstatus  = 0;
		$("#outerWrap a, #outerWrap input, #outerWrap select, #outerWrap button").removeAttr('tabindex');
	}
}
function centerpopupTP () {

	// request data for centering
	var windowWidth = document.documentElement.clientWidth;
	var windowHeight = document.documentElement.clientHeight;
	var popupHeight = $("#popupContactTP").height();
	var popupWidth = $("#popupContactTP").width();
	// centering

	$("#selector").css('display', 'none');
	$("#SortBy").css('display', 'none');

	$("#popupContactTP").css({
		"position" : "absolute",
		"top" : windowHeight / 2 - popupHeight / 2,
		"left" : windowWidth / 2 - popupWidth / 2
	});

	// only need force for IE6

	$("#backgroundPopup").css({"height" : document.documentElement.scrollHeight});

}


function setTimePieceCookie()
{
	
	centerpopupTP();
	loadpopupTP(); 
	
}


//CONTROLLING EVENTS IN jQuery
$(document).ready(function(){
	
	//LOADING POPUP
	//Click the button event!
	$("a.OpenPopupAddtoCart").click(function(){  
	       centerPopupAddtoCart();  
	       loadpopupAddtoCart();  
	      return false
	});
				
	//CLOSING POPUP
	//Click the x event!
	$("#popupContactClose").click(function(){
		disablepopupXSS
		disablePopup();
		disablepopupAddtoCart();
		disablepopupTP();
		 $("#selector").css('display','block');
	  $("#SortBy").css('display','block');
	});
	$("a.ClosePopup").click(function(){
		disablePopup();
		disablepopupXSS();
		disablepopupTP();
		//var a=b;
	});
	//Click out event!
	$("#backgroundPopup").click(function(){
		disablePopup();
		disablepopupXSS();
		disablepopupTP();
		
	});
	//Press Escape event!
	//$(document).bind('keypress', function(e)
	$(document).keydown(function(e)
			{
		if(e.keyCode==27 && popupStatus==1){
			disablepopupAddtoCart();
			disablePopup();
			disablepopupTP();
			disablepopupXSS();
	  $("#selector").css('display','block');
	  $("#SortBy").css('display','block');
		}
	});

});

function closepop()
{

		disablePopup();
		disablepopupTP();
		
		
}

//popup.js end
