/*
 ActionMenus
 */
var ActionMenus = {

    initialize: function() {
        $("div.categories_head a.plus_minus").click(ActionMenus.toggle_categories);
        $("div.categories_head a.h1").click(ActionMenus.toggle_categories);
        $('#selected_category a').click(ActionMenus.toggle_categories);

        if ($('#any_place').length) {
            $('#any_place a').click(ActionMenus.launch_location_onclick);
        }
        if ($('#location_menu_selector div.content div.location_title').length) {
            $('#location_menu_selector div.content div.location_title a').click(ActionMenus.launch_location_onclick);
        }
    },

    toggle_categories: function() {
        var plusMinusImg = $(".plus_minus");

        if (plusMinusImg.hasClass("minus_plus")) {
            $('#categories_list').hide("fast");
            ActionMenus.toggle_selectedcategory();
            plusMinusImg.removeClass("minus_plus");
        } else {
            $('#categories_list').show("fast");
            ActionMenus.toggle_selectedcategory();
            plusMinusImg.addClass("minus_plus");
        }

        return false;
    },

    toggle_selectedcategory: function() {
        if ($('#selected_category a').html() == "") return;
        $('#selected_category').toggle();
    },

    launch_location_onclick: function() {
        Lightbox.show();
        return false;
    },

    create_and_show_location_lightbox: function() {
        Lightbox.show();
    }
}

/*
 Lightbox
 GeneraSettings
 */

var Lightbox = {

    init: function() {
        $("<div id=\"overlay\"></div>").css('opacity', 0).css('z-index', 1000).css('display', 'none').appendTo("body")
                .click(Lightbox.close_lightbox);
        $("<div id=\"lightbox\"></div>").css('display', 'none').css('z-index', 1001).appendTo("body");
    },

    show: function() {

        Utils.hideSelectsIfNeeded();

        var page_size = Utils.getPageSize();
        $("#overlay").css("width", page_size[0]);
        $("#overlay").css("height", page_size[1]);
        $("#overlay").show();
        $("#overlay").animate(
        { opacity: 0.2 }, 700
                );

        this.recalculate_position();

        $("#lightbox").animate(
        { show: 'toggle' }, 700
                );
    },

    recalculate_position: function() {
        var page_size = Utils.getPageSize();

        var width = $("#lightbox").css("width").replace("px", "") ;

        var scrollTop = $(window).scrollTop();
        var scrollLeft = $(window).scrollLeft();

        var toppos = ( page_size[3] - (page_size[3] * 0.8) ) / 2 + scrollTop;
        var leftpos = ( page_size[2] - (width) ) / 2 + scrollLeft;

        $("#lightbox").css('top', toppos + 'px');
        $("#lightbox").css('left', leftpos + 'px');
    },

    close_lightbox: function() {
        $("#overlay").hide();
        $("#lightbox").hide();

        Utils.showSelectsIfNeeded();
    }
}

/*
 Utils
 General utils
 */

var Utils = {

    // getPageScroll()
    // Returns array with x,y page scroll values.
    // Core code from - quirksmode.com
    getPageScroll: function() {
        var xScroll, yScroll;

        if (self.pageYOffset) {
            yScroll = self.pageYOffset;
            xScroll = self.pageXOffset;
        } else if (document.documentElement && document.documentElement.scrollTop) {     // Explorer 6 Strict
            yScroll = document.documentElement.scrollTop;
            xScroll = document.documentElement.scrollLeft;
        } else if (document.body) {// all other Explorers
            yScroll = document.body.scrollTop;
            xScroll = document.body.scrollLeft;
        }

        var arrayPageScroll = new Array(xScroll, yScroll)
        return arrayPageScroll;
    },

    // getPageSize()
    // Returns array with page width, height and window width, height
    // Core code from - quirksmode.com
    // Edit for Firefox by pHaez
    getPageSize: function() {

        var xScroll, yScroll;
        if (window.innerHeight && window.scrollMaxY) {
            xScroll = window.innerWidth + window.scrollMaxX;
            yScroll = window.innerHeight + window.scrollMaxY;
        } else if (document.body.scrollHeight > document.body.offsetHeight) { // all but Explorer Mac
            xScroll = document.body.scrollWidth;
            yScroll = document.body.scrollHeight;
        } else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
            xScroll = document.body.offsetWidth;
            yScroll = document.body.offsetHeight;
        }

        var windowWidth, windowHeight;

        if (self.innerHeight) {    // all except Explorer
            if (document.documentElement.clientWidth) {
                windowWidth = document.documentElement.clientWidth;
            } else {
                windowWidth = self.innerWidth;
            }
            windowHeight = self.innerHeight;
        } else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
            windowWidth = document.documentElement.clientWidth;
            windowHeight = document.documentElement.clientHeight;
        } else if (document.body) { // other Explorers
            windowWidth = document.body.clientWidth;
            windowHeight = document.body.clientHeight;
        }

        // for small pages with total height less then height of the viewport
        if (yScroll < windowHeight) {
            pageHeight = windowHeight;
        } else {
            pageHeight = yScroll;
        }

        // for small pages with total width less then width of the viewport
        if (xScroll < windowWidth) {
            pageWidth = xScroll;
        } else {
            pageWidth = windowWidth;
        }

        var arrayPageSize = new Array(pageWidth, pageHeight, windowWidth, windowHeight)
        return arrayPageSize;
    },

    findPosX: function(obj) {
        var curleft = 0;
        if (obj.offsetParent)
            while (1)
            {
                curleft += obj.offsetLeft;
                if (!obj.offsetParent)
                    break;
                obj = obj.offsetParent;
            }
        else if (obj.x)
            curleft += obj.x;
        return curleft;
    },

    findPosY: function (obj) {
        var curtop = 0;
        if (obj.offsetParent)
            while (1)
            {
                curtop += obj.offsetTop;
                if (!obj.offsetParent)
                    break;
                obj = obj.offsetParent;
            }
        else if (obj.y)
            curtop += obj.y;
        return curtop;
    },

    hideSelectsIfNeeded: function() {
        if ($.browser.msie && jQuery.browser.version == "6.0") {
            $("select").hide();
        }
    },

    showSelectsIfNeeded: function() {
        if ($.browser.msie && jQuery.browser.version == "6.0") {
            $("select").show();
        }
    },

    openPopupOnClick: function() {
        var link = $(this).attr("href");
        Utils.openPopup(link, 480, 550, true);
        return false;
    },

    openHrefPopup: function(w, h, obj) {
        var link = $(obj).attr("href");
        Utils.openPopup(link, w, h, false);
        return false;
    },

    openPopup: function(openUrl, openWidth, openHeight, Zscrolls) {
        if (screen) {
            var s = screen;
            var srw = s.width - 50;
            var srh = s.height - 36;
        } else {
            var srw = 750;
            var srh = 564;
        }

        if (openWidth > srw || openHeight > srh) {
            openScroll = "1";
            if (openHeight > srh) {
                openWidth = openWidth + 16;
                openHeight = srh - 50;
            }
            if (openWidth > srw) {
                openHeight = openHeight + 16;
                openWidth = srw - 50;
            }
        } else {
            openScroll = "0";
        }
        srw = (srw - openWidth) / 2;
        srh = (srh - openHeight) / 5;
        var UTCstring;
        Today = new Date;
        UTCstring = Today.getUTCMinutes() + Today.getUTCSeconds();
        var openName;
        openName = "openPopup" + UTCstring;
        if (Zscrolls) {
            openScroll = "yes";
        }
        openParameters = "left=" + srw + ",top=" + srh + ",outerHeight=0,innerWidth,width=" + openWidth + ",innerHeight,height=" + openHeight + ",scrollbars=" + openScroll + ",titlebar=1,resizable=0";
        if (window.openPopup) {
            if (!window.openPopup.closed) {
                window.openPopup.close();
            }
        }
        openPopup = open(openUrl, openName, openParameters);
        return false;
    },

    printPage: function() {
        var pr = window.print ? 1 : 0;
        if (pr) {
            window.print();
        } else if (da && !mac) {
            vbPrintPage();
        } else {
            alert("Can't Print");
        }
    }
}

