/*!
 * (v) Compact labels plugin
 * Takes one option: labelOpacity [default: true] set to false to disable label opacity change on empty input focus
 */
(function($){$.fn.compactize=function(options){var defaults={labelOpacity:true};options=$.extend(defaults,options);return this.each(function(){var label=$(this),input=$('#'+label.attr('for'));input.focus(function(){if(options.labelOpacity){if(input.val()===''){label.css('opacity','0.5');}} else{label.hide();}});if(options.labelOpacity){input.keydown(function(){label.hide();label.css('opacity',1);});} input.blur(function(){if(input.val()===''){label.show();} if(options.labelOpacity){label.css('opacity',1);}});window.setTimeout(function(){if(input.val()!==''){label.hide();}},50);});};})(jQuery);


/*!
 * (v) hrefID jQuery extention
 * returns a valid #hash string from link href attribute in Internet Explorer
 */
(function($){$.fn.extend({hrefId:function(){return $(this).attr('href').substr($(this).attr('href').indexOf('#'));}});})(jQuery);

/*!
 * Scripts
 *
 */
jQuery(function($) {
 
	var Engine = {
		utils : {
			links : function(){
				$('a[rel*=external]').click(function(e){
					e.preventDefault();
					window.open($(this).attr('href'));						  
				});
			},
			mails : function(){
				$('a[href^=mailto:]').each(function(){
					var mail = $(this).attr('href').replace('mailto:','');
					var replaced = mail.replace('/at/','@');
					$(this).attr('href','mailto:'+replaced);
					if($(this).text() == mail) {
						$(this).text(replaced);
					}
				});
			}
		}
	};

	Engine.utils.links();
	Engine.utils.mails();

});

function trim(string) {
    if (string == undefined)
        return "";

    return string.replace(/^\s*/, "").replace(/\s*$/, "");
}


function validateRequired(parent, addMessage) {
    var result = true;

    $(parent + " .required").each(function () {

        var cleanedValue = trim($(this).val());

        if (cleanedValue == $(this).attr("default"))
            cleanedValue = "";

        if (cleanedValue.length == 0) {
            $(this).parent().addClass("input-error");

            if (addMessage)
                $(this).siblings("span:first").text("Required");

            result = false;
        }
        else {
            $(this).parent().removeClass("input-error");

            if (addMessage)
                $(this).siblings("span:first").text("");
        }
    });

    return result;
}

function validateEmail(parent, addMessage) {
    var result = true;

    var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;

    $(parent + " .email").each(function () {
        var address = $(this).val();

        if (reg.test(address) == false) {
            $(this).parent().addClass("input-error");

            if (addMessage)
                $(this).siblings("span:first").text("Invalid email format");

            result = false;
        }
        else {
            $(this).parent().removeClass("input-error");

            if (addMessage)
                $(this).siblings("span:first").text("");
        }
    });

    return result;
}


