/**
 * @version $Id: pyramid.js 281 2010-03-04 08:59:24Z mehis $
 * @requires jQuery
 */

Array.prototype.in_array = function(p_val) {
    for(var i = 0, l = this.length; i < l; i++) {
        if(this[i] == p_val) {
            return true;
        }
    }
    return false;
}

function countProperties(obj) {
	var count = "__count__",
	hasOwnProp = Object.prototype.hasOwnProperty;
	
	if (typeof obj[count] === "number" && !hasOwnProp.call(obj, count)) {
		return obj[count];
	}
	count = 0;
	for (var prop in obj) {
		if (hasOwnProp.call(obj, prop)) {
			count++;
		}
	}
	return count;
};

/**
 * Menu manipulation
 * @author Mehis Kaare
 */
jQuery.fn.animateMenu = function(options) {
    var defaults = {
        debug                : false,
        menu_height          : 86,
        menu_animation_style : 'fade', //[none|fade]
        menu_animation       : 250,
        menu_over_animation  : 500,
        menu_out_animation   : 500,
        menu_out_sensitive   : 500,
        menu_over_sensitive  : 350,
        main_menu_container  : '#mainmenu',
        sub_menu_container   : '#submenu',
        default_main_menu    : 35,
		base_url             : ''
    };  
    var options = jQuery.extend(defaults, options);

    var debug                = options.debug;
    var menu_height          = options.menu_height;
    var menu_animation_style = options.menu_animation_style;
    var menu_animation       = options.menu_animation;
    var menu_over_animation  = options.menu_over_animation;
    var menu_out_animation   = options.menu_out_animation;
    var menu_out_sensitive   = options.menu_out_sensitive;
    var menu_over_sensitive  = options.menu_over_sensitive;
    var main_menu_container  = jQuery(options.main_menu_container);
    var sub_menu_container   = jQuery(options.sub_menu_container);
    var default_main_menu    = options.default_main_menu;
	var base_url             = options.base_url;
    var active_main_menu     = (parseInt(options.default_main_menu)>0) ? options.default_main_menu : null;
    var menu_id              = (parseInt(options.active_main_menu)>0) ? options.active_main_menu : null;
    var menu_count_array     =  new Array();
    var menu_hover           = null; // active menu
    var timeout;

    main_menu_container.children("ul").children().not(".separator").each(function(i){
        var id = jQuery(this).children("a").attr('id');
        menu_count_array[id] = jQuery(".sub_menu_"+id).children().size(); 
    });
    
    /******************************************************/

    function submenuHide(){
        if(typeof(console) != "undefined" && debug) console.log("submenuHide()");
        sub_menu_container.slideUp(menu_out_animation);
        mainmenuDeactivate(menu_id);
    }
    
    function submenuShow(){
        if(typeof(console) != "undefined" && debug) console.log("submenuShow()");
        sub_menu_container.slideDown(menu_out_sensitive);
    }
    
    function submenuAnimate(menu_id){
        if(typeof(console) != "undefined" && debug) {
            console.log("submenuAnimate("+menu_id+")");
            console.log("class = "+jQuery(".sub_menu_"+menu_id).attr('class')+"");
        }
        //if(menu_count_array[menu_id]>0){
            if (menu_animation_style=='fade'){
                sub_menu_container.children(".inline").children().hide();
                if (navigator.appName=="Microsoft Internet Explorer")
                    jQuery(".sub_menu_"+menu_id).css({'marginTop':0}).show();
                else
                    jQuery(".sub_menu_"+menu_id).css({'marginTop':0}).fadeIn(menu_animation);
            } else {
                if(typeof(console) != "undefined"  && debug) console.log("none");
                sub_menu_container.children(".inline").children().hide();
                jQuery(".sub_menu_"+menu_id).css({'marginTop':0}).show();    
            }
            //mainmenuActivate(menu_id);
        //}
        if (menu_id==34) sub_menu_container.attr("class", "sub_type2"); else sub_menu_container.attr("class","sub_type1");
    }
    
    function mainmenuActivate(menu_id){
        var menu = jQuery("#"+menu_id);
        active_main_menu  = menu_id;
        var mainmenuList = menu.parents("ul").children();
        mainmenuList.each(function(i) {
            jQuery(this).find("img").attr('src', base_url+'static/menu/'+jQuery(this).find("a").removeClass("active").attr("id")+'.1.gif');
        });
        menu.addClass("active").find("img").attr('src', base_url+'static/menu/'+menu_id+'.2.gif');
    }
    
    function mainmenuDeactivate(menu_id){
        var menu = jQuery("#"+menu_id);
        menu.removeClass("active");
        menu.find("img").attr('src', base_url+'static/menu/'+menu_id+'.1.gif');
    }
    
    /********************************************/
    
    main_menu_container.hover(              
        function() {
            clearTimeout(timeout);
        }, function () {
            if (menu_hover==null && active_main_menu){
                submenuShow();
            }
        }
    );
    
    main_menu_container.not(".separator").find("img").hover(function() {
        menu_id     = jQuery(this).parent("a").attr("id");
        if(typeof(console) != "undefined"  && debug) 
            console.log("menu_hover=" +menu_hover+" menu_id=" +menu_id+ " active_main_menu=" +active_main_menu+ " default_main_menu=" +default_main_menu+ "" + "");
        if (menu_id!=active_main_menu ) { //|| menu_hover==null
            menu_hover     = menu_id;
            clearTimeout(timeout);
            timeout = setTimeout(function() {
                if (menu_count_array[menu_hover]>0){
                    if (sub_menu_container.css('display')=='none'){
                        submenuShow();
                    }
                    submenuAnimate(menu_id);
                    mainmenuActivate(menu_id);
                } else {
                    submenuHide();
                }
                
            }, menu_over_sensitive);
        }
    }, function () {
        menu_hover = null;
        clearTimeout(timeout);
    });
    

    sub_menu_container.hover(function() {
        menu_hover = true;
    }, function () {
        if (menu_id!=default_main_menu){
            menu_hover = null;
            timeout = setTimeout(function() {
                if (menu_hover==null && !default_main_menu){
                    submenuHide();
                } else if (menu_hover==null && active_main_menu){
                    menu_id = default_main_menu;
                    submenuAnimate(menu_id);
                    mainmenuActivate(menu_id);
                }
            }, menu_out_sensitive);
        }
    });
    
    /**
    * Submenu image over
    */
    var default_menu_image;
    sub_menu_container.find("li[class!='active']").find("img").hover(function() {
        var image = jQuery(this);
        if (image.attr("rel")!=""){
            var id = parseInt(jQuery(this).parent("a").attr('id'));    
            default_menu_image = image.attr("src");
			if (id>0) {
				image.attr("src", base_url+'static/menu/'+id+'.2.gif');
			}
        }
    }, function () {
        var image = jQuery(this);
        if (image.attr("rel")!=""){
            image.attr("src", default_menu_image);
        }
    });
};