/*
 TitleChanger
 */

var TitleChanger = {

    initialize: function() {
        window.setTimeout("TitleChanger.change_title()", 1500);
        if ($.browser.opera) {
            $("#changing_label_url").css("left", "309px");
        }
    },

    change_title: function() {
        var obj = $("#changing_label_url");
        var change_title = obj.attr("changetitile");
        obj.attr("changetitile", obj.html());
        obj.html(change_title);
        window.setTimeout("TitleChanger.change_title()", 1500);
    }

}

/*
 Ad Creation Form Helper
 
 */

var area_units = "m&#178;";

var AdCreationForm = {

    initialize: function() {
        if ($("#general_category").length) {
            $("#general_category").click(function() {
                if ( $("div#general_category_dd").is(":visible") ) {
                    Utils.showSelectsIfNeeded();
                } else {
                    Utils.hideSelectsIfNeeded();
                }
                $("div#general_category_dd").toggle();
            });
            $("#general_category_dd ul li.simple_child").click(function() {
                $("div#general_category div#selected_item").html($(this).html());
                $("div#general_category_dd").hide();
                Utils.showSelectsIfNeeded();
                $("input#ad_category").val($(this).attr("value"));
            });
            $("#address_parent").change(AdCreationForm.on_parent_change);
            $("#address_child").change(AdCreationForm.on_child_change);
            
            $("#address_street").change(AdCreationForm.find_street_name);
            $("#address_flat_nr").change(AdCreationForm.find_street_name);
            
            $("#ad_street").focus(AdCreationForm.on_focus_show_info_message);
            $("a#google_map_yes").click(AdCreationForm.show_google_maps);
            $("input#first_next_step").mouseover(function() {
//Since $("#address_flat_nr").change(AdCreationForm.find_street_name); does not work in IE
              if ($("#address_parent").val() == 1 && $("#address_child").val() != 0 && $("#address_child").val() != 96) {
                AdCreationForm.find_street_name();
              }              
              if ($("a#google_map_yes").is(":visible") && $("#ad_street").val() != '' && $("#gmap_showed").val() == 0) {
                AdCreationForm.show_google_maps();
              }
            });            
              
        }
    },

    on_previous_step: function() {
        var current_step = $("input#current_step").val();
        if (current_step > 1 && current_step <= 5) {
            var prev_step = current_step - 1;
            $('#step_' + current_step + '_content').slideUp('fast');
            $('#step_' + current_step + '_content').html(" ");
            $('#step_' + prev_step + '_content').slideDown('slow');
            $("input#current_step").val(prev_step);

            $('li span#step' + prev_step).removeClass('active_prev').addClass('active');
            $('li span#step' + current_step).removeClass('active');

        }
    },

    on_parent_change: function() {
         if ($(this).val() != 1) {
//         $("#ad_street").attr("readonly", "");
         $("#ad_street").show();  
         $("#ad_street_label").show();              
         $("#ad_street").val("");        
         $("#address_street_tr").hide();  
         $("#address_flat_nr").val("");            
         $("#address_flat_nr").hide();   
         $("#address_korpuss").val("");          
         $("#address_korpuss").hide();          
        }
        if ($(this).val() == '-') {
            $("#address_child_tr").hide();
        }
        else {
            $.get("/ads/child_locations", {parent_id: $(this).val() }, AdCreationForm.on_parent_change_ajax);
            $.get("/ads/find_location_having_id", {id: $(this).val() }, AdCreationForm.save_rajons_name);
        }
    },

    on_parent_change_ajax: function(data) {
        eval(data);
        $("#address_child").removeOption(/./);
        $("#address_child").addOption(regions, false);
        $("#address_child_tr").show();
    },

    save_rajons_name: function(data) {
        $("#rajons_name").val(data);
    },
    
    on_child_change: function() {
        $("#ad_location_id").val($(this).val());
        if ($("#address_parent").val() == 1 && $(this).val() != 0 && $(this).val() != 96) {
//          $("#ad_street").attr("readonly", "readonly");  
          $("#ad_street").hide();  
          $("#ad_street_label").hide();
          $("#address_flat_nr").val("");           
          $("#address_korpuss").val("");              
          $.get("/ads/streets_for_location", {loc_id: $(this).val() }, AdCreationForm.on_child_change_streets);
        }
        else {
//          $("#ad_street").attr("readonly", "");      
          $("#ad_street").show();  
          $("#ad_street_label").show();               
          $("#ad_street").val("");        
          $("#address_street_tr").hide();  
          $("#address_flat_nr").val("");            
          $("#address_flat_nr").hide();   
          $("#address_korpuss").val("");          
          $("#address_korpuss").hide();          
        }
        $.get("/ads/find_location_having_id", {id: $(this).val() }, AdCreationForm.save_vieta_name);
    },

    on_child_change_streets: function(data) {
        eval(data);
        $("#address_street").removeOption(/./);
        $("#address_street").addOption(ielas, false);
        $("#address_street_tr").show();  
        $("#address_flat_nr").show();   
        $("#address_korpuss").show();           
    },
    
    find_street_name: function() {
      if ($("#address_street").val()  != 0) {
        $("#ad_street_id").val($("#address_street").val());
        $.get("/ads/find_street_having_id", {str_id: $("#address_street").val() }, AdCreationForm.form_ad_street_el);
      }  
    },
  
    form_ad_street_el: function(data) {
      $("#iela_name").val(data);
      $("#ad_street").val($("#iela_name").val() + " " + $("#ad_flat_nr").val() );
    },    

    save_vieta_name: function(data) {
        $("#vieta_name").val(data);
    },

    on_focus_show_info_message: function() {
//Uncomment this if other info messages should be hided
//        $("div.form_info_message").hide();
        var id = $(this).attr("id");
        id = id.replace(/\[/g, "\\[");
        id = id.replace(/\]/g, "\\]");
        var obje = $("#" + id + "_hint");
        obje.toggle();
    },

    show_m2: function() {
        $("#lightbox").css("width", 590);
        $("#lightbox").css("height", 540);
        Lightbox.show();
        $("div#lightbox").html(" ");
        $("div#lightbox").load("/ads/load_m2", AdCreationForm.initialize_m2_events);
        return false;
    },

    initialize_m2_events: function() {
        $("a#close_lightbox").click(AdCreationForm.close_lightbox);
        $("input#ok_button").click(AdCreationForm.save_and_close_m2_lightbox);
    },

    save_and_close_m2_lightbox: function() {
        var description = $("#magazine_descriptions_value").val();
        var address = $("#magazine_address_value").val();
        if (address != '' && description != '') {
            $("#ad\\[ad_description\\]\\[magazine_description\\]").val(description);
            $("#ad\\[ad_description\\]\\[magazine_address\\]").val(address);
            $("#ad_description_magazine_description").val(description);
            $("#ad_description_magazine_address").val(address);
        } else {
            AdCreationForm.close_lightbox();
            return;
        }

        var create_m2_link = $("#m2_yes");
        var destroy_m2_link = $("#m2_no");
        if (create_m2_link.is(":visible")) {
            create_m2_link.hide();

            destroy_m2_link.click(AdCreationForm.clear_m2_data);
            destroy_m2_link.show();
        }

        AdCreationForm.close_lightbox();
    },

    clear_m2_data: function() {
        $("#ad\\[ad_description\\]\\[magazine_description\\]").attr("value", "");
        $("#ad\\[ad_description\\]\\[magazine_address\\]").attr("value", "");
        $("#ad_description_magazine_description").attr("value", "");
        $("#ad_description_magazine_address").attr("value", "");
        $("#m2_no").hide();
        $("#m2_yes").show();
    },

    on_symcounter_event: function(obj, symcounter_id) {
        var maxLength = obj.getAttribute('maxlength');
        var currentLength = obj.value.length;
        if (currentLength > maxLength) {
            var strip = obj.value.substr(0, maxLength-1);
            obj.value = strip;
            return false;
        }
        var remains = maxLength - currentLength;
        var remains_txt = new String();
        if (remains == 0) {
            remains_txt = "0";
        } else {
            remains_txt = remains; 
        }
        $("#" + symcounter_id + " ins").html(remains_txt);
    },

    show_google_maps: function() {
//Since $("#address_flat_nr").change(AdCreationForm.find_street_name); does not work in IE
        if ($("#address_parent").val() == 1 && $("#address_child").val() != 0 && $("#address_child").val() != 96) {
          AdCreationForm.find_street_name();
        }  
        $("#gmap_showed").val(1);
        $("#lightbox").css("width", 819);
        $("#lightbox").css("height", 570);
        Lightbox.show();
        $("div#lightbox").html(" ");
        $("div#lightbox").load("/ads/load_gmap", AdCreationForm.initialize_lightbox_events);
        return false;
    },

    initialize_lightbox_events: function() {
        $("a#close_lightbox").click(AdCreationForm.close_lightbox);
        $("input#gmap_ok_button").click(AdCreationForm.close_lightbox);
        $("input#gmap_cancel_button").click(function() {
                $("#google_map_no").hide();
                $("#coordinates").val("");
                $("#google_map_yes").show();
                AdCreationForm.close_lightbox();
            });      
        if (GBrowserIsCompatible()) {
            AdCreationForm.create_google_map();
        }
    },

    create_google_map: function() {
        var map = new GMap2(document.getElementById("map"));
        map.addControl(new GMapTypeControl());
        map.addControl(new GLargeMapControl());
//Default center point if address is not found        
        var center_point = new GLatLng(56.946472, 24.104691);
//        map.setCenter(center_point, 13);
        var geocoder = new GClientGeocoder();

//       var rajons = $("#address_parent option:selected").text();
       var rajons = $("#rajons_name").val();
//       var vieta = $("#address_child option:selected").text();
       var vieta = $("#vieta_name").val();
       var adrese = $("#ad_street").val();
      rajons = rajons.replace("raj.","rajons");
      vieta = vieta.replace("pag.","pagasts");
      rajons = rajons.replace("Rīgas pilsēta","Rīga");
//Forms user defined address
      var address = "";
      if (rajons == "Rīga")
        { address = "Latvia, " + rajons;
        }
      if (rajons == "Ārpus Latvijas")
        { address =  vieta;
        }
      if (rajons != "Rīga" && rajons != "Ārpus Latvijas" )
//        { address = "Latvia, " + rajons + ", " + vieta;
        { address = "Latvia, " + vieta;        
        }
      if (adrese != "" )
        { address =  address+", "+ adrese;
        }

        var variantiIcon = new GIcon();
        variantiIcon.image = "/images/gmap_icon.png";
        variantiIcon.shadow = "/images/gmap_shadow.png";
        variantiIcon.iconSize = new GSize(19, 36);
        variantiIcon.iconAnchor = new GPoint(9, 36);
        variantiIcon.infoWindowAnchor = new GPoint(19, 0);
        markerOptions = { icon:variantiIcon, draggable: true };
        //var marker = new GMarker(center_point, markerOptions);
//Finds user defined location
        var address_found = 0;
        
        if (address) {
          if (geocoder) {
            geocoder.getLatLng(
            address,
            function(point) {
              if (!point) {
                alert(address + " " + $("#gmap_error_text").val());
//Finds default location                
                map.setCenter(center_point, 13);
                var marker = new GMarker(center_point, markerOptions);
//Event listeners                
                GEvent.addListener(marker, "dragend", function() {
                    AdCreationForm.set_coordinates(marker);
                });
                GEvent.addListener(marker, "click", function() {
                    AdCreationForm.set_coordinates(marker);
                });                   
                map.addOverlay(marker);                
              } else {
                map.setCenter(point, 13);
                var marker = new GMarker(point, markerOptions);
//Event listeners                
                GEvent.addListener(marker, "dragend", function() {
                    AdCreationForm.set_coordinates(marker);
                }); 
                GEvent.addListener(marker, "click", function() {
                    AdCreationForm.set_coordinates(marker);
                });  
                GEvent.addListener(marker, "mouseover", function() {
                    AdCreationForm.set_coordinates(marker);
                });                 
                map.addOverlay(marker);
                marker.openInfoWindowHtml(address);
              }
            }
            );
          }
        } 
  
/*
        GEvent.addListener(map, "click", function(overlay, point) {
            marker.setPoint(point);
            AdCreationForm.set_coordinates(marker);
        });
*/
        //map.addOverlay(marker);

    },

    set_coordinates: function(marker) {
        var create_map_link = $("#google_map_yes");
        var destroy_map_link = $("#google_map_no");
        if (create_map_link.is(":visible")) {
            create_map_link.hide();

            destroy_map_link.click(AdCreationForm.clear_gmap_coordinates);
            destroy_map_link.show();
        }

        $("#coordinates").val(marker.getPoint().lat() + ";" + marker.getPoint().lng());
    },

    clear_gmap_coordinates: function() {
        $(this).hide();
        $("#coordinates").val("");
        $("#google_map_yes").show();
        return false;
    },

    close_lightbox: function() {
        Lightbox.close_lightbox();
        return false;
    },

    show_additional_info: function() {
        $("tr.optional_fields").show();
        $("a#more_info_yes").hide();
        $("a#more_info_no").show();
        $("a#more_info_no").click(AdCreationForm.hide_additional_info);
        return false;
    },

    hide_additional_info: function() {
        $("tr.optional_fields input[type='text']").attr("value", "");
        $("tr.optional_fields select").val("-");
        $("tr.optional_fields input[type='checkbox']").attr("checked", "");

        $("tr.optional_fields").hide();
        $("a#more_info_yes").show();
        $("a#more_info_no").hide();
        return false;
    },

    price_per_unit_calculation: function() {
        var total_area = $("#ad\\[ad_description\\]\\[total_area\\]").val();
        var total_price = $("#ad\\[amount\\]").val();
        var currency = $("#ad\\[ad_currency_id\\] option:selected").text();

        var total_area = parseFloat(total_area);
        var total_price = parseFloat(total_price);

        if (!isNaN(total_area) && !isNaN(total_price)) {
            var price_per_unit = total_price / total_area;
            $("#price_per_m2").html(price_per_unit.toFixed(2) + " " + currency + "/" + area_units);
        } else {
            $("#price_per_m2").html($("#price_per_m2").attr("old_text"));
        }
    },

    change_units: function() {
        area_units = $(this).val();
        AdCreationForm.price_per_unit_calculation();
    },

    add_another_file_input: function(obj) {
        var selected = $(obj).parent();
        var cloned = selected.clone();
        cloned.children("input").val("");
        selected.after(cloned);
    },

    remove_file_input: function(obj) {
        if ($("div.file_input_div").length > 1) {$(obj).parent().remove();}
    },

    calculate_img_and_set_main: function() {
        var ad_count = 0;
        var main_img = "";
        $("div.file_input_div input").each( function() {
           if ($(this).val() != "") {
               ad_count += 1;
               if (main_img == "") {main_img = $(this).val();}
           }
        }
        );
        if (ad_count != 0) {
            $("#ad_images_count").val(ad_count);
            $("#main_image").val(main_img);
            $("#mainimage").val(main_img);
        }
    },

    transfer_and_submit_images: function(ad_id) {
        $("#upload_form").attr("action", $("#upload_form").attr("action") + "/" + ad_id);
        $("#upload_form").submit();
    },

    redirect_from_iframe: function() {        
        if ($("#upload_frame").contents().find("body").length == 1) {
            var code = $("#upload_frame").contents().find("body").html();            
            eval(code);
        }
    }
}

