$(document).ready(function(){bootStrap();});

function bootStrap() {
//	initSwapImage();
	initResizer();
	initOverlay();
	initButtons();
	initAutoComplete();
	initDatePickers();
	initClockPickers();
	initMission();
	initJobs();
	initHelpPanel();
	flashBox();
	initHiddenInputFix();
	initFormPartReveal();
	initDropBoxes();
	initNewUserUploader();
	initSortable();
	initAjaxSetup();
	initStatic();
//	initToolTips();
}

function initToolTips() {
	$('.toolTipTrigger').tooltip({
		events: {def: 'click, mouseout'},
		tip: '.toolTipCont',
		lazy: true
	});
}

function initStatic() {
	$(".headings h2").click(function() {
		id = $(this).attr('id');
		idn = stripId(id);
		$(".detail p").hide();
		$("#detail_"+idn).fadeIn('slow');
	});
}

function initBreakdownHotKeys() {
	$(document).bind('keydown', 'Shift+c', function(e) { gotoInput(e, '#charactersTitle') });
	$(document).bind('keydown', 'Shift+l', function(e) { gotoInput(e, '#locationsTitle')});
	$(document).bind('keydown', 'Shift+p', function(e) { gotoInput(e, '#propsTitle') });
	$(document).bind('keydown', 'Shift+d', function(e) { gotoInput(e, '#setDressingTitle')});
	$(document).bind('keydown', 'Shift+w', function(e) { gotoInput(e, '#wardrobeTitle') });
	$(document).bind('keydown', 'Shift+x', function(e) { gotoInput(e, '#extrasTitle')});
	$(document).bind('keydown', 'Shift+e', function(e) { gotoInput(e, '#equipmentTitle') });
	$(document).bind('keydown', 'Shift+v', function(e) { gotoInput(e, '#vehiclesTitle')});
	$(document).bind('keydown', 'Shift+a', function(e) { gotoInput(e, '#animalsTitle') });
	$(document).bind('keydown', 'Shift+u', function(e) { gotoInput(e, '#visualsTitle')});
	$(document).bind('keydown', 'Shift+t', function(e) { gotoInput(e, '#stuntsTitle') });
	$(document).bind('keydown', 'Shift+m', function(e) { gotoInput(e, '#makeupHairTitle')});
	$(document).bind('keydown', 'Shift+s', function(e) { gotoInput(e, '#soundsTitle') });
	$(document).bind('keydown', 'Shift+f', function(e) { gotoInput(e, '#footageTitle')});
	$(document).bind('keydown', 'Shift+o', function(e) { gotoInput(e, '#otherTitle') });
}

function gotoInput(e, id) {
	e.stopPropagation();
	e.preventDefault();
	$(id).focus();
}

function addToList(id, new_val) {
	already_there = false;
	before_val = $(id).val();
	if (before_val == "") {val_array = new Array();} else {val_array = before_val.split(",");}
	$.each(val_array, function(index, value) {
		if (value == new_val) {
			already_there = true;
		}
	});
	if (already_there != true) {
		val_array.push(new_val);
		$(id).val(val_array);
		return true;
	} else {
		already_there = false;
		return false;
	}
}	

function removeFromList(id, new_val) {
	before_val = $(id).val();
	if (before_val == "") {val_array = new Array();} else {val_array = before_val.split(",");}
	$.each(val_array, function(index, value) {
		if (value == new_val) {
			val_array.splice(index, 1);
			$(id+'_'+new_val).remove();
		}
	});
	$(id).val(val_array);
}


function initAjaxSetup() {
	$.ajaxSetup({
		error: function (x, t, e) {resolveAjaxError(x, t, e);}
	});
};

function resolveAjaxError(x, t, e) {
	openOverlay("/home/ajax_error");
}

var sortableList = null;
function initSortable() {
	$(".sortable").sortable(
		{
			handle: '.sortHandle',
			change: function(ui) {
				sortableList = ui;
				$('.saveSortOrder').show();
			}
	});
}

function saveSortOrder(list_id, path) {
	$.ajax({
		type: 'post',
		data: $(list_id).sortable('serialize'),
		dataType: 'script',
		url: path
	});
}

function map_this(identifier) {
	$.ajax({data:$.param($(identifier).serializeArray()) + '&authenticity_token=' + encodeURIComponent(auth_token), dataType:'script', type:'post', url:'/addresses/map_it'}); return false;
}


function initNewUserUploader() {};

