var mediem_home = {};
var mediem = {};

function validate_add_resource_form(form_el) {
	form_el.select('.resource_title_required')[0].hide();
	form_el.select('.resource_materials_required')[0].hide();

	title_inp = form_el.select('.resource_add_title')[0];
	title_val = title_inp.getValue();
	if (title_val.strip() == '') {
		form_el.select('.resource_title_required')[0].show();
		return false;
	}
	file_val = form_el.select('.resource_add_file')[0].getValue();
	link_val = form_el.select('.resource_add_link')[0].getValue();
	if ((file_val.strip() == '') && (link_val.strip() == '')) {
		form_el.select('.resource_materials_required')[0].show();
		return false;
	}
	
	
	return true;
}


var show_conversation_peek = function(cid) {
	if (! $('dl_peek_' + cid.toString()).visible()) {
   new Ajax.Request("/conversations/" + cid.toString() + '/peek_at', { 
                method: 'get'
        });
 } else {
  	hide_peek_view(cid);
 }
}

var show_user_peek = function(cid) {
	if (! $('pt_peek_' + cid.toString()).visible()) {
   new Ajax.Request("/users/" + cid.toString() + '/peek_at', { 
                method: 'get'
        }); 
} else {
	hide_user_peek_view(cid);
}
}
var hide_user_peek_view = function(cid) {
	$('pt_peek_' + cid.toString()).blindUp();
}

var hide_peek_view = function(cid) {
	$('dl_peek_' + cid.toString()).blindUp();
}

var peek_hide_all = function(klass, dom_id) {
    $$(klass).each(function(el) {
      if ((el.visible()) && (el.readAttribute('id') != dom_id)) {
        el.blindUp({'duration' : 0.4});
      }
    });
}
var mediem_switch_to_panel_dl_create = function(resource_id, issue_id) {
	var url = '/conversations/refresh_home_create';
	if (resource_id) {
		url += ('?resource_id=' + resource_id.toString());
		window.location = '#conversations_panel';
	}
	if (issue_id) {
		url += ('?issue=' + issue_id.toString());
	}
	new Ajax.Request(url, {
		method: 'get',
		evalScripts: true
	});
  
	

}
var on_switch_to_callback = {
 	'dl_create': mediem_switch_to_panel_dl_create,
	'os_create': function () {
   		new Ajax.Request('/issues/refresh_home_create', { 
                method: 'get',
				evalScripts: true
        });
	}
}
var mediem_panel_loading = function(reveal_dom_id) {
			Element.update(reveal_dom_id, '<div style="padding: 10px; color: #fff; xfont-size: 10px;">One moment please . . . </div>');
}
var internal_mediem_switch_to_panel = function(zone, panel, use_callbacks, cbarg1, cbarg2, cbarg3) {
  dom_zone = mediem_home.dom_prefix_map.get(zone);
 	var reveal_dom_id = (dom_zone + '_' + panel); // used for callback lookup
	if (use_callbacks) {
		var x = on_switch_to_callback[reveal_dom_id];
		if (x != null) {
			mediem_panel_loading(reveal_dom_id);
			x.call(this, cbarg1, cbarg2, cbarg3);
		}
	}
	var action = false;
	if (panel == 'index') {
	  // if we have a category, but now select index -- reset to "all" index and unset category
    var panel_hash = mediem_home.state.get(zone);
	  if (panel_hash.get('ca')) {
	    action = true;
	    mediem_home.reset_index(zone);
	  }
	}

  if (! action) {
    action = true;
  	$$('.mediem_' + dom_zone + '_panel').each(function(el) {
  		el.hide();
  	});
  	Effect.Appear(reveal_dom_id, 'blind');
	}
	pz_track_page_view("/panel_switch/" + zone + "/" + panel );
	return false;
}

var pz_track_page_view = function(page_name) {
	var have_tracker = (typeof pageTracker != "undefined")
	if (have_tracker) {
			pageTracker._trackPageview(page_name);
	}
}
var mediem_switch_to_panel_no_callbacks = function(zone, panel) {
	return internal_mediem_switch_to_panel(zone, panel, false);
}
var mediem_switch_to_panel = function(zone, panel, cbarg1, cbarg2, cbarg3) {
	return internal_mediem_switch_to_panel(zone, panel, true, cbarg1, cbarg2, cbarg3);
}

var toolbar_group_selected = function() {
	var val = $F('toolbar_group');
	if ((val == "") || (val == null)) {
	  mediem_home.reset_all_panels();
	} else {
    mediem_home.switch_all_category(mediem_home.all_panels, val);
  }
}

