var hiddenHeadline;
function openDropdown(e) {
    $(this).addClass("dropdown_open");
    hiddenHeadline = (this.id).match(/\d+\.?\d*/g);
    document.getElementById("ddheadline_" + hiddenHeadline).style.display = "none";
}

function closeDropdown(e) {
    $(this).removeClass("dropdown_open");
    document.getElementById("ddheadline_" + hiddenHeadline).style.display = "block";
}

function getHiddenId(elm) {
    elm = $(elm);
    if (!elm.data("hiddenid")) {
        var id = $(elm).eq(0).closest("[id^='hiddenid_']").attr("id");
        id = id.substr((id.indexOf("_") + 1), id.length);

        elm.data("hiddenid", id);
    }

    return elm.data("hiddenid");
}

/*function activeGender(e){
var radioId = getHiddenId($(this));
var name = $("input#"+ radioId).click().attr("name");
	
$("input[name='"+ name +"']").change(); 
}*/

function openPopup(id) {
    var dim = $("#popupDim");
    if (dim.length <= 0) {
        dim = $('<div id="popupDim"></div>').click(closePopup);
        $("body form:first").append(dim);
    }

    var pframe = $("#popupFrame");
    if (pframe.length <= 0) {
        pframe = $('<div id="popupFrame"><a class="close"></a><div class="f_top_l"></div><div class="f_top"></div><div class="f_top_r"></div><div class="f_left"></div><div class="f_center"></div><div class="f_right"></div><div class="f_bottom_l"></div><div class="f_bottom"></div><div class="f_bottom_r"></div></div>');
        $("body form:first").append(pframe);
    }
	
	$("#popupFrame > a.close").click(closePopup);
	
	var center = $(".f_center", pframe);
	var contents = center.data("contents");
		if( !contents ) {
			contents = [];
			center.data("contents", contents);
		}
		
	var contentIndex = parseInt(center.data("content-"+ id));
	
	if( isNaN(contentIndex) ) {
		var item = $("#" + id);
		contents.push(item);
		contentIndex = contents.length -1;
		center.data("content-"+ id, contentIndex).append(item);
	}
	
	$(contents[contentIndex]).show();
	
	pframe.add(dim).show();
	
    var pframeW = Math.min(670, pframe[0].offsetWidth);

    var popupWidth = pframeW;
    var popupHeight = pframe[0].offsetHeight;

    var browserWidth = document.body.offsetWidth;
    var browserHeight = document.body.offsetHeight;
    var windowSize = getViewportSize();
    var popupLeft = (browserWidth - popupWidth) / 2;
    var popupTop = (windowSize.h - popupHeight) / 2;
    	popupTop = Math.max(31, popupTop);

    dim.css({ "width": browserWidth + "px", "height": browserHeight + "px" });
    pframe.css({ "left": popupLeft + "px", "top": popupTop + "px", "width": pframeW + "px" });
}

function getViewportSize() {
    var vpSize = { w: 0, h: 0 };

    if (window.innerWidth) {
        vpSize.w = window.innerWidth;
        vpSize.h = window.innerHeight;
    } else if (document.documentElement) {
        vpSize.w = document.documentElement.clientWidth;
        vpSize.h = document.documentElement.clientHeight;
    }

    return vpSize;
}

function closePopup(e) {
	$($("#popupFrame .f_center").data("contents")).each(function(){ $(this).hide(); });
	$("#popupDim, #popupFrame").css({"width" : ""}).hide();
	
	if( e )
		e.preventDefault();
}

