////////////////////////////////////////////////////////////////
//
//  Copyright © 2008 by Critical Media. All rights reserved.
//  You may not modify this code or use it for any application
//  other than Syndicaster without the express written consent
//  of Critical Media.
//
///////////////////////////////////////////////////////////////


// CONSTANTS

var ONE_SECOND = 1000; // timestamps as milliseconds
var MINUTE = ONE_SECOND*60; // timestamp minute interval (60.000 seconds)
var AJAX_INTERVAL = 7000;  // 7 seconds
var d = document;
var day_names = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];
var month_names = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];

// VARS
var search_params_for_all_results = $H({});

// FUNCTIONS

function appendForm(form, name, value) {
	if (form.elements[name] === undefined) {
		var input = d.createElement("input") ;
		input.setAttribute("type", "hidden");
		input.setAttribute("name", name);
		input.setAttribute("value", value);
		form.appendChild(input);
	} else {
		form.elements[name].value = value;
	}
	return form.elements[name];
}

function loadSearchWorkspace(unique_params) {
	params = search_params_for_all_results.merge(unique_params);
	params.each(function(param) {
		$('ss_'+param.key).value = param.value;
	});
	d.search_submitter.submit();
}

function safeInt(str) {
	if (str.charAt(0) == "0" && str.length > 1) {
		str = str.slice(1);
	}
	return parseInt(str);
}

function addZero(int) {
	var str = (int < 10) ? "0" : "";
	return str + String(int);
}

function addPlus(num) {
	if (num >= 0) num = String("+" + num);
	return String(num);
}

function dateYMD(dt) {
	return String(dt.getUTCFullYear() + addZero(dt.getUTCMonth() + 1) + addZero(dt.getUTCDate()) + addZero(dt.getUTCHours()) + addZero(dt.getUTCMinutes()) + addZero(dt.getUTCSeconds()));
}

function dateEpoch(ymd, return_type) {
	var dt = new Date(safeInt(ymd.slice(0,4)), safeInt(ymd.slice(4,6))-1, safeInt(ymd.slice(6,8)), safeInt(ymd.slice(8,10)), safeInt(ymd.slice(10,12)), safeInt(ymd.slice(12,14)));
	if (return_type == "date") {
		return dt;
	} else { // format == "integer" (default)
		return dt.getTime();
	}
}

function merAdjust(str_int, mer) {
	var int_val = safeInt(str_int);
	if (mer == "pm" && int_val < 12) {
		int_val += 12;
	} else if (mer == "am" && int_val == 12) {
		int_val = 0;
	}
	return int_val;
}

function switchChannel(rank) {
	el_form = d.channel_switcher;
	appendForm(el_form, 'rank', rank);
	appendForm(el_form, 'authenticity_token', AUTH_TOKEN);
	el_form.submit();
}

function showClip(id, edit) {
	url = '/clips/player_embed?id='+id;
	if (edit) url += '&edit=1';
	new Ajax.Request(url, {
	  method:'get',
	  onSuccess: function(transport) {
		if (transport.responseText !== 'NO CLIP'){
			$('clip_player').update(transport.responseText);
			var pos = $('clip_'+id).cumulativeOffset();
			var v_offset = pos[1] + 21;
			$('clip_player_container').style.left = String((pos[0] + 137) + "px");
			$('clip_player_container').style.top = String(v_offset + "px");
			$('clip_player_container').show();
			if ((v_offset + $('clip_player_container').offsetHeight) > window.innerHeight) {
				$('clip_player_container').style.top = String((window.innerHeight - $('clip_player_container').offsetHeight - 10) + "px");
			}
		}
	  }
	});
}

function fitToFullScreen(el) {
	el.style.width = String(d.body.scrollWidth + window.scrollMaxX) + "px";
	el.style.height = String(d.body.scrollHeight + window.scrollMaxY) + "px";
}

function showOverlay(fade, delay) {
	var el = $('overlay');
	fitToFullScreen(el);
	if (fade) {
		new Effect.Opacity(el, {delay: delay, duration:0.0, from:0.6, to:0.0, afterFinish: function (obj) {
				obj.element.show();
				new Effect.Opacity(el, {duration:0.5, from:0.0, to:0.6})
			}});
	} else {
		el.show();
	}
}

function fadeOutElement(el, delay, duration) {
	if (!delay) var delay = 0.0;
	if (!duration) var duration = 0.5;
	var full_opacity = el.getStyle('opacity');
	new Effect.Opacity(el, {delay: delay, duration: duration, from:full_opacity, to:0.0, afterFinish: function (obj) {
			obj.element.hide();
			obj.element.setOpacity(full_opacity);
		}
	});
}

function fadeOutOverlays() {
	fadeOutElement($('overlay'));
	fadeOutElement($('overlay_messages'));
}

//  lists  //