/**
* Pricelist
* @author Mehis Kaare
*/
jQuery.fn.initPricelistButton = function() {
    jQuery(".pricelist").click(function(){
        var id = jQuery(this).parent().attr("id");
        var pricelist_menu     = jQuery(this).parent().children(".pricelist_select");
        //var pricelist_arrow = jQuery(this).parent().children(".pricelist_arrow");
        jQuery(".pricelist_select").slideUp(150);
        //jQuery(".pricelist_arrow").hide();
        //pricelist_arrow.show();
        jQuery('span', this).addClass('arrow');
        pricelist_menu.slideDown();
        return false;
    });
    
    jQuery(".pricelist_agency, .pricelist_model").click(function(){
        jQuery(".pricelist_select").slideUp();
        jQuery(".pricelist_arrow").hide();
        var id = jQuery(this).attr("id");
        var pricelist_id = jQuery(this).parents(".pricelist_button").attr("id");
        if (jQuery(this).attr("class") == "pricelist_agency")
            tb_show("","./?op=pricelist&pricelist_id="+pricelist_id+"&agency_id="+id+"&width=450&height=100&animate=1");
        else
            tb_show("","./?op=pricelist&pricelist_id="+pricelist_id+"&model_id="+id+"&width=450&height=100&animate=1");
        return false;
    });
    
    jQuery("body").click(function(){
        jQuery(".pricelist_select").slideUp();
        //jQuery(".pricelist_arrow").hide();
        jQuery('.pricelist span').removeClass('arrow');
    });
};

