/**
 * Loads items to actual lightbox
 * 
 * @return nothing
 */
function loadActualLightbox() {
	var actualLightboxId = $('#f-favorites').val();
	loadLightbox(actualLightboxId);
}

/**
 * Loads items to specified lightbox 
 * 
 * @param lightboxId specified lightbox id
 * @return nothing
 */
function loadLightbox(lightboxId) {
    jQuery.getJSON("/service", {'ajax':'LightboxAjax', 'action': 'show:lightboxContent,getLightboxes:lightboxSelect,getNumberOfPhotos:numberOfPhotos', 'lightboxId': lightboxId}, 
        function(data, status) {
            if (status == "success") {
                $('#lightboxFoto').html(data.result['lightboxContent']);
                $('#f-favorites').html(data.result['lightboxSelect']);
                $('#numberOfPhotos').html(data.result['numberOfPhotos']);
				$('#canvas-lightbox-content .thumbs ul').css({'width':data.result['numberOfPhotos'] * 165});
            }
        }
    );
}

function ajaxLoad(ajaxClass, actions, parameters) {
	var actionStrings = "";
	for (var name in actions) {
		actionStrings = actionStrings + name + ":" + actions[name] + ",";
	}
	actionStrings = actionStrings.substr(0,actionStrings.length - 1);
	parameters = parameters.concat({'ajax':ajaxClass, 'action':actionStrings}); 
	jQuery.getJSON("/service", parameters, 
        function(data, status) {
            if (status == "success") {
				for (var name in actions) {
				    $('#' + name).html(data.templates[name]);
				}
//                $('#lightboxFoto').html(data.lightboxContent);
//                $('#f-favorites').html(data.lightboxSelect);
//                $('#numberOfPhotos').html(data.numberOfPhotos);
//                $('#canvas-lightbox-content .thumbs ul').css({'width':data.numberOfPhotos * 160});
            } else {
				alert(status);
			}
        }
    );
}

/**
 * Adds specified object to selected lightbox
 * @param objectId object to be added to selected lightbox
 * @return nothing
 */
function addObjectToLightBox(objectId) {
	var actualLightboxId = $('#f-favorites').val();
//	ajaxLoad("LightboxAjax", {'add':'add','show':'lightboxContent','getLightboxes':'lightboxSelect','getNumberOfPhotos':'numberOfPhotos'}, {'lightboxId': actualLightboxId, 'objectId': objectId});
	jQuery.getJSON("/service", {'ajax':'LightboxAjax', 'action': 'add:add,show:lightboxFoto,getLightboxes:f-favorites,getNumberOfPhotos:numberOfPhotos', 'lightboxId': actualLightboxId, 'objectId': objectId}, 
		function(data, status) {
            if (status == "success") {
                $('#lightboxFoto').html(data.result['lightboxFoto']);
                $('#f-favorites').html(data.result['f-favorites']);
                $('#numberOfPhotos').html(data.result['numberOfPhotos']);
				$('#canvas-lightbox-content .thumbs ul').css({'width':data.result['numberOfPhotos'] * 165});
			}
        }
    );
}

/**
 * Removes specified object from selected lightbox
 * @param objectId object to be removed from selected lightbox
 * @return nothing
 */
function removeObjectFromLightBox(objectId) {
    var actualLightboxId = $('#f-favorites').val();
	jQuery.getJSON("/service", {'ajax':'LightboxAjax', 'action': 'remove:remove,show:lightboxContent,getLightboxes:lightboxSelect,getNumberOfPhotos:numberOfPhotos', 'lightboxId': actualLightboxId, 'objectId': objectId}, 
        function(data, status) {
            if (status == "success") {
                $('#lightboxFoto').html(data.result['lightboxContent']);
                $('#f-favorites').html(data.result['lightboxSelect']);
                $('#numberOfPhotos').html(data.result['numberOfPhotos']);
                $('#canvas-lightbox-content .thumbs ul').css({'width':data.result['numberOfPhotos'] * 165});
            }
        }
    );
}


