/*
--------- Technopark shared scripts
--------- (c) Copyright Granas GmbH, Switzerland
--------- March, 2010
*/
	//--- company list functions
	function fnTechnoparkCompanyList() {
		var g_intTotalCompanies = 0;
		var g_intSelectedCompanyIndex = 0;
		fnCompanyTotal();
		$.map($('#companies-container ul'), function(obj,i) {
			var strCompanyID = "";
			var strCompanyName = "";
			$(obj).find('li').each( function() {
				if ($(this).hasClass('companyid')) {
					strCompanyID = $(this).html();
					 $(this).hide();
				} else if ($(this).hasClass('companyname')) {
					strCompanyName = $(this).html();
					$(this).html('').addClass('company-name-list').append('<a href="#" class="tpag-link companyname" companyid="' + strCompanyID + '">' + strCompanyName + '</a>');
				} else if ($(this).hasClass('branches')) {
					$(this).addClass('company-branches-list text-color-gray2 text-size-small');
				} else $(this).hide();
			});
		});
		//--- toggle list / details
		function fnCompanyDetails(blnValueIsIndex, lngValue) {
			if (blnValueIsIndex == false && lngValue == 0) {
				$('#company-list').show();
				$('#company-details').hide();
				return false;
			}
			$('#company-list').hide();
			$('#company-details').show();
			//--- get company
			var strValue = "";
			var strStreet = "", strZipcode = "", strCity = "", strCountry = "";
			var strHomepage = "";
			var regExpMatch = /^((http|https|ftp):\/)/;
			var objUL = null;
			var objContainer = $('div.company-detail-container');
			if (!blnValueIsIndex) {
				var strSelector = '#companies-container ul li a[companyid=' + lngValue + ']';
				var objA = $(strSelector);
				var objUL = $(objA).parent().parent();
			} else {
				objUL = $('#companies-container ul').get(lngValue);
			}
			g_intSelectedCompanyIndex = $(objUL).index();
			fnInitPrevNextLinks();
			$(objUL).find('li').each( function() {
				if ($(this).hasClass('companyname')) {
					$(objContainer).find('.companyname').html( $(this).find('a').text() );
				} else if ($(this).hasClass('admissiondate')) {
					$(objContainer).find('.admissiondate').html( $(this).text() );
				} else if ($(this).hasClass('logofilename')) {
					fnLoadCompanyLogo($(objContainer).find('.logofilename'), $(this).text());
				} else if ($(this).hasClass('branches')) {
					$(objContainer).find('.branches').html( $(this).text() );
				} else if ($(this).hasClass('contactperson')) {
					$(objContainer).find('.contactperson').html( $(this).text() );
				} else if ($(this).hasClass('floor')) {
					$(objContainer).find('.floor').html( $(this).text() );
				} else if ($(this).hasClass('roomnr')) {
					$(objContainer).find('.roomnr').html( $(this).text() );
				} else if ($(this).hasClass('street')) {
					strStreet = $(this).text();
				} else if ($(this).hasClass('zipcode')) {
					strZipcode = $(this).text();
				} else if ($(this).hasClass('city')) {
					strCity = $(this).text();
				} else if ($(this).hasClass('country')) {
					strCountry = $(this).text();
				} else if ($(this).hasClass('tel')) {
					$(objContainer).find('.tel').html( $(this).text() );
				} else if ($(this).hasClass('fax')) {
					$(objContainer).find('.fax').html( $(this).text() );
				} else if ($(this).hasClass('email')) {
					if ($(this).html().length > 0) $(objContainer).find('.email').empty().append( '<a href="mailto:' + $(this).html() + '">' + $(this).text() + '</a>' );
					else $(objContainer).find('.email').empty();
				} else if ($(this).hasClass('homepage')) {
					strHomepage = $(this).html();
					if (strHomepage.length > 0) {
						if (!strHomepage.match(regExpMatch)) strHomepage = "http://" + strHomepage;
						$(objContainer).find('.homepage').empty().append( '<a href="' + strHomepage + '" target="_blank">' + strHomepage + '</a>' );
					} else $(objContainer).find('.homepage').empty();
				} else if ($(this).hasClass('description')) {
					$(objContainer).find('.description').html( $(this).text() );
				}
			});
			if (strCity.length > 0) strZipcode += " <b>" + strCity + "</b>";
			if (strStreet.length > 0 && strZipcode.length > 0) strStreet += "<br/>" + strZipcode;
			if (strStreet.length > 0 && strCountry.length > 0) strStreet += "<br/>" + strCountry;
			$(objContainer).find('.address').html( strStreet );
		}
		//--- delete company
		function fnDeleteCompany(objDeleteLink, lngCompany) {
			var strPath = window.location.pathname.substring(window.location.pathname.lastIndexOf('/')+1);
			var blnSuccess = false;
			$.ajax({type: "GET",
					async: false,
					url: strPath + "?DeleteCompany=" + lngCompany,
					beforeSend: function(request) {
						$(objDeleteLink).removeClass('delete-link').addClass('delete-link-loading');
					},
					success: function(xml) {
						var strText = $(xml).find('boolean').text();
						if (strText.toLowerCase() == "true") doesExist(true);
					},
					complete: function(request, status) {
						$(objDeleteLink).removeClass('delete-link-loading').addClass('delete-link');
					}
				});
			function doesExist(boolResult) {
				blnSuccess = boolResult;
			}
			return blnSuccess;
		}
		//--- company total
		function fnCompanyTotal() {
			g_intTotalCompanies = $('#companies-container ul').size();
			$('#company-total').html( 'Total &nbsp; (' + g_intTotalCompanies + ')' );
		}
		//--- initialize company prev/next buttons
		function fnInitPrevNextLinks() {
			var intLastIndex = 0;
			if (g_intTotalCompanies > 0) intLastIndex = g_intTotalCompanies - 1;
			$('#company-detail-prev-btn').removeClass('prev-btn-link').removeClass('prev-btn-link-disabled');
			$('#company-detail-next-btn').removeClass('next-btn-link').removeClass('next-btn-link-disabled');
			if (intLastIndex == 0) {
				$('#company-detail-prev-btn').addClass('prev-btn-link-disabled');
				$('#company-detail-next-btn').addClass('next-btn-link-disabled');
			} else if (g_intSelectedCompanyIndex == 0) {
				$('#company-detail-prev-btn').addClass('prev-btn-link-disabled');
				$('#company-detail-next-btn').addClass('next-btn-link');
			} else if (g_intSelectedCompanyIndex == intLastIndex) {
				$('#company-detail-prev-btn').addClass('prev-btn-link');
				$('#company-detail-next-btn').addClass('next-btn-link-disabled');
			} else {
				$('#company-detail-prev-btn').addClass('prev-btn-link');
				$('#company-detail-next-btn').addClass('next-btn-link');
			}
		}
		//--- load logo image
		function fnLoadCompanyLogo(objContainer, strSrc) {
			if (typeof($(objContainer).html()) == "undefined") return;
			$(objContainer).empty();
			$(objContainer).addClass("image-loading");
			if (strSrc.length == 0) {
				$(objContainer).removeClass("image-loading");
				return;
			}
			$(function () {
				var objImg = new Image();
				$(objImg)
					.load(function () {
						$(this).hide();
						$(objContainer).removeClass('image-loading').append(this).css("text-align","right");
						$(this).fadeIn(500);
						$(this).attr("width", 200);
						$(this).attr("height", 80);
					})
					.error(function () {
						$(objContainer).removeClass('image-loading').addClass("image-loading-error");
					})
					.attr('src', strSrc).css("display","block").css("margin","0 auto");
			});
		}
		//--- filter
		function fnFilter(strKeywords) {
			if (strKeywords.length == 0) {
				$('#companies-container ul').show();
				$('a.company-list-clear-filter').hide();
				$('#company-search').val('');
				return false;
			}
			$.map($('#companies-container ul'), function(obj,i) {
				var strCompanyName = "";
				var blnFilter = false;
				$(obj).find('li').each( function() {
					if ($(this).hasClass('companyname')) strCompanyName = $(this).find('a').text();
				});
				//--- trim, add pipes to spaces
				strKeywords.replace(/^\W+/,'').replace(/\W+$/,'');
				strKeywords = strKeywords.split(' ').join('|');
				var objRegEx = new RegExp(strKeywords, 'i');
				if (strCompanyName.search(objRegEx) == -1) $(obj).hide();
				else $(obj).show();
			});
			$('a.company-list-clear-filter').show();
		}
		//--- capture events
		$('a.delete-company').click( function(e) {
			var lngCompanyID = 0;
			var blnConfirm = false;
			var objUL = $(this).parent().parent();
			var strCompanyName = $(objUL).find('li.companyname').text();
			if (!isNaN( $(this).attr('companyid') )) lngCompanyID = parseInt($(this).attr('companyid'));
			blnConfirm = confirm("Are you sure you want to delete '" + strCompanyName + "'?");
			if (blnConfirm) {
				if (fnDeleteCompany($(this), lngCompanyID)) {
					objUL.remove();
					fnCompanyTotal();
				} else alert("An error occurred. '" + strCompanyName + "' could not be deleted.");
			}
			e.preventDefault();
		});
		$('a.companyname').click( function(e) {
			var lngCompanyID = 0;
			if (!isNaN( $(this).attr('companyid') )) lngCompanyID = parseInt($(this).attr('companyid'));
			fnCompanyDetails(false, lngCompanyID);
			e.preventDefault();
		});
		$('#company-detail-prev-btn').click( function(e) {
			if ($(this).hasClass('prev-btn-link')) fnCompanyDetails(true, g_intSelectedCompanyIndex - 1);
			e.preventDefault();
		});
		$('#company-detail-next-btn').click( function(e) {
			if ($(this).hasClass('next-btn-link')) fnCompanyDetails(true, g_intSelectedCompanyIndex + 1);
			e.preventDefault();
		});
		$('a.company-list-back').click( function(e) {
			fnCompanyDetails(false, 0);
			e.preventDefault();
		});
		$('a.company-list-clear-filter').click( function(e) {
			fnFilter('');
			e.preventDefault();
		});
		$('input.company-search-link').click( function(e) {
			fnFilter($('#company-search').val());
			e.preventDefault();
		});
		$('#company-search').keypress( function(e) {
			var intKeyCode = e.which ? e.which : e.keyCode;
			if (intKeyCode == 13) fnFilter($(this).val());
		});
	}
	//--- edit company
	function fnTechnoparkEditCompany() {
		$('#technopark-datepicker-container').datepicker({ dateFormat: 'yy-mm-dd', 
			onSelect: function(dateText, inst) {
				$('#technopark-datepicker-container').hide();
				$('#admission-date-hidden').find('input').val( dateText );
				$('span.admission-date').html( dateText );
			}
		});
		$('#technopark-datepicker-container').datepicker('setDate', $('span.admission-date').text());
		//--- capture events
		$('span.technopark-datepicker').click( function() {
			if ( $('#technopark-datepicker-container').is(':not(":hidden")') ) $('#technopark-datepicker-container').hide();
			else $('#technopark-datepicker-container').show();
		});
	}