/**
 *  Open Ad Image Viewer
 */

var AdImagesViewer = {

    initialize_clicks: function() {
        $(".ad_image_lightbox").click(AdImagesViewer.open_image_view);
    },

    open_image_view: function() {
        $("#lightbox").css("width", 790);
        $("#lightbox").css("height", 570);
        Lightbox.show();
        $("div#lightbox").html(" ");
        $("div#lightbox").load($(this).attr("href"), AdImagesViewer.open_image_view_on_load);
        return false;
    },

    open_image_view_on_load: function() {
        $("a#close_lightbox").click(AdImagesViewer.close_lightbox);
        $(".img_changer").click( AdImagesViewer.swap_big_img );
        $("div#big_img_holder img").click( AdImagesViewer.swap_next_img );
    },

    swap_big_img: function() {
        var img_src = $(this).attr("href");
        var this_id = $(this).attr("id");
        var next_img = $(this).attr("next_href");
        $("div#big_img_holder img").remove();
        $("div#big_img_holder").append("<img src='"+img_src+"' id='"+ this_id +"' href='"+ next_img + "' alt='Big Picture'/>");
        $("div#big_img_holder img").click( AdImagesViewer.swap_next_img );
        return false;
    },

    swap_next_img: function() {
        var current_id = $(this).attr("id");
        var nextImg = parseInt( current_id.replace("img_", "") ) + 1;
        if ( $("a#img_" + nextImg).length ) {
            $("a#img_" + nextImg).click();
        } else {
            nextImg = 0;
            $("a#img_" + nextImg).click();
        }

        var next_img = $(this).attr("next_href");
    },

    close_lightbox: function() {
        Lightbox.close_lightbox();
        return false;
    }
}

