
// JQUERY FUNCTIONS -------------------------------------------------------------------------------------
	(function($){
	
		$.fn.exists = function(){return jQuery(this).length>0;};
	
		$.fn.jquerySubmitForm = function(unhighlight, highlight, callBackFunc, invalidCallBackFunc, errorCallBackFunc) {
			var form = $(this) ; //currentObject holds the current object.
			//alert("form: " + form);
			defaultTextJs.clear(highlight);
			
			var outputMsgContainer = form.find(".outputMsgContainer");
		//	alert("outputMsgContainer = " + outputMsgContainer.exists());
			
			errorHighlightJs.unhighlight(unhighlight);
		//	alert("submit");
			form.ajaxSubmit({
				success: function(data, textStatus, XMLHttpRequest) {
					outputMsgContainer.html(data);
				//	alert("data" + data);
					
					var isSuccess = jQuery.trim(outputMsgContainer.find("span.isProcessSuccess").html());
					
					//alert("success: " + isSuccess);
					if (isSuccess.toLowerCase() == "true") {
					//	alert("return result");
						if (typeof(callBackFunc) == "function") {
							callBackFunc();
						}
					} else {
						errorHighlightJs.highlight(highlight, outputMsgContainer);
						
						if (typeof(invalidCallBackFunc) == "function") {
							invalidCallBackFunc();
						}
					}
					
				},
				error: function(XMLHttpRequest, textStatus, errorThrown) {
					//alert("error: " +errorThrown);
					outputMsgContainer.html(errorThrown);
					if (typeof(errorCallBackFunc) == "function") {
						errorCallBackFunc();
					}
				}
			});	 
		};
		

	})( jQuery );
	
	
// JAVASCRIPT FUNCTIONS -------------------------------------------------------------------------------------
	function init_all(init_in_section,callBackFunc){
		if (typeof(init_in_section) == "undefined") {
			init_in_section = $("html");
		}
		
		init_allScene7(init_in_section);
		
		init_all_tabs(init_in_section,function(){
			if (typeof(callBackFunc) == "function") {
				callBackFunc();
			}
		});
	}
	
	function init_allScene7(init_in_section){
		/*alert("111: " + init_in_section.exists());
		alert("aaa: " + init_in_section.find("img.getScene7").exists());*/
		init_in_section.find("img.getScene7").each(function(){
			//alert("222");
			 var thisImg = $(this);
			 try {
				 setGridSizes();
			 }catch(e){}
			formScene7URL(thisImg);
			
		});
	}
	function init_all_tabs(init_in_section,callBackFunc){
		var numOfEach = init_in_section.find('.init_tabs').length;
		var count = 0;
		if(numOfEach == 0 && typeof(callBackFunc) == "function"){
			callBackFunc();
		}
		
		init_in_section.find('.init_tabs').each(function(){
			count++;
			$(this).tabs();
			if(count == numOfEach && typeof(callBackFunc) == "function"){
				callBackFunc();
			}
		});
	}
	
	function initRememberMe() {
		var signInEmail = readCookie("charmingLogin");	
		if (signInEmail != null) {
			$("input#login").val(signInEmail);
			$("input[name='rememberMe']").attr("checked",true);
			/*$("input[name='rememberMe']").parent().addClass("checked");*/
		}else{
			$("input#login").val("");
		}
			
	}
	
	function isBlank(obj) {
		if ((obj == null) || (obj == "") || (obj.length == 0) || (obj == "undefined")) {
			return true;
		} else {
			return false;
		}
	}
	
	function checkNum(inputNum){
		var newValue = "";
		var oldValue = $(inputNum).val();
		var newValue = oldValue.replace(/[^\d]+/,'');
		$(inputNum).val(newValue);
	}	

	function refreshFooterBasket(){
		var url = "/cc/include/footerBasket.jsp";
		$("#footerBasket").load(url, function(){
			triggerDocumentReady_FooterBasket();
			init_allScene7($(this));
		});
	}	

	//example: 
	//initiate - 
	//		var hash = getUrlVars();
	//grap param anchor -
	//		var anchor = hash['anchor'];
	function getUrlVars()
	{
		var vars = [], hash;
		var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
		 
		for(var i = 0; i < hashes.length; i++)
		{
		hash = hashes[i].split('=');
		vars.push(hash[0]);
		vars[hash[0]] = hash[1];
		}
		 
		return vars;
	}
	
	function formScene7URL(thisImgTag){
		
		var imagePath = "https://s7d9.scene7.com/is/image/Charmingcharlie/";
		var imageData = encodeURIComponent(thisImgTag.attr('iData'));
		var imageType = encodeURIComponent(thisImgTag.attr('iType')); 
		var imageSize = encodeURIComponent(thisImgTag.attr('iSize'));

		imageUrl = imagePath + imageData + "_" + imageType + "?$" + imageSize + "$";
		//alert("imageUrl: " + imageUrl);
		thisImgTag.attr('src',imageUrl);

	}

	function do_anchor(anchor,callBackFunc){
		if(isBlank(anchor)){
			var hash = getUrlVars();
			var anchor = hash['anchor'];
			var anchorTab = hash['anchorTab'];
			if(!isBlank(anchorTab)){
				$('div[anchor*="'+anchor+'"]').find("div.tabs").tabs('select', anchorTab-1);
			}
		}
		if(!isBlank(anchor)){
			anchorTo(anchor);
		}
		if(typeof callBackFunc != "undefined"){
			callBackFunc();
		}
	}
	
	function anchorTo(anchor) {
		if(anchor!=null){
			var cat_anhor = $('div[anchor*="'+anchor+'"]');
			if(cat_anhor.length > 0){
				var cat_top = cat_anhor.offset();
				$(document).scrollTop(cat_top.top - $("div#header").outerHeight());
				cat_anhor.find('.stack-expand').trigger('click');
			}
		}
	}
