/*
 * Copyright (c) 2009 Eric Martin - http://ericmmartin.com
 *
 * Licensed under the MIT license:
 *   http://www.opensource.org/licenses/mit-license.php
 *
 */

var localHref;
var didSubmit = false;
var MM_formdata = "<div style='display:none'>\
	             <div class='contact-top'></div>\
	             <div class='contact-content'>\
		      <h1 class='contact-title'></h1>\
		      <div class='contact-loading' style='display:none'></div>\
		      <div class='contact-message' style='display:none'></div>\
		      <form action='#' style='display:none'>\
			<label for='contact-subject'>Tema/tags:</label>\
			<input type='text' id='contact-subject' class='contact-input' name='subject' value='' tabindex='1003' />\
			<label for='contact-message'>Tekst:<br style='line-height: 300%'>&nbsp;<br>\
			<button type='submit' class='contact-send contact-button' tabindex='1006'>Lagre</button><br>\
			<button type='submit' class='contact-cancel contact-button simplemodal-close' tabindex='1007'>Avbryt</button>\
			</label>\
			<textarea id='contact-message' class='contact-input' name='message' cols='44' rows='10' value='' tabindex='1004'>\
                        </textarea>\
			<input type='hidden' name='token' value='verdi_inn_her'/>\
		      </form>\
                      <div class='contact-info' style='display:none'></div>\
	             <div class='contact-bottom'></div>\
	             </div>";

$(document).ready(function () {
	//$('#contactForm input.contact, #contactForm a.contact').click(function (e) {
    $('.faq-discuss').each(function() { 
        var $here = $(this);
        $here.find(':button[name^=comment]').click(function(e) { 
		e.preventDefault();
		localHref=$here.find('a').attr('href'); // need a direct reference to the actual FAQ-entry
                //alert("reference: "+localHref);
	        // create a modal dialog with the data
		$(MM_formdata).modal({
			closeHTML: "<a href='#' title='Close' class='modalCloseX simplemodal-close'>x</a>",
			position: ["15%",],
			overlayId: 'contact-overlay',
			containerId: 'contact-container',
			onOpen: contact.open,
			onShow: contact.show,
			onClose: contact.close
		});
	});
    });

  // preload images
  var img = ['cancel.png', 'form_bottom.gif', 'form_top.gif', 'loading.gif'];
  $(img).each(function () {
	var i = new Image();
	i.src = '/MR/gif/contact/' + this;
  });

});

