/*
 * Website Custom Scripts File
 *
 * Copyright (c) 2011 MagicBrain
 * http://www.magicbrain.biz
 *
 * Licensed under MIT
 * http://www.opensource.org/licenses/mit-license.php
 *
 * Launch  : April 2011
 * Version : 3.0.1-rc1
 * Released: Tuesday 26th April, 2011 - 21:35
 */



/** JQUERY EXTENSION TO GRAB URL VARIABLES
--------------------------------------------------------------------------------------------------------------------------------------------*/
$.extend({
  getUrlVars: function(){
    var vars = [], 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('=');
      vars.push(hash[0]);
      vars[hash[0]] = hash[1];
    }
    return vars;
  },
  getUrlVar: function(name){
    return $.getUrlVars()[name];
  }
});



/** VERTICAL MENU :: Catalogues area vertical menu (accordion)
 * ---------------------------------------------------------------------------------------------------------------------------------------- */
function startVerticalMenu() {
    $('ul#catalogueVM ul').hide();
    $.each($('ul#catalogueVM'), function(){
        $('#' + this.id + '.expandfirst ul:first').show();
    });
    $('ul#catalogueVM li a').click(function(){
        var checkElement = $(this).next();
        var parent = this.parentNode.parentNode.id;

        if($('#' + parent).hasClass('noaccordion')) {
            $(this).next().slideToggle('normal');
            return false;
        }
        if((checkElement.is('ul')) && (checkElement.is(':visible'))) {
            if($('#' + parent).hasClass('collapsible')) {
                $('#' + parent + ' ul:visible').slideUp('normal');
            }
            return false;
        }
        if((checkElement.is('ul')) && (!checkElement.is(':visible'))) {
            $('#' + parent + ' ul:visible').slideUp('normal');
            checkElement.slideDown('normal');
            $('ul#catalogueVM li a').removeClass("active");
            $(this).addClass("active");
            return false;
        }
    });
}



/** INPUTS CLEAR DEFAULT VALUE
--------------------------------------------------------------------------------------------------------------------------------------------*/
(function($){
    $.fn.clearDefault = function(){
        return this.each(function(){
            var default_value = $(this).val();
            $(this).focus(function(){
                if ($(this).val() == default_value)
                              $(this).val("");
            });
            $(this).blur(function(){
                if ($(this).val() == "")
                              $(this).val(default_value);
            });
        });
    };
})(jQuery);
// usuage example: $('input').clearDefault();




/** INPUTS NUMERIC ONLY (control handler)
--------------------------------------------------------------------------------------------------------------------------------------------*/
// Numeric only control handler
jQuery.fn.ForceNumericOnly =
function()
{
    return this.each(function()
    {
        $(this).keydown(function(e)
        {
            var key = e.charCode || e.keyCode || 0;
            // allow backspace, tab, delete, arrows, numbers and keypad numbers ONLY
            return (
                key == 8 ||
                key == 9 ||
                key == 46 ||
                (key >= 37 && key <= 40) ||
                (key >= 48 && key <= 57) ||
                (key >= 96 && key <= 105));
        })
    })
};



/** HANDLER FOR CLASS "OpenNewWindow"
--------------------------------------------------------------------------------------------------------------------------------------------*/
 $(function() {
    $('a.OpenNewWindow').click(function(){
        window.open($(this).attr('href'));
        return false;
    });
 });



;(function ($) {

    /**
     *  TOGGLE CONTENT [faqs]
     */

    jQuery.fn.MBToggle = function(options) {

        return this.each(function() {
            var opts = jQuery.extend({
                'null' : 0
            }, options);

            /* List variables */
            var toggle = $(this);

            /* Click on Toggle Heading */
            $('.toggle-title', this).click(function () {
                if ($(this).is('.active-toggle')) {
                    $(this).removeClass('active-toggle');
                    $('.toggle-content', toggle).slideUp(400);
                } else {
                    $(this).addClass('active-toggle');
                    $('.toggle-content', toggle).slideDown(400);
                }
                return false;
            });

        })
    }

})(jQuery);



