/* Descom content.js - (JT) Descom Oy 2011 */


/*------------------------------------------*/
// DOM READY
/*------------------------------------------*/

$(function(){
	
	// alusta sessvars objekti
	sessvars.formVariables = (typeof sessvars.formVariables != "undefined") ? sessvars.formVariables : {};
	
	// get query from sessvars
    (sessvars.searchQuery !== undefined) ? setQuery() : "";
	
	// ADDS FIRST CLASS
	$("div.case_slider > img:first").addClass("first_case_img");
	$("div.frontpage_slider > div:first").addClass("first_dia");
	$("div.news_entry:first").addClass("first");
	$("div.blog_entry:first").addClass("first");
	
	
	// DIASLIDER
	$('#slider').cycle({
		fx:			'fade',
		pause:		1,
		timeout:	6000,
		pager:		'#slider_controls',
		activePagerClass: 'activeSlide',
		pagerAnchorBuilder: paginate
	});
	
	// EMPTY SLIDER CONTROLS HIDE
	 $("div#slider_controls:empty").hide();
	
	// FRONTPAGE CHANNELS (NEWS, BLOG, TWITTER)
	$("a#news_channel").mouseup(function(){
		if ($(this).hasClass("active_channel") == false) {
			$(".channel_box").slideUp();
			$("#news_box").slideDown();
			$("#channel_select a").removeClass("active_channel");
			$(this).addClass("active_channel");
		};
	});
	
	$("a#blog_channel").mouseup(function(){
		if ($(this).hasClass("active_channel") == false) {
			$(".channel_box").slideUp();
			$("#blog_box").slideDown();
			$("#channel_select a").removeClass("active_channel");
			$(this).addClass("active_channel");
		};
	});
	
	$("a#twitter_channel").mouseup(function(){
		if ($(this).hasClass("active_channel") == false) {
			$(".channel_box").slideUp();
			$("#twitter_box").slideDown();
			$("#channel_select a").removeClass("active_channel");
			$(this).addClass("active_channel");
		}
	});
	
	// CONTACT CHANNELS
	$("a#staff_channel").mouseup(function(){
		if ($(this).hasClass("active_channel") == false) {
			$(".channel_box").slideUp();
			$("#staff_box").slideDown();
			$("#channel_select a").removeClass("active_channel");
			$(this).addClass("active_channel");
		};
	});
	
	$("a#contactform_channel").mouseup(function(){
		if ($(this).hasClass("active_channel") == false) {
			$(".channel_box").slideUp();
			$("#contactform_box").slideDown();
			$("#channel_select a").removeClass("active_channel");
			$(this).addClass("active_channel");
		};
	});
	
	// REKRY CHANNELS
	$("a#job_channel").mouseup(function(){
		if ($(this).hasClass("active_channel") == false) {
			$(".channel_box").slideUp();
			$("#job_box").slideDown();
			$("#channel_select a").removeClass("active_channel");
			$(this).addClass("active_channel");
		};
	});
	
	$("a#application_channel").mouseup(function(){
		if ($(this).hasClass("active_channel") == false) {
			$(".channel_box").slideUp();
			$("#application_box").slideDown();
			$("#channel_select a").removeClass("active_channel");
			$(this).addClass("active_channel");
		};
	});
	
	// TWITTER FEED
	$('#twitter_box').tweetable({
		username: 'descomoy',
		time: true,
		replies: true,
		limit: 4
	});
	
	// ADDS CLASS TO FIRST LIST ITEMS
	$("ul").find("li").filter(function() {
		if ($(this).prevAll().length  < 1) { 
			return true; 
		}  else {
			return false; 
		} 
	}).each(function() { 
		$(this).addClass("first"); 
	});
	
	$("#staff_box > .contact_person:nth-child(3n+1)").addClass("every_third");
	
	// ADDS CLASS TO EVEN CONTACT PERSONS
	$("div.left_col_big > div.contact_person:even").addClass("even");
	$("div.left_col_big > div.contact_col:even").addClass("even");
	
	// MENU DROPDOWN
	$("li.sub_menus").mouseover(function(){
		if($(this).children(".child_nav").is(":hidden")){
			$(this).children(".child_nav").show();
			$(this).animate({"background-position": "center 50px"}, "normal")
		};
	});
	
	$("li.sub_menus").mouseout(function(){
		$(this).children(".child_nav").hide();
	});
	
	// SETS SUBMENUS IN CORRECT POSITION
	$("li.sub_menus").each(function(){
		var leveys = (($(this).width() - ($(this).children(".child_nav").width() + 20))/2);
		$(this).children(".child_nav").css("left", leveys + "px");
	});
	
	// SUBMIT CONTENT SEARCH
	$("#content-search").submit(function () {
		sessvars.searchQuery = $("#search-descom").val();
		//$("#content-query").val($("#search-descom").val());
		$("#content-query").val($("#search-descom").val() +' -Category:"Hide Result":');
	}); 
	
	// STATIC PARAMETERS TO CONTACT FORM
	var localUrl;
	if ( window.location.href.indexOf('?') == -1) {
		localUrl = window.location.href;
	} else {
		localUrl = window.location.href.slice(0, window.location.href.indexOf('?'));
	}
	$("#splash_form > .right_col").append("<input type='hidden' name='sendCC' value='sales@descom.fi'/>")
	$("#splash_form > .right_col").append("<input type='hidden' name='redirectUrl' value='" + localUrl + "?formresult=1'/>")
	$("#splash_form > .right_col").append("<input type='hidden' name='problemUrl' value='" + localUrl + "?formresult=2'/>")
	$("#splash_form > .right_col").append("<input type='hidden' name='formPath' value='" + localUrl + "'/>")
	
	// BINDS CLICK TO OTA YHTEYTTÄ "BUTTON"
	$(".yhteys").click(function(){
		$("#splash_form").show();
		$("#contact_fail").hide();
		$("#contact_success").hide();
		var contact = $(this).closest(".contact_person").children("h5").text();
		var position =  $(this).closest(".contact_person").children("p.title").text();
		var mailfront = $(this).siblings(".the_value").text();
		$("#splash_form > .left_col_big").append("<span class='title'>"+ position + "</span><h2 class='green_header'>" + contact + "</h2>");
		$("#splash_form > .right_col").append("<input type='hidden' name='sendTo' id='mailfront' value='" + mailfront + "@descom.fi'/>")
		$("#contact_splash").fadeIn();
	});
	
	// BIND CLICK TO RETRY ANCHOR
	$("#retry").click(function(){
		$("#splash_form").slideDown();
		$("#contact_fail").slideUp();
	});
	
	$("div#close_splash").click(function(){
		$("div#contact_splash").fadeOut(500, function(){
			$("#splash_form > .left_col_big").find("h2").remove();
			$("#splash_form > .left_col_big").find("span.title").remove();
			$("input#mailfront").remove();
		});
	});
	
	$("div.click_out").click(function(){
		$("div#contact_splash").fadeOut(500, function(){
			$("#splash_form > .left_col_big").find("h2").remove();
			$("#splash_form > .left_col_big").find("span.title").remove();
			$("input#mailfront").remove();
		});
	});
	
	// BINDS CLICK TO CAPTCHA IMAGE
	$("img[name='captcha']").click(function(){
    	next();
	});
	
	$("img[name='captcha1']").click(function(){
    	next();
	});
	
	// COUNTS COMMENTS
	var comments = $("div.comment").length;
	$("div#comments > h2").append(" (" + comments + ")");
	
	// MANIPULATES <a> IF NO URL DEFINED
	$(".comment_author").each(function() {
		var author = $(this).children("a").text();
		if ($(this).children("a").attr("href").length < 1) {	
			$(this).empty();
			$(this).text(author + " kommentoi");
		}
	});
	
	$(".comment_author_en").each(function() {
		var author = $(this).children("a").text();
		if ($(this).children("a").attr("href").length < 1) {	
			$(this).empty();
			$(this).text(author + " commented");
		}
	});
	
    // FORM VALIDATIONS = FV
    // VARIABLES (FV)
    var splash_form = $("#splash_form");
    var splash_name = $("#message_name");
    var splash_mail = $("#message_email");
    var splash_message = $("#the_message");
	
	var comment_form = $("#commentform");
	var comment_name = $("#comment_name");
	var comment_mail = $("#comment_email");
	var comment_url = $("#comment_url");
	var comment_message = $("#comment_message")
	var redirect = window.location.href;
	
	// ON SUBMIT (FV)
    splash_form.submit(function(){
        if(validateName() & validateMail() & validateMessage())
			return true;
		else
			return false;
    });
	
	comment_form.submit(function(event) {
		if(validateCommentName() & validateCommentMail() & validateCommentUrl() & validateCommentMessage()){
			event.preventDefault();
			$.post("http://www.descom.fi/blogger/rest/publ/comments/add", $("#commentform").serialize()).success(function(payload){
				var data = jQuery.parseJSON(payload);
                if (data.success == true) {
					window.location = redirect + "?commentresult=1";
				}
				else {
					alert(data.errorMessage);
				}
				
				}).error(function(data) {
 
                alert("Viestin lähetys epäonnistui. Unable to send the message.");

			});
		} else
			return false;
	});
	
	// VALIDATION ON BLUR AND ON KEYUP
	splash_name.blur(validateName);
	splash_name.keyup(function(){
		if ($(this).val().length > 3) {
			validateName();
		};
	});
	splash_mail.blur(validateMail);
	splash_message.blur(validateMessage);
	splash_message.keyup(function(){
		if ($(this).val().length > 10) {
			validateMessage();
		};
	});
	
	comment_name.blur(validateCommentName);
	comment_mail.blur(validateCommentMail);
	comment_url.blur(validateCommentUrl);
	comment_message.blur(validateCommentMessage);
	
	// VALIDATE NAME (FV)
	function validateName(){
        // NOT VALID
        if(splash_name.val().length < 4){
            splash_name.addClass("input_error");
            $("#name_error").fadeIn();
            return false;
        }
        // VALID
        else {
            splash_name.removeClass("input_error");
            $("#name_error").fadeOut();
            return true;
        }
    };
	
	function validateCommentName(){
        // NOT VALID
        if(comment_name.val().length < 4){
            comment_name.addClass("input_error");
            $("#name_error").fadeIn();
            return false;
        }
        // VALID
        else {
            comment_name.removeClass("input_error");
            $("#name_error").fadeOut();
            return true;
        }
    };
	
	// VALIDATE MAIL (FV)
	function validateMail(){
		// REGULAR EXPRESSION
		var filter = /^[a-z0-9_\+-]+(\.[a-z0-9_\+-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*\.([a-z]{2,4})$/;
        // VALID
        if(filter.test(splash_mail.val())){
			splash_mail.removeClass("input_error");
            $("#mail_error").fadeOut();
            return true;   
        }
        // NOT VALID
        else {
			splash_mail.addClass("input_error");
            $("#mail_error").fadeIn();
            return false;
        }
    };
	
	function validateCommentMail(){
		// REGULAR EXPRESSION
		var filter = /^[a-z0-9_\+-]+(\.[a-z0-9_\+-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*\.([a-z]{2,4})$/;
        // VALID
        if(filter.test(comment_mail.val())){
			comment_mail.removeClass("input_error");
            $("#mail_error").fadeOut();
            return true;   
        }
        // NOT VALID
        else {
			comment_mail.addClass("input_error");
            $("#mail_error").fadeIn();
            return false;
        }
    };
	
	// VALIDATE URL (FV)
	function validateCommentUrl(){
		// REGULAR EXPRESSION
		var filter = /^(http(?:s)?\:\/\/[a-zA-Z0-9\-]+(?:\.[a-zA-Z0-9\-]+)*\.[a-zA-Z]{2,6}(?:\/?|(?:\/[\w\-]+)*)(?:\/?|\/\w+\.[a-zA-Z]{2,4}(?:\?[\w]+\=[\w\-]+)?)?(?:\&[\w]+\=[\w\-]+)*)$/;
        if (comment_url.val().length == 0) {
			comment_url.removeClass("input_error");
			$("#url_error").fadeOut();
			return true;
		}
		else {
			// VALID
			if (filter.test(comment_url.val())) {
				comment_url.removeClass("input_error");
				$("#url_error").fadeOut();
				return true;
			}
			// NOT VALID
			else {
				comment_url.addClass("input_error");
				$("#url_error").fadeIn();
				return false;
			}
		}
    };
	
	// VALIDATE MESSAGE (FV)
	function validateMessage(){
        // NOT VALID
        if(splash_message.val().length < 11){
            splash_message.addClass("input_error");
            $("#message_error").fadeIn();
            return false;
        }
        // VALID
        else {
            splash_message.removeClass("input_error");
            $("#message_error").fadeOut();
            return true;
        }
    };
	
	function validateCommentMessage(){
        // NOT VALID
        if(comment_message.val().length < 11){
            comment_message.addClass("input_error");
            $("#message_error").fadeIn();
            return false;
        }
        // VALID
        else {
            comment_message.removeClass("input_error");
            $("#message_error").fadeOut();
            return true;
        }
    };
	
	
	// HANDLING THE RESULT
	var captchaResult = getUrlVariables()["CAPTCHA_FAIL"];
	var formResult = getUrlVariables()["formresult"];
	
	if (formResult == 1) {
		$("#contact_splash").show();
		$("#splash_form").hide();
		$("#contact_success").show();
		sessvars.$.clearMem()
	} else if (formResult == 2){
		$("#contact_splash").show();
		$("#splash_form").hide();
		$("#contact_fail").show();
		$("#splash_form > .left_col_big").append("<span class='title'>"+ sessvars.contactPosition + "</span><h2 class='green_header'>" + sessvars.contactContact + "</h2>");
		$("#splash_form > .right_col").append("<input type='hidden' name='sendTo' id='mailfront' value='" + sessvars.formVariables.mailto + "@descom.fi'/>");
	};
	
	if (captchaResult == 1) {
		$("#contact_splash").show();
		$("#capt_error").fadeIn();
		$("#message_check").addClass("input_error");
		$("#splash_form > .left_col_big").append("<span class='title'>"+ sessvars.contactPosition + "</span><h2 class='green_header'>" + sessvars.contactContact + "</h2>");
		$("#splash_form > .right_col").append("<input type='hidden' name='sendTo' id='mailfront' value='" + sessvars.formVariables.mailto + "@descom.fi'/>");
	}
	
	// read values from sessvars
	var id = "", $field = null;
	
	if (typeof sessvars != "undefined" && typeof sessvars.formVariables != "undefined") {
		for (id in sessvars.formVariables) {
			$field = $("[id='"+id+"']");
			if (typeof $field != "undefined") {
				$field.val(sessvars.formVariables[id]);
				} else {
					// Tässä käsitellään ne arvot, jotka eivät ole kentistä poimittuja (etunimi, sukunimi)
				}
			}
		// formVariables-objekti ylikirjoitetaan aina kun sivulta poistutaan
	}
	
	// set values to sessvars
	var $that = null, hiddenFieldNames = [], $form = $("form[name='feedback']");
	$form.submit(function() {
		$form.find("input, textarea").each(function(){
			$that = $(this);
   			sessvars.formVariables[$that.attr("id")] = $that.val();
   		});
		for (i = 0; i < hiddenFieldNames.length; i++) {
			sessvars.formVariables[hiddenFieldNames[i]] = $("input[name='" + hiddenFieldNames[i] + "']").val();
   		}
		sessvars.contactContact = $("#splash_form > .left_col_big").find("h2").text();
		sessvars.contactPosition = $("#splash_form > .left_col_big").find("span.title").text();
	});
	
	//HANDLING COMMENTFROM RESULT
	var commentResult = getUrlVariables()["commentresult"];
	if (commentResult == 1) {
		$("#comment_success").show();
		$("#commentform_box").hide();
		var commentposition = $("#comment_success").position();
		window.scrollTo(0, commentposition.top);
	};
	
	//BINDS CLICK TO SEN NEW COMMENT
	$("#comment_success > span").click(function(){
		$("#comment_success").slideUp();
		$("#commentform_box").slideDown();
		redirect = window.location.href.slice(0, window.location.href.indexOf('?'));
	});
	
});


/*------------------------------------------*/
//  FUNCTIONS
/*------------------------------------------*/

// DIASLIDER PAGER BUILDER
function paginate(ind, el){
	return '<a href="#"></a>';
};

// FUNCTION GETS THE NEXT CAPTCHA IMAGE
function next() {
    var now = new Date();
    var newImg = "http://www.descom.fi/FormHandler/CaptchaServlet?"+now.getTime();
    if (document.images) {
		document.images.captcha.src = newImg;
		document.images.captcha1.src = newImg;
   	};
};

// GET FORM SUCCES & ERROR VALUES FROM URL
function getUrlVariables()
{
    var urlVars = [], hash;
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
    for(var i = 0; i < hashes.length; i++)
    {
        hash = hashes[i].split('=');
        urlVars.push(hash[0]);
        urlVars[hash[0]] = hash[1];
    }
    return urlVars;
}

function setQuery() {
    var searchQuery = sessvars.searchQuery;
    $("#result-info").prepend(searchQuery);
}

