$(document).ready(function() {
	initDetailBasis();
	initDetailRubrieken();
	initImage();
	initVideo();
	initVideoUpload();
	initPressRelease();
	initDetailPrijzen();
	initDate();
	initLocation();

	if ($("#saved").val()) {
		$('#savelog').fadeIn('slow').delay(1000).fadeOut('slow');
	}
	
/*
	$('.log').ajaxStart(function() {
		$(this).text('Triggered ajaxStart handler.');
	});
*/
	
	$('#savelog').ajaxComplete(function() {
	  $('#savelog').fadeIn('slow').delay(1000).fadeOut('slow');
	});
});


/**
	-----------------------------------------------------------------
	Page: location_view
	-----------------------------------------------------------------
*/

var initLocation = function () {
		
	$("#locsubmitbutton").click(function() {
		if(!$(this).hasClass('disabled')) {
		
			var loc_name = $("#loc_name").val();
			var loc_zipcode = $("#loc_zipcode").val();
			var loc_city = $("#loc_city").val();
			if (!loc_name) {
				alert("Naam is verplicht");
			} else if (!loc_zipcode) {
				alert("Postcode is verplicht");			
			} else if (!loc_city) {
				alert("Plaats is verplicht");
			} else {
		
				$.post( baseUrl + "/savelocatie.jl", $("#locationform").serialize(), function() {
					// $('#savemessage').fadeIn('slow').delay(800).fadeOut('slow');
					$("#locsubmitbutton").addClass('disabled');
					$("#locundobutton").addClass('disabled');
				});
			} 		
		}
		
		return false;
	});
	
	$("#locundobutton").click(function() {
		if(!$(this).hasClass('disabled')) {
			location.reload(true);
		}
		return false;
	});
	
	$("#locationform input, #locationform textarea").change(function() {
		$("#locsubmitbutton").removeClass('disabled');
		$("#locundobutton").removeClass('disabled');
	});
	
	$("#locationform input, #locationform textarea").keyup(function() {
		$("#locsubmitbutton").removeClass('disabled');
		$("#locundobutton").removeClass('disabled');
	});
	
	$("#locuploadbutton").click(function() {
		ajaxLocationFileUpload();
	});
	
	$("#img_file").change(function() {
		$("#locuploadbutton").parent().removeClass('disabled');
	});

	$("#img_file").keyup(function() {
		$("#locuploadbutton").parent().removeClass('disabled');
	});
	
	$("#loc_video_upload_button").click(function() {
		
		var value = $("#video_url").val();
		var video_id = getVideoURLParameter(value,"v");
		
		if (!video_id) {
			
			alert("Ongeldige Youtube video url");
			
		} else {
			
			var data_url = 'http://gdata.youtube.com/feeds/api/videos/' + video_id + '?v=2&alt=jsonc&callback=videoLocationCallback';
			writeFeed(data_url);

		}
		$("#loc_video_upload_button").parent().addClass('disabled');
		$("#reloadlocatiefotovideobutton").parent().removeClass('disabled');
	});
	
	$("#video_url").change(function() {
		$("#loc_video_upload_button").parent().removeClass('disabled');
	});

	$("#video_url").keyup(function() {
		$("#loc_video_upload_button").parent().removeClass('disabled');
	});
	

	initLocationVideo()

}

var initLocationVideo = function () {
	$(".delete_loc_video").click(function() {
		var video_id = $(this).attr('videoid');
		
		$.ajax({
			url: baseUrl + "/deletelocatievideo.jl?video_id=" + video_id,
			error: function(){
				alert('Er is een fout opgetreden');
			},
			success: function(){
				$("#video_containter_" + video_id).detach();
			}
  		});
		$("#reloadlocatiefotovideobutton").parent().removeClass('disabled');
  		return false;
	});
	
	

	$(".delete_loc_image").click(function() {
		
		var image_id = $(this).attr('imgId');

		$.ajax({
		  url: baseUrl + "/deletelocatieimage.jl?image_id=" + image_id,
		  error: function(){
		    alert('Er is een fout opgetreden');
  		  },
  		  success: function(){
		    $("#img_containter_" + image_id).detach();
  		  }
  		});
		$("#reloadlocatiefotovideobutton").parent().removeClass('disabled');
  		return false;
	});
}