/**
 *  Open New Projects Image Viewer
 */

var NewProjectsImagesViewer = {

    initialize_clicks: function() {
        $("a.new_project_images").click(NewProjectsImagesViewer.open_image_view);
    },

    open_image_view: function() {
        $("#lightbox").css("width", 790);
        $("#lightbox").css("height", 599);
        Lightbox.show();
        $("div#lightbox").html(" ");
        $("div#lightbox").load( $(this).attr("href"), NewProjectsImagesViewer.open_image_view_on_load );
        return false;
    },

    open_image_view_on_load: function() {
        $("a#close_lightbox").click(NewProjectsImagesViewer.close_lightbox);
        $(".img_changer").click( NewProjectsImagesViewer.swap_big_img );
        $("div#np_img_holder img").click( NewProjectsImagesViewer.swap_next_img );
    },

    swap_big_img: function() {
        var img_src = $(this).attr("href");
        var this_id = $(this).attr("id");
        var next_img = $(this).attr("next_href");
        $("div#np_img_holder img").remove();
        $("div#np_img_holder").append("<img src='"+img_src+"' id='"+ this_id +"' href='"+ next_img + "' alt='Big Picture'/>");
        $("div#np_img_holder img").click( NewProjectsImagesViewer.swap_next_img );
        return false;
    },

    swap_next_img: function() {
        var current_id = $(this).attr("id");
        var nextImg = parseInt( current_id.replace("img_", "") ) + 1;
        if ( $("a#img_" + nextImg).length ) {
            $("a#img_" + nextImg).click();
        } else {
            nextImg = 0;
            $("a#img_" + nextImg).click();
        }

        var next_img = $(this).attr("next_href");
    },

    close_lightbox: function() {
        Lightbox.close_lightbox();
        return false;
    }
}

/**
 * News Bulletin Clicks
 *
 */

var NewsBulletin = {

    wasClicked: false,
    blockLength: 444,
    currentSlide: 1,

    initialize_clicks: function() {
        $("span.news_bullet").click( NewsBulletin.click_on_news_feed );
        if ($("span.news_bullet").length) {
            $(document).everyTime(7000, "news_slider", NewsBulletin.slide_to_next_news );
        }
    },

    click_on_news_feed: function() {

        if ( !NewsBulletin.wasClicked ) {
            NewsBulletin.wasClicked = true;
            $(document).stopTime("news_slider");
        }

        var selected_id_str = $(".news_bullet_sel").attr("id").replace("news_block_", "");
        var selected_id = parseInt(selected_id_str);

        var news_block_number_str = $(this).attr("id").replace("news_block_", "");
        var news_block_id = parseInt(news_block_number_str);

        if (selected_id == news_block_id) return;

        NewsBulletin.reposition_selector(selected_id, news_block_id);
        NewsBulletin.float_to_position(selected_id, news_block_id);
    },

    reposition_selector: function(from, to) {
        $("span#news_block_" + from ).removeClass("news_bullet_sel");
        $("span#news_block_" + to ).addClass("news_bullet_sel");
    },

    float_to_position: function(from, to) {
       var diff = Math.abs( to-from );
       var vector = to-from < 0 ? -1 : 1;

       var current_position = (from-1) * NewsBulletin.blockLength;
       var scroll = NewsBulletin.blockLength * diff * vector;

       var scroll_to = current_position + scroll;

        $("div#news_holder").scrollTo( scroll_to , 1000, { axis: 'x', onAfter: NewsBulletin.loop_slide } );
    },

    loop_slide: function() {
        if (NewsBulletin.currentSlide == 6) {
            NewsBulletin.currentSlide = 1;
            $("div#news_holder").scrollTo( 0 , 0, { axis: 'x' } );
        }
    },

    slide_to_next_news: function() {
        if ( NewsBulletin.wasClicked ) { return; }
        var nextSlide = NewsBulletin.currentSlide + 1;
        if (nextSlide == 6) {
            NewsBulletin.reposition_selector(NewsBulletin.currentSlide, 1);
        } else {
            NewsBulletin.reposition_selector(NewsBulletin.currentSlide, nextSlide);
        }
        NewsBulletin.float_to_position(NewsBulletin.currentSlide, nextSlide);
        NewsBulletin.currentSlide = nextSlide;
    }
}

/*
 Flash Uploader Handler class
 */