var invitationsCount = educationsCount = skillLvlsCount = filmCount = theaterCount = voiceoverCount = televisionCount  = rolesCount = 0;

var curid, outid;
function initFormPartReveal() {
	$(".formPart").live("click", function() {
		curid = $(this).attr("id");
		$(".formPart .formPartform").hide();
		$("#"+curid+" .formPartform").show();		
		$("#"+curid+" .formPartBG").hide();
	})
	$(".formPart").live("mouseleave", function() {
		outid = $(this).attr("id");
//		window.setTimeout(function() {
			$(".formPart .formPartBG").show();
			$("#"+outid+" .formPartform").hide();		
//		}, 200);
	})
}

function openOverlay(url) {
	$.facebox({ajax: url})
}

function initDropBoxes() {
	$(".uploadImage").click(function() {associateModel(this);});
	$(".dropBox_audio").live("click", function() {loadAssets("audio")}).live("dblclick", function() {associateModel(this);});	
	$(".dropBox_videos").live("click", function() {loadAssets("videos")}).live("dblclick", function() {associateModel(this);});
	$(".dropBox_images").live("click", function() {loadAssets("images")}).live("dblclick", function() {associateModel(this);});
	$(".dropBox_miscfiles").live("click", function() {loadAssets("miscfiles")}).live("dblclick", function() {associateModel(this);});
}

function initDraggable() {
	a = $(".draggable_image, .draggable_video, .draggable_audio .draggable_miscfile")
	a.draggable({ 
		containment: 'window',
		revert: true,
		opacity: 1,
		helper: 'clone'
	});
	initDroppable();
}

function initDroppable() {
	$(".dropBox_images, .dropBox_medias, .dropBox_videos, .dropBox_audios, .dropBox_miscfiles").droppable({
		accept: ".draggable_image, .draggable_video, .draggable_audio, .draggable_miscfile",
		drop: function(event, ui) {
			associateDropped(this, ui);
		},
		activeClass: 'dropHere'
	});
}

function associateDropped(obj, ui) {
	drag_id = ui.draggable.attr("id");
	drop_id = $(obj).metadata().objid;
	drop_type = $(obj).metadata().objtype
	media_id = stripId(drag_id);
	cont_id = $(obj).metadata().contid;
	if (drop_type == 'User') {
		user_id = stripId(drop_id);
		addMediaToUser(media_id, user_id, cont_id);
	}
	if (drop_type == 'Element') {
		element_id = stripId(drop_id);
		addMediaToElement(media_id, element_id, cont_id);
	}
}

function addMediaToUser(m, u, c) {
	$.post("/users/"+u+"/add_media", {media: m, container: c}, null, 'script');
}

function addMediaToElement(m, e, c) {
	$.post("/elements/"+e+"/add_media", {media: m, container: c}, null, 'script');	
}

function stripId(text) {
	s = new String(text);
	is = s.lastIndexOf("_");
	ie = s.length;
	last = s.slice((is+1), ie);
	return last;
}

function associateModel(obj) {
	url = "/assets/new";
	objtype = $(obj).metadata().objtype;
	objid = $(obj).metadata().objid;
	if (objtype) {url = url + "?objtype=" + objtype;}
	if (objid) {url = url + "&objid=" + objid;}		
	openOverlay(url);
}

function initHiddenInputFix() {
	$("input[type=hidden]").css("display", "none");
}

var auth_token;
function getToken() {
  $.get("/home/token", "", function(data) {auth_token = eval(data);})
}

function initJobs() {
	$(".callSummary").bind("mouseenter", function(e) {
		fid = $(this).attr("id");
		lio = fid.lastIndexOf("_")+1;
		id = fid.substring(lio);
		$(".callDetail").hide();
		$("#callDetail_"+id).show().css("left", e.pageX);
	});
	$("#jobsCont table").bind("mouseleave", function() {
		fid = $(this).attr("id");
		lio = fid.lastIndexOf("_")+1;
		id = fid.substring(lio);
		$(".callDetail").hide();
	});
}

var scoutedContClosed = true;
function changeForm(obj) {
	if ($(obj).val() == "Requested" && !scoutedContClosed) {
		$("#scoutedCont").blindUp("slow");
		scoutedContClosed = true;
	}
	else if (scoutedContClosed) {
		$("#scoutedCont").blindDown("slow");
		scoutedContClosed = false;
	}
}

