﻿/* media measurement scriptoids ------ *
 * 
 * jared at type3digital dot com 
 * ----------------------------------- */

Cufon.replace('h1, h2, h3, h4, #header a', {
	hover: true
});

Cufon.replace('blockquote');

Cufon.now(); 

sfHover = function() {
	var sfEls = document.getElementById("navigation").getElementsByTagName("li");
	for (var i=0; i<sfEls.length; i++) {
		sfEls[i].onmouseover=function() {
			this.className+=" sfhover";
		}
		sfEls[i].onmouseout=function() {
			this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
		}
	}
}
if (window.attachEvent) window.attachEvent("onload", sfHover);

// validator text
var val_Required_Title = "Please select your title";
var val_Required_FirstName = "Please enter your first name";
var val_Required_LastName = "Please enter your surname";
var val_Required_Name = "Please enter your name";
var val_Required_Email = "Please enter your email address";
var val_Invalid_Email = "Please enter a valid email address";
var val_Required_Telephone = "Please enter your telephone";
var val_Required_Company = "Please enter your company name";
var val_Required_Location = "Please enter your location";
var val_Required_Position = "Please select your desired position";
var val_Required_Text = "Please enter your enquiry";
        
// init
$(document).ready(function() {
    initLinks();
	
	tabToggle();
	
	setupEvents();
	
    if ($("#fEnquiry").length) {         
    	initForms();        
    	initEnquiry();
     }

     if ($("#fJobApplication").length) {
         initForms();
         initJobApplication();
     }
 
	setInterval("homepanelfade(),panelfade(),caseFade()", 5000);
});

tabToggle = function(){
	$('.twitterTab').click(function(){
		if($('#twitter_div').hasClass('off') == false){
			return false
		} else {
			$('#rss_div').fadeOut(function(){
				$(this).addClass('off');
				$('#twitter_div').removeClass('off').fadeIn();
				return false
			});
			
		}
	});
	
	$('.rssTab').click(function(){
		if($('#rss_div').hasClass('off') == false){
			return false
		} else {
			$('#twitter_div').fadeOut(function(){
				$(this).addClass('off');
				$('#rss_div').removeClass('off').fadeIn();
				return false;
			});
		}
	});
};

setupEvents = function() {
	$('#eventTypes a').click(function() {
									  
		var eventType = $(this).attr('class');
		
		// Hide/show event items
		if(eventType != "all") {
			$('.events .event.'+eventType).show();	
			$('.events .event:not(.'+eventType+')').hide();		
		} else {			
			$('.events .event').show();
		}
		
		// Change link css
		$('#eventTypes a').css({'text-decoration':'none'});
		$(this).css({'text-decoration':'underline'});		
	});
}

homepanelfade = function(){
	$('#home-quote-panel ul').fadeOut(500, function(){
		$('#home-quote-panel ul li:first').insertAfter('#home-quote-panel ul li:last');
		$('#home-quote-panel ul').fadeIn();	
	});
};

panelfade = function(){
	$('#quote-panel ul').fadeOut(500, function(){
		$('#quote-panel ul li:first').insertAfter('#quote-panel ul li:last');
		$('#quote-panel ul').fadeIn();	
	});
};

caseFade = function(){
	$('.panelFade ul').fadeOut(500, function(){
		$('.panelFade ul li:first').addClass('off');
		$('.panelFade ul li:last').removeClass('off').insertBefore('.panelFade ul li:first');
		$('.panelFade ul').fadeIn();
	});
}

initLinks = function() {

    // target blank
    $(".aBlank").click(function() { 
        // log click to analytics
        var url = this.href;
        url = url.slice(url.lastIndexOf("://") + 3);
        if(typeof(pageTracker) != "undefined")
            pageTracker._trackPageview(location.pathname + "external/" + url);
            
        // open new window
        window.open(this.href); return false; 
    });
	
	$("#twitter_update_list a").click(function() { 
		// log click to analytics
        var url = this.href;
        url = url.slice(url.lastIndexOf("://") + 3);
        if(typeof(pageTracker) != "undefined")
            pageTracker._trackPageview(location.pathname + "external/" + url);
            
        // open new window
        window.open(this.href); return false; 				
	});
	
	
};

// common form configuration
initForms = function() {
	
	$(".pnlComplete").hide();
	
    //custom validation rules - initial value
    $.validator.addMethod("initialValue", 
        function(value, element) {
           return $(element).attr("title") != value;
        }, "Required"
    );
    
    // on focus, clear text
    $(".initial").focus(function() {
        if ($(this).val() == $(this).attr("title"))
            $(this).val("");
    });
    
    // on blur, add default text if empty
    $(".initial").blur(function() {
        if ($(this).val() == "")
            $(this).val($(this).attr("title"));
    });
};

