/*
 * Main javascript
 *
 * Fier Concept & Design B.V. Utrecht
 * Auteur: G. Stevens
 *
 * versie: 0.2 -  januari 2010
 *
*/

$(document).ready(function() {
    // Default: disable submit button for questions
    $("#submit_question").attr("disabled", "true");

    // Bind change handler to radiobutton (on change enable/disable next button)
    $("input[name=survey_choice]").bind(($.browser.msie ? "click" : "change"), function() {       
       toggleQuestionSubmit();
       toggleActiveQuestion($(this));
    });

    $('.antwoordDiv textarea.required, #survey_choice_text, input.required[name=survey_email]').keyup(function(e){
       toggleQuestionSubmit();
       toggleActiveQuestion($(this));
    });

    // Bind validation handler to submit button
    $("#question-form").submit(function(event){
        var isValid =  validateQuestion();
        return isValid;
    });
  
    toggleQuestionSubmit();
  
    initImageHovers() ;

    themeTransition();
    
});

function themeTransition() {    
    $(".transition").fadeIn(2000)
        .removeClass("transition");
}

function toggleActiveQuestion($elem) {
    $elem.parent().parent().siblings().removeClass("active");
    $elem.parent().parent().addClass("active");


    /*
    if ($elem.hasClass("")

    $elem.toggleClass();
    //$elem.parent().parent().removeClass("antwoord1Text");
    //$elem.parent().parent().removeClass("antwoord1Text");
    $(".grijs").removeClass("antwoord2TextActive");

    $elem.parent().parent().addClass("antwoord2TextActive");
    */
}

function toggleQuestionSubmit() {
    var isValid = validateQuestion();
    if (isValid == true) {
        $("#submit_question").removeAttr("disabled");
        $("#submit_question").attr('src',  "images/btn_verder.png");
    } else {
        $("#submit_question").attr("disabled", "disabled");
        $("#submit_question").attr('src', "images/btn_verder_inactief.png");
    }
}

/* Hover images */
function initImageHovers() {
     $('img.hover, input[type=image]').hover(		
        function() {
			// Mouse in
           	var newSrc = $(this).attr("src").replace(/\.png$/,"_hover.png");
			$(this).attr("src",newSrc);
        },
        function () {
			// Mouse out
			var oldSrc = $(this).attr("src").replace(/_hover\.png$/,".png");
			$(this).attr("src",oldSrc)
        }
    ); // end hover
}

/* Question validation */
function validateQuestion() {
    var ok = true;
    var content;
    
    // 1. Check meerkeuze vragen
    var checkboxes = $("input[name='survey_choice']");
    if (checkboxes.length > 0) {
        // Als er meerkeuze vragen zijn, check of ze allemaal
        // geselecteerd zijn        
        var checkedCount = $('input[name=survey_choice]:checked').length
        ok  = ok && (checkedCount > 0);
      
        checkboxes.each(function() {
            if ($(this).hasClass('open_choice')) {
                var checked = $(this).attr('checked');
                if (checked) {
                    var text = $('#survey_choice_text').val();
                    ok = ok && (text != '');
                }

            }         
        });
    }
    
    // 2. Check open vraag
    if ($('textarea.required[name=survey_choice_textarea]').length >0) {
        content = $('textarea[name=survey_choice_textarea]').val();
        ok = ok && (content != '');
    }

    // 3. Check email
     if ($('input.required[name=survey_email]').length >0) {
        content = $('input[name=survey_email]').val();
        ok = ok && (content != '' && isEmail(content));        
    }
 
    return ok;
}

function validateContactForm() {
    var valid = true;

    if (!validateRequired())
        valid = false;
    if (!validateEmail()) {
        $("#contactFormError").html("Ongeldig email adres");
        valid = false;
    }
    toggleContactSubmit();
    return valid;
}