var project_id;
function initAutoComplete() {
	$('#charactersTitle').autocomplete({
		source: "/projects/"+project_id+"/requests/ac_titles?kind=Character",
		open: function(e, ui) {$(".ui-autocomplete").css('width', $('#charactersTitle').css('width'));}, 
		select: function(e, ui) {$('#charactersTitle').val(ui.item.label); $('#charactersId').val(ui.item.value); return false;},
		focus: function(e, ui) {$('#charactersTitle').val(ui.item.label); return false;}
	});
	$('#locationsTitle').autocomplete({
		source: "/projects/"+project_id+"/requests/ac_titles?kind=Location",
		open: function(e, ui) {$(".ui-autocomplete").css('width', $('#locationsTitle').css('width'));}, 
		select: function(e, ui) {$('#locationsTitle').val(ui.item.label); $('#locationsId').val(ui.item.value); return false;},
		focus: function(e, ui) {$('#locationsTitle').val(ui.item.label); return false;}
	});
	$('#propsTitle').autocomplete({
		source: "/projects/"+project_id+"/requests/ac_titles?kind=Prop",
		open: function(e, ui) {$(".ui-autocomplete").css('width', $('#propsTitle').css('width'));}, 
		select: function(e, ui) {$('#propsTitle').val(ui.item.label); $('#propsId').val(ui.item.value); return false;},
		focus: function(e, ui) {$('#propsTitle').val(ui.item.label); return false;}
	});
	$('#setDressingTitle').autocomplete({
		source: "/projects/"+project_id+"/requests/ac_titles?kind=SetDressing",
		open: function(e, ui) {$(".ui-autocomplete").css('width', $('#setDressingTitle').css('width'));}, 
		select: function(e, ui) {$('#setDressingTitle').val(ui.item.label); $('#setDressingId').val(ui.item.value); return false;},
		focus: function(e, ui) {$('#setDressingTitle').val(ui.item.label); return false;}
	});
	$('#wardrobeTitle').autocomplete({
		source: "/projects/"+project_id+"/requests/ac_titles?kind=Wardrobe",
		open: function(e, ui) {$(".ui-autocomplete").css('width', $('#wardrobeTitle').css('width'));}, 
		select: function(e, ui) {$('#wardrobeTitle').val(ui.item.label); $('#wardrobeId').val(ui.item.value); return false;},
		focus: function(e, ui) {$('#wardrobeTitle').val(ui.item.label); return false;}
	});
	$('#extrasTitle').autocomplete({
		source: "/projects/"+project_id+"/requests/ac_titles?kind=Extra",
		open: function(e, ui) {$(".ui-autocomplete").css('width', $('#extrasTitle').css('width'));}, 
		select: function(e, ui) {$('#extrasTitle').val(ui.item.label); $('#extrasId').val(ui.item.value); return false;},
		focus: function(e, ui) {$('#extrasTitle').val(ui.item.label); return false;}
	});
	$('#equipmentTitle').autocomplete({
		source: "/projects/"+project_id+"/requests/ac_titles?kind=Equipment",
		open: function(e, ui) {$(".ui-autocomplete").css('width', $('#equipmentTitle').css('width'));}, 
		select: function(e, ui) {$('#equipmentTitle').val(ui.item.label); $('#equipmentId').val(ui.item.value); return false;},
		focus: function(e, ui) {$('#equipmentTitle').val(ui.item.label); return false;}
	});
	$('#vehiclesTitle').autocomplete({
		source: "/projects/"+project_id+"/requests/ac_titles?kind=Vehicle",
		open: function(e, ui) {$(".ui-autocomplete").css('width', $('#vehiclesTitle').css('width'));}, 
		select: function(e, ui) {$('#vehiclesTitle').val(ui.item.label); $('#vehiclesId').val(ui.item.value); return false;},
		focus: function(e, ui) {$('#vehiclesTitle').val(ui.item.label); return false;}
	});
	$('#animalsTitle').autocomplete({
		source: "/projects/"+project_id+"/requests/ac_titles?kind=Animal",
		open: function(e, ui) {$(".ui-autocomplete").css('width', $('#animalsTitle').css('width'));}, 
		select: function(e, ui) {$('#animalsTitle').val(ui.item.label); $('#animalsId').val(ui.item.value); return false;},
		focus: function(e, ui) {$('#animalsTitle').val(ui.item.label); return false;}
	});
	$('#visualsTitle').autocomplete({
		source: "/projects/"+project_id+"/requests/ac_titles?kind=Visual",
		open: function(e, ui) {$(".ui-autocomplete").css('width', $('#visualsTitle').css('width'));}, 
		select: function(e, ui) {$('#visualsTitle').val(ui.item.label); $('#visualsId').val(ui.item.value); return false;},
		focus: function(e, ui) {$('#visualsTitle').val(ui.item.label); return false;}
	});
	$('#stuntsTitle').autocomplete({
		source: "/projects/"+project_id+"/requests/ac_titles?kind=Stunt",
		open: function(e, ui) {$(".ui-autocomplete").css('width', $('#stuntsTitle').css('width'));}, 
		select: function(e, ui) {$('#stuntsTitle').val(ui.item.label); $('#stuntsId').val(ui.item.value); return false;},
		focus: function(e, ui) {$('#stuntsTitle').val(ui.item.label); return false;}
	});
	$('#makeupHairTitle').autocomplete({
		source: "/projects/"+project_id+"/requests/ac_titles?kind=Makeup",
		open: function(e, ui) {$(".ui-autocomplete").css('width', $('#makeupHairTitle').css('width'));}, 
		select: function(e, ui) {$('#makeupHairTitle').val(ui.item.label); $('#makeupHairId').val(ui.item.value); return false;},
		focus: function(e, ui) {$('#makeupHairTitle').val(ui.item.label); return false;}
	});
	$('#soundTitle').autocomplete({
		source: "/projects/"+project_id+"/requests/ac_titles?kind=Sound",
		open: function(e, ui) {$(".ui-autocomplete").css('width', $('#soundTitle').css('width'));}, 
		select: function(e, ui) {$('#soundTitle').val(ui.item.label); $('#soundId').val(ui.item.value); return false;},
		focus: function(e, ui) {$('#soundTitle').val(ui.item.label); return false;}
	});
	$('#footageTitle').autocomplete({
		source: "/projects/"+project_id+"/requests/ac_titles?kind=Footage",
		open: function(e, ui) {$(".ui-autocomplete").css('width', $('#footageTitle').css('width'));}, 
		select: function(e, ui) {$('#footageTitle').val(ui.item.label); $('#footageId').val(ui.item.value); return false;},
		focus: function(e, ui) {$('#footageTitle').val(ui.item.label); return false;}
	});
	$('#otherTitle').autocomplete({
		source: "/projects/"+project_id+"/requests/ac_titles?kind=Other",
		open: function(e, ui) {$(".ui-autocomplete").css('width', $('#otherTitle').css('width'));}, 
		select: function(e, ui) {$('#otherTitle').val(ui.item.label); $('#otherId').val(ui.item.value); return false;},
		focus: function(e, ui) {$('#otherTitle').val(ui.item.label); return false;}
	});
}