/** ONLOAD :: Initialize Scripts
 * ---------------------------------------------------------------------------------------------------------------------------------------- */
$(function(){

    // initialize modal (fancybox)
    if ($("a.zoom").size()>=1)
    {
        $("a.zoom").fancybox({
            'padding'        : 1,
            'overlayOpacity' : 0.7,
            'zoomSpeedIn'    : 500,
            'zoomSpeedOut'   : 500
        });
    }

    // activate catalogue sub-navigation option
    if ($('#catalogueVM').size()>=1)
    {
        // Start the vertical menu
        startVerticalMenu();
        var fam = $.getUrlVar('f');
        if ((fam!="") && (fam!=null) && (typeof(fam)!="undefined") && (fam.length>=1))
        {
            // Being controled as well by PHP
            $('#catalogueVM li a.menuFAM_' + fam).next("ul").show();
        }
    }

    // main menu effect :: first level
    if ($("ul#mod_menu").size()>=1)
    {
        $("ul#mod_menu > li").hover(
            function() { $(this).children("ul:first").slideDown(250); },
            function() { $(this).children("ul:first").slideUp(250); }
        );
    }

    // check for sub menu and apply css styles for featured animations
    if ($("ul#mod_menu > li > ul").size() == 1)
    {
        var target = $("ul#mod_menu > li > ul");
        var total = target.find("li").size();
        var newHeight = total * 40;
        target.css({"height":newHeight});
    }

    if ($("div.prodItem").size()>=1)
    {
        $("div.prodItem h2 a").click(function() {
            $(this).closest("h2").next("div").slideToggle();
            return false;
        });
    }

    /* MBToggle */
    if ($('.toggle').size()>=1)
    {
        jQuery('.toggle').MBToggle();
    }

    $('#header-menu ul').superfish({
        hoverClass  : 'over', // the class applied to hovered list items
        delay       : 400, // one second delay on mouseout
        animation   : {opacity:'show',height:'show'}, // fade-in and slide-down animation
        speed       : 150, // faster animation speed
        autoArrows  : true, // disable generation of arrow mark-up
        dropShadows : true // disable drop shadows
    });

    // Trigger Event for footer "top" link
    if ($("#topOfTheWorld").size() >= 1)
    {
        $("a.scrollTop").click(function() {
            var destination = $("#topOfTheWorld").offset().top;
            $("html:not(:animated),body:not(:animated)").animate({ scrollTop: destination-20}, 1000 );
            return false;
        });
    }
    
    // Captcha Refresh Button
    if ($(".captchaRefresh").size()>=1)
    {
        $(".captchaRefresh").click(function() {
            var srcPath = $(this).siblings(".captchaSrc").attr("value");
            $(this).siblings("img").attr("src", srcPath + "/captcha.php?r=" + Math.random());
        });
    }

    /* autoclear function for inputs */
    if ($('.autoclear').size()>=1)
    {
        $('.autoclear').click(function() {
            if (this.value == this.defaultValue) {
                this.value = '';
            }
        });
    }

    /* alert boxs */
    if ($(".alertbox").size()>=1)
    {
        $(".alertbox").live("click", function() {
            $(this).fadeOut("normal", function() { $(this).remove(); } );
        });
    }
    
    /* clients login box */
    $(".login-box").click(function() {
        $("#lightbox").css("filter", "alpha(opacity=90)");
        $("#lightbox, #loginbox-panel").fadeIn(300);
        return false;
    });
    $("#lightbox, #lightbox-close").live("click", function() {
        $("#lightbox, #loginbox-panel").fadeOut(300);
        return false;
    });

    // Homepage Slider
    if ($('#slider').size()>=1)
    {
        $('#slider').nivoSlider({
            directionNav     : false,
            directionNavHide : false,
            controlNav       : false 
        });
    }

    if ($("#bookmarkme").size()>=1)
    {
        $("#bookmarkme").bind("click", function()
        {
            if (window.sidebar) { // Mozilla Firefox Bookmark
                window.sidebar.addPanel(location.href,document.title,"");
            }
            else if(window.external) { // IE Favorite
                window.external.AddFavorite(location.href,document.title);
            }
            else if (window.opera && window.print) { // Opera Hotlist
                this.title=document.title;
                return true;
            }
        });
    }

	if ($(".alertbox").size()>=1) {
		setTimeout( function() { $(".alertbox").fadeOut(); } , 5000);
	}
	
	$(".addBudget").click( function() {
		var itemName = $("#inputString").val();
		var itemId = $("#inputId").val();
		
		if(itemName.length > 0) {
			
			var idsList = $("#budgetIds").val();
			
			if (idsList.indexOf(itemId + ';') == -1) {
				$("#budgetList").append('<li><img src="components/img/icons/cross-small.png" class="delLine" alt="'+ itemId +'"><input type="hidden" name="ids[]" value="' + itemId +'"><input type="hidden" name="names[]" value="' + itemName + '">' + itemName + '<input type="text" name="qtds[]" size="4" value="1" autocomplete="off" style="text-align: right;"></li>');
				if(idsList != '') $("#budgetIds").val(idsList + itemId + ';');
				else $("#budgetIds").val(itemId + ';');
			}
		}
	});
	
	$(".delLine").live("click", function() {
		
		var id = $(this).attr("alt");
		var idsList = $("#budgetIds").val().split(';');
	  	var newIds = new Array();
		var n = 0;
		for(var x = 0; x < idsList.length; x++) {
			if (idsList[x] != id) {
				newIds[n] = idsList[x];
				n++;
			}
		}
		
		$("#budgetIds").val(newIds.join(';'));
		$(this).parent("li").remove();
	});

});