// GLOBAL VARIABLES -------------------------------------------------------------------------------------

	//*** Begin array utility functions ***
	var errorHighlightJs = {
		refreshHighlight: function(container, highlightInfoContainer) {
			if (container == null) {
				container = $("body");
			}

			if (highlightInfoContainer == null) {
				highlightInfoContainer = container;
			}
			

			errorHighlightJs.unhighlight(container);
			errorHighlightJs.highlight(container, highlightInfoContainer);
		},

		// Warning: This function only add highlight the tags according to the info given, it won't unhighlight existing tags!
		// Use refreshHighlight to refresh the highlights
		highlight: function(container, highlightInfoContainer) {
			//alert("start highlight");
			if (container == null) {
				container = $("body");
			}

			if (highlightInfoContainer == null) {
				highlightInfoContainer = container;
			}

			// This map maps tag css class to error message
			var highlightInfoMap = new Object();
			$("div.errorHighlightInfoContainer li", highlightInfoContainer).each(function(index, element) {
				element = $(element);
				//alert("element (" + element.attr("highlightCssClass") + ") : " + element.text());
				highlightInfoMap[element.attr("highlightCssClass")] = element.text();
			});
			//alert("highlightInfoMap: " + highlightInfoMap["receiverEmail"]);
			for (var cssClass in highlightInfoMap) {
				//alert("cssClass : " + cssClass + " container: " + container.val());
				$("." + cssClass, container).each(function(index, element) {
				//	alert("element: " + element);
					element = $(element);
					if (element.find("span.customStyleSelectBox").length > 0) {
						element.find("span.customStyleSelectBox").addClass("input_highlight");
					} else {
						element.addClass("input_highlight");
					}

					var closestFieldset = element.closest("fieldset");

					closestFieldset.find(".fieldset_label").addClass("label_highlight_container");
					closestFieldset.find(".fieldset_label_text").addClass("label_highlight");

					/* var highlistDescriptions = closestFieldset.find("."+cssClass+"_desc");

					if (highlistDescriptions.length > 1) {
						//highlistDescriptions = highlistDescriptions.filter("." + cssClass);
						highlistDescriptions.append(cssClass.val());
					} 
					highlistDescriptions.show().addClass("label_errorMsg");*/
				});
				
				var description = highlightInfoMap[cssClass];
				var cssClass_desc = $("."+cssClass+"_desc", container);
				//alert(cssClass_desc + " -> ["+(cssClass_desc.length >0)+"]" + description);
				if(cssClass_desc.length >0 && description!=null && description != "") {
					cssClass_desc.html(description);
					cssClass_desc.show().addClass("label_errorMsg");
					cssClass_desc.siblings('.icon_inputError').show();
				} else if(cssClass_desc.length==0 && description!=null && description != ""){
					cssClass_desc = $(".generic_desc", container);
					if(cssClass_desc.length >0){
						cssClass_desc.append(description+"<br />");
						cssClass_desc.show().addClass("label_errorMsg");
						cssClass_desc.siblings('.icon_inputError').show();
					}
				}
			}
		},
		unhighlight: function(container) {
			if (container == null) {
				container = $("body");
			}

			container.find(".input_highlight").removeClass("input_highlight");
			container.find("fieldset .fieldset_label").removeClass("label_highlight_container");
			container.find("fieldset .fieldset_label_text").removeClass("label_highlight");
			container.find("fieldset .fieldset_highlight_desc").removeClass("label_errorMsg").hide();
			$(".label_errorMsg", container).html("");
			$(".icon_inputError", container).hide();
		}
	};

	//*** Begin defaultText functions ***
	var defaultTextJs = {
		getDefTxt: function(input) {
			var deftxt = $(input).attr("deftxt") != null ? $(input).attr("deftxt") : $(input).parent().attr("deftxt");
			return deftxt != null ? deftxt : "";
		},
		doFocusOut: function(input) {
			var deftxt = defaultTextJs.getDefTxt(input);
			if($(input).val() == null || jQuery.trim($(input).val()) == "" || $(input).val() == deftxt) {
				$(input).val(deftxt);
				$(input).removeClass('onFocus');
				$(input).addClass('onDefault');
			}else{
				if($(input).hasClass('onDefault')){
					$(input).removeClass('onDefault');
					$(input).removeClass('onFocus');
				}
			}
		},
		doFocusIn: function(input) {
			var deftxt = defaultTextJs.getDefTxt(input);
			if($(input).val() == deftxt) {
				$(input).val("");
				$(input).removeClass('onDefault');
			}
			$(input).addClass('onFocus');
		},
		clear: function(container) {	// The container is most likely a form element
			$(".defaultText", $(container)).each(function() {
				if ( $(this).val() == defaultTextJs.getDefTxt(this) ) {
					$(this).val("");
				}
			});
		},
		restore: function(container) {
			$(".defaultText", $(container)).each(function() {
				if ( $(this).val() == "" ) {
					$(this).val(defaultTextJs.getDefTxt(this));
				}
			});
		}
	};
	
	//*** Begin global Dialog Object ***
	var globalDialogObject = {
		dialogUrl : "",
		dialogTitle : "emptyDialogTitle",
		dialogClassName : "emptyDialogClassName",
		dialogBtns : new Array(),
		//dialogWidth : 500,
	/*	dialogPosition : "['center','center']";*/
	
		popupGlobalDialog : function(extendFunc){
			var url = '/cc/dialog/globalDialog.jsp';
			if(!isBlank(globalDialogObject.dialogUrl)){
				url = globalDialogObject.dialogUrl;
			}
		//	alert("width: " + globalDialogObject.dialogWidth);
			$( "#dialog" ).load(url,function(){
				$(this).cc_dialog("open");
				if (typeof(extendFunc) == "function"){
					extendFunc();
				}
			}).cc_dialog({ title: globalDialogObject.dialogTitle })
			.cc_dialog({ dialogClass: globalDialogObject.dialogClassName })
			.cc_dialog({ buttons: globalDialogObject.dialogBtns})
			.cc_dialog({ postion: ['center','center']})
			.cc_dialog("option", "resizable", false)
			.cc_dialog("option", "draggable", false)
			.cc_dialog("option", "width", 500);
			
		//	alert("finish");
			/*$("#dialog").load(url, function() {
				if (typeof(extendFunc) == "function"){
					extendFunc();
				}
			}).cc_dialog({ title: globalDialogObject.dialogTitle })
			.cc_dialog({ dialogClass: globalDialogObject.dialogClassName });*/
		},
		closeGlobalDialog : function(callBackFunc) {
			$( "#dialog" ).cc_dialog({
				close: function(event, ui) {
					$(this).html("");
					if (typeof(callBackFunc) == "function"){
						callBackFunc();
						$(this).cc_dialog({
						   close: function(event, ui) { }
						});
					}
				}
			}).cc_dialog("close");
		}
	};