var FlashUploadHandler = {

    primary_image: null,	
	saved_ids: new Array(),

    adCreation_UploadSuccess: function(file, server_data) {		
        swfu.startUpload();
        var imgcnt = parseInt( $("ins#img_cnt").html() ) + 1;
        var maxImg = parseInt( $("#ad_images_count").val());
        if (imgcnt > maxImg) {
            $("ins#img_cnt").html(maxImg);			
			$.ajax( { async: true, 
					  beforeSend:function(xhr) {xhr.setRequestHeader('Accept', 'text/javascript')}, 
					  data: "main_image=" +  $("#main_image").val(), 
					  dataType:'script', 
					  url:'/ads/set_main_image/'}
				   ); 			
        } else {
            $("ins#img_cnt").html(imgcnt);
        }
    },
	
    adCreation_UploadProgress: function(fileObj, bytesLoaded, bytesTotal) {
        $("ins#img_bytes").html( Math.round(bytesLoaded/1024) + " Kb/" + Math.round(bytesTotal/1024) + " Kb" );
    },

    adCreation_RemoveFile: function(id) {
        swfu.cancelUpload(id);
        $("#" + id).remove();
        var img_cnt = parseInt( $("#ad_images_count").val() - 1);
        $("#ad_images_count").val( img_cnt );
        return false;
    },

    adCreation_FileQueued: function(file) {

        var id = file.id;

        if (file.name.length > 15) {
            var label = file.name.substring(0, 14) + "...";
        } else {
            var label = file.name;
        }

        if (FlashUploadHandler.primary_image == null) {
            FlashUploadHandler.primary_image = id;
            $("#main_image").val(file.name);
        }

        var html_data = '<div id="' + id + '" class="single_image">' +
                        ' <table class="single_image"> ' +
                        '   <tr>' +
                        '       <td rowspan="3" class="icon_holder"><img src="/images/new_image.gif" alt="Image"/></td> ' +
                        '       <td class="image_fname">' + label + '</td> ' +
                        ' </tr><tr> ' +
                        ' <td class="delete_image"><a href="#" id="a1_' + id + '" onclick="return FlashUploadHandler.adCreation_RemoveFile(\'' + id + '\');"><img src="/images/delete.gif" alt="Remove"/></a> <a href="#" class="remove_link" id="a2_' + id + '" onclick="return FlashUploadHandler.adCreation_RemoveFile(\'' + id + '\');">' + deleteString + '</a></td> ';
        if (FlashUploader.editorMode == false) {
            if (FlashUploadHandler.primary_image == id) {
                html_data += FlashUploadHandler.get_main_picture_label();
            } else {
                html_data += FlashUploadHandler.get_main_picture_action_label(id);
            }
        }

        html_data +=    ' </tr></table> ' +
                        ' </div>';

        $("#images_list_append").append(html_data);
        var img_cnt = parseInt( $("#ad_images_count").val() ) + 1;
        $("#ad_images_count").val( img_cnt );
    },

    swap_main_picture: function(id) {
        if (FlashUploadHandler.primary_image == id) return;
        $("#" + FlashUploadHandler.primary_image + " td.main_picture_action").html( FlashUploadHandler.get_main_picture_action_label_inner(FlashUploadHandler.primary_image) );
        $("#" + id + " td.main_picture_action").html( FlashUploadHandler.get_main_picture_label_inner() );
        FlashUploadHandler.primary_image = id;
        var file = swfu.getFile(id);
        $("#main_image").val(file.name);
        return false;
    },

    get_main_picture_label: function() {
       return ' <tr><td class="main_picture_action"> ' + FlashUploadHandler.get_main_picture_label_inner() +' </td></tr>';
    },

    get_main_picture_label_inner: function() {
       return '<img src="/images/bullet_star.gif" alt="Main Picture"/> <span>' + mainPictureLabel + '</span>'
    },

    get_main_picture_action_label: function(id) {
        return ' <tr><td class="main_picture_action"> ' + FlashUploadHandler.get_main_picture_action_label_inner(id) + ' </td></tr>';
    },

    get_main_picture_action_label_inner: function(id) {
        return '<a href="#" id="a1_'+ id +'" onclick="return FlashUploadHandler.swap_main_picture(\'' + id + '\');">' + mainPictureActionLabel + '</a>';
    },

    adCreation_FileQueueError: function(file_object, error_code, message) {
        if (error_code == -110) {
           alert(file_object.name + " - " + error_message_file_size);
           return;
        }
        if (error_code == -100) {
           alert(error_message_file_count);
           return;
        }
        alert(error_code+ ", " + message);
    }

}

/*
 Flash Uploader Handler class
 */
var FlashUploadEditorHandler = {

    total_images: 0,
    image_count: 0,

    adCreation_UploadSuccess: function(file, server_data) {
        swfu.startUpload();
        var imgcnt = parseInt( $("ins#img_cnt").html() ) + 1;
        var maxImg = FlashUploadEditorHandler.image_count;
        if (imgcnt > maxImg) {
            $("#upload_status").hide();
            $.ajax( { async: true,
					  beforeSend:function(xhr) {xhr.setRequestHeader('Accept', 'text/javascript')},
					  dataType:'script',
					  url:'/ads/update_editor/'}
				   );
            FlashUploadEditorHandler.image_count = 0;
        } else {
            $("ins#img_cnt").html(imgcnt);
        }
        swfu.removeFileParam(file.id, file.name);
    },

    adCreation_UploadProgress: function(fileObj, bytesLoaded, bytesTotal) {
        $("ins#img_bytes").html( Math.round(bytesLoaded/1024) + " Kb/" + Math.round(bytesTotal/1024) + " Kb" );
    },

    adCreation_FileQueueError: function(file_object, error_code, message) {
        if (error_code == -110) {
           alert(file_object.name + " - " + error_message_file_size);
           return;
        }
        if (error_code == -100) {
           alert(error_message_file_count);
           return;
        }
        alert(error_code+ ", " + message);
    },

    fileDialogComplete: function(files_selected, files_queued) {
        var stats = swfu.getStats();
        if (files_selected != 0 && stats.files_queued > 0) {
            swfu.setUploadURL(EditorUploader.upload_url);
            $("ins#img_total_cnt").html(FlashUploadEditorHandler.image_count);
            $("#upload_status").show();
            swfu.startUpload();
        }
    },

    fileQueued: function(file) {
        if (FlashUploadEditorHandler.total_images == 0) {
            var loaded_number = parseInt( $('#ad_images_count').val() );
            FlashUploadEditorHandler.total_images = loaded_number;
        }

        if (FlashUploadEditorHandler.total_images + 1 < 13) {
            FlashUploadEditorHandler.image_count++;
            FlashUploadEditorHandler.total_images++;
            $("#add_picture").show();
        } else {
            alert(error_message_file_count);
            swfu.cancelUpload(file.id);
        }

        if ( FlashUploadEditorHandler.total_images == 12 ) {
                $("#add_picture").hide();
        }
    }

}

/*
 Flash Uploader class
 */
var swfu;

var FlashUploader = {

    firstImage: 1,
    editorMode: false,

    init: function() {
        swfu = new SWFUpload({
            upload_url : "/ads/upload/",
            flash_url : "/flash/swfupload_f8.swf",
            upload_success_handler : FlashUploadHandler.adCreation_UploadSuccess,
            file_types: "*.jpg;*.gif",
            file_size_limit : "1500KB",
            file_upload_limit : 12,
            file_queue_error_handler: FlashUploadHandler.adCreation_FileQueueError,
            file_queued_handler: FlashUploadHandler.adCreation_FileQueued,
            upload_progress_handler: FlashUploadHandler.adCreation_UploadProgress
        });

        $("#add_picture").click(function() {
            swfu.selectFiles();
        });
    }
}

