﻿$(document).ready(function () {
    
	// Lägg till tabellrad
	function addInput() {
	 var newInput =  $("input#link").clone();
	 newInput.val('').appendTo(".form-input.link");
	 newInput.attr("id") = " ";
	}
	 
	 $('a.btn.add').click(function(event){
		event.preventDefault ? event.preventDefault() : event.returnValue = false;
		addInput();
	 });
	 
	// Clear form
	$("a.btn.reset").click(function(event) {
		event.preventDefault ? event.preventDefault() : event.returnValue = false;
			  // iterate over all of the inputs for the form
			  // element that was passed in
			  $(':input','#form')
			 .not(':button, :submit, :reset, :hidden')
			 .val('')
			 .removeAttr('checked')
			 .removeAttr('selected');
		});

	// Clear form with confirmbox
	$("a.btn.reset-confirmbox").click(function(event) {
	
		if (confirm('Formuläret kommer att tömmas. Klicka på OK för att fortsätta.'))
		{
			event.preventDefault ? event.preventDefault() : event.returnValue = false;
				  // iterate over all of the inputs for the form
				  // element that was passed in
				  $(':input','#form')
				 .not(':button, :submit, :reset, :hidden')
				 .val('')
				 .removeAttr('checked')
				 .removeAttr('selected');
		 }
		});
		
	// Check if carousel should be visible
    var visible = getCookie("CarouselVisible");
    if (visible == null || visible == "1") {
        $("#carousel").addClass('expanded');
        $(".toggle").addClass('expanded');
    }
    else {
        $("#carousel").removeClass('expanded');
        $(".toggle").removeClass('expanded');
    }

    /* Expandable modules */
    $(".toggle").click(function () {
        if ($("#carousel").is(":visible")) {
            setCookie("CarouselVisible", "0", 1);
        }
        else {
            setCookie("CarouselVisible", "1", 1);
        }

        $(this).toggleClass("expanded");
        $("#carousel").slideToggle().addClass('expanded');
    });
	
    // jQuery Corners: http://jquery.malsup.com/corner/
    var cornerColors = ($.browser.msie && $.browser.version < "9.0") ? " cc:#fff" : "";
    function roundImageCorners(imageDiv, radius) {
        var imageElem = imageDiv.find("img");
        imageDiv
			.css("background", "url(" + imageElem.attr("src") + ")")
			.width(imageElem.width())
			.height(imageElem.height())
			.corner(radius + "px" + cornerColors);
        imageElem.hide();
    }

    $(".image").each(function () {
        roundImageCorners($(this), 5);
    });
    $(".standardimage").each(function () {
        roundImageCorners($(this), 10);
    });
    $("#comment-button a, #comment-form-send a").corner("3px keep");
    $(".comment-post").corner("4px" + cornerColors);
    $(".spot .background").corner("4px" + cornerColors);


    /* Default form-values */
    function setDefaultValueLabel(formElem, defaultVal) {
        if (!formElem.val())
            formElem.val(defaultVal);
        formElem.focus(function () {
            if (formElem.val() == defaultVal)
                formElem.val("");
        }).blur(function () {
            if (formElem.val() == "")
                formElem.val(defaultVal);
        });
    }
    $("input.default").each(function () {
        var defaultVal = $(this).val();
        var input = $(this);
        setDefaultValueLabel(input, defaultVal);
    });
    $("#search label, #login label, #form:not(#form.block_label) label, #comment-form label").each(function () {
        var defaultVal = $(this).text();
        var input = $("#" + $(this).attr("for"));
        setDefaultValueLabel(input, defaultVal);
    });

    /* Fake :hover on a non link-element in IE6 */
    if ($.browser.msie && $.browser.version == "6.0") {
        $("li.topitem").hover(function () {
            $(this).find(".megadrop").show();
        }, function () {
            $(this).find(".megadrop").hide();
        });
    }

		// Slideshow
		if($("#slideshow-controls").length) {
			$("#slideshow-controls a").click(function() {
				if(!$(this).hasClass("selected")) {
					var id = $(this).attr("id").split("_");
					
					$("#slideshow .slide:visible").css({zIndex:99}).fadeOut(300);
					$("#slideshow #slide_"+id[1]).css({zIndex:90}).fadeIn(300);
					$("#slideshow #slide_"+id[1]).css("left", "0").css("top", "0").css("position", "absolute");
					
					$("#slideshow-controls a.selected").removeClass("selected");
					$(this).addClass("selected");
					
					var height = $("#slideshow #slide_"+id[1]).show().height();
					$('#slideshow').animate({ height: height}, 300, function() {
						if(typeof(google) !== 'undefined') {
							//var myLatlng = map.getCenter();
							google.maps.event.trigger(map, "resize");
    	    		map.setCenter(mapCenter);
							if(bounds) {
								map.fitBounds(bounds);
							}
						}
					});
				}
			});
		}	
    /*
    * jcarousel
    */
    /*if($("#carousel-holder").length){
    jQuery('#carousel-holder').jcarousel({
    wrap: 'circular',
    scroll: 1,
    auto: 4,
    initCallback: initCarousel,
    buttonNextHTML: null,
    buttonPrevHTML: null
    });
    }*/
    if ($("#carousel-holder").length) {
        /*$("#carousel ul li").each(function() {
        roundImageCorners($(this), 10);
        });*/
        if ($("#carousel-holder").children("li").length > 1) {
            $("#carousel-holder li").hide();
            //visible_li = $("#carousel-holder li:first");
            $("#carousel-holder li:first").show();

            var myInterval = window.setInterval(function () {
                var current_li = $("#carousel-holder li:visible");
                var next_li = current_li.next().length == 0 ? $("#carousel-holder li:first") : current_li.next()
                next_li.fadeIn(2000);
                current_li.fadeOut(2000);
            }, 6500);
        }
    }


    /* Toggle comment-form */
    $("#comment-button a").click(function () {
        $("#comment-form").slideToggle();
        return false;
    });

    /* Search-related */
    function submitPageSearch(queryCtrl, urlCtrl, defaultValue) {
        var query = $(queryCtrl).val();
        if (query == "")
            return;
        var url = $(urlCtrl).val();

        if (defaultValue != null && query == defaultValue)
            return false;

        url += encodeURIComponent(query);
        document.location = url;
    }

    // Search trigged from the search page
    $("#pagesearch a").click(function () {
        submitPageSearch("#pagesearch-query", "#searchpage-url", null);
        return false;
    });
    $("#pagesearch-query").keydown(function (e) {
        if (e.keyCode == 13) {
            submitPageSearch("#pagesearch-query", "#searchpage-url", null);
            return false;
        }
    });

    // Page search related inside top-section
    $("#search-button a").click(function () {
        var defVal = $("#search-query-top-defvalue").val();
        submitPageSearch("#search-query", "#searchpage-top-url", defVal);
        return false;
    });
    $("#search-query").keydown(function (e) {
        if (e.keyCode == 13) {
            var defVal = $("#search-query-top-defvalue").val();
            submitPageSearch("#search-query", "#searchpage-top-url", defVal);
            return false;
        }
    });

    // Login-button
    $("#login-button a").click(function () {

        var emailDefVal = $("#login-email-defval").val();
        var pwdDefVal = $("#login-email-defval").val();

        var emailClientId = $("#login-email-client-id").val();
        emailClientId = "#" + emailClientId;
        var emailVal = $(emailClientId).val();

        var pwdClientId = $("#password-client-id").val();
        pwdClientId = "#" + pwdClientId;
        var pwdVal = $(pwdClientId).val();

        if (jQuery.trim(emailVal).length > 0 &&
            emailVal != emailDefVal &&
            jQuery.trim(pwdVal).length > 0 &&
            pwdVal != pwdDefVal)
            return true;

        alert("Inloggningen misslyckades.\n\nVänligen kontrollera ditt användarnamn och lösenord!");
        return false;
    });

    // Member associations-dropdown
    /*$("#member-org-selectlink").click(function() {

    var defVal = $("#member-org-selector-defaultval").val();

    // Get the selected value from the selector
    var selectorID = $("#member-org-selector-id").val()
    var selectorCtrl = document.getElementById(selectorID);

    // Check that it isn't the default value we deal with...
    if (selectorCtrl == null || selectorCtrl.value == defVal) {
    alert("Ingen medlemsförening vald");
    return;
    }

    var currentPurl = $("#" + selectorID + " :selected").attr('purl');
    if (currentPurl == null || jQuery.trim(currentPurl).length == 0)
    return;

    //alert('selected value: ' + currentPurl);
    document.location = currentPurl;

    return false;
    });*/
    $("select.OrganizationsList").change(function () {
        var purl = $("select.OrganizationsList :selected").attr("purl");
        if (purl.substr(-18) == "?newWindow123=true") {
            var t = "_blank";
            purl = purl.substr(0, purl.length - 18);
        } else {
            var t = "_self";
        }
        $("a#member-org-selectlink").attr("target", t);
        $("a#member-org-selectlink").attr("href", purl);
    });


    $(".thumbnail a").each(function () {
        $(this).attr('onclick', '').unbind('click');
    });

    $(".thumbnail a").click(function (event) {
        event.preventDefault ? event.preventDefault() : event.returnValue = false;
        $.fancybox({ "href": $(this).children("img").attr("src") });
    });


    /*
    * Jcarousel init
    */
    /*function initCarousel(carousel) {
    jQuery('#carousel-next').bind('click', function() {
    carousel.next();
    carousel.startAuto(4);
    return false;
    });
    jQuery('#carousel-prev').bind('click', function() {
    carousel.prev();
    carousel.startAuto(4);
    return false;
    });
		
    $("#carousel").hover(function() {
    $("#carousel-prev, #carousel-next").show();
    carousel.stopAuto();
    }, function() {
    $("#carousel-prev, #carousel-next").hide();
    carousel.startAuto(4);
    });
		
    $("#carousel ul li").each(function() {
    roundImageCorners($(this), 10);
    });
    }*/

    /* Question 1 */
    $("#form input[name='qmember']").change(function () {
        $(this).val() == "yes" ? $(".formcontainer1_content").show() : $(".formcontainer1_content").hide();
		$(".formcontainer1 input[type='text']").toggleClass("validate").toggleClass("required").toggleClass("error");
    });

    /* Question 3 */
    $("#form input[name='medlemstyp']").change(function () {
        $(this).attr("id") == "supportmedlem" ? $(".association").hide() : $(".association").show();
    });

    /* Clear passwords */
    my_form = new Form();
    //my_form.addSubmitAction("a", "submit");
    my_form.clearPassword("password-clear");
    my_form.validate("validate");
});


