blankImagePath = "/assets/style/img/blank.gif";
lang = "de";

INVALID_IMAGE_SIZE = 2;
INVALID_IMAGE_TYPE = 4;
INVALID_IMAGE_SIZE_TYPE = INVALID_IMAGE_SIZE | INVALID_IMAGE_TYPE;

$(function() {
	
	// browser support
	var $browserSupportInput = $("input#isBrowserSupported");
	if ($browserSupportInput.length > 0) {
		var isBrowserSupported = parseInt($browserSupportInput.val());
		if (!isBrowserSupported) {
			var browserSupportWnd = new BaseWindow();
			browserSupportWnd.setContainer($("div#browserPopup"));
			browserSupportWnd.setCloseButtonSelector("a.browser_check_close");
			browserSupportWnd.show();
		}
	}
	
	// blog link tooltip
	$("a.wordpress_blog").tooltip({ 
	    bodyHandler: function() {
			return "Bedandbutter's Blog";
    	}, 
    	showURL: false,
        track: true, 
        delay: 0, 
        showBody: " - ", 
        extraClass: "pretty fancy", 
        fixPNG: true, 
        opacity: 0.95 
	});
	
	// facebook link tooltip
	$("a.facebook").tooltip({ 
	    bodyHandler: function() {
			return "Bedandbutter's FaceBook Page";
		}, 
		showURL: false,
	    track: true, 
	    delay: 0, 
	    showBody: " - ", 
	    extraClass: "pretty fancy", 
	    fixPNG: true, 
	    opacity: 0.95 
	});		
	
});

function toggleInputUponRadio(radioGroup, inputField, removeClass) {
	var $objCont = inputField.parent().parent();
	
	if(radioGroup.attr("checked") != false && radioGroup.val() == 0) {
		$objCont.css("display", "none");
//		inputField.attr("disabled", "disabled");
	}
	
	radioGroup.click(function(){
		if($(this).val() == "0") {
			if(removeClass == true) {
				inputField.removeClass();
			}
			inputField.val("").attr("disabled", "disabled");
			$objCont.css("display", "none");
		} else {
//			inputField.removeAttr("disabled");
			$objCont.css("display", "block");
		}	
	});
}

function toggleInputUponCheck(checkbox, inputField, removeClass) {
	if(checkbox.attr("checked") == false) {
		inputField.attr("disabled", "disabled");
	}
	
	checkbox.click(function(){
		if($(this).attr("checked") == false) {
			if(removeClass == true) {
				inputField.removeClass();
			}
			inputField.val("").attr("disabled", "disabled");
		} else {
			inputField.removeAttr("disabled");
		}
	});
}

function bindCalIntervalChangeFunction(elementId, visibleFromId, hiddenFromId, visibleToId, hiddenToId, allowSameDays, showMsg) {
	$("#" + elementId).change(function(){
		validateCalenderDates(elementId, visibleFromId, hiddenFromId, visibleToId, hiddenToId, allowSameDays, showMsg);
	});	
}

function validateCalenderDates(elementId, visibleFromId, hiddenFromId, visibleToId, hiddenToId, allowSameDays, showMsg) {
	var fromDate = $("#" + hiddenFromId).val();
	var toDate = $("#" + hiddenToId).val();
	var expression = false;
	if(allowSameDays === true) {
		expression = fromDate > toDate; 
	} else if(allowSameDays === false) {
		expression = fromDate >= toDate;
	}
	

	if(expression) {
		fromDate = fromDate.replace(/-/g, "/");
		fromDate = Date.parse(fromDate);
		fromDate = new Date(fromDate);
		toDate = fromDate;
		if(allowSameDays === true) {
			toDate.setDate(fromDate.getDate());
		} else if(allowSameDays === false) {
			toDate.setDate(fromDate.getDate() + 1);
		}
		
		var year = toDate.getFullYear();
		var month = toDate.getMonth() + 1;
		month = month < 10 ? "0" + month : month;
		var date = toDate.getDate() < 10 ? "0" + toDate.getDate() : toDate.getDate();
		$("#" + hiddenToId).val(year + "-" + month + "-" + date);
		
		var validatedDate = date + "." + month + "." + year;
		if (lang == "en") {
			validatedDate = month + "/" + date + "/" + year;
		} else if (lang == "es" || lang == "fr") {
			validatedDate = date + "/" + month + "/" + year;
		}
		
		$("#" + visibleToId).val(validatedDate);
		
		if(showMsg === true) {
			triggerStatusMsg("calendar_wrong_interval");
		}
	}	
}

function triggerStatusMsgWithDisable(message, isDirectText, additionalClass) {
	_triggerStatusMsg(message, "disable", isDirectText, additionalClass);
}

function triggerStatusMsgWithTimeout(message, isDirectText, additionalClass) {
	_triggerStatusMsg(message, "timeout", isDirectText, additionalClass);
}

function triggerStatusMsg(message, isDirectText, additionalClass) {
	_triggerStatusMsg(message, "disable_and_timeout", isDirectText, additionalClass);
}