/**
 * Hides all actions
 * 
 * @param preserveSelectedAction preserve selected action in select actions selectbox
 * @return nothing
 */
function hideAllActions(preserveSelectedAction) {
	if (preserveSelectedAction == true) {
	
	} else {
		// set action to -select action- 
		//TODO
		document.getElementById('lightboxAction').selectedIndex = 0;
	    //$('#ligbtboxAction').val('');
	}  
    $('#lightboxActions').children().each(function() {
        $(this).hide();
    });
}

/**
 * Opens dialog for selected action
 * 
 * @param string action id
 */
function switchActions(action) {
    hideAllActions(true);
    switch (action) {
        case "create":
            $('#newLightboxName').val('');
            $('#actionNewLightbox').show();
            break;
        case "rename":
		    $('#renameLightboxName').val('');
			$('#actionRenameLightbox').show();
            break;
        case "sendEmail":
		    $('#mailName').val('');
            $('#mailText').val('');
            $('#actionSendMail').show();
            break;
        case "showUrl":
		    $('#actionShowUrl').show();
		    var actualLightboxId = $('#f-favorites').val();
		    $('#favoritesUrl').load('/service', {ajax: 'LightboxAjax', action: 'getUrl', 'lightboxId': actualLightboxId});
            break;
		case "showFullLightbox":
		    closeLightbox();
		    var actualLightboxId = $('#f-favorites').val();
			jQuery.getJSON("/service", {'ajax':'LightboxAjax', 'action': 'getUrl:url', 'lightboxId': actualLightboxId}, 
		        function(data, status) {
		            if (status == "success") {
						location.href = data.result['url'];
		            }
		        }
		    );
            break;
        case "delete":
		    $('#actionDeleteLightbox').show();
            break;
        case "removeSelected":
		    $('#actionRemoveSelected').show();
            break;
     	case "moveToLightbox":
	        $('#actionMoveLightbox').show();
			$('#moveLightboxName').load("/service", {'ajax':'LightboxAjax', 'action': 'getLightboxes'});
            break;
        case "copyToLightbox":
            $('#actionCopyLightbox').show();
            $('#copyLightboxName').load("/service", {'ajax':'LightboxAjax', 'action': 'getLightboxes'});
            break;
//        case "buySelected":
//        case "buyLightbox":
//            ajaxRequest('/service', 'GET', {ajax: 'LightboxAjax', action: 'getSizes', lbId: lightboxId, all:(akce=='buyLightbox')}, null, true);
//            break;
        case "searchSimilar":
            doAction("searchSimilar");
            break;
		//TODO check out what these do if anything, delete if possible
        case "display":
            ajaxRequest('/service','POST', {ajax: 'LightboxAjax', action: 'showFull'},false,false,'','','obsahLightbox');
            document.getElementById('zalozkaLightbox').style.display = 'block';
            prepniNaLightbox();
            zalozkaAktivuj('12');        
            break;
        
        default:
		    if (action != '') {
                alert(action);
			}
            break;
    } // end switch(action)
}

/**
 * Perform selected action
 * @param string action selected action
 */
