/// <reference path="jquery-1.4.2.min.js"/>

var $j = jQuery.noConflict();

var examDuration;
var resultPagePath;

var setResultPagePath = function (resultpage) {
    resultPagePath = resultpage;
}

var countdown = function (resultPage) {

    Uponor.Web.Services.ExamService.HasTimeLeft(function (timeLeft) {
        if (timeLeft) {
            Uponor.Web.Services.ExamService.TimeRemaining(function (timeRemaining) {
                timeRemaining = Math.ceil(timeRemaining);
                $j("#timeRemaining").text(timeRemaining);
                window.setTimeout("countdown()", 60000);

            });
        }
        else {
            modalPopUp();
        }
    });

}
var results = [];
var submitExam = function (resultPage) {

    var questions = $j("div.el_question");

    for (var i = 0; i < questions.length; i++) {

        var answer = new Array();
        answer[0] = $j("input[type='hidden']", questions[i]).val();

        var answers = $j(".answer", questions[i]);

        for (var j = 0; j < answers.length; j++) {
            answer[j + 1] = $j($j(answers).get(j)).attr("checked") == true ? true : false;

        }

        results[i] = answer;
    }

    Uponor.Web.Services.ExamService.PostResults(results, function (results) {
        document.location.href = resultPage;
    })
}

var abortExam = function () {

    Uponor.Web.Services.ExamService.FinalizeExam();

}

var clearInput = function () {

    $j("div#exam_contact textarea").val("");

}

var goToQuestion = function (currentQuestion, requestedQuestion) {

    $j($j("div.el_question").get(currentQuestion - 1)).css("color", "#999");
    $j($j("div.el_question").get(requestedQuestion - 1)).css("color", "#000");

    $j($j("div.el_qnr a").get(currentQuestion - 1)).css("color", "#999");
    $j($j("div.el_qnr a").get(requestedQuestion - 1)).css("color", "#0072B7");

    $j($j("div.slider").get(currentQuestion - 1)).slideToggle();
    $j($j("div.slider").get(requestedQuestion - 1)).slideToggle();
}

var jumpToQuestion = function (requestedQuestion, link) {
    if ($j($j("div.slider").get(requestedQuestion - 1)).css("display") != "block") {

        $j("div.slider:visible").slideToggle();

        $j($j("div.slider").get(requestedQuestion - 1)).slideToggle();

        $j("div.el_qnr a").css("color", "#999");
        $j(link).css("color", "#0072B7");

        $j("div.slider:visible").parent("div.el_question").css("color", "#999");
        $j($j("div.el_question").get(requestedQuestion - 1)).css("color", "#000");
    }
}

var goToMaterial = function (currentMaterial, requestedMaterial) {

    $j($j("div.el_material").get(currentMaterial - 1)).slideToggle();

    $j($j("div.el_material").get(requestedMaterial - 1)).slideToggle();

    $j("div.menuItem a").not(":last").css("color", "#999");
    $j($j("div.menuItem a").get(requestedMaterial - 1)).css("color", "#000");


}

var jumpToMaterial = function (requestedMaterial, link) {
    if ($j($j("div.el_material").get(requestedMaterial - 1)).css("display") != "block") {

        $j("div.el_material:visible").slideToggle();

        $j($j("div.el_material").get(requestedMaterial - 1)).slideToggle();

        $j("div.menuItem a").not(":last").css("color", "#999");
        $j(link).css("color", "#000");
    }
}

var modalPopUp = function () {

    $j("#ModalPopUp").click(function () {
        submitExam(resultPagePath);
    });

    $j("#ModalPopUp").css({ "z-index": "100000", "display": "block" });

    window.setTimeout("submitExam(resultPagePath)", 5000);

}

var modalPopUpError = function () {

    $j("#ModalPopUp").click(function () {
        document.location.href = resultPagePath;
    });

    $j("#ModalPopUp").css({ "z-index": "100000", "display": "block" });

    window.setTimeout("document.location.href = resultPagePath;", 5000);

}

var highliteOpenQuestions = function () {

    if ($j(".tbl_question").length) {

        $j(".el_question").each(function () {

            var wrapper = $j(this);

            var done = false;
            $j("input", wrapper).each(function () {

                if ($j(this).is(":checked")) {
                    done = true;
                }

            });

            if (done) {
                $j(".question", wrapper).css("color", "");
            }
            else {
                $j(".question", wrapper).css("color", "red");
            }

        });

        $j(".el_question").click(function () {

            var wrapper = $j(this);

            var done = false;
            $j("input", wrapper).each(function () {

                if ($j(this).is(":checked")) {
                    done = true;
                }

            });

            if (done) {
                $j(".question", wrapper).css("color", "");
            }
            else {
                $j(".question", wrapper).css("color", "red");
            }

        });
    }
}

// Greeting Card

var previewCard = function () {
    $j(".jqMessageToWrite").text($j(".message").attr("value"));
    $j(".senderNameToWrite").text($j(".senderName").attr("value"));
    $j(".headlineToWrite").text($j(".headline").attr("value"));
}

// Gmap

var gMapInitialized = false;

var ValidateSearchStr = function (e) {
    if ($j('.plz').attr('value') == '' || $j('.plz').attr('value').length != 5) {
        $j('.plz').css('border-color', 'red');
        e.preventDefault();
        return false;
    }
    else {
        $j('.plz').css('border-color', '#ABADB3');
        return true;
    }
};

