if (!Array.indexOf) {
  Array.prototype.indexOf = function (obj, start) {
    for (var i = (start || 0); i < this.length; i++) {
      if (this[i] == obj) {
        return i;
      }
    }
    return -1;
  }
}
var mf_adressbar = new Class({
	page_id_list : null,
	url_href : null,
	initialize : function(page_id) {
		/*
		we may need a list for several objects not only page_id like now..
		*/
		this.page_id_list = new Array(page_id);
	},
	toggle_page_id : function(page_id){
		i = this.page_id_list.indexOf(page_id);
		if(i>-1){
			this.page_id_list.splice(i,1);
		}
		else{
			this.page_id_list[this.page_id_list.length]=page_id;
		}
		//console.log(document.location.hash);
		this.url_href = '#&product_list={'+this.page_id_list+'}';
		//console.log(this.url_href);
		document.location.hash = this.url_href;
	}
});
var mf_store_class = new Class({

	adressbar : null,
	click_chain : null,
    options:{
        loader_params: {}
    },

	initialize : function($options) {
		this.click_chain = new Chain;
		this.adressbar = new mf_adressbar(EDIT_CORE.page_id);
        $options = $options || {};
        this.options = $merge(this.options, $options);
	},
	toggle_product_list : function(page_id,target_id,elem,class1,class2,class_loading){
		if(!$(elem).retrieve('loading')){
			this.click_chain.chain(
				function(){
					var loader_obj = new mf_loader_class(this, this.options.loader_params);
					loader_obj.toggle_product_list(page_id,target_id,elem,class1,class2,class_loading);
				}.bind(this)
			);
			this.set_loading(elem,class_loading);
			this.click_chain.callChain();
		}
	},
	set_loading : function(elem,css_class){
		$(elem).store('loading', true);
		$(elem).toggleClass(css_class);
	},
	unset_loading: function(elem,css_class){
		$(elem).store('loading', false);
		$(elem).toggleClass(css_class);
	},
	collapse_produkt_list: function(elem){
		var produkt_el = $(elem).getElement('.product_box');
        $(elem).getElement('.amount-text').set('html', 'flere');
		if(produkt_el){
			var produkt_size = produkt_el.getSize();
			var produkt_list_el = $(elem).getElement('.product_list');
			//console.log(produkt_list_el);
			var org_size = produkt_list_el.getSize();
			//var new_height = (produkt_size.y+31+10);
			var new_height = produkt_size.y;
			//padding-top=10
			if(org_size.y-10!=new_height){
				//console.log(org_size.y);
				produkt_list_el.store('org_height',org_size.y-10)
				produkt_list_el.tween('height', new_height);
				//console.log(new_height);
			}
		}
	},
	expand_produkt_list: function(elem){
		var produkt_list_el = $(elem).getElement('.product_list');
		var org_height = produkt_list_el.retrieve('org_height');
        $(elem).getElement('.amount-text').set('html', 'færre');
		if(org_height>0){
			produkt_list_el.tween('height', org_height);
		}
		else{
			produkt_list_el.setStyle('height', 'auto');
		}
	},
    toogle_produkt_list: function(elem){
        if (elem.retrieve('expanded') == true) {
            this.collapse_produkt_list(elem);
            elem.store('expanded', false);
            EDIT_trackEvent('Share meny', 'Se færre produkter', document.title);
        } else {
            this.expand_produkt_list(elem);
            elem.store('expanded', true);
            EDIT_trackEvent('Share meny', 'Se flere produkter', document.title);
        }
    },
	collapse_item_list: function(elem){
        if($(elem)){
            var org_size = $(elem).getSize();
            var new_height = 0;
            $(elem).set('tween', {
                onComplete: function(){
                    if (parseInt(this.getStyle('height')) > 0) {
                        this.setStyle('height', 'auto');
                    }
                }.bind($(elem))
            });
            if (org_size.y > new_height) {
               $(elem).tween('height', 0);
            }
            $$('#'+$(elem).id+'>span>a.a_left_menu_selected').each(function(item, key, array){
                //item['lock'] = true;
                item.onclick();
                item.fireEvent('click');
            }.bind(this));
        }
	},
	expand_item_list: function(elem){
		var is_size = $(elem).getSize();
		var org_height = $(elem).setStyle('height', 'auto').getSize().y;//$(elem).retrieve('org_height');
        $(elem).setStyle('height', is_size.y);
		if(org_height>0){
			if(is_size.y == org_height){
				this.collapse_item_list(elem);
                //$(elem).tween('height', 0);
			}
			else{
				$(elem).tween('height', org_height);
			}
		}
		else{
			$(elem).setStyle('height', 'auto');
		}
	},
	legg_til_huskeliste:function (el_id,params, $stat_text){
		var url = EDIT_CORE.JSSiteRoot+'site/fritid/engine/valgs_register.php?'+params;
		var req = new Request({
			method: 'get',
			url: url,
			data: {},
			onRequest: function() {
			},
			onComplete: function(response) {
				if (response.match("grantted") || parseInt(response) != "NaN"){
					if(el_id!=null){
						switch($(el_id).get('text')){
							case "Legg i huskeliste":
								$(el_id).set('text', "Fjern fra huskeliste");
							break;
							case "Fjern fra huskeliste":
								$(el_id).set('text', "Legg i huskeliste")
							break;
							default:
								if (document.getElementById(el_id).checked == true){
									document.getElementById(el_id).checked = false;
								}
								else{
									document.getElementById(el_id).checked = true;
								}
							break;
						}
					}
					int_n = (parseInt(response));
                    EDIT_trackEvent('Share meny', 'Legg i handleliste', $stat_text);
					switch (int_n){
						case 1:
                            $('n_varer_huske_liste').addClass('not-empty');
							$$('#n_varer_huske_liste .amount').set('text','1 vare');
						break;
						default:
							if (int_n == 0) $('n_varer_huske_liste').removeClass('not-empty');
                            $$('#n_varer_huske_liste .amount').set('text',int_n+' varer');
						break;
					}
				}
			}.bind(this)//request
		}).send();
	},
	share_page_fb: function($page_id, $size, $type){
		u=document.location.href;
		t=document.title;
		var url = 'http://www.facebook.com/sharer.php?u='+encodeURIComponent(u)+'&t='+encodeURIComponent(t);
		window.open(url,'sharer','toolbar=0,status=0,width=626,height=436');
	},
	print_page: function(element_id, $hide_elem){
		//alert(navigator.appVersion);
		if((document.all)&&(navigator.appVersion.indexOf("MSIE 7.")!=-1) || (document.all)&&(navigator.appVersion.indexOf("MSIE 6.")!=-1) || (document.all)&&(navigator.appVersion.indexOf("MSIE 5.")!=-1)){
			window.print();
		}
		else {
			var tmp = window.open('','','menubar=yes,resizable=yes, scrollbars=yes, top=0,left=0, width=790,height=480');
			if (Browser.Engine.trident)
			tmp.document.write('<!DOCTYPE HTML PUBLIC "-\/\/W3C\/\/DTD HTML 4.01 Transitional\/\/EN" "http:\/\/www.w3.org\/TR\/html4\/loose.dtd">');
			tmp.document.write('<html><head>');
			var base_tag = $$('base');
			tmp.document.write('<base href="'+$$('base').getProperty('href')+'">');
			tmp.document.write('<LINK REL=\'stylesheet\' TYPE=\'text/css\' HREF=\'..\/..\/site\/css\/styles.css\'><link rel="stylesheet" href="'+EDIT_CORE.JSSiteRoot+'site/store/css/product_list.php" type="text/css" media="all"><link rel="stylesheet" href="'+EDIT_CORE.JSSiteRoot+'site/store/css/product_detail.php" type="text/css" media="all">');
			if ($hide_elem) $hide_elem.setStyle('display', 'none');
			var _cloned_print_tbl = $(element_id).clone(true, true);
			if ($hide_elem) $hide_elem.setStyle('display', '');
			tmp.document.write('</head><body id="print_w_body">');
			if (Browser.Engine.presto) tmp.document.write('<input type="button" onclick="window.print();" value="Skriv ut!!">');
			if (Browser.Engine.trident) tmp.document.write(_cloned_print_tbl.outerHTML);

			tmp.document.write('</body></html>');
			tmp.document.close();
			if (!Browser.Engine.trident) _cloned_print_tbl.inject(tmp.document.getElementById('print_w_body'));

			tmp.window.print();
		}
	}
});
var mf_loader_class = new Class({
	parent_obj:null,
	content_target: null,
	content_html : null,
	content_id:0,
	loading_chain : null,
	adressbar : null,
    options:{
        url_params: {}
    },
	initialize : function(parent_obj, $options) {
		this.adressbar = parent_obj.adressbar;
		this.parent_obj = parent_obj;
		this.loading_chain = new Chain;
        $options = $options || {};
        this.options = $merge(this.options, $options);
	},
	toggle_product_list : function(page_id,target_id,elem,class1,class2,class_loading){
		//this.loading_chain = new Chain;

		var dom_el = $('product_list_box_page_'+page_id);
		if(dom_el!=null){
			this.loading_chain.chain(
				function(){
					$('product_list_box_page_'+page_id).toggle();
					this.loading_chain.callChain();
				}.bind(this)
			);
		}
		else{
			this.load_product_list(page_id,target_id);
		}
		this.loading_chain.chain(
			function(){
				this.toogle_css_class(elem,class1,class2);
				this.adressbar.toggle_page_id(page_id);
				this.parent_obj.unset_loading(elem,class_loading);
			}.bind(this)
		);
		this.loading_chain.callChain();
	},
	load_product_list : function(page_id,target_id) {
		this.content_target = $(target_id);
		if ((!page_id)){
			//console.log('return false'+page_id+'-'+geo_id);
			return false;
		}
		this.loading_chain.chain(
			function(){this.get_page(page_id,'site/store/product_list.php')}.bind(this),
			function(){
				this.print_content(this.content_html,this.content_id);
			}.bind(this)
		);
	},
	get_page : function(page_id,script) {
		var url = EDIT_CORE.JSSiteRoot+script;
		//console.log('get_page');
		var req = new Request({
			method: 'get',
			url: url,
			data: $merge({ 'page_id' : page_id }, this.options.url_params),
			onRequest: function() {
			},
			onComplete: function(response) {
				this.content_html=response;
				this.content_id=page_id;
				//console.log("response:"+page_id);
				this.loading_chain.callChain();
			}.bind(this)//request
		}).send();
	},
	print_content : function(content_html,page_id){
		/*
		replacing content
		this.content_target.set('html', content_html);
		*/
		/*
		var content_elems = Elements.from(content_html);
		content_elems.inject(this.content_target);
		*/
		if(content_html!=null){
			var dom_el = $('product_list_box_page_'+page_id);
			if(dom_el!=null){
				$('product_list_box_page_'+page_id).toggle();
				//alert("toggle");
			}
			else{
				//console.log(page_id);
				this.content_target.innerHTML = content_html+this.content_target.innerHTML;
				this.loading_chain.callChain();
			}
		}
		else{
			console.log("content null not supposed to be:"+page_id);
		}
	},
	may_remove_element:function(el_id){
		/*cleaning up DOM*/
	},
	toogle_css_class: function(elem,class1,class2){
		$(elem).toggleClass(class1);
		$(elem).toggleClass(class2);
	}
});

//var mf_store_handler = new mf_store_class();

