// Static
WR.JerseyPromo = function() {
	
	var Dom = YAHOO.util.Dom;
	var Event = YAHOO.util.Event;
	var Anim = YAHOO.util.Anim;
	var Connect = YAHOO.util.Connect;
	
	
	var tooltip = null;
    
    var blinkMaxCount = 6;
    var blinkElement = null;
    var blinkInterval = null;

    var preloader = new NB.ImagePreloader();
    preloader.preload([
       "tooltip/bd.png",
       "tooltip/close.gif",
       "tooltip/ft.png",
       "tooltip/hd.png"
       ],
       "/plugins/extensions/default_2009_trikot/resources/images/"
    );
	
	var blueTooltip = Dom.get('jersey09-tooltip');
	
	var termsDialog = null;
	var privacyDialog = null;
	var extraPrivacyDialog = null;
    
	
	function focusFieldError(element)
    {
        element.focus();
        var blinkCount = 0;
        
        if(blinkInterval && blinkElement)
        {
            clearInterval(blinkInterval);
            blinkElement.style.borderColor = "#CDB897";
        }
        
        blinkElement = element;
        
        var defaultColor = element.style.borderColor;
        blinkInterval = setTimeout(blink, 200);
        
        function blink() {
            var curColor = element.style.borderColor;
            element.style.borderColor = (curColor == defaultColor ) ? "#d32121" : defaultColor;
            
            blinkCount++;
            
            if(blinkCount < blinkMaxCount)
            {
                blinkInterval = setTimeout(blink, (blinkCount % 2 == 0) ? 200 : 400);          
            }
            else
            {
                blinkElement = null;
            }
        
        }
    }
	
	function initTooltip()
    {
        tooltip = document.createElement("div");
        tooltip.id = "error-tooltip";
		tooltip.style.zIndex = 3000;
		tooltip.setAttribute("class", "noblock");
        tooltip.innerHTML = [
          '<div class="hd"></div>',
          '<div class="bd"><div></div></div>',
          '<div class="ft"></div>',
          '<a href="#close" class="close"></a>'
        ].join("");
		
		Event.on(tooltip.lastChild, "click", WR.JerseyPromo.hideErrorTooltip);
        
        document.body.appendChild(tooltip);
        
        
    }
	
	var that = {
		hideTooltip : function() {
			blueTooltip.style.visibility = "hidden";
		},
		hideErrorTooltip : function(e) {
            if(!tooltip)
            {
                return;
            }
            
            try
            {
                e =  Event.getEvent(e);
                Event.stopEvent(e);
            }
            catch(e) {}
            
            var bd = tooltip.firstChild.nextSibling;
            bd.firstChild.innerHTML = "";
            
            Dom.setStyle(tooltip, "visibility", "hidden");            
        },
		isTooltipVisible : function() {
			return (Dom.getStyle("visibility") == "visible");
		},
		sendForm : function(formCheckCfg, formId, url, callbackFn, callbackScope) {
            var form = Dom.get(formId);
            
            this.hideErrorTooltip();
            
            var formCheck = new FormCheck(formCheckCfg);
            var formVars = formCheck.getFormVars(formId);
            formCheck.check(formVars);
            
            var result = {
                success : false
            }
            
            if(formCheck.hasErrors())
            {
                var errors = formCheck.getErrorTextsAssoc();
                
                var field = errors[0].field;
                var message = errors[0].message;
            
			    var fieldEl = form[field];
			    this.showErrorTooltip(message, fieldEl);
                
                //restoreIcon();
                callbackFn.call(callbackScope, result);                  
            }
            else
            {
                var callback = {
                    success : function(o) {
                        result = null;
                        try
                        {
                          eval("var result=" + o.responseText);
                        }
                        catch(e)
                        {
                            alert("Leider konnte Deine Anfrage nicht übertragen werden! Bitte versuche es später erneut!");
                        }
                        
                        if(!result.success)
                        {
                            for(var field in result.errors)
                            {
								that.showErrorTooltip(result.errors[field], form[field]);  								
                            }
                        }
                        
                        //restoreIcon();
                        callbackFn.call(callbackScope, result);
                    }
                };     
				
				Connect.setForm(form);
				Connect.asyncRequest("post", url, callback);
            }
            
        },
		showErrorTooltip : function(text, element) {
            
			if(tooltip === null)
            {
                initTooltip();
            }
			
            if(element.nodeName && element.nodeName.toLowerCase() == "input")
            {
                setTimeout(function() {
                    focusFieldError(element);
                }, 500);
            }
            
            if(element.length)
            {
                element = element[0];
            }
            
            var elementPos = Dom.getXY(element);
            elementPos[0] += (element.offsetWidth - tooltip.offsetWidth) / 2;
            elementPos[1] -= 25;
            
            Dom.setXY(tooltip, elementPos);
            Dom.setStyle(tooltip, "visibility", "visible");
            
            var bd = tooltip.firstChild.nextSibling;
            Dom.setStyle(bd, "height", 0);
            
            bd.firstChild.innerHTML = text;
            var height = bd.firstChild.offsetHeight + 10;
            
            var newTop = parseInt(Dom.getStyle(tooltip, "top").replace("", ""), 10) - height;
            
            var expandBdAnim = new Anim(bd, {height: {to: height}}, 1, YAHOO.util.Easing.elasticOut);
            expandBdAnim.animate();
            
            var fadeIn = new Anim(bd.firstChild, {opacity : {from: 0, to: 1}}, .5, YAHOO.util.Easing.easeOut);
            fadeIn.animate();
            
            var expandAnim = new Anim(tooltip, {top: {to: newTop}}, 1, YAHOO.util.Easing.elasticOut);
            expandAnim.animate();
            
        },
		showTooltip : function(text, element) {
			var xy = Dom.getXY(element);
			xy[0] -= 6;
			xy[1] -= blueTooltip.offsetHeight;
			Dom.setXY(blueTooltip, xy);
			
			blueTooltip.style.visibility = "visible";
			var blueTooltipCnt = blueTooltip.getElementsByTagName("div")[0];
			blueTooltipCnt.innerHTML = text;
			var width = blueTooltipCnt.offsetWidth - 25;
			blueTooltip.getElementsByTagName("img")[1].width = width;
		},
		showTermsDialog : function(e) {
			e = Event.getEvent(e);
			Event.stopEvent(e);
			
			this.hideErrorTooltip();
			
			if(termsDialog == null)
			{
				termsDialog = new MooTools.NB.Custom.Dialog('terms-dialog');
			}
			termsDialog.show();
		},
		showPrivacyDialog : function(e) {
            e = Event.getEvent(e);
            Event.stopEvent(e);
			
			this.hideErrorTooltip();
			
			if(privacyDialog == null)
            {
                privacyDialog = new MooTools.NB.Custom.Dialog('privacy-dialog');
            }
            privacyDialog.show();
        },
        showExtraPrivacyDialog : function(e) {
            e = Event.getEvent(e);
            Event.stopEvent(e);
            
            this.hideErrorTooltip();
            
            if(extraPrivacyDialog == null)
            {
                extraPrivacyDialog = new MooTools.NB.Custom.Dialog('extra-privacy-dialog');
            }
            extraPrivacyDialog.show();
        }
		
	};
	
	return that;
}();