/**
* Banner
* @author Mehis Kaare
*/
jQuery.fn.initBanner = function(options) {
    var defaults = {
        over           : 'none', //[none,fade]
        over_animation : 500,
        out_animation  : 250
    };  
    
    var options = jQuery.extend(defaults, options);

    var targetContent = null;
    jQuery('#b_banners .inline li a').click(function() { 
        if (jQuery(this).attr('rel')!='link') {
            var bannerPosLeft = parseInt(jQuery(this).parent().position().left + jQuery(this).parent().parent().position().left) + 20;
            targetContentSource = jQuery(this).prev();
            targetContent = jQuery("#banner_overlay");
            jQuery('#banner_overlay').slideUp(options.out_animation, function() { 
                targetContent.css({left:bannerPosLeft}).html(targetContentSource.html());
                targetContent.slideDown(options.over_animation);
                //targetContent.pngFix();
            });
            return false;
        }
    });
    
    function closeBanners(){
        jQuery('#banner_overlay').slideUp(options.out_animation);
    }
    
    jQuery("html").click(function(){
        closeBanners();
    });
    
    jQuery("div[class^='jcarousel-next'], div[class^='jcarousel-prev'], #b_close2").live("click", function(){
        closeBanners();
    });

    if (options.over=='fade'){
        jQuery('#b_banners .inline li a').hover(function() {
            jQuery(this).parent().animate({ 
                 'opacity': 0.8,
                 top: -1
            }, 50).animate({
                'opacity': 1
            }, 150);
        }, function () {
            jQuery(this).parent().animate({
                'opacity': 1,
                top: 0
            }, 150);
        });
    }

};

/**
* Footer
* @author Mehis Kaare
*/
jQuery.fn.initFooter = function(options) {
    var defaults = {
        url_array      : new Array(),
        redirect_array : new Array()
    };  
    var options = jQuery.extend(defaults, options);    

    var content = jQuery('#bottom_overlay .inline #b_overlay');
    jQuery('.b_link').click(function() {
        targetContent = jQuery('#bottom_overlay');                         
        var id = jQuery(this).attr('id');
        var request_url = options.url_array[id];
        
        if (parseInt(options.redirect_array[id])==0){
            jQuery("#bottom_content .links a").removeClass('active');
            jQuery(this).children("a").addClass('active');
    
            targetContent.children(".active_arrow").css({'left':((jQuery(this).position().left+jQuery(this).width()/2) - targetContent.children(".active_arrow").width()/2 )});

            jQuery.post(request_url, {ajax:1}, function(data){
                                                    
                if(typeof closeBanners == 'function') closeBanners();
              
                if (targetContent.css('display') == 'none') {
                    content.html(data);
                    targetContent.slideDown(500);    
                } else {
                    content.fadeOut("fast", function() { 
                        content.html(data);
                        content.fadeIn();
                    });
                }
            });
        } else {
            document.location = request_url;
        }
        
        return false;
    });
    
    jQuery('#b_close').click(function() {
        targetContent.slideUp(250);
        jQuery("#bottom_content .links a").removeClass('active');                         
        return false;
    });    

};
