// begin Base modal functions
$.fn.modalShow = function(){
	var isIE6 = ($.browser.msie && $.browser.version < 7);
	if ($("div.overlay").length < 1) {
		var $overlay;
		
		if (isIE6) {
			$overlay = $("<iframe class='overlayIFrame'></iframe><div class='overlay'></div>").appendTo('body');
		}
		else {
			$overlay = $('<div class="overlay"></div>').appendTo('body');
		}

		$overlay.click(function(){
			$modal.modalHide();
		});
		
	}
	var $modal=$("<div id='modalWrap'></div>").appendTo('body');
	$("<span class='modalClose'><a href='#' title='Close'>Close</a></span>").prependTo($modal);
	$modal.find('span.modalClose a').click(function(){
		$modal.modalHide();
	});
	$($(this).html()).appendTo($modal);
	$("div.overlay, div#modalWrap").show();
	return $modal;
}

$.fn.modalPosition = function(){
	var modH=this.height();
	var modTop=( $(window).height() - this.height() ) / 2 + $(window).scrollTop();
	var modShift=this.width() / -2;
	modTop = modTop < 0 ? 0 : modTop;
	this.css({top:modTop,left:"50%",marginLeft:modShift});
	return this;
}

$.fn.modalHide = function(){
	$("div.overlay, iframe.overlayIFrame, div#modalWrap").remove();
}
// end Base modal functions

/*quick pane*/
$.fn.quickPane = function() {
	this.each(function(){
		var $pane = $(this);
		var $title = $pane.find(".paneTitle");
		if ($title.length > 0) {
			var $body = $pane.find("div.paneBody");
			$title.click(function(){
				$pane.toggleClass('expanded');
				$body.slideToggle(300);
				return false;
			});
		}
	});
	return this;
}

/*vertical aligner*/
$.fn.vertAlign = function() {
	if (this.length > 0) {
		$parent = (arguments.length > 0) ? $(arguments[0]) : this.parent();
		var topShift = ( $parent.innerHeight() - this.outerHeight() ) / 2;
		topShift = topShift > 0 ? topShift + "px" : 0;
		this.css("marginTop",topShift);	
	}
}