function doAction(action) {
    switch(action) {
        case "create":
            var name = document.getElementById('newLightboxName').value; 
            if (name != null) {
                $('#f-favorites').load("/service", {'ajax':'LightboxAjax', 'action': 'createLightbox', lbName: name}, function(text, status, request) {handleStatus(status, text); loadActualLightbox()});
            }
            break;        
        case "rename":
		    var actualLightboxId = $('#f-favorites').val();
			var name = $('#renameLightboxName').val();
			$('#f-favorites').load("/service", {'ajax':'LightboxAjax', 'action': 'renameLightbox', lightboxName: name, lightboxId: actualLightboxId});
            break;    
        case "delete":
            $('#f-favorites').load("/service", {'ajax':'LightboxAjax', 'action': 'deleteLightbox', lightboxId: $('#f-favorites').val()}, function(text, status, request) {loadActualLightbox();});
            cancelAll();
            break;
        case "moveToLightbox":
		    var actualLightboxId = $('#f-favorites').val();
			var destinationLightboxId = $('#moveLightboxName').val();
			// move pictures to destination lb and select destination lb
            $('#f-favorites').load("/service", {'ajax':'LightboxAjax', 'action': 'moveObjectsToLightbox', 'lightboxId': actualLightboxId, 'destinationLightboxId': destinationLightboxId}, function(text, status, request) {loadActualLightbox();});
            break;
        case "copyToLightbox":
            var actualLightboxId = $('#f-favorites').val();
            var destinationLightboxId = $('#copyLightboxName').val();
            // copy pictures to destination lb and select destination lb
            $('#f-favorites').load("/service", {'ajax':'LightboxAjax', 'action': 'copyObjectsToLightbox', 'lightboxId': actualLightboxId, 'destinationLightboxId': destinationLightboxId}, function(text, status, request) {loadActualLightbox();});
            break;
        case "removeSelected":
		    var actualLightboxId = $('#f-favorites').val();
		     $('#lightboxFoto').load("/service", {'ajax':'LightboxAjax', 'action': 'removeSelected', 'lightboxId': actualLightboxId}, function(text, status, request) {});
             break;  
//        case "buySelected":
//        case "buyLightbox":
//            var lightboxSelect = document.getElementById("lightboxVyber");
//            var lightboxID = lightboxSelect.options[lightboxSelect.selectedIndex].value;
//            var sizeSelect = document.getElementById("buyPictureSize");
//            var sizeID = sizeSelect.options[sizeSelect.selectedIndex].value;
//            ajaxRequest('/service', 'POST', {ajax: 'LightboxAjax', action: 'buySelected', lightboxID: lightboxID, sizeID: sizeID, all:(action=='buyLightbox'), onComplete: cancelAction('actionBuySelected')}, false, true, 'makeShow');
//            break;
        case "searchSimilar":
            var checks = document.getElementsByTagName("input");
            var selectedCount = 0;
            for (i = 0; i < checks.length; i++) {
                if (checks[i].className == "lbCheck") {
                    if (checks[i].checked == true) {
                        selectedCount++;
                    }
                }
            }
            if (selectedCount < 2) {
                alert('Please select at least two pictures');
                break;
            }
            var lightboxSelect = document.getElementById("lightboxVyber");
            var lightboxId = lightboxSelect.options[lightboxSelect.selectedIndex].value;
            var redirectUrl = "/similar-pictures/lightbox/" + lightboxId;
            window.location.href = redirectUrl;
            break;
        case "sendEmail":
		     var actualLightboxId = $('#f-favorites').val();
             var email = $('#mailName').val();
             var text = $('#mailText').val();
             if (email != null) {
			 	 jQuery.get("/service", {'ajax':'LightboxAjax', 'action': 'sendLightbox', 'email': email, lightboxId: actualLightboxId, 'text': text});
             }
             break;                     
    }
    hideAllActions();
}

/**
 * Mark object as selected
 * @param integer objectId
 */
function lightboxCheck(objectId) {
	var actualLightboxId = $('#f-favorites').val();
	jQuery.get('/service', {ajax: 'LightboxAjax', 'action': 'check', 'objectId': objectId, lightboxId: actualLightboxId}, function(text, status, request) {
		$('#check' + objectId).attr('checked', (text == "true" ? true : false));
	});
}

/**
 * 
 * @param {Object} status
 * @param {Object} text
 */
function handleStatus(status, text) {
	if (status != "success") {
        $('body').prepend(text);
		$('#messageBox').slideDown(1000);
	}
}

function openLightbox() {
	$('body').addClass('page-lightbox').addClass('page-lightbox-switch');
	$.get("/service", {'ajax': 'LightboxAjax', 'action': 'open'});
	try {
		if (loadWithOpen) {
			loadActualLightbox();
			loadWithOpen = false;
		}
	} catch(error) {}
 
  lightbox();
}