initEnquiry = function() {
    
    // validate form
    $("#fEnquiry").validate({
        onfocusout: false,
        onkeyup: false,
        errorClass: "invalid",      
        wrapper: "li",
        errorLabelContainer: "#fEnquiry .messageBox",
        debug: false,
        rules: {  
            Title: { required: true, initialValue: true },
            FirstName: { required: true, initialValue: true },
            LastName: { required: true, initialValue: true },
            Email: { required: true, email: true, initialValue: true },
            Company: { required: true, initialValue: true },
            Text: { required: true, initialValue: true }
        },
        messages: {
            Title: val_Required_Title,
            FirstName: val_Required_FirstName,
            LastName: val_Required_LastName,
            Email: { required: val_Required_Email, email: val_Invalid_Email },
            Company: val_Required_Company,
            Text: val_Required_Text
        }
    });
    
    // cancel form bubble for javascript
    $("#fEnquiry").submit(function() { return false; });
    
    // submit button
    $("#btnEnquiry_Submit").click(function() {
        submitEnquiry();
    });
    
    // enter key
//    $("#txtEnquiry_Text").bind("keypress", function(e) {
//	    var code = (e.keyCode ? e.keyCode : e.which);
//	    if (code == 13) {
//	        submitEnquiry();
//	    }
//    });
};

submitEnquiry = function() {

    if ($("#fEnquiry").valid()) {

        $("#btnEnquiry_Submit").fadeOut(500);
        var obj = new Object();
        obj.Title = $("#ddlEnquiry_Title").val();
        obj.FirstName = $("#txtEnquiry_FirstName").val();
        obj.LastName = $("#txtEnquiry_LastName").val();
        obj.Email = $("#txtEnquiry_Email").val();
        obj.Telephone = $("#txtEnquiry_Telephone").val();
        obj.Mobile = $("#txtEnquiry_Mobile").val();
        obj.Company = $("#txtEnquiry_Company").val();
        obj.Position = $("#txtEnquiry_Position").val();
        obj.Text = $("#txtEnquiry_Text").val();

        ajaxRequest("submitEnquiry",
            JSON.stringify(obj),
            function(output) {
                if (output == true) {

                    // log to google
                    if (typeof (pageTracker) != "undefined")
                        pageTracker._trackPageview(location.pathname + "enquiry_submitted/");

                    $(".pnlForm").fadeOut(500, function() {
                        $(".pnlComplete").fadeIn(500);
                    });
                }
                else {
                    $("#btnEnquiry_Submit").show();
                }
            });
    }
};

initJobApplication = function() {

    // validate form
    $("#fJobApplication").validate({
        onfocusout: false,
        onkeyup: false,
        errorClass: "invalid",
        wrapper: "li",
        errorLabelContainer: "#fJobApplication .messageBox",
        debug: false,
        rules: {
            Title: { required: true, initialValue: true },
            FirstName: { required: true, initialValue: true },
            LastName: { required: true, initialValue: true },
            Email: { required: true, email: true, initialValue: true },
            Telephone: { required: true, initialValue: true },
            Position: { required: true, initialValue: true },
            Location: { required: true, initialValue: true }
        },
        messages: {
            Title: val_Required_Title,
            FirstName: val_Required_FirstName,
            LastName: val_Required_LastName,
            Email: { required: val_Required_Email, email: val_Invalid_Email },
            Telephone: val_Required_Telephone,
            Position: val_Required_Position,
            Location: val_Required_Location
        }
    });

    // cancel form bubble for javascript
    $("#fJobApplication").submit(function() { return false; });

    // submit button
    $("#btnJobApplication_Submit").click(function() {
        submitJobApplication();
    });

    // enter key
//    $("#txtJobApplication_Text").bind("keypress", function(e) {
//        var code = (e.keyCode ? e.keyCode : e.which);
//        if (code == 13) {
//            submitJobApplication();
//        }
//    });
};

submitJobApplication = function() {

    if ($("#fJobApplication").valid()) {
        var obj = new Object();
        obj.Title = $("#ddlJobApplication_Title").val();
        obj.FirstName = $("#txtJobApplication_FirstName").val();
        obj.LastName = $("#txtJobApplication_LastName").val();
        obj.Email = $("#txtJobApplication_Email").val();
        obj.Telephone = $("#txtJobApplication_Telephone").val();
        obj.Position = $("#ddlJobApplication_Position").val();
        obj.Location = $("#txtJobApplication_Location").val();
        obj.Text = $("#txtJobApplication_Text").val();

        ajaxRequest("submitApplication",
            JSON.stringify(obj),
            function(output) {
                if (output == true) {

                    // log to google
                    if (typeof (pageTracker) != "undefined")
                        pageTracker._trackPageview(location.pathname + "jobapplication_submitted/");

                    $(".pnlForm").fadeOut(500, function() {
                        $(".pnlComplete").fadeIn(500);
                    });
                }
            });
    }
};

// Call asp.net HttpHandler to process js requests
ajaxRequest = function(query, data, callback) {
    $.ajax({ 
        type: "POST",
        url: "/x.processor.ashx",   
        cache: false,
        data: { qry: query, data: data },
        dataType: "json",
        success: function(output) {
                callback(output);
        },
        error: function(xmlhr, status, err){
            console.error(err);
            var response = eval("("+xmlhr.responseText+")");
            console.log(response);
		}
    });
};