var EditorUploader = {

    upload_url: null,
    editorMode: false,

    init: function() {
        swfu = new SWFUpload({
            flash_url : "/flash/swfupload_f8.swf",
            upload_success_handler : FlashUploadEditorHandler.adCreation_UploadSuccess,
            file_types: "*.jpg;*.gif",
            file_size_limit : "1500KB",
            file_upload_limit : 12,
            file_queue_error_handler: FlashUploadEditorHandler.adCreation_FileQueueError,
            upload_progress_handler: FlashUploadEditorHandler.adCreation_UploadProgress,
            file_dialog_complete_handler: FlashUploadEditorHandler.fileDialogComplete,
            file_queued_handler: FlashUploadEditorHandler.fileQueued
        });

        $("#add_picture").click(function() {
            swfu.selectFiles();
        });
    }
}


/*
 AdListing
 */

var AdListing = {
    initialize: function() {
//        $("div#selected_style_item a").click(AdListing.show_view_style_menu);
        $("a#show_gmap_search").click(AdListing.show_google_maps);   
        $("a#img_show_gmap_search").click(AdListing.show_google_maps);    
        $("a#show_gmap_search_view").click(AdListing.show_google_maps);   
        $("a#img_show_gmap_search_view").click(AdListing.show_google_maps);         
    },

    show_view_style_menu: function() {
        var style_selector = $("ul#view_style_selector");
        if (!style_selector.is(":visible")) {
            $("div.view_changer").css("background", "#ffe7e7");
            style_selector.css("background", "#ffe7e7");
            style_selector.toggle();
        } else {
            $("div.view_changer").css("background", "#ffffff");
            style_selector.css("background", "#ffffff");
            style_selector.toggle();
        }
        return false;
    },
    
    show_google_maps: function() {
       $("#lightbox").css("width", 819);
        $("#lightbox").css("height", 590);
        Lightbox.show();
        $("div#lightbox").html(" ");
        $("div#lightbox").load("/ads/load_gmap_search", AdListing.initialize_lightbox_events);
        return false;
    },

    initialize_lightbox_events: function() {
        $("a#close_lightbox").click(AdListing.close_lightbox);
        $("input#gms_button").click(AdListing.ads_for_gmap_search);
        $("#gms_region").change(AdListing.on_parent_change);
        if (GBrowserIsCompatible()) {
            AdListing.create_google_map();
        }
    },   

    on_parent_change: function() {
        if ($(this).val() == 0) {
            $("td#sub_region_gms").hide();
        } else {
        $("td#sub_region_gms").show();
        $("td#sub_region_gms").load("/advanced_search/load_subregions_fast_search/"+$(this).val(), AdListing.initialize_child_events);            
        }
    },

    initialize_child_events: function() {
        $("#search\\[sub_region\\]").change(AdListing.on_child_change);
    },  

    on_child_change: function() {
        if ($(this).val() == 0  && $(this).val() == 96) {
            $("td#streets_gms").hide();
        } else {
        $("td#streets_gms").show();
        $("td#streets_gms").load("/ads/load_streets_gmap_search/"+$(this).val());            
        }
    },

    ads_for_gmap_search: function() {
         if ($("#gms_region").val() != 0 ) {
            var par_ids = $("#gms_action_type").val() + "|" + $("#gms_categories").val() + "|" + $("#gms_region").val() + "|" + $("#search\\[sub_region\\]").val() + "|" + $("#streets_gmap_s").val();
//            alert(par_ids);
            $.get("/ads/find_gmap_search_ads", {ids: par_ids }, AdListing.create_gmap_search);
         }  else {
         alert($("#gmap_error_text").val());
         }
     }, 

    create_gmap_search: function(data) {
//        alert(data);
        $("div#gmap_show_text").hide();
        $("div#gmap_search_text").show();
        var map = new GMap2(document.getElementById("map"));
        map.addControl(new GMapTypeControl());
        map.addControl(new GLargeMapControl());

        var variantiIcon = new GIcon();
        variantiIcon.image = "/images/gmap_icon.png";
        variantiIcon.shadow = "/images/gmap_shadow.png";
        variantiIcon.iconSize = new GSize(19, 36);
        variantiIcon.iconAnchor = new GPoint(9, 36);
        variantiIcon.infoWindowAnchor = new GPoint(19, 0);
        markerOptions = { icon:variantiIcon, draggable: false };
        if ($("#gms_region").val() == 683) {
          map.setCenter(new GLatLng(56.94448261114873,24.109625816345215), 2);
        } else {
          map.setCenter(new GLatLng(56.94448261114873,24.109625816345215), 7);
        }
        var all_info = data;

        
        var ads = all_info.split("||");
        ads.pop();
        for (var i = 0; i < ads.length; i=i+1) {
              var ad_data = ads[i].split("|")
              var defined_point = ad_data[0];
              if (defined_point != "") {
//Finds location  
                var coord = defined_point.split(";");
                var user_point = new GLatLng(Number(coord[0]),Number(coord[1]));
//                var marker = new GMarker(user_point, markerOptions);
                var show_text = '<center>'+'<a href="http://www.varianti.lv/'+ad_data[11]+'?locale='+ad_data[12]+'" >'+
                '<p>'+'<img src = "http://www.varianti.lv/static/'+ad_data[1]+'/'+ad_data[2]+'/'+ad_data[3]+'" alt =""/>'+'</p>'+
                '<p>'+ad_data[4]+' '+ad_data[5]+'</p>'+
                '<p>'+ad_data[6]+'</p>'+
                '<p>'+ad_data[7]+' '+ad_data[8]+', '+ad_data[9]+' '+ad_data[10]+'</p>'+'<br></br><br></br>'+
                '</a></center>';
//                GEvent.addListener(marker, "mouseover", function() {
//                   map.openInfoWindowHtml(user_point,show_text);
//                });                 
                map.addOverlay(AdListing.create_marker(user_point,markerOptions,show_text));   
              }
        }
    }, 
    
    create_google_map: function() {
        var map = new GMap2(document.getElementById("map"));
        map.addControl(new GMapTypeControl());
        map.addControl(new GLargeMapControl());

        var variantiIcon = new GIcon();
        variantiIcon.image = "/images/gmap_icon.png";
        variantiIcon.shadow = "/images/gmap_shadow.png";
        variantiIcon.iconSize = new GSize(19, 36);
        variantiIcon.iconAnchor = new GPoint(9, 36);
        variantiIcon.infoWindowAnchor = new GPoint(19, 0);
        markerOptions = { icon:variantiIcon, draggable: false };
        map.setCenter(new GLatLng(56.94448261114873,24.109625816345215), 7);
        var all_info = $("#gmap_search_ads").val();
//        alert(all_info + '--');
        
        var ads = all_info.split("||");
        ads.pop();
        for (var i = 0; i < ads.length; i++) {
              var ad_data = ads[i].split("|")
              var defined_point = ad_data[0];
              if (defined_point != "") {
//Finds location  
                var coord = defined_point.split(";");
                var user_point = new GLatLng(Number(coord[0]),Number(coord[1]));
//                var marker = new GMarker(user_point, markerOptions);
                var show_text = '<center>'+'<a href="http://www.varianti.lv/'+ad_data[11]+'?locale='+ad_data[12]+'" >'+
                '<p>'+'<img src = "http://www.varianti.lv/static/'+ad_data[1]+'/'+ad_data[2]+'/'+ad_data[3]+'" alt =""/>'+'</p>'+
                '<p>'+ad_data[4]+' '+ad_data[5]+'</p>'+
                '<p>'+ad_data[6]+'</p>'+
                '<p>'+ad_data[7]+' '+ad_data[8]+', '+ad_data[9]+' '+ad_data[10]+'</p>'+'<br></br><br></br>'+
                '</a></center>';
//                GEvent.addListener(marker, "mouseover", function() {
//                   map.openInfoWindowHtml(user_point,show_text);
//                });                 
                map.addOverlay(AdListing.create_marker(user_point,markerOptions,show_text));   
              }
        }
    }, 

    create_marker: function(point,options,text) {
        var marker = new GMarker(point, options);
        GEvent.addListener(marker, "mouseover", function() {
                   marker.openInfoWindowHtml(text);
                }); 
        return marker;
    },
    
    close_lightbox: function() {
        Lightbox.close_lightbox();
        return false;
    }
    
}