function CreateMagic(parentElement) {
    var itemOptions = {
        index: -1,
        body: "",
        image: "",
        tags: "",
        element: null,
        box: -1,
        addIcon: function (icon) {
            this.element.find(".icons").append(icon);
        }
    };

    var myMagic = {
        target: parentElement,
        items: new Array(),
        timeoutHandle: null,
        addItem: function (item) {
            var newItem = {};
            $.extend(newItem, itemOptions, item);

            this.target.append("<div class='magic-item small'><div class='overlay'><div class='icons'></div>" + newItem.body + "</div>");

            var item = this.target.children(":last");
            item.attr("id", "item_" + this.items.length);
            item.css("background-image", "url(" + newItem.image + ")");

            newItem.index = this.items.length;

            newItem.element = item;

            var currentMagic = this;

            item.click(function () {
                for (var i = 0; i < currentMagic.items.length; i++) {
                    currentMagic.items[i].element.removeClass("big").addClass("small");
                }

                item.removeClass("small").addClass("big");

                currentMagic.doLayout(true);

                if (currentMagic.timeoutHandle != null)
                    window.clearInterval(currentMagic.timeoutHandle);
            });

            this.items.push(newItem);

            return newItem;
        },
        doLayout: function (doAnimate) {
            var bigCount = 0;
            var smallCount = 0;

            for (var i = 0; i < this.items.length; i++) {
                this.items[i].box = -1;
                if (this.items[i].element.is(".small"))
                    smallCount++;
                else
                    bigCount++;
            }

            var boxCount = smallCount + (bigCount * 4);
            boxCount = (boxCount % 5 == 0 ? boxCount : boxCount + (5 - boxCount % 5)) - 1;
            boxCount += 5;

            var currentBox = 0;
            var boxes = new Array();

            var itemCopy = jQuery.extend(true, {}, this);
            var currentItem = 0;

            for (var i = 0; i < boxCount; i++) {
                if (boxes[i] != undefined)
                    continue;

                var foundOne = false;

                for (var c = 0; c < itemCopy.items.length; c++) {
                    var item = itemCopy.items[c];

                    if (item.element.is(".small")) {
                        boxes[i] = item;
                        foundOne = true;
                        this.items[item.index].box = i;

                        itemCopy.items.splice(c, 1);

                        break;
                    }
                    else {
                        if ((i % 5) == 4) {
                            continue;
                        }
                        else if (boxes[i + 1] != undefined) {
                            continue;
                        }
                        else {
                            foundOne = true;
                            this.items[item.index].box = i;
                            boxes[i] = item;
                            boxes[i + 1] = item;
                            boxes[i + 5] = item;
                            boxes[i + 6] = item;

                            itemCopy.items.splice(c, 1);

                            break;
                        }
                    }
                }

                if (!foundOne)
                    boxes[i] = "blank";

                if (itemCopy.length == 0)
                    break;
            }

            var lowestPoint = 0;

            for (var i = 0; i < this.items.length; i++) {
                var item = this.items[i];

                var column = item.box % 5;
                var row = Math.floor(item.box / 5);

                if (doAnimate) {
                    if (item.element.is(".small")) {
                        item.element.animate({ height: 120, width: 195, left: column * 210, top: row * 135 }, 700);
                        lowestPoint = Math.max(lowestPoint, (row * 135) + 120);
                    }
                    else {
                        item.element.animate({ height: 255, width: 405, left: column * 210, top: row * 135 }, 700);
                        lowestPoint = Math.max(lowestPoint, (row * 135) + 255);
                    }
                }
                else {
                    if (item.element.is(".small")) {
                        item.element.css("height", 120);
                        item.element.css("width", 195);
                        item.element.css("left", column * 210);
                        item.element.css("top", row * 135);

                        lowestPoint = Math.max(lowestPoint, (row * 135) + 120);
                    }
                    else {
                        item.element.css("height", 255);
                        item.element.css("width", 405);
                        item.element.css("left", column * 210);
                        item.element.css("top", row * 135);

                        lowestPoint = Math.max(lowestPoint, (row * 135) + 255);
                    }
                }
            }

            if (doAnimate) {
                this.target.animate({ height: lowestPoint + 15 }, 500);
            }
            else {
                this.target.css("height", lowestPoint + 15);
            }
        },
        highlightGroup: function (tag) {
            if (this.timeoutHandle != null)
                window.clearInterval(this.timeoutHandle);

            for (var i = 0; i < this.items.length; i++) {
                this.items[i].element.removeClass("big").addClass("small");

                if (this.items[i].tags.toLowerCase().indexOf(tag.toLowerCase()) > -1)
                    this.items[i].element.addClass("big").removeClass("small");
            }

            this.doLayout(true);
        },
        randomHighlight: function () {
            var currentMagic = this;

            this.timeoutHandle = window.setInterval(function () {
                var random = Math.floor(Math.random() * currentMagic.items.length);

                for (var i = 0; i < currentMagic.items.length; i++) {
                    currentMagic.items[i].element.removeClass("big").addClass("small");
                }

                currentMagic.items[random].element.removeClass("small").addClass("big");

                currentMagic.doLayout(true);

            }, 3000);
        },
        linearHighlight: function () {
            var currentMagic = this;
            var currentIndex = -1;

            this.timeoutHandle = window.setInterval(function () {
                currentIndex++;

                if (currentIndex >= currentMagic.items.length)
                    currentIndex = 0;

                for (var i = 0; i < currentMagic.items.length; i++) {
                    currentMagic.items[i].element.removeClass("big").addClass("small");
                }

                currentMagic.items[currentIndex].element.removeClass("small").addClass("big");

                currentMagic.doLayout(true);

            }, 3000);
        }
    };

    return myMagic;
}

var debugthingy;

$(document).ready(function () {

    $(".swapper").each(function () {
        $(this).click(function () {
            if ($(this).is(".active"))
                return;

            var currentObj = $(this);
            var myLeft = $(this).css("left");

            $(this).siblings(".active").find("img").fadeOut();
            $(this).css("z-index", 10).siblings().css("z-index", 1);

            $(this).siblings(".active").animate({ height: "60px", width: "276px" }, 300, function () {
                $(this).animate({ top: "325px", left: myLeft }, 500);
                $(this).removeClass("active");

                currentObj.find("img").fadeIn();

                currentObj.animate({ top: 0, left: 0, height: "300px", width: "575px" }, 500);
                currentObj.addClass("active");
            });
        });
    });
});