function closeLightbox() {
	$('body').removeClass('page-lightbox').addClass('page-lightbox-switch'); 
	$.get("/service", {'ajax': 'LightboxAjax', 'action': 'close'});
  $('#canvas-content').css({'height' : ''});
}

function lightboxSelectAll() {
    var actualLightboxId = $('#f-favorites').val();
    jQuery.getJSON("/service", {'ajax':'LightboxAjax', 'action': 'checkAll:check,show:lightboxContent', 'lightboxId': actualLightboxId}, 
        function(data, status) {
            if (status == "success") {
                $('#lightboxFoto').html(data.result['lightboxContent']);
            }
        }
    );
}

function lightboxDeselectAll() {
    var actualLightboxId = $('#f-favorites').val();
    jQuery.getJSON("/service", {'ajax':'LightboxAjax', 'action': 'uncheckAll:check,show:lightboxContent', 'lightboxId': actualLightboxId}, 
        function(data, status) {
            if (status == "success") {
                $('#lightboxFoto').html(data.result['lightboxContent']);
            }
        }
    );
}

function lightboxInvertSelection() {
    var actualLightboxId = $('#f-favorites').val();
    jQuery.getJSON("/service", {'ajax':'LightboxAjax', 'action': 'checkInvert:check,show:lightboxContent', 'lightboxId': actualLightboxId}, 
        function(data, status) {
            if (status == "success") {
                $('#lightboxFoto').html(data.result['lightboxContent']);
            }
        }
    );
}


/********** OLD TO BE CHECKED AND DELETED ***************/


function lightboxSent() {
	hideMsgBox(true);
}

function objectsMoved() {
	refreshFullLightbox(document.getElementById('lightboxVyber').value);
	hideMsgBox(true);
}

function objectsCopied() {
	refreshFullLightbox(document.getElementById('lightboxVyber').value);
	hideMsgBox(true);
}

function changeState(id)
{
	if (document.getElementById('check' + id)!=null)
	{
		if (document.getElementById('check' + id).checked == true)
		{
			document.getElementById('check' + id).checked = false;
            document.getElementById('lbObj' + id).style.borderColor = '#d3d3d3';
            document.getElementById('caption' + id).style.background = "none";
		}
		else
		{
			document.getElementById('check' + id).checked = true;
            document.getElementById('lbObj' + id).style.borderColor = '#ec008c';
            document.getElementById('caption' + id).style.background = "url(/image/lightbox-arrow.gif) no-repeat center center";
		}
	}
}

//function reloadLightbox() {
//	return;
//	var actualLightboxId = document.getElementById('lightboxVyber').options[document.getElementById('lightboxVyber').selectedIndex].value;
//	var lightboxSize = readCookie('lightboxSize');
//	if (lightboxSize == 1) {
//	   refreshFullLightbox(actualLightboxId);
//	} else {
//	   refreshBigLightbox(actualLightboxId);
//	}
//	updateCheckboxes();
//}
	
function changeLightbox(id) {
	cancelAll();
	ajaxRequest('/service', 'POST', {ajax:'LightboxAjax', action:'Lightbox', value: id}, false, false, 'reloadLightbox', '', 'lightboxFoto');
}
	
function updateCheckboxes() {
	var pictures = document.getElementsByClassName('object_info_lightbox');
	var selected = 0;
	for (var i in pictures) {
		if ((typeof(pictures[i]) == 'object')) {
			var checkbox = pictures[i].getElementsByTagName('input')[0];
			if (checkbox != null) {
    			if (document.getElementById('lbObj'+checkbox.id.substring(checkbox.id.indexOf('_')+1)) == null) {
    				checkbox.checked = false;
    			} else {
    				checkbox.checked = true;
    			}
			}
		}
	}
}

///**
// * Zobrazi maximalizovany lightbox
// */
function refreshBigLightbox(lightbox) {
    ajaxRequest('/service','POST', {ajax: 'LightboxAjax', action: 'lightbox', value: lightbox}, false, false, 'callAjaxUpdateActions', '', 'lightboxFoto');
    return;
}

