// nazvy css trid tlacitek s nazvy kategorii
var categoryClasses = new Array('creative', 'editorial', 'film');
// id divu s popisy kategorii
var categoryIds = new Array('category_creative', 'category_editorial', 'category_film');

/**
 * Schova popisy vsech kategorii na hlavni strance.
 */
function hideAllCategories() {
	categoryIds.each(function(id) {
		var cat = $(id);
		cat.style.visibility = 'hidden';
	});
}

/**
 * Zobrazi popis konkretni kategorie na hlavni strance.
 */
function showCategory(elm) {
	hideAllCategories();

	// projdeme vsechny tridy dane kategorie, zkontrolujeme co uzivatel rozsvitil a podle toho se zobrazi popis
	Element.classNames(elm).each(function(cls) {
		categoryClasses.each(function(catCls) {
			if(catCls == cls) {
				$('category_' + cls).style.visibility = 'visible';
			}
		});
	});
}

/**
 * Vypne/zapne rozbalovaci menu v searchi. OnClick akce.
 */
function toggleSearchCategory(elm) {
	var found = false;
	var s = elm;

	togglePackedStyle(elm);

	while(s && !found) {
		if(s.nodeName && s.nodeName == 'DT') {
			found = s;
		} else {
			s = s.parentNode;
		}
	}

	if(found) {
		$A(found.parentNode.childNodes).each(function(node) {
			if(node == found && node.nodeName && node.nodeName == 'DD') {
				togglePackedStyle(node);
			}
		});
	}

	return false;
}

/**
 * Prepne na elementu tridu packed na unpacked a naopak.
 */
function togglePackedStyle(elm) {
	if(Element.hasClassName(elm, 'packed')) {
		Element.removeClassName(elm, 'packed');
		Element.addClassName(elm, 'unpacked');
	} else {
		Element.removeClassName(elm, 'unpacked');
		Element.addClassName(elm, 'packed');
	}
}

/**
 * Zavesi na strom kategorii events pro pack a unpack.
 */
function bindPackUnpack(id) {
	var links = $A($(id).getElementsByTagName('A'));

	links.each(function(node) {
		if(Element.hasClassName(node, 'unpacked') || Element.hasClassName(node, 'packed')) {
			Event.observe(node, 'click', function(e) {
				var target = Event.element(e);
				toggleSearchCategory(target);
				toggleSearchCategory(target.parentNode);
				target.blur();
				Event.stop(e);
			});
		}
	});
}

function previewBlocked(userStatus) {
	createOverlayElement();

	var arrayPageSize = getPageSize();

	Element.setWidth('overlay', arrayPageSize[0]);
	Element.setHeight('overlay', arrayPageSize[1]);
	new Effect.Appear('overlay', { duration: 0.2, from: 0.0, to: 0.5 });

	var objInfoBox = $('info-box');

	if (objInfoBox == null) {
		var objBody = document.getElementsByTagName("body").item(0);
		objInfoBox = document.createElement("div");
		objInfoBox.setAttribute('id','info-box');
		objBody.appendChild(objInfoBox);

		var myAjax = new Ajax.Updater(
			'info-box',
			"tools/previewBlocked.php?status=" + userStatus,
			{ method: 'get' }
		);
	} else {
		Element.show('info-box');
	}

	var ScrollTop = document.body.scrollTop;

	if (ScrollTop == 0) {
		if (window.pageYOffset) {
			ScrollTop = window.pageYOffset;
		} else {
			ScrollTop = (document.body.parentElement) ? document.body.parentElement.scrollTop : 0;
		}
	}

	var wSize = 300;
	var hSize = 150;

	var leftPos = ((arrayPageSize[0] - wSize) / 2);
	var topPos  = ScrollTop + ((arrayPageSize[3] - hSize) / 2);

	Element.setStyle('info-box', {
		left: leftPos + 'px',
		top: topPos + 'px',
		width: wSize + 'px',
		height: hSize + 'px'
	});
}

function hidePreviewBlockedBox() {
	Element.hide('info-box');
	new Effect.Fade('overlay', { duration: 0.2 });
}

function logPhotoShowed() {
	var ids = new Array();
	document.getElementsByClassName('image_box').each(function(elm) {
		ids[ids.length] = elm.id;
	});

	var url = 'tools/logPhotoShowed.php?p[]=' + ids.join('&p[]=');
	var myAjax = new Ajax.Request (
		url,
		{ method: 'get' }
	);

}