/*
 * Set Element object used in tables.
 */
Element = new Object()
Element.toggle = function(obj) {
	return false;
}


/** 
 * Form - Javascript class for form/input actions.
 * V 0.6
 * Author: Johan Runesson
 */

Form = function() {
	Form = this;
	Form.addSubmitAction = function(element, fieldClass) {
		if(element == "a") {
			$("a." + fieldClass).click(function() {
				$(this).closest("form").submit();
      		});
    	}
  	}
 
	Form.clearPassword = function(fieldClass) {
    	$("input." + fieldClass).each(function() {
    		$(this).after('<input type="text" name="'+$(this).attr("name")+'-clear" class="'+$(this).attr("class")+' '+fieldClass+'-clear" size="'+$(this).attr("size")+'" value="'+$(this).val()+'" />');
    		$(this).hide();
			$("input." + fieldClass + "-clear").removeClass("match");
			$("input." + fieldClass + "-clear").removeClass("required");
    	});
    	$("input." + fieldClass + "-clear").focus(function() {
    		$(this).hide();
    		var passwordField = $(this).prev("input." + fieldClass);
    		var defaultValue = passwordField[0].defaultValue;
    		passwordField.show();
    		passwordField.focus();
    		passwordField.blur(function() {
    			if($(this).val() == "" || $(this).val() == defaultValue) {
    				$(this).next("input." + fieldClass + "-clear").show();
    				$(this).next("input." + fieldClass + "-clear").val(defaultValue);
    				$(this).hide();
    			}
				passwordField.hasClass("error") ? $(this).next("input." + fieldClass + "-clear").addClass("error") : $(this).next("input." + fieldClass + "-clear").removeClass("error");
    		});
    	});
	}
 
	Form.inputDefaults = function(fieldClass) {
    	$("input." + fieldClass).live("focus", function(){
			if($(this).val() == $(this)[0].defaultValue){ $(this).val(""); }
    		$(this).addClass("active");
    		$(this).blur(function(){
    			if($(this).val() == ""){
        			$(this).val($(this)[0].defaultValue);
        			$(this).removeClass("active");
        		}
      		});
    	});
  	}
 
	Form.enterSubmit = function(fieldClass) {
	    $("input." + fieldClass).keydown(function(event) {
			if (event.keyCode == 13) {
    			$(this).closest("form").submit();
    		}
 		});
	}
 
	Form.validate = function(fieldClass) {
		var addSubmitValidation = false;
		$("input." + fieldClass).each(function() {
			addSubmitValidation = true; 
			// Check required
			if($(this).hasClass("required")) {
				$(this).blur(function(){
					Form.validateRequired($(this)) ? $(this).removeClass("error") : $(this).addClass("error");
				});
			}
			// Check email
			if($(this).hasClass("email")) {
				$(this).blur(function(){ 
					Form.validateEmail($(this)) ? $(this).removeClass("error") : $(this).addClass("error");
      			});		
			}
			// Check personnumber
			if($(this).hasClass("personnumber")) {
				$(this).blur(function(){ 
					Form.validatePersonnumber($(this)) ? $(this).removeClass("error") : $(this).addClass("error");
      			});		
			}
			// Check phone
			if($(this).hasClass("phone")) {
				$(this).blur(function(){ 
					Form.validatePhone($(this)) ? $(this).removeClass("error") : $(this).addClass("error");
      			});		
			}
			// Check match
			if($(this).hasClass("match")) {
				$(this).blur(function(){
					//alert(Form.validateMatch($(this)));
					if(Form.validateMatch($(this))) {
						$("input.match").each(function() {
							$(this).removeClass("error");
						});
					} else {
						$("input.match").each(function() {
							$(this).addClass("error");
						});
					}
      			});		
			}
		});
		
		if(addSubmitValidation) {
			//$("input." + fieldClass + ":first").closest("form").submit(function() {
			$("a.submit:first").click(function() {
				var valid = true;
				var output = "";
				$("input." + fieldClass).each(function() {
					// Required
					if($(this).hasClass("required") && Form.validateRequired($(this))) {
						$(this).removeClass("error");
					} else if($(this).hasClass("required")) {
						$(this).addClass("error");
						output += "\"" + $(this)[0].defaultValue + "\" är obligatoriskt.<br/>";
						valid = false;
					}
					// Email
					if($(this).hasClass("email") && Form.validateEmail($(this))) {
						$(this).removeClass("error");
					} else if($(this).hasClass("email")) {
						$(this).addClass("error");
						output += "Du måste ange en korrekt E-post.<br/>";
						valid = false;
					}
					// Personnumber
					if($(this).hasClass("personnumber") && Form.validatePersonnumber($(this))) {
						$(this).removeClass("error");
					} else if($(this).hasClass("personnumber")) {
						$(this).addClass("error");
						output += "Du måste ange ett korrekt personnummer (ååmmdd-xxxx).<br/>";
						valid = false;
					}
					// Phone
					if($(this).hasClass("phone") && Form.validatePhone($(this))) {
						$(this).removeClass("error");
					} else if($(this).hasClass("phone")) {
						$(this).addClass("error");
						output += "Du måste ange ett korrekt telefonnummer.<br/>";
						valid = false;
					}
					// Match
					if($(this).hasClass("match") && Form.validateMatch($(this))) {
						$("input.match").each(function() {
							$(this).removeClass("error");
						});
					} else if($(this).hasClass("match")) {
						$("input.match").each(function() {
							$(this).addClass("error");
						});
						
						if($(this).val().length < 6) {
							output += "Lösenordet måste bestå av minst 6 tecken.<br/>";
						} else {
							output += "Lösenorden stämmer inte överrens.<br/>";
						}
						valid = false;
					}
				});
				// association
				if($("#form input[name='medlemstyp']:checked").attr("id") != "supportmedlem") {
					if($("#form .association-select").val() == "") {
						output += "Du måste ange en förening såvida du inte vill bli supportmedlem.<br/>";
						valid = false;
					}
				}
				if(!valid) {
					$("#form-feedback").html(output);
					$("#form-feedback").show();
				}
				return valid;
			});
		}
	}
	
	Form.validateRequired = function(field) {
		return field.val() == "" || field.val() == field[0].defaultValue ? false : true;
	}
	Form.validateEmail = function(field) {
		if(!field.hasClass("required") && (field.val() == "" || field.val() == field[0].defaultValue)){
			return true;
		} else {
			var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
			return emailPattern.test(field.val()) ? true : false;
		}
	}
	Form.validatePersonnumber = function(field) {
		if(!field.hasClass("required") && (field.val() == "" || field.val() == field[0].defaultValue)){
			return true;
		} else {
			var persnr = field.val().replace(/-/g, "");
			persnr = persnr.replace(/ /g, "");
			return isNaN(persnr) || persnr.length < 10 ? false : true;
		}
	}
	Form.validatePhone = function(field) {
		if(!field.hasClass("required") && (field.val() == "" || field.val() == field[0].defaultValue)){
			return true;
		} else {
			var phone = field.val().replace(/ /g, "");
			var phonePattern = /^[0-9-()+]{5,}$/;
			return phonePattern.test(phone) ? true : false;
		}
	}
	Form.validateMatch = function(field) {
		var valid = true;
		$("input.match").each(function() {
			if(field.val() != $(this).val()) { valid = false; }
		});
		if(field.val().length < 6) { valid = false; }
		return valid;
	}
}


function setCookie(c_name, value, exdays) {
    var exdate = new Date();
    exdate.setDate(exdate.getDate() + exdays);
    var c_value = escape(value) + ((exdays == null) ? "" : "; expires=" + exdate.toUTCString());
    document.cookie = c_name + "=" + c_value;
}


function getCookie(c_name) {
    var i, x, y, ARRcookies = document.cookie.split(";");
    for (i = 0; i < ARRcookies.length; i++) {
        x = ARRcookies[i].substr(0, ARRcookies[i].indexOf("="));
        y = ARRcookies[i].substr(ARRcookies[i].indexOf("=") + 1);
        x = x.replace(/^\s+|\s+$/g, "");
        if (x == c_name) {
            return unescape(y);
        }
    }
}