function lightboxCommentLink() {
    var id = document.getElementById('lightboxVyber').options[document.getElementById('lightboxVyber').selectedIndex].value
    var note = document.getElementById('lightboxComment').style;
    var status;
    if(note.display == 'block') {
       status = 0;
       note.display = 'none';              
    } else {
       status = 1;
       note.display = 'block';              
    }
    ajaxRequest('/service','POST', {ajax: 'LightboxAjax', action: 'showComment', id: id, status: status},false,false);            
}


function lightboxSetNote(text)
{       
    var lightboxID = document.getElementById('lightboxVyber').value;
    ajaxRequest('/service', 'GET', {ajax: 'LightboxAjax', action: 'SetNote', lbID: lightboxID, text: text}, null, null);
}


function refreshFullLightbox(lightbox)
{
	$.getScript("/service/ajax/LightboxAjax/action/lightbox/value/" + lightbox);
	//ajaxRequest('/service','POST', {ajax: 'LightboxAjax', action: 'lightbox', value: lightbox}, false, false, 'callAjaxUpdateActions', '', 'lightboxFoto');
	return;
}

function lightboxRemove(objektID)
{
	checkbox = document.getElementById('checkbox_' + objektID);
	if (checkbox != null) {
		checkbox.checked = false
	}

	ajaxRequest('/service','POST', {ajax: 'LightboxAjax', action: 'delete', objektID: objektID},false,true,'makeShow');
}

function lightboxAddPhoto(object) {
    ajaxRequest('/service', 'POST', {ajax:'LightboxAjax', action:'add', objektID: object}, false, true);//,'makeShow','','lightboxFoto');
}

function makeShow()
{
	alert("reload");
	var actualLightboxId = document.getElementById('lightboxVyber').options[document.getElementById('lightboxVyber').selectedIndex].value;
	ajaxRequest('/service','POST', {ajax: 'LightboxAjax', action: 'Lightbox', value: actualLightboxId},false,false,'updateCheckboxes','','lightboxFoto');
}





// REDESIGN

/**
 * Zobrazi lightbox v dane velikosti, pokud neni velikost zadana, tak v posledni zadane velikosti(ulozeno v cookie)
 */
function displayLightbox(lightboxSize) {
	if (lightboxSize == undefined) {
		lightboxSize = readCookie('lightboxSize');
		if (!lightboxSize) {
			lightboxSize = 1;
		}
	}
	// pokud je promo tak to nezvetsujem
	/*if (typeof lightboxPromo != "undefined") {
		lightboxSize = 0;
	}*/
	createCookie("lightboxSize", lightboxSize, 7);
	var lightbox = document.getElementById("lightbox");
	var container = document.getElementById("container");
	var windowHeight = getWindowHeight();
	var lightboxHeadHeight = 35;
	var lightboxBodyHeight = 180;
	// aktivujeme vsecky ikony a potom deaktivujeme tu jednu na kterou se kliklo
//	if (typeof lightboxPromo == "undefined") {
//		document.getElementById("lightboxMinimizeButton").innerHTML = '<img src="/image/lightbox-minimize1.gif" />';
//		document.getElementById("lightboxDisplayButton").innerHTML = '<img src="/image/lightbox-small1.gif" />';
//		document.getElementById("lightboxMaximizeButton").innerHTML = '<img src="/image/lightbox-fullsize1.gif" />';
//	}
//	if (lightboxSize == 0) {
//		lightbox.style.height = lightboxHeadHeight + "px";
//		container.style.height = (windowHeight - lightboxHeadHeight) + "px";
//		if (document.getElementById("lightboxMinimizeButton")) {
//		    document.getElementById("lightboxMinimizeButton").innerHTML = '<img src="/image/lightbox-minimize0.gif" />';
//		}
//	} else if (lightboxSize == 1) {
//		lightbox.style.height = (lightboxHeadHeight + lightboxBodyHeight)+ "px";
//		container.style.height = (windowHeight - lightboxHeadHeight - lightboxBodyHeight) + "px";
//		document.getElementById("lightboxDisplayButton").innerHTML = '<img src="/image/lightbox-small0.gif" />';
		reloadLightbox();
//	} else if (lightboxSize == 2) {
//		container.style.height = 0 + "px";
//		lightbox.style.height = 'auto';//windowHeight + "px";
//		document.getElementById("lightboxMaximizeButton").innerHTML = '<img src="/image/lightbox-fullsize0.gif" />';
//		reloadLightbox();
//	}
}