var last = null; 
var last_p = null; 
var current = null;
function initMission() {
	$("#ourMission h2").click(function() {
		if (last != null && last != this) {
			last_p = $(last).next();
			$(last_p).blindUp();
		}
		current = this;
		if (this != last) $(current).next().blindDown();
		last = current;
	});
}

function initClockPickers() {
	$(".clockPicker").clockpick({
		starthour: 0,
		endhour: 24,
	});
}

function initDatePickers() {
	$(".datePicker").datepicker({
		prevText: "",
		nextText: ""
	});
}

function initButtons() {
	$("button[href]").click(function() {
		h = $(this).attr("href");
		redirectTo(h);
	})
}

function initOverlay() {
	$('a[rel*=overlay]').facebox();
}

function closeOverlay() {
	$.facebox.close();
}

function goBack() {
	history.go(-1);
}

function initSwapImage() {
	$.swapImage(".swapImage");
}

function menuToggle() {
	$("#dropMenu").slideToggle("fast");
}

function initResizer() {
	$(window).resize(function() {$(".resizing").resizeIt()});
	$(".resizing").resizeIt();
}

function initFPVideo() {
	$f("video", "/swfs/flowplayer-3.1.1.swf", { 
      clip: {scaling: 'fit', autoPlay: true},
			canvas: {backgroundGradient: 'none'},         
			plugins: {
				controls: {
			      progressColor: '#000000',
			      bufferGradient: 'none',
						backgroundGradient: 'none',
			      sliderColor: '#000000',
			      timeColor: '#000000',
			      bufferColor: '#404040',
			      buttonColor: '#000000',
			      backgroundColor: '#000000',
			      borderRadius: '0px',
			      buttonOverColor: '#ff7f00',
			      progressGradient: 'medium',
			      durationColor: '#ffffff',
			      sliderGradient: 'none',
			   	opacity:1.0
			   }
			},
  // use playlist plugin to enable playlist items work as movie clips 
  });
}