function showDetail(href, photoId, args) {
	var url = 'tools/logPhotoClick.php?photoId=' + photoId + args;
	var myAjax = new Ajax.Request (
		url,
		{ method: 'get' }
	);

	var left = (screen.width - 551) / 2;
	var top  = (screen.height - 665) / 2 - 30;
	var height = 738;
	var width  = 700;

	var winName   = 'win_' + photoId;
	var winParams = "toolbar=0,location=0,directories=0,status=0,menubar=0,"
			+ "alwaysRaised=yes,scrollbars=1,copyhistory=0,resizable=yes,"
			+ "width=" + width + ",height=" + height + ",top=" + top + ",left=" + left

	window.open('', winName, winParams);
	href.target = winName;
}

/**
 * Otevre okno s creative detailem.
 */
function showCreativeDetail(href, photoId, args) {
	showDetail(href, photoId, args);
}

/**
 * Otevre okno s editorial detailem.
 */
function showEditorialDetail(href, photoId, args) {
	showDetail(href, photoId, args);
}

/**
 * Otevre okno s editorial detailem.
 */
function showFilmDetail(href, clipId){
	var left = (screen.width - 551) / 2;
	var top  = (screen.height - 665) / 2 - 30;
	var height = 738;
	var width  = 700;

	var winName   = 'win_' + clipId;
	var winParams = "toolbar=0,location=0,directories=0,status=0,menubar=0,"
			+ "alwaysRaised=yes,scrollbars=1,copyhistory=0,resizable=yes,"
			+ "width=" + width + ",height=" + height + ",top=" + top + ",left=" + left

	window.open('', winName, winParams);
	href.target = winName;
}

function changeMainSearchAction(formName) {
	if ($('result_ed').checked) {
		formName.action='result_ed.php';
	}
	if ($('result_ff').checked) {
		formName.action='result_ff.php';
	}
	if ($('result_cr').checked) {
		formName.action='result_cr.php';
	}
}

function changeGettyEdSearchAction(obj, user_id,id_user_status) {
	obj.action='http://www.gettyimages.com/search/search.aspx';
	var schrstr = '';
	schrstr = document.getElementById('searchbox_getty').value;
	logGettySearch(schrstr, user_id, id_user_status, 'ED');
}

function changeGettyEvSearchAction(obj, user_id,id_user_status) {
	obj.action='http://www.gettyimages.com/search/search.aspx';
	var schrstr = '';
	schrstr = document.getElementById('searchbox_getty').value;

	if (($('segment_raw').checked && $('segment_pro').checked) || (!$('segment_raw').checked && !$('segment_pro').checked)) {
		$('segment').value = '';
	} else if ($('segment_pro').checked) {
		$('segment').value = 'pro';
	} else {
		$('segment').value = 'raw';
	}
}

function changeGettyCrSearchAction(obj, user_id,id_user_status) {
	obj.action='http://www.gettyimages.com/search/search.aspx';
	var schrstr = '';
	schrstr = document.getElementById('searchbox_getty').value;
	logGettySearch(schrstr, user_id, id_user_status, 'CR');

	if (($('license_rm').checked && $('license_rf').checked) || (!$('license_rf').checked && !$('license_rm').checked)) {
		$('license').value = '';
	} else if ($('license_rf').checked) {
		$('license').value = 'rf';
	} else {
		$('license').value = 'rm';
	}
}

function changeGettyFfSearchAction(obj, user_id,id_user_status) {
	obj.action='http://www.gettyimages.com/search/search.aspx';
	var schrstr = '';
	schrstr = document.getElementById('searchbox_getty').value;
	logGettySearch(schrstr, user_id, id_user_status, 'FF');

	if (($('license_rr').checked && $('license_rf').checked) || (!$('license_rf').checked && !$('license_rr').checked)) {
		$('license').value = '';
	} else if ($('license_rf').checked) {
		$('license').value = 'rf';
	} else {
		$('license').value = 'rr';
	}
}