/**
 * Prepina z minimalizovaneho na stredni
 */
function switchLightboxSize() {
	lightboxSize = readCookie('lightboxSize');
	if (lightboxSize == 0) {
		displayLightbox(1);
	} else if (lightboxSize == 1 || lightboxSize == 2) {
		displayLightbox(0);
	} 
}

function provedSkriptik() {
      eval(document.getElementById('scriptik').value);
      
}

function zamerFocus() {
      eval(document.getElementById('focusField').value);
}



function cancelAction(action) {
    if (action == '') {
        hideAllActions();
    } else {
        document.getElementById(action).style.display = 'none';
    }
    document.getElementById('lightboxActions').style.display = 'inline';
    document.getElementById('lightboxAction').selectedIndex = 0;    
}

function cancelAll() {
    document.getElementById('lightboxActions').style.display = 'inline';
	$('#actionNewLightbox').hide();
//    document.getElementById('actionNewLightbox').style.display = 'none'; 
    document.getElementById('actionRenameLightbox').style.display = 'none'; 
    document.getElementById('actionDeleteLightbox').style.display = 'none'; 
    document.getElementById('actionCopyLightbox').style.display = 'none'; 
    document.getElementById('actionMoveLightbox').style.display = 'none';
    document.getElementById('actionRemoveSelected').style.display = 'none'; 
    document.getElementById('actionSendMail').style.display = 'none';     
    document.getElementById('actionShowUrl').style.display = 'none';     
}



function displayBuySelected(sizes, all) {
    if (sizes.length > 0) {
        var i;
        var sizeSelect = document.getElementById('buyPictureSize');
        sizeSelect.innerHTML = '';
        var option;
        for(i=0; i<sizes.length; i++) {
            option = document.createElement('option');
            option.label = sizes[i]['description'];
            option.innerHTML = sizes[i]['description'];
            option.value = sizes[i]['sizeID'];
            sizeSelect.appendChild(option);
        }
        document.getElementById('actionBuySelected').style.display = 'inline';
        if (all) {
            document.getElementById('lightboxOptions').style.display = 'inline';
            document.getElementById('selectedOptions').style.display = 'none';
        } else {
            document.getElementById('selectedOptions').style.display = 'inline';
            document.getElementById('lightboxOptions').style.display = 'none';
        }
    } else {
        document.getElementById('actionBuySelectedNone').style.display = 'inline';
    }
}

function callAjaxUpdateActions() {
    ajaxRequest('/service','POST', {ajax: 'LightboxAjax', action: 'updateActions', value: lightbox}, false, true);
}

function updateActions(numSelected) {
    if (numSelected == 0) { // Changes for when nothing is selected
        document.getElementById('copyToLightboxOption').style.display = 'none';
        document.getElementById('moveToLightboxOption').style.display = 'none';
        document.getElementById('removeSelectedOption').style.display = 'none';
        document.getElementById('buySelectedOption').style.display = 'none';
        document.getElementById('buyLightboxOption').style.display = '';
    } else { // Changes for when something is selected
        document.getElementById('copyToLightboxOption').style.display = '';
        document.getElementById('moveToLightboxOption').style.display = '';
        document.getElementById('removeSelectedOption').style.display = '';
        document.getElementById('buySelectedOption').style.display = '';
        document.getElementById('buyLightboxOption').style.display = 'none';
    }
}