var handleApiReady = function () {
    var markers = [];
    var latlngArray = [];
    var infowindows = [];
    var ids = [];
    var idCounter = 0;
    var geocoder = new google.maps.Geocoder();
    var bounds = new google.maps.LatLngBounds();

    var myLatlng = new google.maps.LatLng(51.165691, 10.451526000000058);
    var myOptions = {
        zoom: 6,
        center: myLatlng,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

    $j(".markerInfo").each(function (index) {
        geocoder.geocode({
            'address': $j(this).attr('city') + ',' + $j(this).attr('postal'),
            'region': 'de',
            'language': 'de_DE'
        },
            function (results, status) {
                if (results[0].formatted_address.indexOf("Deutschland") != -1) {
                    var rndLatLng = new google.maps.LatLng(results[0].geometry.location.lat() + Math.random() * 0.01, results[0].geometry.location.lng() + Math.random() * 0.01);
                    var postal = "";
                    if (results[0].address_components[4] != null) {
                        postal = results[0].address_components[4].short_name;
                    }
                    var myMarker = new MyMarker(rndLatLng, results[0].address_components[0].short_name, postal);
                    var found = false;

                    for (var i = 0; i < $j(".markerInfo").length; i++) {
                        var $this = $j(".markerInfo").get(i);
                        var idno = $j($this).attr('IDNo');
                        if ($j.inArray(idno, ids) != -1) {
                            continue;
                        }
                        if (myMarker.city == $j($this).attr('postal') || $j($this).attr('city').indexOf(myMarker.city) != -1 || myMarker.city.indexOf($j($this).attr('city')) != -1) {
                            latlngArray[idCounter] = myMarker.latlng;
                            bounds.extend(latlngArray[idCounter]);

                            var markerCurrent = new google.maps.Marker({
                                position: latlngArray[idCounter],
                                map: map,
                                title: $j($this).attr('label'),
                                icon: $j($j(".googleMarker").get(i)).attr('src')
                            });
                            markers[idCounter] = markerCurrent;

                            var info;
                            if ($j.browser.msie) {
                                info = $j(".contactperson", $j($this).prev()).html().replace(/<img.*">/gi, '');
                            }
                            else {
                                info = $j(".contactperson", $j($this).prev()).html().replace(/<img.*">/g, '');
                            }

                            var infoCurrent = new google.maps.InfoWindow({
                                content: info
                            });
                            infowindows[idCounter] = infoCurrent;

                            google.maps.event.addListener(markers[idCounter], 'click', function () {
                                for (var j = 0; j < infowindows.length; j++) {
                                    infowindows[j].close();
                                }
                                infoCurrent.open(map, markerCurrent);
                            });
                            ids[idCounter] = idno;
                            idCounter++;
                            found = true;
                            break;
                        }
                    }
                    if (!found) {
                        for (var i = 0; i < $j(".markerInfo").length; i++) {
                            var $this = $j(".markerInfo").get(i);
                            var idno = $j($this).attr('IDNo');
                            if ($j.inArray(idno, ids) != -1) {
                                continue;
                            }
                            if (myMarker.postal == $j($this).attr('postal')) {
                                latlngArray[idCounter] = myMarker.latlng;
                                bounds.extend(latlngArray[idCounter]);

                                var markerCurrent = new google.maps.Marker({
                                    position: latlngArray[idCounter],
                                    map: map,
                                    title: $j($this).attr('label'),
                                    icon: $j($j(".googleMarker").get(i)).attr('src')
                                });
                                markers[idCounter] = markerCurrent;

                                var info;
                                if ($j.browser.msie) {
                                    info = $j(".contactperson", $j($this).prev()).html().replace(/<img.*">/gi, '');
                                }
                                else {
                                    info = $j(".contactperson", $j($this).prev()).html().replace(/<img.*">/g, '');
                                }

                                var infoCurrent = new google.maps.InfoWindow({
                                    content: info
                                });
                                infowindows[idCounter] = infoCurrent;

                                google.maps.event.addListener(markers[idCounter], 'click', function () {
                                    for (var j = 0; j < infowindows.length; j++) {
                                        infowindows[j].close();
                                    }
                                    infoCurrent.open(map, markerCurrent);
                                });
                                ids[idCounter] = idno;
                                idCounter++;
                                break;
                            }
                        }
                    }
                }
            });
    });

    //    google.maps.event.addListener(map, 'click', function () {
    //        for (var i = 0; i < infowindows.length; i++) {
    //            infowindows[i].close();
    //            map.fitBounds(bounds);
    //            if (markers.length < 2) {
    //                map.setZoom(14);
    //            }
    //        }
    //    });

    google.maps.event.addListenerOnce(map, 'idle', function () {
        map.fitBounds(bounds);
        if (markers.length < 2) {
            map.setZoom(14);
        }
    });

    gMapInitialized = true;
};

var switchGMap = function () {
    $j(document).ready(function () {
        if ($j('div#map_canvas').is(':visible')) {
            $j('div#map_canvas').hide();
            $j(".googleMarker").hide();
        }
        else {
            $j('div#map_canvas').show();
            $j(".googleMarker").show();
            if (!gMapInitialized) {
                handleApiReady();
            }
        }
    });
};

var MyMarker = function (latlng, city, postal) {
    this.latlng = latlng;
    this.city = city;
    this.postal = postal;
}

var setLocationPositions = function () {
    $j(".main-location-details").each(function () {
        var $previous = null;
        var $detail = $j(this);
        $detail.find(".address").each(function (index) {
            var $this = $j(this);
            if (((index + 1) % 2) == 0 && $previous != null) {
                if ($this.height() < $previous.height()) {
                    $this.height($previous.height() + 20)
                }
                else {
                    $previous.height($this.height() + 20)
                }

            }
            $previous = $this;
        })
    })
}

// zip code upload

var showUploadGif = function () {
    $j("#ctl5").append("<div id='overlay'></div>");
};