function changeGettySearchAction(formName, user_id, id_user_status) {
	formName.action='http://www.gettyimages.com/search/search.aspx';

	if ($('gresult_ed').checked) {
		$('family').value = 'editorial';
		$('assetType').value = 'image';
		var schrstr = document.getElementById('searchbox_getty').value;
		logGettySearch(schrstr, user_id, id_user_status, 'ED');

	} else if ($('gresult_cr').checked) {
		$('family').value = 'creative';
		$('assetType').value = 'image';
		var schrstr = document.getElementById('searchbox_getty').value;
		logGettySearch(schrstr, user_id, id_user_status, 'CR');

	} else if ($('gresult_ff').checked) {
		$('assetType').value = 'film';
		$('family').value = 'creative';
		var schrstr = document.getElementById('searchbox_getty').value;
		logGettySearch(schrstr, user_id, id_user_status, 'FF');

	} else if ($('gresult_ev').checked) {
		$('assetType').value = 'film';
		$('family').value = 'editorial';
		var schrstr = document.getElementById('searchbox_getty').value;
		logGettySearch(schrstr, user_id, id_user_status, 'EV');
	}
}
/**
 * Loguje getty search
 */
function logGettySearch(query, user_id, id_user_status, id_section) {
	var url = "tools/log_getty.php?query=" + query + "&user_id=" + user_id + "&id_user_status=" + id_user_status + "&id_section=" + id_section;
	var myAjax = new Ajax.Request(
			url,
			{method: 'get'}
	);

}


//změní obrázek

function swapImg(what, src) {
	$(what).src = src;
}

function createOverlayElement() {
	var objBody = document.getElementsByTagName("body").item(0);

	var objOverlay = document.createElement("div");
	objOverlay.setAttribute('id','overlay');
	objOverlay.style.display = 'none';
	objBody.appendChild(objOverlay);
}

function createLoadingElements() {
	createOverlayElement();

	var objBody = document.getElementsByTagName("body").item(0);

	var objLightbox = document.createElement("div");
	objLightbox.setAttribute('id','lightbox');
	objLightbox.style.display = 'none';
	objBody.appendChild(objLightbox);

	var objOuterImageContainer = document.createElement("div");
	objOuterImageContainer.setAttribute('id','outerImageContainer');
	objLightbox.appendChild(objOuterImageContainer);

	var objImageContainer = document.createElement("div");
	objImageContainer.setAttribute('id','imageContainer');
	objOuterImageContainer.appendChild(objImageContainer);

	var objLoading = document.createElement("div");
	objLoading.setAttribute('id','loading');
	objImageContainer.appendChild(objLoading);

	var objLoadingImage = document.createElement("img");
	objLoadingImage.setAttribute('src', "images/loading.gif");
	objLoading.appendChild(objLoadingImage);

	var objLoadingText = document.createElement("div");
	objLoadingText.setAttribute('id', 'loadingText');
	objLoadingText.appendChild(document.createTextNode('loading...'));
	objImageContainer.appendChild(objLoadingText);
}

function showLoading(overlayDuration) {
	var arrayPageSize = getPageSize();
	Element.setWidth('overlay', arrayPageSize[0]);
	Element.setHeight('overlay', arrayPageSize[1]);
	new Effect.Appear('overlay', { duration: overlayDuration, from: 0.0, to: 0.5 });
	Element.show('lightbox');
	Element.show('loading');
}

function hideLoading() {
	Element.hide('lightbox');
	new Effect.Fade('overlay', { duration: 0.2 });
}

function bindLoadingToLinks() {
	createLoadingElements();

	var links = $A(document.getElementsByTagName("A"));
	links.each(function(link) {
		if (classMagic.has(link, 'loading')) {
			Event.observe(link, 'click', function() { showLoading(0.2) });
		}
	});
}

function showDownloadMessage() {
	var arrayPageSize = getPageSize();
	Element.setWidth('overlay', arrayPageSize[0]);
	Element.setHeight('overlay', arrayPageSize[1]);
	new Effect.Appear('overlay', { duration: 0.2, from: 0.0, to: 0.5 });

	Element.show('msgDownload');
}

function hideDownloadMessage() {
	Element.hide('msgDownload');
	new Effect.Fade('overlay', { duration: 0.2 });
}