$(document).ready(function(){	
	
	/*Initialize quickPanes*/
	$("div.infoPane").quickPane();
	
	
	
	autoFill($("#notice_email"), "Enter Your Email");
	
	
		



	/*Initialize Temporary Form Switcher*/
	
	$("#registerEntry .post_login_switch").click(function(){
		$("#registerEntry").slideUp(300,function(){
			$("#registerEntry2").slideDown(300);
		});
		return false;
	});
	
	$("#registerEntry2 .post_login_switch").click(function(){
		$("#registerEntry2").slideUp(300,function(){
			$("#registerEntry").slideDown(300);
		});
		return false;
	});
	
	/*Initialize Preview Modal*/
	$(".butPreview").click(function(){
		var storyTitle = $("#post_title").val();
		storyTitle = (storyTitle == "") ? "No title has been entered yet." : storyTitle;
		var storyTxt = $("#post_body").val();
		storyTxt = (storyTxt == "") ? "No story has been entered yet." : storyTxt;
		var storyTxtHtml = storyTxt.replace( new RegExp( "\\n", "g" ),"<br />" );
		/*populate preview title and categories*/
			$("#sharePreview .titleEcho h1").html(storyTitle);
		/*populate categories*/
			/*TBD*/
		/*populate preview modal story body*/
			$("#sharePreview .storyEcho").html(storyTxtHtml);
		/*clone and display modal*/
			$("#sharePreview").modalShow().modalPosition();
	});
	
	
   var validator= $("#new_post").validate({
   		rules: {
            'post[title]': {required: true, minlength:1},
            'post[body]': {required: true, minlength:1},
            'post[category_ids][]': {required: true}         
        },
        messages: { 
            'post[title]': "Please title your story", 
            'post[body]': "Please write your story", 
            'post[category_ids][]': { 
                required: "You must select at least one category"  
            }
        },
        errorPlacement: function(error, element) {
			if ( element.is(":checkbox") ) {
                error.appendTo ( element.parent().parent().parent().prev() );
                
            }
            else {           
            	error.appendTo( element.parent().prev());
            } 
        }  
   	
	   }); // end validator
   
 
 
 var sign_up_validator= $("#new_user").validate({
   		rules: {
            'user[email]': {required: true, minlength:1, email:true},
            'user[name]': {required: true, minlength:1},
            'user[password]': {required: true, minlength:6},
            'user[password_confirmation]': {required: true, minlength:6, equalTo: "#user_password_confirmation"}          
        },
        messages: { 
            'user[email]': {required: "Please enter your email",
            				minlength: "Please enter your email",
            				email: "Please enter a valid email"}, 
            'user[name]': "Please enter a screen name", 
           'user[password]': { 
                required: "Password required"   
            },
             'user[password_confirmation]': { 
                required: "Password Confirm Required",
                equalTo: "Passwords do not match"   
            }
        },
        errorPlacement: function(error, element) {
			
        	error.appendTo( element.parent().prev());
          
        }  
   	
   }
   	
   );
  var comment_validator= $("#new_comment").validate({
   		rules: {
            'comment[email]': {required: true, minlength:1, email:true},
            'comment[name]': {required: true, minlength:1},
            'comment[body]': {required: true, minlength:1}
                    
        },
        messages: { 
            'comment[email]': {required: "Please enter your email",
            				minlength: "Please enter your email",
            				email: "Please enter a valid email"}, 
            'comment[name]': "Please enter your name", 
            'comment[body]': { 
                required: "Please enter a comment body"   
            }
        },
        errorPlacement: function(error, element) {
					element.parent().prev().show();
        	error.appendTo( element.parent().prev());
          
        }  
   	
   }
   	
   );
var review_validator= $("#new_user_review").validate({
   		rules: {
            'post[body]': {required: true, minlength:1}
           
                    
        },
        messages: { 
            'post[body]': "Please enter your review text"
            			
          
        },
        errorPlacement: function(error, element) {
			
        	error.appendTo( element.parent().prev());
          
        }  
   	
   }
   	
   );
var notice_validator= $("#new_notice").validate({
   		rules: {
            'notice[email]': {required: true, email:true}
           
                    
        },
        messages: { 
            'notice[email]': "Please enter a valid email"
            			
          
        },
        errorPlacement: function(error, element) {
			
        	error.appendTo( element.parent().prev());
          
        }  
   	
   }
   	
   );
var validator= $("#new_recommend").validate({
   		rules: {
            'recommend[to_field]': {required: true, minlength:1},
            'recommend[from_field]': {required: true, minlength:1, email:true},
            'recommend[subject]': {required: true, minlength:1},
            'recommend[message]': {required: true, minlength:1, maxlength:500}
            
                         
        },
        messages: {
        		'recommend[to_field]': "Please specify at least one recipient",
            'recommend[from_field]': "Please enter a valid from email address",
            'recommend[subject]': "Please enter a subject",
            'recommend[message]': {required:"Please enter a message",
            				maxlength:"Message exceeds 500 characters, please remove characters"}
            
           
        },
        errorPlacement: function(error, element) {
	           
            	error.appendTo( element.parent().prev());
           
        }  
   	
	   }); // end validator
   

   
   $("#test").click(function(){
   	$("#samplePreview").modalShow().modalPosition(height="400", width="472");
   	
   	});
   	$('#categoryNavInner').tabs();
   	$("#readMoreToggle").click(function () {
      $("#more_questions").toggle();
    });
    $('a#readMoreToggle').bind('click', toggleContent);
    $('a.closeR1').bind('click', RtoggleContent);
		
	$('#principleSelect').tabs({ fx: { opacity: 'toggle' } });


	

	
	
   	
  
   	
	
});
/*added from phase one code by Dan*/
var toggleContent = function(e)
{	var targetContent = $('div#more_questions', this.parentNode.parentNode);
	if (targetContent.css('display') !== 'none') {
		targetContent.slideDown(300);
		$(this).html('Hide');
	} else {
		targetContent.slideUp(300);
		$(this).html('Read more questions');
	}
	return false;
};

var RtoggleContent = function(e)
{
	var targetContent = $('span.itemContent', this.parentNode.parentNode);
	if (targetContent.css('display') == 'none') {
		targetContent.slideDown(100);
		$(this).html('Hide');		
	} else {
		targetContent.slideUp(100);
		$(this).html('...Read More');
	}
	return false;
};

function autoFill(id, v){
	$(id).css({ color: "#b2adad" }).attr({ value: v }).focus(function(){
		if($(this).val()==v){
			$(this).val("").css({ color: "#333" });
		}
	}).blur(function(){
		if($(this).val()==""){
			$(this).css({ color: "#b2adad" }).val(v);
		}
	});

}

/*end toggle code*/