var contact = {
	message: null,
	subject: null,
	editMode: false,
        gcMode: false,
	$subject: null,
	$message: null,
        delButton: '',
	open: function (dialog) {
		// add padding to the buttons in firefox/mozilla
		if ($.browser.mozilla) {
			$('#contact-container .contact-button').css({
				'padding-bottom': '2px'
			});
		}
		// input field font size
		if ($.browser.safari) {
			$('#contact-container .contact-input').css({
				'font-size': '.9em'
			});
		}

		// dynamically determine height
		var h = 240;
		if ($('#contact-subject').length) {
			h += 26;
		}

		var title = 'Legg til ny kommentar:';
                var commentMsg = "Du kan slette eller redigere kommentaren senere dersom du ønsker det. HTML-koding kan brukes i teksten.";
                if (contact.editMode) { 
                   title = 'Endre kommentar:'; 
                   commentMsg = 'MERK: Når kommentaren endres, vil den få ny dato. Dette påvirker rekkefølgen av kommentarene!';
		   $('#contact-subject').attr('value', contact.$subject.text());
                   //alert(contact.$message.text());
		   $('#contact-message').attr('value', contact.$message.html());
                } else { 
		   $('#contact-message').attr('value', ''); // begge for sikkerhets skyld
		   $('#contact-subject').attr('value', '');
		}
		$('#contact-container .contact-title').html('Vent litt...');
		dialog.overlay.fadeIn(200, function () {
			dialog.container.fadeIn(200, function () {
				dialog.data.fadeIn(200, function () {
					$('#contact-container .contact-content').animate({
						height: h
					}, function () {
						$('#contact-container .contact-title').html(title);
						$('#contact-container form').fadeIn(200, function () {
							// fix png's for IE 6
							if ($.browser.msie && $.browser.version < 7) {
								$('#contact-container .contact-button').each(function () {
									if ($(this).css('backgroundImage').match(/^url[("']+(.*\.png)[)"']+$/i)) {
										var src = RegExp.$1;
										$(this).css({
											backgroundImage: 'none',
											filter: 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' +  src + '", sizingMethod="crop")'
										});
									}
								});
							}
							$('.contact-info').append(commentMsg).slideDown('fast');
							$('#contact-subject').focus();
						});
					}).height('auto');
				});
			});
		});
	},
	show: function (dialog) {
		$('#contact-container .contact-send').click(function (e) {
			e.preventDefault();
			// validate form
			if (contact.validate()) {
				$('#contact-container .contact-message').fadeOut(function () {
					$('#contact-container .contact-message').removeClass('contact-error').empty();
				});
				$('#contact-container .contact-title').html('Lagrer...');
				//$('#contact-container .contact-info').slideUp('fast').empty().hide();
				//$('#contact-container form').fadeOut(200);
				$('#contact-container .contact-loading').fadeIn(200, function () {
					if (contact.editMode) { // this is comment edit mode, need to delete the comment before saving it again...
					   var lLink = MM_api.getCurrentPane().find(':button[value=slett]').attr('name');
                                           if (lLink == undefined) { // we have a general comment, not in a Pane
                                              lLink = contact.delButton;
                                              contact.gcMode = true;
                                              //alert('edit gen comment:' + contact.delButton);
                                           }
					   $.get(lLink, function (data) {
					      ajaxStatus(data);
                                              //alert(data);
					      $.ajax({ 
						url: lLink.substring(0,lLink.lastIndexOf('talkback'))+'discussion_reply_ajax',
						data: $('#contact-container form').serialize() + '&action=send',
						type: 'get',
						cache: false,
						dataType: 'string',
						complete: function (xhr) {
                                                        didSubmit = true;
							$('#contact-container .contact-loading').fadeOut(200, function () {
							$('#contact-container .contact-title').html('Kommentaren er endret. Klikk "Lukk" for å lukke.');
							ajaxStatus(xhr.responseText);
							});
						},
						error: contact.error
					      });
					   });
					} else {
					  $.ajax({ 
						url: localHref+'/discussion_reply_ajax',
						data: $('#contact-container form').serialize() + '&action=send',
						type: 'get',
						cache: false,
						dataType: 'string',
						complete: function (xhr) {
                                                        didSubmit = true;
							$('#contact-container .contact-loading').fadeOut(200, function () {
							$('#contact-container .contact-title').html('Takk for innspillet. Klikk "Lukk" for å lukke.');
							ajaxStatus(xhr.responseText);
							});
						},
						error: contact.error
					  });
					}
					$('.contact-send').hide();
					$('.contact-cancel').text('Lukk');
				});
			}
			else {
				if ($('#contact-container .contact-message:visible').length > 0) {
					var msg = $('#contact-container .contact-message div');
					msg.fadeOut(200, function () {
						msg.empty();
						contact.showError();
						msg.fadeIn(200);
					});
				}
				else {
					$('#contact-container .contact-message').animate({
						height: '30px'
					}, contact.showError);
				}
				
			}
		});
	},
	close: function (dialog) {
		$('.contact-info').hide();
		$('#contact-container .contact-message').fadeOut();
                //$('#contact-container .contact-subject').fadeOut();
		$('#contact-container .contact-title').html('Lukker...');
		$('#contact-container form').fadeOut(200);
		$('#contact-container .contact-content').animate({
			height: 40
		}, function () {
			dialog.data.fadeOut(200, function () {
				dialog.container.fadeOut(200, function () {
					dialog.overlay.fadeOut(200, function () {
						$.modal.close();
					});
				});
			});
		});

                if (didSubmit && !contact.gcMode) { // skal egentlig være i forbindelse med submit /knappetrykk dette her ... ikke close...
		  var $here = MM_api.getCurrentPane().find('.faq-discuss');
		  var cCount = $here.find('a').attr('alt');
		  if (!contact.editMode) {
		        if (cCount == undefined) { cCount = 0; }
		        $here.find('a').attr('alt', ((cCount*1) +1)+'');
                  }
		  addShowReplies($here);
		  //This is clumsy, should just add a div if the comment part is open...
		  var $comments = $here.find(':button[name^=show-comment]');
		  $comments.click();
		  if ( $comments.attr('value').substr(0,4) == 'Vis ' ) { $comments.click(); } // was open, reopen!
                  //alert('contact.close - didSubmit='+didSubmit+', gcMode='+contact.gcMode);
		  didSubmit = false;
		}
                if (didSubmit && contact.gcMode) { contact.gcClose(); }
		contact.editMode = false;
	},
	error: function (xhr) {
		alert(xhr.statusText);
	},
	validate: function () {
		contact.message = '';

		if (!$('#contact-container #contact-subject').val()) {
			contact.message += "Tema/tag mangler!\n";
		}
		if (!$('#contact-container #contact-message').val()) {
			contact.message += "Tekst mangler!\n";
		}

		if (contact.message.length > 0) {
                        contact.message += "Rett feilen eller trykk Avbryt.";
			return false;
		} else {
			return true;
		}
	},
	showError: function () {
		$('#contact-container .contact-message')
			.html($('<div class="contact-error">').append(contact.message))
			.fadeIn(200);
	}
};
//------ from confirm.js

function confirm(message, callback) {
	$('#confirm').modal({
		closeHTML:"<a href='#' title='Close' class='modal-close'>x</a>",
		position: ["20%",],
		overlayId:'confirm-overlay',
		containerId:'confirm-container', 
		onShow: function (dialog) {
			$('.message', dialog.data[0]).append(message);
			$('.confirm button').show();
			// if the user clicks "yes"
			$('.yes', dialog.data[0]).click(function () {
				// call the callback
				if ($.isFunction(callback)) {
					callback.apply();
				}
				// close the dialog
				$.modal.close();
			});
		}
	});
}

function ajaxStatus(code) {
   if (code.substring(0,8) == '<!DOCTYPE' ) {
	$('#contact-container .contact-message').text('Feil i sletting/oppdatering, kontakt webmaster').fadeIn(1000);
   } else {
	$('#contact-container .contact-message').html(code).fadeIn(600);
   }
   return true;
}