function _triggerStatusMsg(message, mode, isDirectText, additionalClass) { 
	
	if(isDirectText === undefined || isDirectText == false) {
		$.post("/" + lang + "/message/", {key: message}, function(response){
			message = response;
			_doShowStatusMsg(message, mode, additionalClass);
		});
	} else {
		_doShowStatusMsg(message, mode, additionalClass);
	}
	
}

function _doShowStatusMsg(message, mode, additionalClass) {
	var $cont = $(".status_msg");
	if (additionalClass !== undefined) {
		$cont.addClass(additionalClass);
	}
	$("p", $cont).html("");
	$("p", $cont).append(message);
	$cont.fadeIn("normal");
	if(mode == "timeout") {
		setTimeout("_hideStatusMsg()", 2200);
	} else if(mode == "disable") {
		$("select").attr("disabled", "disabled");
		$("input").attr("disabled", "disabled");
	} else if(mode == "disable_and_timeout") {
		$("select").attr("disabled", "disabled");
		$("input").attr("disabled", "disabled");
		setTimeout(function () {
			$(".status_msg").fadeOut("normal", function() {
				
				if (additionalClass !== undefined) {
					$cont.removeClass(additionalClass);
				}
				
				$("p", $cont).text("");
				$("select").removeAttr("disabled");	
				$("input").removeAttr("disabled");
			});	
		}, 2200);
	}
	
	$(".status_close", $cont).unbind("click");
	$(".status_close", $cont).click(function(event) {
		event.preventDefault();
		_hideStatusMsg();
		if(mode == "disable" || mode == "disable_and_timeout") {
			$("select").removeAttr("disabled");	
			$("input").removeAttr("disabled");
		}
	});	
}

function _hideStatusMsg() {
	$(".status_msg").fadeOut("normal", function() {
		$(".status_msg").attr("class", "status_msg");
		$(".status_msg p").text("");
	});	
}

function closeStatusMsg() {
	var $cont = $(".status_msg");
	if($cont.is(":visible")) {
		$(".status_close", $cont).click();
	}
}

function addTooltip(hoverObjectId, bodyContainerId) {
	hoverObjectId = "#" + hoverObjectId;
	bodyContainerId = "#" + bodyContainerId;
	if($(bodyContainerId).size() > 0) {
		$(hoverObjectId).tooltip({ 
		    bodyHandler: function() {
				return $(bodyContainerId).html();
	    	}, 
	    	showURL: false,
	        track: true, 
	        delay: 0, 
	        showBody: " - ", 
	        extraClass: "pretty fancy", 
	        fixPNG: true, 
	        opacity: 0.95 
		});		
	}	
}

// html box handlers
function handleHtmlBox(type, $dependancyObj) {	
	var $mainCont = $("div#" + type + "_htmlbox_main_cont");
	var $featuresTextareas = $("textarea[id^='" + type + "_htmlbox_']", $mainCont);
 
	$featuresTextareas.each(function(){
		var $target = $(this);
		$target.htmlbox({
		    toolbars: [["removeformat", "bold", "ol", "ul"]],
		    idir: "/assets/js/lib/HtmlBox/images/",
		    about: false
		});
	});
 
	var $featuresTextareaCont = $("div#" + type + "_htmlbox_cont", $mainCont);
	var $showBoxBtn = $("a#show_" + type + "_htmlbox");
	var $showBoxText = $("div#show_" + type + "_text");

	if($dependancyObj !== undefined) {
		var $iFrame = $("iframe[id^='" + type + "_htmlbox_']", $mainCont);
		var $iFrameBody = $([]);
		$iFrame.each(function() {
			var $target = $(this);
			var iFrameDoc = $target[0].contentWindow.document;
			iFrameDoc = iFrameDoc.getElementsByTagName("body");
			iFrameDoc = iFrameDoc[0];
			$iFrameBody = $iFrameBody.add($(iFrameDoc));
		});

		if($dependancyObj.is(":radio")) {
			if($dependancyObj.filter(":checked").val() == 0) {
				$featuresTextareas.attr("disabled", "disabled");
				_bindHtmlBoxNopClick($showBoxBtn);
				$showBoxText.css("display", "none");
			} else {
				$featuresTextareas.removeAttr("disabled");
				_bindHtmlBoxShowClick($showBoxBtn, $mainCont, type);
				$showBoxText.css("display", "block");
			}
			
			$dependancyObj.click(function() {
				_bindHtmlBoxNopClick($showBoxBtn);
				if($(this).val() == "0") {
					_hideHtmlBox($featuresTextareaCont);
					$featuresTextareas.val("");
					$iFrameBody.each(function() {
						this.innerHTML = "";
					});
					$featuresTextareas.attr("disabled", "disabled");
					$showBoxText.css("display", "none");
				} else {
					$featuresTextareas.removeAttr("disabled");
					_bindHtmlBoxShowClick($showBoxBtn, $mainCont, type);
					$showBoxText.css("display", "block");
				}	
			});
		} else if($dependancyObj.is(":checkbox")) {
			if(!$dependancyObj.is(":checked")) {
				$featuresTextareas.attr("disabled", "disabled");
				_bindHtmlBoxNopClick($showBoxBtn);
			} else {
				$featuresTextareas.removeAttr("disabled");
				_bindHtmlBoxShowClick($showBoxBtn, $mainCont, type);
			}
			
			$dependancyObj.click(function() {
				_bindHtmlBoxNopClick($showBoxBtn);
				if(!$(this).is(":checked")) {
					_hideHtmlBox($featuresTextareaCont);
					$featuresTextareas.val("");
					$iFrameBody.each(function() {
						this.innerHTML = "";
					});
					$featuresTextareas.attr("disabled", "disabled");
				} else {
					$featuresTextareas.removeAttr("disabled");
					_bindHtmlBoxShowClick($showBoxBtn, $mainCont, type);
				}	
			});			
		}
	} else {
		_bindHtmlBoxShowClick($showBoxBtn, $mainCont, type);
	}
	
	$showBoxBtn.tooltip({ 
	    bodyHandler: function() {
        	return $featuresTextareas.val();
    	}, 
    	showURL: false,
        track: true, 
        delay: 0, 
        extraClass: "hover_popup_box", 
        fixPNG: true, 
        opacity: 0.95 
	});	
}