var ajaxLocationFileUpload = function() {
	
	$("#loading")
	.ajaxStart(function(){
		$(this).show();
	})
	.ajaxComplete(function(){
		$(this).hide();
	});
	
	/*
		prepareing ajax file upload
		url: the url of script file handling the uploaded files
                    fileElementId: the file type of input element id and it will be the index of  $_FILES Array()
		dataType: it support json, xml
		secureuri:use secure protocol
		success: call back function when the ajax complete
		error: callback function when the ajax failed
		
	*/
	var copyright = $('#fotograaf').val(); 
	$.ajaxFileUpload (
		{
			url:baseUrl + '/uploadlocatieimage.jl?url=yes&copyright=' + escape(copyright),
			secureuri:false,
			fileElementId:'img_file',
			dataType: 'html',
			success: function (data, status) {
				if(typeof(data.error) != 'undefined') {
					if(data.error != '') {
						alert(data.error);
					} else {
						alert(data.msg);
					}
				} else {
					//alert(data);
					$('#images').html($('#images').html() + data);
					$('#noImages').hide();
					initLocationVideo();
				}
			},
			error: function (data, status, e) {
				alert(e);
			}
		}
	);

	$("#locuploadbutton").parent().addClass('disabled');
	$("#reloadlocatiefotovideobutton").parent().removeClass('disabled');
	return false;

}


var videoLocationCallback = function (response) {
	
	var embedcode = '<iframe width="320" height="180" src="http://www.youtube.com/embed/' + response.data.id + '" frameborder="0" allowfullscreen></iframe>';
	
	var title = response.data.title;
	var description = response.data.description;
	
	$.ajax({
		  url: (baseUrl + "/uploadlocatievideo.jl" + "?html_code=" + embedcode + "&name=" + title + "&description=" + description),
		  error: function(){
		    alert('Er is een fout opgetreden');
  		  },
  		  success: function(data){

  		  	if(data != "false") {
		    	$('#videos').append('<div id="video_containter_' + data + '">' + embedcode + '<a href="#" class="delete_loc_video" videoid="' + data + '">&nbsp;</a></div>');
		    	$('#noVideos').hide();
		    	initLocationVideo();
		    } else {
			    alert('Er is een fout opgetreden');
		    }
  		  }
  	});
	

}



/**
	-----------------------------------------------------------------
	Page: detailbasis_view
	-----------------------------------------------------------------
*/

var initDetailBasis = function () {
	$("#submitbutton").click(function() {
		if(!$(this).hasClass('disabled')) {
		
			//var title = $("#self_title").val();
			//if (!title) {
			//	
			//	alert("Geen titel ingevoerd");
			//}
			//else {
		
				$.post( baseUrl + "/savebasis.jl", $("#basisform").serialize(), function() {
					// $('#savemessage').fadeIn('slow').delay(800).fadeOut('slow');
					$("#submitbutton").addClass('disabled');
					$("#undobutton").addClass('disabled');
				});
			//}
		}
		
		return false;
	});
	
	$("#undobutton").click(function() {
		if(!$(this).hasClass('disabled')) {
			location.reload(true);
		}
		return false;
	});
	
	$("#basisform input, #basisform textarea").change(function() {
		$("#submitbutton").removeClass('disabled');
		$("#undobutton").removeClass('disabled');
	});	

	$("#basisform input, #basisform textarea").keyup(function() {
		$("#submitbutton").removeClass('disabled');
		$("#undobutton").removeClass('disabled');
	});	
}

/**
	-----------------------------------------------------------------
	Page: detailprijzen_view
	-----------------------------------------------------------------
*/