/*
 Advanced Search
*/

var AdvancedSearch = {
    initialize: function() {
//Loads sub_region on region change and showing non-zero region 
        $("#search\\[region\\]").show( AdvancedSearch.on_region_change );    
        $("#search\\[region\\]").change( AdvancedSearch.on_region_change );
    },

    on_region_change: function() {
        var selected_region = $(this).val();
        if (selected_region == 0) {
            $(".sublocation_tr").hide();
        } else {
            $(".sublocation_tr").show();
            $(".sublocation_tr td#sub_region_map").load("/advanced_search/load_subregions/"+selected_region);
            $(".sublocation_tr td#sub_region_fast").load("/advanced_search/load_subregions_fast_search/"+selected_region);            
        }
    }
}

/*
 Realtors
*/

var Realtors = {
    initialize: function() {
        $("input#ad_code").click( Realtors.ad_code_filter_on_change );
        $("input#ad_code").change( Realtors.ad_code_filter_on_change );

        $("input#super_selector").click( Realtors.super_selector_on_change );

        $("a.form_action_change").click( Realtors.change_form_action_and_submit );
        $(".editor_window").click( AdEditor.open_editor );
    },

    ad_code_filter_on_change: function() {
        if ( $(this).val() == $(this).attr("empty_value") ) {
            $(this).val("");
        }
    },

    super_selector_on_change: function() {
        if ($(this).attr("checked")) {
            $("td input[type=checkbox]").attr("checked", "checked")
        } else {
            $("td input[type=checkbox]").attr("checked", "")
        }
    },

    change_form_action_and_submit: function() {                
        var confirm_question = $(this).attr('confirmq');
        if ( confirm(confirm_question) ) {
            var new_action = $(this).attr("href");
            $("form#ads_form").attr("action", new_action);
            $("form#ads_form").submit();
        }
        return false;
    }

}

/*
 AdEditor
 Loads all necessary for Editor
 */


var AdEditor = {
    initialize: function() {
        $("a.tab_selector").click( AdEditor.select_tab );
        $("#ad_category_id").change( AdEditor.preload_apraksts_data );
//        $("#parent_location_id").change();
//        $("#location_id").change(AdEditor.on_child_change);        
        $("a#google_map_yes_ed").click(function() {
          AdEditor.on_parent_change();
          AdEditor.on_child_change();        
          AdEditor.show_google_maps();
          });        
    },

    on_parent_change: function() {
        $.get("/ads/find_location_having_id", {id: $("#parent_location_id").val() }, AdEditor.save_rajons_name);
    },

    save_rajons_name: function(data) {
        $("#rajons_name").val(data);
    },
    
    on_child_change: function() {
        $.get("/ads/find_location_having_id", {id: $("#location_id").val() }, AdEditor.save_vieta_name);
    },

    save_vieta_name: function(data) {
        $("#vieta_name").val(data);
    },

    show_google_maps: function() {
        $("#lightbox").css("width", 819);
        $("#lightbox").css("height", 570);
        Lightbox.show();
        $("div#lightbox").html(" ");
        $("div#lightbox").load("/ads/load_gmap_editor", AdEditor.initialize_lightbox_events);
        return false;
    },

    initialize_lightbox_events: function() {
        $("a#close_lightbox").click(AdEditor.close_lightbox);
        $("input#gmap_ok_button").click(AdEditor.close_lightbox);
        if (GBrowserIsCompatible()) {
            AdEditor.create_google_map();
        }
    },

    create_google_map: function() {
        var map = new GMap2(document.getElementById("map"));
        map.addControl(new GMapTypeControl());
        map.addControl(new GLargeMapControl());
//Default center point if address is not found        
        var center_point = new GLatLng(56.946472, 24.104691);
//        map.setCenter(center_point, 13);
        var geocoder = new GClientGeocoder();
        var defined_point = $("#coordinates").val();

//       var rajons = $("#address_parent option:selected").text();
       var rajons = $("#rajons_name").val();
//       var vieta = $("#location_id").val();
       var vieta = $("#vieta_name").val();
       var adrese = $("#street").val();
      rajons = rajons.replace("raj.","rajons")
      vieta = vieta.replace("pag.","pagasts")      
      rajons = rajons.replace("Rīgas pilsēta","Rīga")
//Forms user defined address
      var address = ""
      if (rajons == "Rīga")
        { address = "Latvia, " + rajons;
        }
      if (rajons == "Ārpus Latvijas")
        { address =  vieta;
        }
      if (rajons != "Rīga" && rajons != "Ārpus Latvijas" )
        { address = "Latvia, " + vieta;
        }
      if (adrese != "" )
        { address =  address+", "+ adrese;
        }        
        
        var variantiIcon = new GIcon();
        variantiIcon.image = "/images/gmap_icon.png";
        variantiIcon.shadow = "/images/gmap_shadow.png";
        variantiIcon.iconSize = new GSize(19, 36);
        variantiIcon.iconAnchor = new GPoint(9, 36);
        variantiIcon.infoWindowAnchor = new GPoint(19, 0);
        markerOptions = { icon:variantiIcon, draggable: true };
        //var marker = new GMarker(center_point, markerOptions);
//Finds user defined location
        var address_found = 0
        
        if (address && defined_point == "") {
          if (geocoder) {
            geocoder.getLatLng(
            address,
            function(point) {
              if (!point) {
                alert(address + " " + $("#gmap_error_text").val());
//Finds default location                
                map.setCenter(center_point, 13);
                var marker = new GMarker(center_point, markerOptions);
//Event listeners                
                GEvent.addListener(marker, "dragend", function() {
                    AdEditor.set_coordinates(marker);
                });
                GEvent.addListener(marker, "click", function() {
                    AdEditor.set_coordinates(marker);
                });                   
                map.addOverlay(marker);                
              } else {
                map.setCenter(point, 13);
                var marker = new GMarker(point, markerOptions);
//Event listeners                
                GEvent.addListener(marker, "dragend", function() {
                    AdEditor.set_coordinates(marker);
                }); 
                GEvent.addListener(marker, "click", function() {
                    AdEditor.set_coordinates(marker);
                });    
                GEvent.addListener(marker, "mouseover", function() {
                    AdEditor.set_coordinates(marker);
                });                 
                map.addOverlay(marker);
                marker.openInfoWindowHtml(address);
              }
            }
            );
          }
        } 

              if (defined_point != "") {
//Finds user location  
              var coord = defined_point.split(";")
              var user_point = new GLatLng(Number(coord[0]),Number(coord[1]));
                map.setCenter(user_point, 13);
                var marker = new GMarker(user_point, markerOptions);
//Event listeners                
                GEvent.addListener(marker, "dragend", function() {
                    AdEditor.set_coordinates(marker);
                });
                GEvent.addListener(marker, "click", function() {
                    AdEditor.set_coordinates(marker);
                });         
                GEvent.addListener(marker, "mouseover", function() {
                    AdEditor.set_coordinates(marker);
                });                  
                map.addOverlay(marker);                
              } 

/*
        GEvent.addListener(map, "click", function(overlay, point) {
            marker.setPoint(point);
            AdCreationForm.set_coordinates(marker);
        });
*/
        //map.addOverlay(marker);

    },

    set_coordinates: function(marker) {
        var create_map_link = $("#google_map_yes_ed");
        var destroy_map_link = $("#google_map_no_ed");
        if (create_map_link.is(":visible")) {
            create_map_link.hide();

            destroy_map_link.click(AdEditor.clear_gmap_coordinates);
            destroy_map_link.show();
        }

        $("#coordinates").val(marker.getPoint().lat() + ";" + marker.getPoint().lng());
    },

    clear_gmap_coordinates: function() {
        $(this).hide();
        $("#coordinates").val("");
        $("#google_map_yes_ed").show();
        return false;
    },

    close_lightbox: function() {
        Lightbox.close_lightbox();
        return false;
    },

    load_editor_window: function(url) {
        Utils.openPopup(url, 1000, 600, true);
        return false;
    },

    select_tab: function() {
        var divid = $(this).attr("divid");
        AdEditor.reselect_tab($(this).parent());
        
        $("div#step1").hide();
        $("div#step2").hide();
        $("div#step3").hide();
        $("div#step4").hide();
        $("div#"+divid).show();
    },

    reselect_tab: function(selected_obj) {
        $("ul.creation_steps li").removeClass("selected");
        selected_obj.addClass("selected")
    },

    preload_apraksts_data: function() {
        var selected_category = $(this).val();
    },

    price_per_unit_calculation: function() {
        var total_area = $("#ad_description_total_area").val();
        var total_price = $("#ad_amount").val();
        var currency = $("#ad_ad_currency_id option:selected").text();

        var total_area = parseFloat(total_area);
        var total_price = parseFloat(total_price);

        if (!isNaN(total_area) && !isNaN(total_price)) {
            var price_per_unit = total_price / total_area;
            $("#price_per_m2").html(price_per_unit.toFixed(2) + " " + currency + "/" + area_units);
        } else {
            $("#price_per_m2").html($("#price_per_m2").attr("old_text"));
        }
    },

    change_units: function() {
        area_units = $(this).val();
        AdEditor.price_per_unit_calculation();
    },

    reload_category_field: function() {
        var category_id = $(this).val();
        $.ajax( { async: true,
                  beforeSend:function(xhr) {xhr.setRequestHeader('Accept', 'text/javascript')},                  
                  dataType:'script',
                  url:'/ads/reload_category_fields/' + category_id}
               ); 			        
    },

    removeImageFile: function(image_id) {
        $.ajax( { async: true,
                  beforeSend:function(xhr) {xhr.setRequestHeader('Accept', 'text/javascript')},
                  dataType:'script',
                  url:'/ads/editor_delete_image/' + image_id}
              );
        FlashUploadEditorHandler.total_images--;
        if ( FlashUploadEditorHandler.total_images < 12 ) {
                $("#add_picture").show();
        }
        return false;
    },

    changeMainPicture: function(image_id) {
        $.ajax( { async: true,
                  beforeSend:function(xhr) {xhr.setRequestHeader('Accept', 'text/javascript')},
                  dataType:'script',
                  url:'/ads/editor_change_main_picture/' + image_id}
               );
        return false;
    },

    open_editor: function() {
      return AdEditor.load_editor_window($(this).attr('href'));      
    },

    init_validation: function() {
        
    }
}