function redirectTo(url) {
	window.location.href = url;
}

function popoutTo(url, name, features) {
	if (!name) name = null;
	if (!features) features = null;
	window.open(url, name, features);
	return false;
}

function reload() {
	window.location.reload();
}

function gotoPane(id, klass) {
	$("."+klass).hide();
	$("#"+id).show();
}

var assetBarOut = false;
var assetBarOut, lastType;

function loadAssets(type) {
	loadType(type);
	assetDrawer(type);
}

var typeLoaded = new Array('images', 'videos', 'audio', 'miscfiles');
function loadType(type) {
	$(".assetCont").hide();
	if (typeLoaded[type] != true) {
		$("#bar_"+type).load("/pull_"+type, {}, initDraggable);
		typeLoaded[type] = true;
	}
	else {
		initDraggable();
	}
	$("#bar_"+type).show();
}

function resetElementForm() {
	$('#new_element').reset(); 
	sourceChange(); 
	$('#dropBoxList').html(''); 
	$('#media_list').val('');
	$('.cover').show();
	$('.formPart').hide();
}

function assetDrawer(type) {
	if (!assetBarOut) {
		assetDrawerUp();
	}
	else if (lastType == type && assetBarOut) { // close
		assetDrawerDown(type);
	}	
	lastType = type;
}
	
function assetDrawerUp() {
	if (!assetBarOut) {
		$("#assetsBG").blindDown("slow");
		assetBarOut = true;
		$(".dropBox_images, .dropBox_medias, .dropBox_videos, .dropBox_audios, .dropBox_miscfiles").css("border-color", "#18c918")
	}
}

function assetDrawerDown(type) {
	if (lastType == type && assetBarOut) { // close
		$("#assetsBG").blindUp("slow");	
		assetBarOut = false;
	  $(".dropBox_images, .dropBox_medias, .dropBox_videos, .dropBox_audios, .dropBox_miscfiles").css("border-color", "#000");
	}	
}

function flashBox() {
	if ($("#errorDisplay").text() != "") {
		$("#errorDisplay").show();
		var s = setTimeout("$('#errorDisplay').fadeOut('slow')", 3000);
	}
}

function toggle(s1, s2) {
	$(s1).toggle();
	$(s2).toggle();
}

function initHelpPanel() {
	if ($.cookie("helpPanel") == 'block') {
		$("#helpPanel").show();
		$("#helpButton").hide();
	}
}

function cookieToggle(id, id2) {
	if ($.cookie(id) == 'none') {
		$.cookie(id, 'block');		
	}
	else {
		$.cookie(id, 'none');				
	}
	toggle(id, id2);
}

function newAlert(msg) {
	$('#errorDisplay').html("<span class='notice'>"+msg+"</span>"); flashBox();
}

function toggleProjectList(obj, id) {
	if ($(obj).text() == "Hide") {
		$(obj).text("Show");
		$("#listLocations_" + id).hide();
	}
	else {
		$(obj).text("Hide")
		$("#listLocations_" + id).show();
	}
};

function sourceChange() {
	switch ($("#contact_info_contact_type").val()) {
	case "Me":
		$("#newNameField").hide()
		$("#newBrokerAgentFields").hide();
		$("#newOwnerFields").hide();
	break;		
	case "Member":
		$("#newNameField").show()
		$("#newNameField label").text("member name")
		$("#newOwnerFields").hide();
		$("#newBrokerAgentFields").hide();
	break;
	case "VendorAgent":
		$("#newNameField").show()
		$("#newNameField label").text("contact's name")
		$("#newBrokerAgentFields").show();
		$("#newOwnerFields").show();		
	break;
	case "PrivateOwner":
		$("#newNameField").show()
		$("#newNameField label").text("person's name")
		$("#newOwnerFields").show();		
		$("#newBrokerAgentFields").hide();
	break;
	}
}

function toggleDetail(obj) {
	o = $(obj).attr("id");
	if ($('#' + o + ' #projectListDescription').css("display") != "none") {
		$('#' + o + ' #thumb').animate({height: "60px"}, 500);
		$('#' + o + ' #projectListDescription').hide();
		$('#' + o + ' #moreButton').show();
		$('#' + o + ' #extraButtons').hide();
	} else {
		$('#' + o + ' #thumb').animate({height: "200px"}, 500);
		$('#' + o + ' #projectListDescription').show();
		$('#' + o + ' #extraButtons').show();
		$('#' + o + ' #moreButton').hide();
	}
};