var initDetailPrijzen = function () {
	
	$('#priceform input[name="free_flag"]').click(function() {
		if($('#priceform input[name="free_flag"]').attr("checked") == true) {
			$('#priceform .free_checkbox').attr("checked",true);
		}
//		alert('clik')
//		
//		type="checkbox"
	});
	
	$('#priceform .free_checkbox').click(function() {
		var total = $('#priceform .free_checkbox').size();
		
		var count = 0;

		
		$('#priceform .free_checkbox').each(function(index) {
			if(!$(this).attr("checked")) {
				$('#priceform input[name="free_flag"]').attr("checked",false);
			} else {
				count++;
			}
		 });
		
		if(total == count) {
			$('#priceform input[name="free_flag"]').attr("checked",true);
		}
		
	});

	$("#submitprijzenbutton").click(function() {
		if(!$(this).hasClass('disabled')) {
			$.post( baseUrl + "/saveprice.jl", $("#priceform").serialize(), function() {
				// $('#savemessage').fadeIn('slow').delay(800).fadeOut('slow');
				$("#submitprijzenbutton").addClass('disabled');
    			$("#undoprijzenbutton").addClass('disabled');
			});
		}
		
		return false;
	});
	
	$("#undoprijzenbutton").click(function() {
		if(!$(this).hasClass('disabled')) {
			location.reload(true);
		}
		return false;
	});
	
	$("#priceform input, #priceform textarea").change(function() {
		$("#submitprijzenbutton").removeClass('disabled');
		$("#undoprijzenbutton").removeClass('disabled');
	});	
	
	$("#priceform input, #priceform textarea").keyup(function() {
		$("#submitprijzenbutton").removeClass('disabled');
		$("#submitprijzenbutton").removeClass('disabled');
	});		
}

/**
	-----------------------------------------------------------------
	Page: detailrubrieken_view
	-----------------------------------------------------------------
*/

var initDetailRubrieken = function () {

	$("#addrubriekbutton").click(function() {
		if(!$(this).parent().hasClass('disabled')) {
			$.post( baseUrl + "/addrubriek.jl", $("#addrubriekform").serialize(), function( data ) { 
				$( "#addrubriekresult" ).html( data );
			});
			$("#addrubriekbutton").parent().addClass('disabled');
			$("#saverubriekbutton").parent().removeClass('disabled');
		}
	});
	

	$("#selfcategory").change(function() {
		$("#addrubriekbutton").parent().removeClass('disabled');
	});

}

var removeRubriek = function (id) {
	$("#saverubriekbutton").parent().removeClass('disabled');
	document.removerubriekform.selfcategory.value = id;
	$.post( baseUrl + "/removerubriek.jl", $("#removerubriekform").serialize(), function( data ) { 
		$( "#addrubriekresult" ).html( data );
	});
}

/**
	-----------------------------------------------------------------
	Page: detaildata_view
	-----------------------------------------------------------------
*/