var toolbar_selected = function() {
	var val = $F('toolbar_select');

	if (val == 'conversation_create') {
		mediem_switch_to_panel('cv', 'create');
		pz_track_page_view("/toolbar/conversations/create");
	}
	if (val == 'slider_create') {
		mediem_switch_to_panel('iv', 'create');
		pz_track_page_view("/toolbar/sliders/create");
	}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

var login_form_reset = function(is_password_field) {
	if ($F('login_name') == 'USERNAME') {
		$('login_name').writeAttribute('value', '');
		$('login_password_fake').hide();
		$('login_password').show();
		if (is_password_field) {
			$('login_password').focus();
		}
	}
}

var show_issue_peek = function(cid) {
	if (! $('is_peek_' + cid.toString()).visible()) {
		var url = "/issues/"+ cid.toString() + '/peek_at';
 		new Ajax.Request(url, { 
               method: 'get'
    });
	} else {
		hide_issue_peek_view(cid);
	}
}
var hide_issue_peek_view = function(cid) {
	$('is_peek_' + cid.toString()).blindUp();
}

var show_resource_peek = function(cid) {
	if (! $('rs_peek_' + cid.toString()).visible()) {
   new Ajax.Request("/resources/" + cid.toString() + '/peek_at', { 
                method: 'get'
        });
} else {
	hide_resource_peek_view(cid);
}
}
var hide_resource_peek_view = function(cid) {
	$('rs_peek_' + cid.toString()).blindUp();
}


mediem_home.state = $H({
  'iv' : $H({
    'pg' : 1,
    'md' : 'all',
    'ca' : null
  }),
  'cv' : $H({
    'pg' : 1,
    'md' : 'all',
    'ca' : null
  }),
  'pv' : $H({
    'pg' : 1,
    'md' : 'all'
  }),
  'rv' : $H({
    'ca' : null,
    'pg' : 1,
    'md' : 'all'
  })
});
mediem_home.all_panels = mediem_home.state.keys();
mediem_home.dom_prefix_map = $H({
  'cv': 'dl',
  'iv': 'os',
  'pv': 'pt',
  'rv': 'rs'
})
mediem_home.change_mode = function(panel, mode) {
  var panel_hash = mediem_home.state.get(panel);
  panel_hash.set('md', mode);
  panel_hash.set('pg', 1);
  mediem_home.refresh_all([panel]);
}
mediem_home.next_page = function(panel) {
  mediem_home.move_page(panel, 1);
}
mediem_home.prev_page = function(panel) {
  mediem_home.move_page(panel, -1);
}
mediem_home.move_page = function(panel, offset){
  var panel_hash = mediem_home.state.get(panel);
  panel_hash.set('pg', panel_hash.get('pg') + offset);
  mediem_home.refresh_all([panel]);
}

mediem_home.switch_all_category = function(panels, category_id) {
  panels.each(function(panel) {
    var panel_hash = mediem_home.state.get(panel);
    panel_hash.set('ca', category_id);
    panel_hash.set('pg', 1);
  });
  mediem_home.refresh_all(panels);
}
mediem_home.switch_category = function(panel, category_id) {
  mediem_home.switch_all_category([panel], category_id);
}
mediem_home.reset_index = function(panel) {
  var panel_hash = mediem_home.state.get(panel);
  panel_hash.set('ca', null);
  panel_hash.set('pg', 1);
  mediem_home.refresh_all([panel]);
}

mediem_home.clear_search_words = function() {
  $('mediem_search_words').writeAttribute('value', '');
  mediem_home.reset_all_panels();
}
mediem_home.reset_all_panels = function() {
  ['iv', 'cv', 'pv', 'rv'].each(function(panel) {
    var panel_hash = mediem_home.state.get(panel);
    panel_hash.set('sw', null);
    panel_hash.set('pg', 1);
    panel_hash.set('ca', null);
    panel_hash.set('md', 'all');
  })
  mediem_home.refresh_all();
}
mediem_home.refresh_search_words = function() {
  var search_words = $F('mediem_search_words');
  ['iv', 'cv', 'pv', 'rv'].each(function(panel) {
    var panel_hash = mediem_home.state.get(panel);
    panel_hash.set('sw', search_words);
    panel_hash.set('pg', 1);
  })
  mediem_home.refresh_all();
  pz_track_page_view("/home/search/" + escape(search_words));
}
mediem_home.refresh_all = function(panels) {
  if (! panels) {
    panels = ['cv', 'iv', 'pv', 'rv'];
  }
  panels.each(function(panel) {
    mediem_panel_loading('home_' + panel + '_refresh');
  });
  // mediem_panel_loading('home_cv_refresh');
  // mediem_panel_loading('home_iv_refresh');
  // mediem_panel_loading('home_pv_refresh');
  // mediem_panel_loading('home_rv_refresh');
  var url = "/home/refresh?x=1";
  mediem_home.state.each(function(s_pair) {
    if ((panels.indexOf(s_pair.key)) != -1) {
      url += ('&' + 'update_' + s_pair.key + '=1')
      s_pair.value.each(function(sub_pair) {
        if (sub_pair.value) {
          url += ('&' + s_pair.key + '_' + sub_pair.key + '=' + sub_pair.value.toString());
        }
      });
    };
  });
  new Ajax.Request(url, {
    method: 'get'
  });
}

mediem.new_modal_invite = function(conversation, other_user) {
  var url = '/invites/new?';
  if (conversation) {
    url += 'conversation=' + conversation + '&';
  }
  if (other_user) {
    url += 'user=' + other_user + '&';
  }
  new Ajax.Request(url, { 
    method: 'get',
		evalScripts: true,
		onComplete: function() {
		  mediem.modal_on();
		  $('mediem_modal').show();
		}
  });
}

mediem.resize_modal_greyness = function() {
	var modal_greyness = jQuery('#modal_greyness');
	modal_greyness.width(jQuery(document).width());
	modal_greyness.height(jQuery(document).height());
};



jQuery(window).resize(mediem.resize_modal_greyness);
jQuery(document).ready(mediem.resize_modal_greyness);
mediem.modal_on = function() {
  jQuery('#modal_greyness').show();
}
mediem.modal_off = function() {
  jQuery('#modal_greyness').hide();
}

more_more = function(prefix, id) {
	$(prefix + '_' + id.toString() + '_rest').show();
	$(prefix + '_' + id.toString() + '_more_control').hide();  
}
more_hide = function(prefix, id) {
	$(prefix + '_' + id.toString() + '_more_control').show();  
	$(prefix + '_' + id.toString() + '_rest').hide();
}
bin_item_more = function(bin_item_id) {
  more_more('bin_item', bin_item_id);
}
bin_item_hide = function(bin_item_id) {
  more_hide('bin_item', bin_item_id);
}
story_more = function(id) {
  more_more('story', id);
}
story_hide = function(id) {
  more_hide('story', id);
}

function tagger_panel_reveal(message_id) {
	show_dom_id = "tagger_panel_" + message_id.toString();
	$(show_dom_id).show();
	  var url = "/messages/" + message_id.toString() + "/tag_panel";
    new Ajax.Request(url, { 
	               method: 'get',
	              // parameters: {authenticity_token: '<%= form_authenticity_token %>'}
	          });
	return false;
}
start_bin_ui = function(message_id) {
	show_dom_id = "tagger_panel_" + message_id.toString();
	$(show_dom_id).show();
	var url = "/messages/" + message_id.toString() + "/bin_start";
    new Ajax.Request(url, { 
	               method: 'get',
	              // parameters: {authenticity_token: '<%= form_authenticity_token %>'}
	          });
	return false;
	
}

var rollover_image_name = function(origSrc) {
  var splits = origSrc.split('.');
  var extension = splits[splits.length - 1];
  var newSrc = origSrc.replace("." + extension ,"R." + extension + "#hover");
  return newSrc;
}
var rollover_inc = function(node) {
  jn = jQuery(node);
//  alert(node.tagName);
  var rollover_count = jn.attr('data-rollover-count');
  if (rollover_count == null) {
    rollover_count = 0;
  } else {
    rollover_count = parseInt(rollover_count);
  }
  if (rollover_count == 0) {
    var origSrc = jn.attr("src");
    newSrc = rollover_image_name(origSrc);
    jn.attr("src",newSrc);
  }
  jn.attr('data-rollover-count', (rollover_count + 1).toString());
}
var rollover_dec = function(node) {
  jn = jQuery(node);
  var rollover_count = parseInt(jn.attr('data-rollover-count'));
  if (rollover_count == 1) {
    var origSrc = jn.attr("src");
    var splits = origSrc.split('.');
    var extension_pre = splits[splits.length - 1];
    var extension = extension_pre.split('#')[0];
    var oldSrc = jn.attr("src").replace("R." + extension + "#hover","." + extension);
    jn.attr("src",oldSrc);
  }
  jn.attr('data-rollover-count', (rollover_count - 1).toString());

}
jQuery(document).ready(function(){
  jQuery.each(jQuery(".rollover"), function(index, el) {
    var origSrc = jQuery(el).attr('src');
    if (origSrc.indexOf("R.") != -1) {
      // it's already rolled over / downstate
      jQuery(el).removeClass('rollover');
    } else {
      // pre-load its rollover image
      var i = new Image;
      i.src = rollover_image_name(origSrc);
    }
  });
  jQuery(".rollover").hover(
    function(){
      rollover_inc(this);
    },
    function(){
      rollover_dec(this);
    }
  );
});