/*
 DocumentLoader
 Loads all necessary functions after document is loaded. 
 */
var DocumentLoader = {
    initialize: function() {
        ActionMenus.initialize();
        Lightbox.init();
        TitleChanger.initialize();

        if ($("#form_container").length) {
            AdCreationForm.initialize();
        }
        AdListing.initialize();
        AdEditor.initialize();
        
        AdImagesViewer.initialize_clicks();
        NewProjectsImagesViewer.initialize_clicks();
        NewsBulletin.initialize_clicks();
        AdvancedSearch.initialize();
        Realtors.initialize();

        this.initialize_printing_mode();
        this.ajax_idicator();
    },

    ajax_idicator: function() {

        $("#ajax_indicator").bind("ajaxSend", function() {
            var page_size = Utils.getPageSize();

            var scrollTop = $(window).scrollTop();
            var scrollLeft = $(window).scrollLeft();

            var toppos = ( page_size[3] - (20) ) / 2 + scrollTop;
            var leftpos = ( page_size[2] - (100) ) / 2 + scrollLeft;

            $(this).css('top', toppos + "px");
            $(this).css('left', leftpos + "px");
            Utils.hideSelectsIfNeeded();
            $(this).show();
        }).bind("ajaxComplete", function() {
            $(this).hide();
            Utils.showSelectsIfNeeded();
        });

    },

    initialize_printing_mode: function() {
        $("a.print_ad").click( Utils.openPopupOnClick );
    }
}

$(document).ready(function() {
    DocumentLoader.initialize();
});


/*
Shows Gmap
*/

var AdShowGMap = {
    initialize: function() {
    },

    show_google_maps: function() {
        $("#lightbox").css("width", 819);
        $("#lightbox").css("height", 570);
        Lightbox.show();
        $("div#lightbox").html(" ");
        $("div#lightbox").load("/ads/load_gmap_ad_show", AdShowGMap.initialize_lightbox_events);
//Finds address values  
        return false;
    },

    initialize_lightbox_events: function() {
        $("a#close_lightbox").click(AdShowGMap.close_lightbox);
        $("input#gmap_ok_button").click(AdShowGMap.close_lightbox);
        if (GBrowserIsCompatible()) {
             AdShowGMap.create_google_map();
        }
    },

    create_google_map: function() {
        var map = new GMap2(document.getElementById("map"));
        map.addControl(new GMapTypeControl());
        map.addControl(new GLargeMapControl());
//Default center point if address is not found        
//        var center_point = new GLatLng(56.946472, 24.104691);
//        map.setCenter(center_point, 13);
        var geocoder = new GClientGeocoder();
        var defined_point = $("#coordinates").val();

        var variantiIcon = new GIcon();
        variantiIcon.image = "/images/gmap_icon.png";
        variantiIcon.shadow = "/images/gmap_shadow.png";
        variantiIcon.iconSize = new GSize(19, 36);
        variantiIcon.iconAnchor = new GPoint(9, 36);
        variantiIcon.infoWindowAnchor = new GPoint(19, 0);
        markerOptions = { icon:variantiIcon, draggable: false };
        var show_text = '<p><h3>'+$("#marker_window_number").val()+'</p></h3>'+'<p>'+$("#marker_window_address").val()+'</p>'
        if ($("#marker_window_price").val()) {show_text = show_text+'<p>'+$("#marker_window_price").val()+'</p>'}

              if (defined_point != "") {
//Finds user location  
              var coord = defined_point.split(";")
              var user_point = new GLatLng(Number(coord[0]),Number(coord[1]));
                map.setCenter(user_point, 13);
                var marker = new GMarker(user_point, markerOptions);
                map.addOverlay(marker);                
                marker.openInfoWindowHtml(show_text);
              } 
    },

    close_lightbox: function() {
        Lightbox.close_lightbox();
        return false;
    }
    
}