/**
 * ajax autocomplete
 * */

function lookup(inputString) {
	
	$("#inputString").css({ 'background' : 'url(\'components/img/icons/load.gif\') no-repeat scroll right center transparent' });
	
	if(inputString.length == 0) {
		// Hide the suggestion box.
		$('#suggestions').hide();
		$("#inputString").css({ 'background' : 'none' });
	} else {
		$.post("components/inc/ajax_autocomplete.php", {queryString: ""+inputString+""}, function(data){
			if(data.length >0) {
				$('#suggestions').show();
				$('#autoSuggestionsList').html(data);
			}
			$("#inputString").css({ 'background' : 'none' });
		});
	}
} // lookup

function fill(thisValue,id) {
	$('#inputString').val(thisValue);
	$('#inputId').val(id);
	setTimeout("$('#suggestions').hide();", 200);
}



/** FORMS :: Contacts Form
 *  If wrapper exists, load functions to control the form
 * ---------------------------------------------------------------------------------------------------------------------------------------- */
function CF_showErrorMessage(element)
{
    $("div#ContactsFormWrapper form .user_msg")
        .css({"display":"block"})
        .removeClass("hidden")
        .hide()
        .fadeIn(1000)
        .find("."+element)
        .removeClass("hidden")
        .end();
}

function CF_clear_errors()
{
    // Clear Errors from Inputs
    var $errorTarget = $("div#ContactsFormWrapper .required_error");
    if ($errorTarget.size()>=1) {
        $errorTarget.each(function() {
            $(this).removeClass("required_error");
        });
    }
    $("div.wysiwyg").removeClass("required_error");
}