function bindTermsAcceptationEvents(msg, msg2) {
	var forms = $A(document.getElementsByTagName("form"));
	var pricelist = false;
	var pricelistChecked = false;

	forms.each(function(form) {
		var inputs = $A(form.getElementsByTagName("input"));
		inputs.each(function(input) {
			if(input.name && input.type && input.type == 'checkbox' && input.name == 'terms_accept') {
				Event.observe(form, 'submit', function(e) {
					forms.each(function(form) {
						var inputs = $A(form.getElementsByTagName("input"));
						inputs.each(function(input) {
							if (input.name && input.type && input.type == 'radio' && input.name == 'pricelist') {
								pricelist = true;
								if (input.checked) {
									pricelistChecked = true;
								}
							}
						});
					});

					if ((pricelist && pricelistChecked) || !pricelist) {
						if (input.checked) {
							if ($('order_type')) {
								if ($('order_type').value == 'download') {
									showDownloadMessage();
									pricelist = false;
									pricelistChecked = false;
								}
							}
						} else {
							alert(msg);
							Event.stop(e);
						}
					} else {
						alert(msg2)
						Event.stop(e);
					}
				});
			}
		});
	});
}

function checkRadioInputs(form, msg) {
	var pricelist = false;
	var pricelistChecked = false;

	var inputs = $A(form.getElementsByTagName("input"));
	inputs.each(function(input) {
		if (input.name && input.type && input.type == 'radio' && input.name == 'pricelist') {
			pricelist = true;
			if (input.checked) {
				pricelistChecked = true;
			}
		}
	});

	if ((pricelist && pricelistChecked) || !pricelist) {
		return true;
	} else {
		alert(msg);
		return false;
	}
}

function selectAll(sel) {
	$A(sel.options).each(function(opt) {
		opt.selected = true;
	});
}


/**
 * Nasetupuje pozadovany pocet kalendaru pojmenovanych ve tvaru:
 * calendar-field-cislo, calendar-trigger-cislo
 */
function setupCalendars(numCal) {
	for(var i = 1; i <= numCal; i++) {
		cal = clone(datetimeCalConf);

		cal.inputField = 'calendar-field-' + i;
		cal.button   = 'calendar-trigger-' + i;

		Calendar.setup(cal);
	}
}


/**
 * getPageSize()
 * Returns array with page width, height and window width, height
 * Core code from - quirksmode.com
 * Edit for Firefox by pHaez
 */
function getPageSize(){

	var xScroll, yScroll;

	if (window.innerHeight && window.scrollMaxY) {
		xScroll = window.innerWidth + window.scrollMaxX;
		yScroll = window.innerHeight + window.scrollMaxY;
	} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
		xScroll = document.body.scrollWidth;
		yScroll = document.body.scrollHeight;
	} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
		xScroll = document.body.offsetWidth;
		yScroll = document.body.offsetHeight;
	}

	var windowWidth, windowHeight;

//	console.log(self.innerWidth);
//	console.log(document.documentElement.clientWidth);

	if (self.innerHeight) {	// all except Explorer
		if(document.documentElement.clientWidth){
			windowWidth = document.documentElement.clientWidth;
		} else {
			windowWidth = self.innerWidth;
		}
		windowHeight = self.innerHeight;
	} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
		windowWidth = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
	} else if (document.body) { // other Explorers
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
	}

	// for small pages with total height less then height of the viewport
	if(yScroll < windowHeight){
		pageHeight = windowHeight;
	} else {
		pageHeight = yScroll;
	}

//	console.log("xScroll " + xScroll)
//	console.log("windowWidth " + windowWidth)

	// for small pages with total width less then width of the viewport
	if(xScroll < windowWidth){
		pageWidth = xScroll;
	} else {
		pageWidth = windowWidth;
	}
//	console.log("pageWidth " + pageWidth)

	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight)
	return arrayPageSize;
}


//
//	Additional methods for Element added by SU, Couloir
//	- further additions by Lokesh Dhakar (huddletogether.com)
//
Object.extend(Element, {
	getWidth: function(element) {
	   	element = $(element);
	   	return element.offsetWidth;
	},
	setWidth: function(element,w) {
	   	element = $(element);
    	element.style.width = w +"px";
	},
	setHeight: function(element,h) {
   		element = $(element);
    	element.style.height = h +"px";
	},
	setTop: function(element,t) {
	   	element = $(element);
    	element.style.top = t +"px";
	},
	setLeft: function(element,l) {
	   	element = $(element);
    	element.style.left = l +"px";
	},
	setSrc: function(element,src) {
    	element = $(element);
    	element.src = src;
	},
	setHref: function(element,href) {
    	element = $(element);
    	element.href = href;
	},
	setInnerHTML: function(element,content) {
		element = $(element);
		element.innerHTML = content;
	}
});