function _stripBr($element) {
	var brPattern = /^[\s]*<br>[\s]*$/;
	if(brPattern.test($element.val())) {
		$element.val("");
	}
}

function _showHtmlBox($boxCont) {
	$boxCont.css("margin-right", "17px");
}

function _hideHtmlBox($boxCont) {
	$boxCont.css("margin-right", "-300px");
}

function _bindHtmlBoxNopClick($element) {
	$element.css("display", "none");
	$element.unbind("click");
	$element.click(function(event) {
		event.preventDefault();
		return;
	});	
}

function _bindHtmlBoxShowClick($element, $window, type) {
	
	$("a.close_window", $window).unbind("click");
	$("a.close_window", $window).click(function(event){
		event.preventDefault();
		$("textarea[id^='" + type + "_htmlbox_']").each(function() {
			_stripBr($(this));			
		});
		$window.css("margin-right", "-500px");
	});

	$element.css("display", "block");
	$element.unbind("click");
	$element.click(function(event) {
		event.preventDefault();
		$window.css("margin-right", "150px");
		$window.css("height", "305px");
		$window.css("margin-top", "-121px");
		
		var $langBtns = $("a[id^='" + type + "_lang_']", $window);
		$langBtns.unbind("click");
		$langBtns.click(function(event) {
			event.preventDefault();
			
			var $target = $(this);
			var id = $target.attr("id");
			var lang = id.replace(type + "_lang_", "");
			
			// change style of buttons
			var $parent = $target.parent("span");
			var $parentClass = $parent.attr("class");
			if($parentClass.indexOf("_active") == -1) {
				var $oldElem = $("span[class$='_active']", $window);
				var oldElemClass = $oldElem.attr("class");
				oldElemClass = oldElemClass.replace("_active", "");
				$oldElem.attr("class", oldElemClass);
				$parentClass += "_active";
				$parent.attr("class", $parentClass);	
			}
			
			// Change html box containers
			var $containers = $("div[id^='" + type + "_htmlbox_cont_']", $window);
			$containers.each(function(i) {
				var $cont = $(this);
				if($cont.attr("id") == (type + "_htmlbox_cont_" + lang)) {
					_showHtmlBox($cont);
				} else {
					_hideHtmlBox($cont);
				}
			});
			
		});
		
		var activeLang = $langBtns.parent("span[class$='_active']").attr("class");
		activeLang = activeLang.replace("_active", "");
		activeLang = $.trim(activeLang.replace("name_lang_", ""));
		var $containers = $("div[id^='" + type + "_htmlbox_cont_']", $window);
		$containers.each(function(i) {
			var $cont = $(this);
			if($cont.attr("id") == (type + "_htmlbox_cont_" + activeLang)) {
				_showHtmlBox($cont);
			} else {
				_hideHtmlBox($cont);
			}
		});
	});	
}

function decodeHex(hex) {
    var hexL = hex.length;
    var ret = "";
    for (var i = 0; i<hexL; i+=2) {
        ret += String.fromCharCode("0x"+hex.charAt(i)+hex.charAt(i+1));
    }
    return ret;
}


function getCurrency() {
	var url = window.location.href;
	var res = url.match(/currency\/[A-Z]{3}/);
	if (res != null && res.length >= 1) {
		var currency = res[0].replace("currency/", "");
		return currency;
	}
	return "EUR";
}

function getCurrencySign(currency) {
	var signs = {};
	signs["EUR"] = " &euro;";
	signs["GBP"] = " &pound;";
	signs["USD"] = " $";
	signs["AUD"] = " $";
	
	if (currency === undefined) {
		currency = getCurrency();
	}
	
	return signs[currency]; 
}