function toggleContactSubmit(isValid) {
    // First check if all requered fields a ok
    if (isValid == null)
        isValid = validateRequired(false)

    if (isValid == true) {
        $("#submit_contact").removeAttr("disabled");
        $("#submit_contact").attr('src',  "images/btn_contactformulier-verstuur.png");
    } else {
        $("#submit_contact").attr("disabled", "disabled");
        $("#submit_contact").attr('src', "images/btn_verstuur.png");
    }
}

function validatTellAFriend(showErrors) {
    if (showErrors == null) showErrors = true;
    
    var valid = true;

    if (!validateRequired())
        valid = false;
    if (!validateEmail(showErrors)) {        
        valid = false;
    }
    toggleTellAFriendSubmit(valid)
    return valid;
}

function toggleTellAFriendSubmit(isValid) {
    // First check if all requered fields a ok
    if (isValid == null)
        isValid = validateRequired(false)
    
    if (isValid == true) {
        $("#submit_tell_a_friend").removeAttr("disabled");
        $("#submit_tell_a_friend").attr('src',  "images/btn_contactformulier-verstuur.png");        
    } else {
        $("#submit_tell_a_friend").attr("disabled", "disabled");
        $("#submit_tell_a_friend").attr('src', "images/btn_verstuur.png");        
    }
}


function validateRequired(showErrors) {
    if (showErrors == null) showErrors = true;
    var complete = true;

    // Check required fields
    var reqFields = $('input.required, textarea.required');
    reqFields.each(function() {
        ok = $(this).val() != "";
        if (!ok && showErrors)
            $(this).addClass("error");
        else if (ok && showErrors)
            $(this).removeClass("error");

        complete = complete && ok;
    });
    return complete;
}

function validateEmail(showErrors) {
    if (showErrors == null) showErrors = true;

    // Check e-mail fields
    var emailFields = $('input.email');
    var complete = true;
    emailFields.each(function() {
        ok = isEmail($(this).val());
        if (showErrors == true) {
            if (!ok) {
                $(this).addClass("error");
                $(this).siblings(".form-error").html("Ongeldig e-mail adres");

                $("#taf-form-error").html("<br/>Ongeldig e-mail adres").show();
                $("#taf-form-text").hide();
            } else {
                $(this).removeClass("error");
                $(this).siblings(".form-error").html("");

                $("#taf-form-error").html("").hide();
                $("#taf-form-text").show();
            }
        }
        complete = complete && ok;
    });
    return complete;
}

function isEmail(text) {   
   //var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;   
   var reg = /^[-a-zA-Z0-9][-.a-zA-Z0-9]*@[-.a-zA-Z0-9]+(\.[-.a-zA-Z0-9]+)*\.(com|edu|info|gov|int|mil|net|org|biz|name|museum|coop|aero|pro|tv|[a-zA-Z]{2})$/;
   return (reg.test(text));
}

/*
 * http://digitalbush.com/projects/progress-bar-plugin/
 */
(function($) {
	//Main Method
	$.fn.reportprogress = function(val,maxVal, progressCssClass) {
		var max=100;
		if(maxVal)
			max=maxVal;
		return this.each(
			function(){
				var div=$(this);
				var innerdiv=div.find(".progress");

				if(innerdiv.length!=1){
					innerdiv=$("<div class='progress " + progressCssClass + "'></div>");
					//div.append("<div class='text'>&nbsp;</div>");
					//$("<span class='text'>&nbsp;</span>").css("width",div.width() ).appendTo(innerdiv);
					div.append(innerdiv);
				}

               var oDivWidth = jQuery(this).css('width');
               var oDivWidthNum = parseFloat(oDivWidth, 10);
               var ratio = val/max;
               var width = ratio * oDivWidthNum;               
               innerdiv.css("width",width +"px");

				//var width=Math.round(val/max*100);
				//innerdiv.css("width",width +"%");
                
                // Render text in proressbar
				//div.find(".text").html(width+" %");
			}
		);
	};
})(jQuery);