function getScopeURL(is_new) {
	if (which_list =="other_clips") {
		var str = '/clips/other_clips?';
		if (files_mode) {
			str += 'files=' + files.join(",");
		} else {
			str += 'content_owner_id='+content_owner_id+'&start_time='+workspace.get('start')+'&end_time='+workspace.get('end');
		}
		if ($('show_group')) str += "&show_group=" + $F('show_group');
	} else {
		var str = '/' + which_list + '?order_by='+list_prms.get('order_by')+'&switch_dir='+list_prms.get('switch_dir');
		if (!is_new) str += '&page='+list_prms.get('page');
		if (!$F('search_str').blank()) str += '&search_str='+escape($F('search_str').strip());
		['file_source', 'show_group', 'content_owner_id'].each(function(field){
			if ($(field)) str += '&' + field + '=' + $F(field);
		});
	}
	return str;
}

function checkLoadList() {
	var bln_load_list = false;
	if ($F('show_group') !== '0') {
		if (list_prms.get('page') < 3) bln_load_list = true;
	} else if (list_prms.get('page') == 1) {
		el_which = (which_list == "other_clips") ? "clips" : which_list;
		$(el_which+'_list').select('td.status').each(function(cell){
			if (cell.innerHTML == 'Processing') {
				bln_load_list = true;
				throw $break;
			}
		});
	}
	if (bln_load_list && !load_interval) {
		triggerListLoad();
	} else if (!bln_load_list && load_interval) {
		clearInterval(load_interval);
	}
}

function triggerListLoad() {
	if (load_interval) clearInterval(load_interval);
	load_interval = setInterval('loadList()', AJAX_INTERVAL);
	loadList();
}

function loadList(full_refresh) {
	var url = getScopeURL() + '&ajax=1';
	new Ajax.Request(url, {
	  method:'get',
	  onSuccess: function(transport) {
		if (transport.responseText){
			if (which_list =="other_clips") {
				// always refresh b/c no images
				$("other_clips").update(transport.responseText);
			} else if (full_refresh || list_header !== transport.getHeader('If-None-Match')) {
				$(which_list).update(transport.responseText);
				list_header = transport.getHeader('If-None-Match');
			}
			checkLoadList();
		}
	  },
	  onComplete: function() {
		if (which_list == 'files') {	
			$('files_loading').hide();
			$('pagination_controls').show();
		}
	  }
	});
}

function loadNewPage(params) {
	if (params) for(var index in params) {list_prms.set(index, params[index])};
	if (which_list == 'files') { // use ajax
		$('pagination_controls').hide();
		$('files_loading').show();
		if (public_users) {
			if ($F('show_group') == '0') {
				if ($F('file_source').indexOf(':') > -1) {
					new_option = ($F('file_source').split(':')[0] == 'all') ? 'all' : 'uploads';
					$(new_option).selected = true;
				}
				$('file_source').select('option.public_users').invoke('hide');
			} else {
				$('file_source').select('option.public_users').invoke('show');
			}
		}
		triggerListLoad();
	} else { // load new page
		location.href=getScopeURL(true);
	}
}

function swapBx(parent_el) {
	$(parent_el).select('table.bx', 'div.bx').each(function(el) {
		el.removeClassName('bx');
		container = d.createElement("div");
		container.setAttribute('class', 'bx');
		el.insert({before: container});
		container.insert({bottom: el});
		container.insert({bottom: '<div class="bx_b"><div class="bx_bl"></div></div>'});
	});
}

function getSelectedRUS(parent_el) {
	var ary_rus = [];
	$(parent_el).select('input.chkbx').each(function(el) {
		if (el.checked) {
			var cal_val = $F('release_at_'+el.value);
			var release_at = (cal_val == "Now") ? '' : new Date(cal_val).getTime() / 1000;
			var params = $H({id: el.value, release_at: release_at});
			if ($('rd_'+el.value)) params.update({repository_drop_id: $('rd_'+el.value).value});
			ary_rus.push(params);
		}
	});
	return ary_rus;
}

function empty_fields(num_empty) {
	var verb = (num_empty == 1) ? 'is' : 'are';
	var suffix = (num_empty == 1) ? '' : 's';
	return "There " + verb + " " + num_empty + " empty required field" + suffix + ".";
}

function toggleVisibility(el_id) {
	var el = $(el_id);
	(el.visible()) ? el.hide() : el.show();
}

function setAllReleaseAts(val) {
	$$('.cru_embargo_calendar input').each(function(el){
		el.value = val;
		releaseAtDateCheck(el);
	});
}

function scanReleaseAts() {
	var container = $('possible_distributions');
	if (container) container.select('.cru_embargo_calendar input').each(function(el){releaseAtDateCheck(el)});
}

function releaseAtDateCheck(el) {
	if ($F(el) !== "Now") {
		if (new Date($F(el)) < new Date()) {
			el.value = "Now";
			el.addClassName('grey');
		} else el.removeClassName('grey');
	}
}

function autoPublishFieldsVisibility(el_checkbox) {
	var fields = ['auto_publish_filter_cos', 'auto_publish_filter_cats'];
	(el_checkbox.checked) ? fields.each(function(f){$(f).show()}) : fields.each(function(f){$(f).hide()});
}