function validateForm(form) {
    var intExp = /^\d+$/g;
    var phoneExp = /^([+]\d{2})?\d+$/g;
    var emailExp = /^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}$/gi;
    var stripSpaceExp = /(\s|[ ]|\t)/g;

    var fields = [];

    $("input:text", form).each(function(i) {
        var inp = $(this);
        var val = $.trim(inp.val());
        var ok = false;

        switch (true) {
            case inp.hasClass("ValidateAsString"):
                //alert("validateAsString " + inp);
                ok = (val != "");
                break;
            case inp.hasClass("ValidateAsInteger"):
                ok = (val.match(intExp) != null); //(intExp.test(val));
                break;
            case inp.hasClass("ValidateAsPhone"):
                ok = (val.replace(stripSpaceExp, "").match(phoneExp) != null);
                break;
            case inp.hasClass("ValidateAsEmail"):
                ok = (val.match(emailExp) != null);
                break;
            case inp.hasClass("ValidateAsMatch"):
                var email = $.trim($("#" + inp.attr("matchid"), form).val());
                ok = (val == email);
                break;
            default:
                ok = true;
        }

        fields.push({ field: inp, ok: ok });
    });
	
    var radios = $(".ValidateAsChecked input[type='radio']", form);

    if (radios.length > 0) {
        var radioId = radios.eq(0).attr("id");
        var parent = $("[id$=" + radioId + "]").parent();
        fields.push({ field: parent, ok: (radios.filter(":checked").length > 0) });
    }

    $(".ValidateAsChecked input[type='checkbox']", form).each(function() {
        fields.push({ field: $(this), ok: ($(this).is(":checked")) });
    });

    var errorCount = 0;
    var fieldCount = fields.length;
	
    for (var i = 0; i < fieldCount; i++) {
        var item = fields[i];
        var field = item.field;

        if (!field[0])
            continue;

        var star = null;

        if (!field.is("input")) {
            star = $(".star", field);
        } else {
            var container = (field.attr("type") == "checkbox") ? "checkboxContainer" : "input_text_container";
            star = $(".star", field.closest("." + container));
        }

        if (star != null) {
            if (item.ok) {
                star.removeClass("error");
            } else {
                star.addClass("error");
                errorCount++;
            }
        }
    }
    var isCorrect = errorCount <= 0;
    if (!isCorrect) {
        if (document.getElementById('missingFields')) {
            openPopup('missingFields');
            window.scrollTo(0, 0);
        }
    }
    return isCorrect;
}

function getElements(e) {
    return $(".ValidateAsString");
}

function openDropdown(e) {
    $(this).addClass("dropdown_open");
}
function closeDropdown(e) {
    $(this).removeClass("dropdown_open");
}

function startTime() {
    $(window).data("testtime", (new Date()));
}

function endTime() {
    var end = new Date();
    var $win = $(window)
    var start = $win.data("testtime");

    if (start) {
        var msec = end - start;
        alert("It took " + msec + " milliseconds");
    }

    $win.data("testtime", null);
}

function onRadioClick(e) {
    var skin = $(this);
    var radio = $(skin.data("radio"));

    if (!radio.data("collection"))
        radio.data("collection", $("input[name='" + radio.attr("name") + "']"))

    $(radio.click().data("collection")).each(function() { onRadioChange(this) });
}

function onRadioChange(inp) {
    var inp = $(inp);
    var skin = $(inp.data("skin"));

    var activeClass = (inp.is(":radio")) ? "radio" : "checkbox";
    activeClass += "_active";

    if (inp.is(":checked")) {
        skin.addClass(activeClass);
    } else
        skin.removeClass(activeClass);
}

function initRadios() { // Radio- and checkboxes
    $(".checkbox, .radioButton").each(function() {
        var skin = $(this).click(onRadioClick);

        if (!skin.data("radio")) {
            var id = getHiddenId(skin);
            var inp = $("input#" + id);
            inp.data("skin", skin);

            skin.data("radio", inp);
        }

        //skin.data("radio").change(onRadioChange);
    });
}

function initDropdowns() {
    $(".birthday .dropdown").dropdown({ hideFirstOption: true, animateDisplay: true, className: "custom-dropdown", listClassName: "custom-dropdown-list" });
}

function updateGender() {
    
    $(".genderContainer").each(function() {
        
        var genderid = $(this).get(0).id;
        var splitid = genderid.split("hiddenid_")[1];

        var check = document.getElementById(splitid).checked;
        alert(check);
        if (check) {
            //alert("Settings " + genderid + " as Checked - " + $(genderid).children(1)).Name);
            $(genderid).children(1).addClass("radio_active");
        }
    });	
}

$(function() {
    initRadios();
    initDropdowns();
});

