var emailFilter = /^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.(?:[A-Za-z]{2,4}|museum)$/;

// startsWith() function - very handy at times.
String.prototype.startsWith = function(str) 
{return (this.match("^"+str)==str)}

var $j = jQuery.noConflict();

// wait() function for jQuery
$j.fn.wait = function(time, type) {
        time = time || 1000;
        type = type || "fx";
        return this.queue(type, function() {
            var self = this;
            setTimeout(function() {
                $j(self).dequeue();
            }, time);
        });
    };


// IE check w/jquery
if (jQuery.browser.msie && jQuery.browser.version<7) ie = true;
else ie = false;

// Initialize menu functionality
$j(document).ready(function(){
		
	$j("input.labeled, textarea.labeled").bind('focus', function () { 
		if (this.value==this.title) { 
			$j(this).removeClass('withlabel'); 
			//$j("form").has(this).removeClass('edited'); 
			this.value = ''; 
		} else {
			$j(this).removeClass('withlabel');
		}
	});
	
	$j("form").bind('submit', function () {
		
		var fieldsmissing = new Array();
		var message = "";
		var kind = $j(this).attr("name");
		//alert(kind);
		
		$j(".required:input", this).each(function(index){
			if ($j(this).attr("name")!='' && ($j.trim($j(this).val())=='' || ($j(this).hasClass('labeled') && $j(this).val()==$j(this).attr("title")))) {
			fieldsmissing.push($j(this).attr("name"));
			//alert($j(this).attr("name")); $j(this).css('outline', '4px solid #f00');
			}
		});
		
		if (fieldsmissing.toString()=='title' && kind=='forum') message = "Du har glemt at skrive en overskrift til dit indlæg.";
		else if (fieldsmissing.toString()=='htmlcontent' && kind=='forum') message = "Skriv dit indlæg."; //"Skriv dit indlæg i det store hvide felt hvor der står \"Skriv dit indlæg her\" først.";
		else if (fieldsmissing[0]=='title' && kind=='calendar') message = "Du har glemt at skrive en titel til arrangementet.";
		else if (fieldsmissing[0]=='calendar_date' && kind=='calendar') message = "Du har glemt at angive en dato og et tidspunkt til arrangementet.";
		else if (fieldsmissing[0]=='calendar_location' && kind=='calendar') message = "Du har glemt at angive hvor arrangementet finder sted.";
		else if (fieldsmissing[0]=='time_publish' && kind=='calendar') message = "Du har glemt at angive en udløbsdato.";
		else if (fieldsmissing[0]=='description' && kind=='calendar') message = "Du skal skrive noget om arrangementet i feltet \"Kort beskrivelse\"";
		if (message) alert(message);
		
		if (fieldsmissing.length) return false;
		else return true;
		
	});
	
	
	/*
	$j("input#email").bind('keyup', function () { 
		if (this.value=='' || this.value==this.title || !(emailFilter.test(this.value))) { 
			$j("form:has(#"+this.id+")").removeClass('edited'); 
		} else {
			$j("form:has(#"+this.id+")").addClass('edited'); 
		}
	});
	*/
	
	$j("input.labeled, textarea.labeled").bind('blur', function () { 
		if (this.value=='' || this.value==this.title) { 
			$j(this).addClass('withlabel');
			this.value = this.title;
		} else {
			$j(this).removeClass('withlabel');
		}
	});

	$j("input.labeled, textarea.labeled").blur();



  $j('input.tied:text').bind('keyup', function(){ 
    if($j(this).val()!='' && $j(this).val()!=$j(this).attr('title')) 
      $j('input[name=has_'+$j(this).attr('name')+']').attr('checked', 'checked'); 
    else 
      $j('input[name=has_'+$j(this).attr('name')+']').attr('checked', '');
  });
  
  $j('input:checkbox[name^=has_]').bind('change', function(){ 
    fieldName = $j(this).attr('name').substring(4);
    if ($j(this).attr('checked')) $j('input[name='+fieldName+']').focus();
    else $j('input[name='+fieldName+']').val('').blur();
  
  });


	// Make Internet Explorer show box shadows on the newsletter icons
	if ($j.browser.msie) {
		
		var offset = 10;
		if ($j('form').hasClass('editor')) offset = 0;
		
		$j('.newsletter .preview img, #preview_layers img').boxShadow( offset, 2, 3, "#999");
		
		if ($j.browser.version<7) {
			DD_belatedPNG.fix('.overlay, .images img, .image img, img.png, .file img');
			
			$j('ul.memberlisticons li.haspic a').bind('mouseover', function(){
				$j('.name', this).css('visibility', 'visible');
			});
			$j('ul.memberlisticons li.haspic a').bind('mouseout', function(){
				$j('.name', this).css('visibility', 'hidden');
			});
			
		}
	}
	if ($j.browser.webkit) { $j('body').addClass('webkit'); }
	if ($j.browser.mozilla) { $j('body').addClass('gecko'); }
	
	
	$j('textarea.autogrow').autogrow();
	
	// Polls
	$j('select#poll_number_of_options').bind('change', function(){updatePollOptions(false)});
	updatePollOptions(true);
	
	$j('.forum .post .success').wait(5000).slideUp();
	
	$j('form.poll input.option, form.poll label').bind('change', function(){ document.forms.votebox.submit(); }).bind('click', function(){ document.forms.votebox.submit(); });
	
});


// For the user images on the website
function showUserImage(path, i, text) {
	$j('#userimage').attr('src', path);
	$j('#userimagetext').html(text);
	$j('.selector li').removeClass('selected');
	$j('#userimagelink_'+i).addClass('selected');
	return false;
}

function showPollOptions() {
	//$j('.poll_options_closed').hide();
	//$j('.poll_options').show();
	
	$j('.poll_options_closed').slideUp();
	$j('.poll_options').slideDown();
	$j('input#poll_delete').val('0');
	
}
function hidePollOptions() {
	$j('.poll_options').slideUp();
	$j('.poll_options_closed').slideDown();
	$j('input#poll_delete').val('1');
}
function updatePollOptions(onload) {
	var number = $j('select#poll_number_of_options').val();
	var i = 0;
	$j('.poll_options div.option').each(function(){
		i++;
		if (onload) {
			if (i <= number) $j(this).show();
			else $j(this).hide();
		} else {
			if (i <= number) $j(this).slideDown();
			else $j(this).slideUp();
		}
	});
}
function showPollBox() {
	$j('.poll').slideDown();
	$j('.poll_results').slideUp();
}
function hidePollBox() {
	$j('.poll_results').slideDown();
	$j('.poll').slideUp();
}