var initDate = function() {
		
	$("#new_time_start,#new_time_end").keypress(function(event) {
		var value = $(this).val();
  		var unicode = event.charCode ? event.charCode : event.keyCode;
		
		// Allow only backspace and delete and tab and arrows
		if ( unicode == 46 || unicode == 8 || unicode == 9 || (unicode >= 37 && unicode <= 40) ) {
			// let it happen, don't do anything
		} else {
			// Ensure that it is a number and stop the keypress
			if (unicode < 48 || unicode > 57 || value.length > 4) {
				event.preventDefault();	
			} else {
				var number = String.fromCharCode(event.which);
				
				if(value.length == 0) {
					if(number > 2) {
						event.preventDefault();
					}
				}
				
				if(value.length == 1) {
					if(value > 1 && number > 3) {
						event.preventDefault();
					}
				}
				
				if(value.length == 2 || value.length == 3) {
					if(number > 5) {
						event.preventDefault();
					}
				}
				
			}
		}
		
		if(unicode != 8 && value.length == 2) {
			$(this).val(value + ":");
		}
	});
	
	$("#new_time_start , #new_time_end").change(function(event) {
		var value = $(this).val();
		
		if(value.length != 0 && value.length != 5) {
			var split_value = value.split(":");
				
			if(split_value.length == 2) {
				if(split_value[1].length == 1) {
					$(this).val(split_value[0] + ":" + split_value[1] + "0");
				} else {
					$(this).val(split_value[0] + ":00");
				}
			} else {
				if(value.length == 1) {
					$(this).val("0" + value + ":00");
				} else {
					$(this).val(value + ":00");
				}
				
			}
			
		}
	});


	$("#adddatebutton").click(function() {
		$.post( baseUrl + "/adddate.jl", $("#adddateform").serialize(), function( data ) {
			$( "#selfdata" ).html(data );
		});
		$("#reloaddatabutton").parent().removeClass('disabled');
		$("#adddatebutton").parent().addClass('disabled');
		return false;
	});
	
	$( "#new_date" ).datepicker({ dateFormat: 'dd-mm-yy' });
	$( "#new_end_date" ).datepicker({ dateFormat: 'dd-mm-yy' });
				

	var dates = $( "#new_start_date, #new_end_date" ).datepicker({
		defaultDate: "+1w",
		changeMonth: true,
		numberOfMonths: 1,
		dateFormat:"dd-mm-yy",
		onSelect: function( selectedDate ) {
			var option = this.id == "new_start_date" ? "minDate" : "maxDate",
				instance = $( this ).data( "datepicker" ),
				date = $.datepicker.parseDate(
					instance.settings.dateFormat ||
					$.datepicker._defaults.dateFormat,
					selectedDate, instance.settings );
			dates.not( this ).datepicker( "option", option, date );
		}
	});
		
	$("#adddateform input, #adddateform select, #adddateform textarea").change(function() {
		$("#adddatebutton").parent().removeClass('disabled');
	});

	$("#adddateform input, #adddateform select, #adddateform textarea").keyup(function() {
		$("#adddatebutton").parent().removeClass('disabled');
	});

	$("#reloaddataform input, #reloaddataform textarea").change(function() {
		$("#reloaddatabutton").parent().removeClass('disabled');
	});

	$("#reloaddataform input, #reloaddataform textarea").keyup(function() {
		$("#reloaddatabutton").parent().removeClass('disabled');
	});
}

var setUitverkocht = function (id,fld,tp) {
	
	var f = document.eventupdateform;
	f.event_id.value = id;
	f.event_type.value = tp;
	f.event_property.value = "sold_out";
	f.value.value = fld.checked ? 1 : 0;

	$.post( baseUrl + "/updateevent.jl", $("#eventupdateform").serialize(), function( data ) {
		//$( "#eventupdateresult" ).html( data );
	});
	$("#reloaddatabutton").parent().removeClass('disabled');
	return false;
}

var deleteEvent = function (id) {
	
	var f = document.eventdeleteform;
	f.event_id.value = id;
	$.post(baseUrl + "/deleteevent.jl", $("#eventdeleteform").serialize(), function( data ) {
		$( "#selfdata" ).html( data );
	});
	$("#reloaddatabutton").parent().removeClass('disabled');
	
	return false;
}

var setGeannuleerd = function (id,fld,tp) {

	var f = document.eventupdateform;
	f.event_id.value = id;
	f.event_type.value = tp;
	f.event_property.value = "canceled";
	f.value.value = fld.checked ? 1 : 0;

	$.post(baseUrl + "/updateevent.jl", $("#eventupdateform").serialize(), function( data ) {
		//$( "#eventupdateresult" ).html( data );
	});
	$("#reloaddatabutton").parent().removeClass('disabled');
	return false;
}

