/* 
*
* mark front-end framework
*
* to be used with the jQuery library
* http://www.jquery.com
* 
* 
*/

jQuery.expr[':'].Contains = function(a, i, m) {
  return jQuery(a).text().toUpperCase()
      .indexOf(m[3].toUpperCase()) >= 0;
};
jQuery.expr[':'].contains = function(a, i, m) {
  return jQuery(a).text().toUpperCase()
      .indexOf(m[3].toUpperCase()) >= 0;
};



(function (jQuery) {
    jQuery.mark = {
        gallery: function (options) {
            var defaults = {
                selector: '.galleryslide'
            };
            if (typeof options == 'string') defaults.selector = options;
            var options = jQuery.extend(defaults, options);
            return jQuery(options.selector).each(function () {
		var obj = jQuery(this);
		var holder = jQuery(this).find('div:first');

                var shortest = 2000;
                var skinniest = 2000;
                var group = holder.children('img');

                group.each(function() {
                var theHeight = jQuery(this).height();
			if(theHeight < shortest) {
			    shortest = theHeight;
			}
                var theWidth = jQuery(this).width()
			if(theWidth < skinniest) {
			    skinniest = theWidth;
			}
		});
		
		var theshortest = shortest + "px";
		var theskinniest = skinniest + "px";
		var taller = shortest + 50;
		var tallest = taller + "px";
		
                obj.width(theskinniest);
                obj.height(tallest);
                holder.width(theskinniest);
                holder.height(theshortest);


		holder.find('img').hide();
		holder.find('img:first').fadeIn();
		var thereel = obj.find('div.galleryreel');
		var imageWidth = obj.find('.galleryholder').width();
		thereel.width("10000px");
                var startnav = '<ul class="gallerynav">';
                var endnav = '</ul>';
                var navitems = '';
                var thecount = obj.find('img').size();
                var recount = thecount + 1;
                for (i=1;i<=thecount;i++) {
			navitems += '<li><a href="#">' + i + '</a></li>';
                }
                var doNav = startnav + navitems + endnav;
                obj.append(doNav);
                obj.find('li a:first').addClass("active");
                var list = obj.children('ul');
                var thelinks = obj.find('ul.gallerynav li a');
                list.delegate("li a", "click", function(e){
                  thelinks.removeClass("active");
		  jQuery(this).addClass("active");
		  var trigger = list.find('li a').index(this);
		  obj.find('img').fadeOut(500);
		  obj.find('img').eq(trigger).fadeIn(500);
		  e.preventDefault();
		});
            })
        },
         slideroo: function (options) {
            var defaults = {
                selector: '.fpslider'
            };
            if (typeof options == 'string') defaults.selector = options;
            var options = jQuery.extend(defaults, options);
            return jQuery(options.selector).each(function () {
                var obj = jQuery(this);
                var slip = obj.find('div.fpslippery');
                var thecount = slip.children('div.fpsliderpanel').size();
                var holder = obj.closest('div.fpslidewrapper');
                holder.find('li a:first').addClass("active");
                
                var list = holder.find('ul.fpslidernav');
                var thelinks = holder.find('ul.fpslidernav li a');
                list.delegate("li a", "click", function(event){
                  thelinks.removeClass("active");
		  jQuery(this).addClass("active");
		  var triggerID = list.find('li a').index(this);
		  if (triggerID == thecount){triggerID = "0";};
		  var slidePosition = triggerID * 900;
		  jQuery('div.fpslippery').animate({left: -slidePosition}, 400 );
		  event.preventDefault();
		});
            })
        },
        sliders: function (options) {
             var defaults = {
                 selector: '.slider'
             };
             if (typeof options == 'string') defaults.selector = options;
             var options = jQuery.extend(defaults, options);
             return jQuery(options.selector).each(function () {
                 var obj = jQuery(this);
                 var slip = obj.find('div.slippery');
                 var startnav = '<ul class="slidernav">';
                 var endnav = '</ul>';
                 var navitems = '';
                 var thecount = slip.children('div.sliderpanel').size();
                 var recount = thecount + 1;
                 for (i=1;i<=thecount;i++) {
 			navitems += '<li><a href="#">' + i + '</a></li>';
                 }
                 var doNav = startnav + navitems + endnav;
                 obj.append(doNav);
                 obj.find('li a:first').addClass("active");
                 
                 var list = obj.children('ul');
                 var thelinks = obj.find('ul.slidernav li a');
                 list.delegate("li a", "click", function(event){
                   thelinks.removeClass("active");
 		  jQuery(this).addClass("active");
 		  var triggerID = list.find('li a').index(this);
 		  if (triggerID == thecount){triggerID = "0";};
 		  var slidePosition = triggerID * 900;
 		  jQuery('div.slippery').animate({left: -slidePosition}, 400 );
 		  event.preventDefault();
 		});
             })
        },
        themotions: function (options) {
            var defaults = {
                selector: 'a.bouncer'
            };
            if (typeof options == 'string') defaults.selector = options;
            var options = jQuery.extend(defaults, options);
            return jQuery(options.selector).each(function () {
                var obj = jQuery(this);
                
		obj.hover(function() {
		jQuery(this).effect("bounce", { direction:'left', times:3 }, 50).effect("bounce", { times:5 }, 200);
		}, function() {
		jQuery(this).stop().effect("bounce", { direction:'left', times:3 }, 50).effect("bounce", { times:5 }, 200);
		});                
                
	    })
        },
         fimg: function (options) {
            var defaults = {
                selector: 'img.fipic'
            };
            if (typeof options == 'string') defaults.selector = options;
            var options = jQuery.extend(defaults, options);
            return jQuery(options.selector).each(function () {
                var obj = jQuery(this);
                obj.hide();
                obj.fadeTo('fast', 0.25).delay(1000).fadeTo(1600,1);
            })
        },
         filterables: function (options) {
            var defaults = {
                selector: 'input#filter'
            };
            if (typeof options == 'string') defaults.selector = options;
            var options = jQuery.extend(defaults, options);
            return jQuery(options.selector).each(function () {
                var obj = jQuery(this);
                obj.keyup(function(event) {
                var term = obj.val();
                if (term.length > 1) {
                jQuery('div#catchitup').empty();
                jQuery("span.namer:contains('" + term + "')").closest('div.filtration').clone().appendTo('#catchitup');
                } else {
                jQuery('div#catchitup').empty();
                }
                })
            })
        },
        slidebox: function (options) {
            var defaults = {
                selector: '.slidebox'
            };
            if (typeof options == 'string') defaults.selector = options;
            var options = jQuery.extend(defaults, options);
            return jQuery(options.selector).each(function () {
		var pageit = jQuery(this).find('div.slidepager');
		var reel = jQuery(this).find('div.slidereel');
		jQuery(this).find('div.slidepager ul li a:first').addClass("active");
		var imageWidth = jQuery(this).find('.slideholder').width();
		var imageSum = jQuery(this).find('div.slidereel img').size();
		var slidereelWidth = imageWidth * imageSum;
		jQuery(".slidereel").css({'width' : slidereelWidth});
		jQuery(pageit).find('ul a').click(function(event) {	
			var triggerID = jQuery(this).attr("rel") - 1;
			var slidereelPosition = triggerID * imageWidth;
			jQuery(pageit).find('ul a').removeClass('active');
			jQuery(this).addClass('active');
		
			jQuery(reel).animate({ 
				left: -slidereelPosition
			}, 400 );
			event.preventDefault(event);
		});	

            })
        },
        slideycaption: function (options) {
            var defaults = {
                selector: '.img-desc'
            };
            if (typeof options == 'string') defaults.selector = options;
            var options = jQuery.extend(defaults, options);
            return jQuery(options.selector).each(function () {
		var atob = jQuery('img', this).width();
		atob = atob - 20;
		jQuery('cite', this).css({'width' : atob});;
                jQuery(this).hover(function () {
                    jQuery('cite', this).slideDown(200);
                }, function () {
                    jQuery('cite', this).slideUp();
                })
            })
        },
        slidecaption: function (options) {
            var defaults = {
                selector: '.img-slidden'
            };
            if (typeof options == 'string') defaults.selector = options;
            var options = jQuery.extend(defaults, options);
            return jQuery(options.selector).each(function () {
		var obj = jQuery(this);
		jQuery('div', this).hide();
		var piccy = jQuery(this).find('img');
		var cappy = jQuery(this).find('div');
		var wd = piccy.width() + "px";
		var ht = piccy.height() + "px";
		obj.css({'width' : wd});
		obj.css({'height' : '155px'});
                jQuery(this).hover(function () {
                    jQuery('div', this).slideDown(200);
                }, function () {
                    jQuery('div', this).slideUp(200);
                })
            })
        },
        howwideami: function (options) {
            var defaults = {
                selector: 'div'
            };
            if (typeof options == 'string') defaults.selector = options;
            var options = jQuery.extend(defaults, options);
            return jQuery(options.selector).each(function () {
                var mywidth = jQuery(this).width();
                var outputWidth = "<p class='how-wide'>" + mywidth + "</p>";
                jQuery(outputWidth).prependTo(jQuery(this));
            })
        },
        navigation: function (options) {
            var defaults = {
                selector: '.menu li',
                className: 'over'
            };
            if (typeof options == 'string') defaults.selector = options;
            var options = jQuery.extend(defaults, options);
            return jQuery(options.selector).each(function () {
                jQuery(this).hover(function () {
                    jQuery('ul:first', this).fadeIn(100);
                    jQuery(this).addClass(options.className)
                }, function () {
                    jQuery('ul', this).hide();
                    jQuery(this).removeClass(options.className)
                })
            })
        },
        pullquote: function (options) {
            var defaults = {
                selector: '.pullquoted'
            };
            if (typeof options == 'string') defaults.selector = options;
            var options = jQuery.extend(defaults, options);
            return jQuery(options.selector).each(function () {
                if (jQuery(this).hasClass('pqright')) {
			jQuery(this).clone().addClass('pullquoteright').prependTo(jQuery(this).parent());
                } else {
			jQuery(this).clone().addClass('pullquoteleft').prependTo(jQuery(this).parent());
                };
            })
        },
        tabism: function (options) {
            var defaults = {
                selector: '.tabism'
            };
            if (typeof options == 'string') defaults.selector = options;
            var options = jQuery.extend(defaults, options);
            return jQuery(options.selector).each(function () {

                
                var panelwidth = jQuery(this).width();
                var panelholder = jQuery(this).find('div.panelholder');
                var panels = jQuery(panelholder).children('div');
                var panelwidth = jQuery(this).width();
                var panelwidth2 = panelwidth;
                jQuery(panels).width(panelwidth2).css("float","left");
                var howmanypanels = jQuery(panels).size();
                var holderwidth = panelwidth * howmanypanels;
                jQuery(panelholder).width(holderwidth);
                var thelist = jQuery(this).find('ul.tabbed');
                jQuery(thelist).children('li:first').addClass("selected");


		
		panelholder.find('div.tabbedcontent').hide();
		panelholder.find('div.tabbedcontent:first').show();
		

                var clicker = jQuery(thelist).children('li');
                jQuery(clicker).click(function(event){
			jQuery(thelist).children('li').removeClass("selected");
			jQuery(this).addClass("selected");
			var triggerID = thelist.find('li').index(this);
			panelholder.find('div.tabbedcontent').hide("slide", { direction: "left" }, 200);
			panelholder.find('div.tabbedcontent').eq(triggerID).show("slide", { direction: "down" }, 200);
			event.preventDefault(event);
		});
            })
        },
        tabs: function (options) {
            var defaults = {
                selector: '.tabs'
            };
            if (typeof options == 'string') defaults.selector = options;
            var options = jQuery.extend(defaults, options);
            return jQuery(options.selector).each(function () {
                jQuery(this).addClass("equals");
                var panels = jQuery(this).children('div');
                var thelist = jQuery(this).children('ul');
                jQuery(panels).hide();
                jQuery(thelist).children('li:first').addClass("selected");
                jQuery(this).children('div:first').show();
                var holderHeight = jQuery(this).height();
                jQuery(this).height(holderHeight);
                var clicker = jQuery(thelist).children('li');
                jQuery(clicker).click(function(event){
                event.preventDefault(event);
                jQuery(thelist).children('li').removeClass("selected");
                jQuery(this).addClass("selected");
                var tabtarget = jQuery(this).children('a:first').attr('href');
                jQuery(panels).hide();
                jQuery(tabtarget).slideDown();
                });
            })
        },
        tabs2: function (options) {
            var defaults = {
                selector: '.tabby'
            };
            if (typeof options == 'string') defaults.selector = options;
            var options = jQuery.extend(defaults, options);
            return jQuery(options.selector).each(function () {
                jQuery(this).addClass("equals");
                var panels = jQuery(this).children('div');
                var thelist = jQuery(this).children('ul');
                jQuery(panels).hide();
                jQuery(thelist).children('li:first').children('a').addClass("selected");
                jQuery(this).children('div:first').show();
                var holderHeight = jQuery(this).height();
                jQuery(this).height(holderHeight);
                var clicker = jQuery(thelist).children('li').children('a');
                jQuery(clicker).click(function(event){
                event.preventDefault();
                jQuery(thelist).children('li').children('a').removeClass("selected");
                jQuery(this).addClass("selected");
                var tabtarget = jQuery(this).attr('href');
                jQuery(panels).hide();
                jQuery(tabtarget).show();
                });
            })
        },
        bigclick: function (options) {
            var defaults = {
                selector: 'div.bigtarget'
            };
            if (typeof options == 'string') defaults.selector = options;
            var options = jQuery.extend(defaults, options);
            return jQuery(options.selector).each(function () {
		jQuery(this).click(function(){
		window.location=jQuery(this).find("a").attr("href");
		return false;
		});
	    })
        },
        equalizer: function (options) {
            var defaults = {
                selector: 'div.equals'
            };
            if (typeof options == 'string') defaults.selector = options;
            var options = jQuery.extend(defaults, options);
            return jQuery(options.selector).each(function () {
		var tallest = 0;
		var group = jQuery(this).children('div');
		group.each(function() {
			var thisHeight = jQuery(this).height();
			if(thisHeight > tallest) {
				tallest = thisHeight;
			}
		});
		group.height(tallest);
            })
        },
        tooltip: function (options) {
            var defaults = {
                selector: '.tooltip',
                xOffset: 10,
                yOffset: 25,
                clickRemove: false,
                id: 'mark_tooltip',
                content: '',
                useElement: ''
            };
            if (typeof options == 'string') defaults.selector = options;
            var options = jQuery.extend(defaults, options);
            var content;
            return jQuery(options.selector).each(function () {
                var title = jQuery(this).attr('title');
                jQuery(this).hover(function (e) {
                    content = (options.content != '') ? options.content : title;
                    content = (options.useElement != '') ? jQuery('#' + options.useElement).html() : content;
                    jQuery(this).attr('title', '');
                    if (content != '' && content != undefined) {
                        jQuery('body').append('<div id="' + options.id + '">' + content + '</div>');
                        jQuery('#' + options.id).css({
                            'position': 'absolute',
                            'display': 'none'
                        }).css('top', (e.pageY - options.yOffset) + 'px').css('left', (e.pageX + options.xOffset) + 'px').fadeIn('fast')
                    }
                }, function () {
                    jQuery('#' + options.id).remove();
                    jQuery(this).attr('title', title)
                });
                jQuery(this).mousemove(function (e) {
                    var x = ((e.pageX + options.xOffset + jQuery(this).width()) < jQuery(window).width()) ? (e.pageX + options.xOffset) : (e.pageX - options.xOffset - jQuery(this).width() - 16);
                    jQuery('#' + options.id).css('top', (e.pageY - options.yOffset) + 'px').css('left', (x + 'px'))
                });
                if (options.clickRemove) {
                    jQuery(this).mousedown(function (e) {
                        jQuery('#' + options.id).remove();
                        jQuery(this).attr('title', title)
                    })
                }
            })
        },
        external: function (options) {
            var defaults = {
                selector: 'a'
            };
            if (typeof options == 'string') defaults.selector = options;
            var options = jQuery.extend(defaults, options);
            var hostname = window.location.hostname;
            hostname = hostname.replace('www.', '').toLowerCase();
            return jQuery(options.selector).each(function () {
                var href = jQuery(this).attr('href').toLowerCase();
                if (href.indexOf('http://') != -1 && href.indexOf(hostname) == -1) {
                    jQuery(this).attr('target', '_blank');
                    jQuery(this).addClass('external')
                }
            })
        },
        rotate: function (options) {
            var defaults = {
                selector: '.rotate',
                initPause: 0,
                pause: 5000,
                randomize: false
            };
            if (typeof options == 'string') defaults.selector = options;
            var options = jQuery.extend(defaults, options);
            return jQuery(options.selector).each(function () {
                var obj = jQuery(this);
                var length = jQuery(obj).children().length;
                var temp = 0;

                function getRan() {
                    var ran = Math.floor(Math.random() * length) + 1;
                    return ran
                };

                function show() {
                    if (options.randomize) {
                        var ran = getRan();
                        while (ran == temp) {
                            ran = getRan()
                        };
                        temp = ran
                    } else {
                        temp = (temp == length) ? 1 : temp + 1
                    };
                    jQuery(obj).children().hide();
                    jQuery(':nth-child(' + temp + ')', obj).fadeIn('slow')
                };

                function init() {
                    show();
                    setInterval(show, options.pause)
                };
                setTimeout(init, options.initPause)
            })
        },
        cycle: function (options) {
            var defaults = {
                selector: '.cycle',
                effect: 'fade',
                initPause: 0,
                pause: 5000
            };
            if (typeof options == 'string') defaults.selector = options;
            var options = jQuery.extend(defaults, options);
            return jQuery(options.selector).each(function () {
                var obj = jQuery(this);
                var length = jQuery(obj).children().length;
                var temp = 0;
                var prev = -1;
                var z = 1;
                var h = jQuery(':nth-child(1)', obj).height();
                jQuery(obj).css('position', 'relative').height(h);
                jQuery(obj).children().hide().css({
                    'position': 'absolute',
                    'top': '0',
                    'left': '0'
                });

                function show() {
                    temp = (temp == length) ? 1 : temp + 1;
                    prev = (temp == 1) ? length : temp - 1;
                    jQuery(':nth-child(' + temp + ')', obj).css('z-index', z).fadeIn('slow', function () {
                        jQuery(':nth-child(' + prev + ')', obj).fadeOut('slow')
                    });
                    z++
                };

                function init() {
                    show();
                    setInterval(show, options.pause)
                };
                setTimeout(init, options.initPause)
            })
        },
        jump: function (options) {
            var defaults = {
                selector: 'a.jump',
                speed: 1000
            };
            if (typeof options == 'string') defaults.selector = options;
            var options = jQuery.extend(defaults, options);
            return jQuery(options.selector).click(function () {
                var target = jQuery(jQuery(this).attr('href'));
                var offset = jQuery(target).offset().top;
                jQuery('html,body').animate({
                    scrollTop: offset
                }, 1000, 'linear')
                return false;
            })
        },
        showhide: function (options) {
            var defaults = {
                selector: '.toggle'
            };
            if (typeof options == 'string') defaults.selector = options;
            var options = jQuery.extend(defaults, options);
            return jQuery(options.selector).each(function () {
                var target;
                if (jQuery(this).hasClass('prev')) {
                    target = jQuery(this).prev().hide()
                } else if (jQuery(this).hasClass('id')) {
                    target = jQuery(this).attr('href');
                    target = jQuery(target).hide()
                } else {
                    target = jQuery(this).next().hide()
                };
                jQuery(this).css('cursor', 'pointer');
                jQuery(this).toggle(function () {
                    jQuery(this).addClass('toggleactive');
                    jQuery(target).slideDown();
                }, function () {
                    jQuery(target).slideUp();
                    jQuery(this).removeClass('toggleactive')
                })
            })
        },
        forms: function (options) {
            var defaults = {
                selector: 'form',
                err: 'This is required',
                errEmail: 'Valid email address is required',
                errUrl: 'URL is required',
                errPhone: 'Phone number is required',
                notValidClass: 'notvalid'
            };

            function check(obj) {
                if (jQuery(obj).val() == '' || checkLabel(obj)) {
                    var errormsg = (jQuery(obj).attr('title') != '') ? jQuery(obj).attr('title') : options.err;
                    error(obj, errormsg)
                }
            };

            function checkRegEx(obj, type) {
                var regEx, err;
                switch (type) {
                case 'url':
                    regEx = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;
                    err = options.errUrl;
                    break;
                case 'phone':
                    var regEx = /[\d\s_-]/;
                    err = options.errPhone;
                    break;
                default:
                    regEx = /^[^@]+@[^@]+.[a-z]{2,}jQuery/;
                    err = options.errEmail
                };
                var val = jQuery(obj).val();
                if (val.search(regEx) == -1 || checkLabel(obj)) {
                    var errormsg = (jQuery(obj).attr('title') != '') ? jQuery(obj).attr('title') : err;
                    error(obj, errormsg)
                }
            };

            function checkLabel(obj) {
                var text = jQuery('label[for=' + jQuery(obj).attr('id') + ']').text();
                return (text == jQuery(obj).val())
            };

            function error(obj, errormsg) {
                var parent = jQuery(obj).parent();
                parent.append('<span class="error">' + errormsg + '</span>');
                jQuery('span.error', parent).hide().fadeIn('fast');
                jQuery(obj).addClass(options.notValidClass);
                valid = false
            };
            jQuery('input.label,textarea.label').each(function () {
                var text = jQuery('label[for=' + jQuery(this).attr('id') + ']').text();
                jQuery('label[for=' + jQuery(this).attr('id') + ']').css('display', 'none');
                jQuery(this).val(text);
                jQuery(this).focus(function () {
                    if (jQuery(this).val() == text) jQuery(this).val('')
                });
                jQuery(this).blur(function () {
                    if (jQuery(this).val() == '') jQuery(this).val(text)
                })
            });
            if (typeof options == 'string') defaults.selector = options;
            var options = jQuery.extend(defaults, options);
            return jQuery(options.selector).each(function () {
                jQuery(this).submit(function () {
                    jQuery('.error', this).remove();
                    jQuery('.' + options.notValidClass, this).removeClass(options.notValidClass);
                    valid = true;
                    jQuery(':text.required', this).each(function () {
                        if (jQuery(this).hasClass('email')) {
                            checkRegEx(this, 'email')
                        } else if (jQuery(this).hasClass('url')) {
                            checkRegEx(this, 'url')
                        } else if (jQuery(this).hasClass('phone')) {
                            checkRegEx(this, 'phone')
                        } else {
                            check(this)
                        }
                    });
                    jQuery(':password.required', this).each(function () {
                        check(this)
                    });
                    jQuery('textarea.required', this).each(function () {
                        check(this)
                    });
                    jQuery(':checkbox.required', this).each(function () {
                        if (!jQuery(this).attr('checked')) {
                            var errormsg = (jQuery(this).attr('title') != '') ? jQuery(this).attr('title') : options.err;
                            error(this, errormsg)
                        }
                    });
                    return valid
                })
            })
        }
    }
})(jQuery);

jQuery(function(){	
	jQuery.mark.navigation();
	jQuery.mark.sliders();
	jQuery.mark.slideroo();
//	jQuery.mark.tabs();
	jQuery.mark.themotions();
	jQuery.mark.fimg();
	jQuery.mark.filterables();
	jQuery.mark.tabism();
//	jQuery.mark.howwideami();
	jQuery.mark.slidecaption();
	jQuery.mark.slidebox();
	jQuery.mark.gallery();
	jQuery.mark.pullquote();
	jQuery.mark.bigclick();
	jQuery.mark.equalizer();
	jQuery.mark.tooltip();
	jQuery.mark.external();
	jQuery.mark.rotate();
	jQuery.mark.cycle();
	jQuery.mark.forms();
	jQuery.mark.showhide();
	jQuery.mark.jump();
});

	jQuery(document).ready(function(){
	
	
	});
