﻿/// <reference path="jquery-1.4.1-vsdoc.js" />
/// <reference path="jquery.tmpl.js" />
/// <reference path="jquery.deserialize.js" />

var handleContactSend = function () { };
var handleGMap = function () { };
var handleSendEmail = function () { };
var site = { summary: [] };

Array.prototype.uniq = function () {
    var cnt = {};
    var res = [];
    for (var i = 0; i < this.length; i++) {
        var t = this[i];
        cnt[t] = (cnt[t] || res.push(t) * 0) + 1;
    }
    return res;
};

String.prototype.EmCo = function (compare, separator) {
    return this == "" || this == compare || $.inArray(compare, this.split(separator || ",")) > -1;
}

if (!Array.prototype.filter) {
    Array.prototype.filter = function (fun, thisp) {
        var len = this.length >>> 0;
        if (typeof fun != "function")
            throw new TypeError();

        var res = [];
        var thisp = arguments[1];
        for (var i = 0; i < len; i++) {
            if (i in this) {
                var val = this[i]; // in case fun mutates this  
                if (fun.call(thisp, val, i, this))
                    res.push(val);
            }
        }

        return res;
    };
}

$(document).ready(function () {
    // copy following code from dooleygroup.ie
    // from here------------------------------------------
    var p = $("div.photoThumbs>ul");
    p.width(p.find("li").length * 125);

    $('aside select').customStyle();

    $('aside input[type="radio"]').ezMark({ radioCls: 'unselected', selectedCls: 'selected' });


    var cf = {
        s: $("#send"),
        e: $("#Email"),
        m: $("#Message"),
        rrf: $("#recaptcha_response_field"),
        f: $("#fields"),
        a: $('#answer'),
        ca: $('#captcha')
    };

    $("#Url").val(document.location);

    cf.s.click(function (event) {
        var result = false;

        if (cf.e.val() == "") {
            cf.e.addClass("alert");
            cf.e.focus();
        }
        else if (cf.m.val() == "") {
            cf.e.removeClass("alert");
            cf.m.addClass("alert");
            cf.m.focus();
        }
        else if (cf.rrf.val() == "") {
            cf.m.removeClass("alert");
            cf.f.hide("fast", function () {
                cf.ca.show();
                cf.rrf.focus();
                cf.s.attr("value", "send");
            });
        }
        else {
            result = true;
        };
        return result;
    });


    var answer = $("#answer");

    handleContactSend = function (data) {
        alert('hi');
        //System.Web.HttpContext.Current.Response.Write("<SCRIPT LANGUAGE=""JavaScript"">alert("Hello this is an Alert")</SCRIPT>")
        answer.text(data.result ? "Message sent. Thanks for contacting us!" : "Incorrect email");


    }


    var filter = $("#filter");
    if (filter.is('form')) {
        $.template("opt", '<option value="${Value}">${Name} (${Count})</option>');
        site.any = { Value: "", Name: "any", Count: 0 };

        site.filter = filter;
        site.filter.deserialize(site.filter.attr("def"), { only: ["o", "r", "pg"] });

        site.fields = {
            m: $("#m"), //Market
            t: $("#t"), //Property Type
            c: $("#c"), //County
            d: $("#d"), //Location
            b: $("#b"), //Bedrooms from
            bmax: $("#bmax"), //Bedrooms to
            s: $("#s"), //Sizes from
            smax: $("#smax"), //Sizes to
            p: $("#p"), //Price from
            pmax: $("#pmax") //Price to
        };

        var fill = function (field, data, empty, deserialize) {
            empty && field.empty();
            data = data || [];
            site.any.Count = data.length;
            var ddata = empty ? [site.any] : [];
            var f = field.attr("sname");
            var n = f == "Price" ? "&euro;" : "";
            ddata = ddata.concat($.map(
            $.map(data, function (a) { return a[f] }).uniq().sort(function (a, b) { return !isNaN(a) && !isNaN(b) ? a - b : a > b ? 1 : a < b ? -1 : 0 }),
            function (a) { return { Value: a, Name: n + a, Count: $.grep(data, function (e) { return e[f] == a }).length} })
            .filter(function (e) { return isNaN(e.Value) || e.Value > 0 })
            );
            $.tmpl("opt", ddata).appendTo(field);
            deserialize && site.filter.deserialize(site.filter.attr("def"), { only: [field.attr("name")] });
        };

        var onChange = function () {
            var order = { m: "t", t: "c", c: "d", d: "b", b: "bmax", bmax: "p", s: "smax", smax: "p", p: "pmax" };
            var name = $(this).attr("name");
            var isCom = "Commercial Sales,Industrial New Developments,Commercial Rental".EmCo(site.fields.m.val());
            if (isCom) {
                if (name == "m") {
                    site.fields.s.parent().show();
                    site.fields.b.parent().hide();
                }
                order.d = "s";
                order.b = undefined;
                order.bmax = undefined;
            }
            else {
                if (name == "m") {
                    site.fields.s.parent().hide();
                    site.fields.b.parent().show();
                }
                order.s = undefined;
                order.smax = undefined;
            }
            var fnext = site.fields[order[name]];
            var cur = site.summary;
            for (var i in order) {
                var f = site.fields[i];
                var n = f.attr("sname");
                var v = f.val();
                var vn = Number(v);
                cur = i != undefined && v != "" ? $.grep(cur, isNaN(v) ? function (e) { return v.EmCo(e[n]) } : function (e) { return vn <= e[n] })
                : cur;
                if (i == name) break;
            }
            fill(fnext, cur, true, site.init);
            site.init = site.init && name != "p";
            fnext.change();
        };

        $("select[name!=r][name!=pmax]").change(onChange);

        $.getJSON("/odata.svc/Summary", function (data) {
            site.init = true;
            site.summary = data.d;
            fill(site.fields.m, site.summary, false, true);
            site.fields.m.change();
        });
    }

    var gmap = $("#gmap");
    if (gmap.is('div')) {
        {
            handleGMap = function () {
                var myLatlng = new google.maps.LatLng(Number(gmap.attr("lat")), Number(gmap.attr("lng")));
                var myOptions = {
                    zoom: Number(gmap.attr("zoom")),
                    center: myLatlng,
                    mapTypeId: google.maps.MapTypeId.ROADMAP
                }
                var map = new google.maps.Map(gmap.get(0), myOptions);
                var marker = new google.maps.Marker({
                    position: myLatlng,
                    map: map,
                    title: ""
                });
            };
            $.getScript("http://maps.google.com/maps/api/js?sensor=false&callback=handleGMap&region=IE");
        }
    }

    var zoom = $(".photo-zoom").find('img');
    if (zoom.is('img')) {
        $(".photo-list").find('img').click(function () {
            zoom.attr("src", $(this).attr("big"));
        });
    }


    // copy following code from dooleygroup.ie
    // from here------------------------------------------

    // -------------------------code end here


});