/**
	-----------------------------------------------------------------
	Page: detailfotovideo_view
	-----------------------------------------------------------------
*/

var initImage = function () {

	$("#uploadbutton").click(function() {
		ajaxFileUpload();
		$("#uploadbutton").parent().addClass('disabled');
		$("#reloadfotovideobutton").parent().removeClass('disabled');
	});
	
	$(".delete_image").click(function() {
		var image_id = $(this).attr('imgId');
		
		$.ajax({
		  url: baseUrl + "/deleteimage.jl?image_id=" + image_id,
		  error: function(){
		    alert('Er is een fout opgetreden');
  		  },
  		  success: function(){
		    $("#img_containter_" + image_id).detach();
  		  }
  		});
		$("#reloadfotovideobutton").parent().removeClass('disabled');
  		return false;
	});

	$("#img_file").change(function() {
		$("#uploadbutton").parent().removeClass('disabled');
	});

	$("#img_file").keyup(function() {
		$("#uploadbutton").parent().removeClass('disabled');
	});

}

var initPressRelease = function () {

	$("#pressuploadbutton").click(function() {
		$("#pressuploadbutton").parent().addClass('disabled');
		$("#reloadfotovideobutton").parent().removeClass('disabled');
	
		pressAjaxFileUpload();
	});
	
	$(".delete_pressrelease").click(function() {
		var press_id = $(this).attr('pressId');

		$.ajax({
		  url: baseUrl + "/deletepressrelease.jl?pressrelease_id=" + press_id,
		  error: function(){
		    alert('Er is een fout opgetreden');
  		  },
  		  success: function(){
		    $("#pressrelease_containter_" + press_id).detach();
  		  }
  		});
		$("#reloadfotovideobutton").parent().removeClass('disabled');
  		return false;
	});
	
	$("#press_file").change(function() {
		$("#pressuploadbutton").parent().removeClass('disabled');
	});

	$("#press_file").keyup(function() {
		$("#pressuploadbutton").parent().removeClass('disabled');
	});
}

var pressAjaxFileUpload = function() {
	
	$("#pressloading")
	.ajaxStart(function(){
		$(this).show();
	})
	.ajaxComplete(function(){
		$(this).hide();
	});
	
	/*
		prepareing ajax file upload
		url: the url of script file handling the uploaded files
                    fileElementId: the file type of input element id and it will be the index of  $_FILES Array()
		dataType: it support json, xml
		secureuri:use secure protocol
		success: call back function when the ajax complete
		error: callback function when the ajax failed
		
	*/
	$.ajaxFileUpload (
		{
			url:baseUrl + '/uploadpressrelease.jl?url=yes', 
			secureuri:false,
			fileElementId:'press_file',
			dataType: 'html',
			success: function (data, status) {
				if(typeof(data.error) != 'undefined') {
					if(data.error != '') {
						alert(data.error);
					} else {
						alert(data.msg);
					}
				} else if (jQuery.trim(data) == "false") {
				
				} else {
					$('#pressreleases').html($('#pressreleases').html() + data);
					$('#noPressReleases').hide();
					initPressRelease();
				}
			},
			error: function (data, status, e) {
				alert(e);
			}
		}
	);

	return false;

}

var ajaxFileUpload = function() {
	
	$("#loading")
	.ajaxStart(function(){
		$(this).show();
	})
	.ajaxComplete(function(){
		$(this).hide();
	});
	
	/*
		prepareing ajax file upload
		url: the url of script file handling the uploaded files
                    fileElementId: the file type of input element id and it will be the index of  $_FILES Array()
		dataType: it support json, xml
		secureuri:use secure protocol
		success: call back function when the ajax complete
		error: callback function when the ajax failed
		
	*/
	var copyright = $('#fotograaf').val();
	$.ajaxFileUpload (
		{
			url:baseUrl + '/uploadimage.jl?url=yes&copyright=' + escape(copyright), 
			secureuri:false,
			fileElementId:'img_file',
			dataType: 'html',
			success: function (data, status) {
				if(typeof(data.error) != 'undefined') {
					if(data.error != '') {
						alert(data.error);
					} else {
						alert(data.msg);
					}
					
				} else if (jQuery.trim(data) == "false") {
				
				} else {
					//alert(data);
					$('#images').html($('#images').html() + data);
					$('#noImages').hide();
					initImage();
				}
			},
			error: function (data, status, e) {
				alert(e);
			}
		}
	);

	return false;

}