if ($("div#ContactsFormWrapper").size()==1) {
    $(function() {

        // Clear Errors
        CF_clear_errors();

        // Submit the form
        $('div#ContactsFormWrapper input#CF_submit').click(function() {

            // Clear Errors
            CF_clear_errors();

            // Post Variables
            var CF_formID = $("#CF_formID").attr("value");
            var captcha = $("#CF_captcha").attr("value");
            var reg = /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i;
            var CF_name = $("#CF_name").attr("value");
            var CF_email = $("#CF_email").attr("value");
            var CF_contact = $("#CF_contact").attr("value");
            var CF_company = $("#CF_company").attr("value");
            var CF_subject = $("#CF_subject").attr("value");
            var CF_wysiwyg = $("#wysiwyg").attr("value");

            // check all inputs values
            var countInvalid = 0,
                emailInvalid = 0;
            $('div#ContactsFormWrapper input[type="text"]').each(function() {
                if (!($(this).hasClass("required_ok"))) {
                    if ((this.value == '' || this.value == this.defaultValue) && $(this).attr("id")!="CF_company") {
                        countInvalid++;
                        $(this).removeClass("required_ok").addClass("required_error");
                    }
                    else {
                        $(this).removeClass("required_error").addClass("required_ok");
                    }
                }
            });

            // check message value
            if (CF_wysiwyg=="") {
                countInvalid++;
                $("div.wysiwyg").addClass("required_error");
            }
            else {
                $("div.wysiwyg").addClass("required_ok");
            }
            
            // validate email address
            if (reg.test(CF_email) == false) {
                emailInvalid++;
                $("#CF_email").removeClass("required_ok").addClass("required_error");                
            }

            if (countInvalid!=0) {
                CF_showErrorMessage("inputsNotFilled");
                return false;
            }
            else if (emailInvalid == 1) {
                CF_showErrorMessage("emailNotVerified");
                return false;
            }
            else {
                return true;
            }
        });
    });
}

if ($("div#RegisterFormWrapper").size()==1) {
    $(function() {

        // Clear Errors
        CF_clear_errors();

        // Submit the form
        $('div#RegisterFormWrapper input#RC_submit').click(function() {

            // Clear Errors
            CF_clear_errors();

            // Post Variables
            var CF_formID = $("#RC_formID").attr("value");
            var captcha = $("#RC_captcha").attr("value");
            var reg = /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i;
            var RC_name = $("#RC_name").attr("value");
            var RC_email = $("#RC_email").attr("value");
            var RC_contact = $("#RC_contact").attr("value");
            var RC_nif = $("#RC_nif").attr("value");
            var RC_addr = $("#RC_addr").attr("value");
            var RC_postalcode = $("#RC_postalcode").attr("value");
            var RC_postalcodeext = $("#RC_postalcodeext").attr("value");
            var RC_postalcodename = $("#RC_postalcodename").attr("value");
            var RC_country = $("#RC_country").attr("value");
            var RC_username = $("#RC_password").attr("value");
            var RC_password = $("#RC_password").attr("value");
            var RC_re_password = $("#RC_re_password").attr("value");

            // check all inputs values
            var countInvalid = 0,
                emailInvalid = 0;
            $('div#RegisterFormWrapper input[type="text"], div#RegisterFormWrapper input[type="password"]').each(function() {
                if (!($(this).hasClass("required_ok"))) {
                    if ((this.value == '' || this.value == this.defaultValue)) {
                        countInvalid++;
                        $(this).removeClass("required_ok").addClass("required_error");
                    }
                    else {
                        $(this).removeClass("required_error").addClass("required_ok");
                    }
                }
            });
            
            // validate email address
            if ($("#RC_email").size() > 0) {
                if (reg.test(RC_email) == false) {
                    emailInvalid++;
                    $("#RC_email").removeClass("required_ok").addClass("required_error");
                }
            }

            if (countInvalid!=0) {
                CF_showErrorMessage("inputsNotFilled");
                return false;
            }
            else if (emailInvalid == 1) {
                CF_showErrorMessage("emailNotVerified");
                return false;
            }
            else {
                return true;
            }
        });
    });
}

/** TEXT TOOLTIPS
--------------------------------------------------------------------------------------------------------------------------------------------*/
this.tooltip = function(){

    /* SETTINGS (axis distance of popup regarding the cursor position) */
    xOffset = 10;
    yOffset = 30;

    $("a.tooltip").hover(function(e){
        this.t = this.title;
        this.title = "";
        $("body").append("<p id='tooltip'>"+ this.t +"</p>");
        $("#tooltip")
            .css("top",(e.pageY - xOffset) + "px")
            .css("left",(e.pageX + yOffset) + "px")
            .fadeIn("fast");
    },
    function(){
        this.title = this.t;
        $("#tooltip").remove();
    });
    $("a.tooltip").mousemove(function(e){
        $("#tooltip")
            .css("top",(e.pageY - xOffset) + "px")
            .css("left",(e.pageX + yOffset) + "px");
    });
};

$(document).ready(function(){
    tooltip();  // starting the script
});