var initVideoUpload = function () {
	$("#video_upload_button").click(function() {
		
		$("#video_upload_button").parent().addClass('disabled');
		$("#reloadfotovideobutton").parent().removeClass('disabled');

		var value = $("#video_url").val();
		var video_id = getVideoURLParameter(value,"v");
		
		$("#video_url").val("")
		
		if (!video_id) {
			
			alert("Ongeldige Youtube video url");
			
		} else {
			
			var data_url = 'http://gdata.youtube.com/feeds/api/videos/' + video_id + '?v=2&alt=jsonc&callback=videoCallback';
			writeFeed(data_url);

		}
	});
	
	$("#video_url").change(function() {
		$("#video_upload_button").parent().removeClass('disabled');
	});

	$("#video_url").keyup(function() {
		$("#video_upload_button").parent().removeClass('disabled');
	});
	
}

var initVideo = function () {

	$(".delete_video").click(function() {
		var video_id = $(this).attr('videoid');
		
		$.ajax({
			url: baseUrl + "/deletevideo.jl?video_id=" + video_id,
			error: function(){
				alert('Er is een fout opgetreden');
			},
			success: function(){

				$("#video_containter_" + video_id).detach();

			}
  		});
		$("#reloadfotovideobutton").parent().removeClass('disabled');
  		return false;
	});
}

var videoCallback = function (response) {
	
	var embedcode = '<iframe width="320" height="180" src="http://www.youtube.com/embed/' + response.data.id + '" frameborder="0" allowfullscreen></iframe>';
	
	var title = response.data.title;
	var description = response.data.description;
	
	$.ajax({
		  url: (baseUrl + "/uploadvideo.jl" + "?html_code=" + embedcode + "&name=" + title + "&description=" + description),
		  error: function(){
		    alert('Er is een fout opgetreden');
  		  },
  		  success: function(data){

  		  	if(data != "false") {
  		  		var video_id = jQuery.trim(data);
  		  		
		    	$('#videos').append('<div id="video_containter_' + video_id + '">' + embedcode + '<a href="#" class="delete_video" videoid="' + video_id + '">&nbsp;</a></div>');
		    	$('#noVideos').hide();
		    	initVideo();
		    } else {
			    alert('Er is een fout opgetreden');
		    }
  		  }
  	});
	

}

var getVideoURLParameter = function (url,name) {
	
	var param = (RegExp(name + '=' + '(.+?)(&|$)').exec(url)||[,false])[1];

    if(param == false) {
    	var url_split = url.split("youtu.be/");
    	if (url_split.length > 1) {
	    	param = decodeURI(url_split[1]);
    	}
    	
    } else {
		param = decodeURI(param);
    }
    return param;
    
}

var writeFeed = function (url) {
	var ga = document.createElement('script');
	ga.type = 'text/javascript'; ga.async = true;
	ga.src = url;
	var s = document.getElementsByTagName('script')[0];
	s.parentNode.insertBefore(ga, s);
}

var getErrorHtml = function (msg) {
  return "<p><span>" + msg + "</span></p>";
}

var checkNumeric = function (fld) {
  if (fld.value != "") {
    if (fld.value.match('^(0|[1-9][0-9]*)$')) {
      // ok
      $("#" + fld.name + "_error").hide();
    }
    else {
      //alert('ingevulde waarde is geen getal');
      $("#" + fld.name + "_error").html(getErrorHtml('geen getal')).show();
    }
  }
}


