/**
 * core
 */
;(function($){

	$.extend({
		isNumber: function(v){
            return typeof v === 'number' && isFinite(v);
        },
        namespace : function(){
            var o, d;
            $.each(arguments, function(i, v) {
                d = v.split(".");
                o = window[d[0]] = window[d[0]] || {};
                $.each(d.slice(1), function(i, v2){
                    o = o[v2] = o[v2] || {};
                });
            });
            return o;
        }
	});

	$.ns = $.namespace;

	$.extend(String.prototype, {
		toggle: function(value, other){
			return this == value ? other : value;
		},
		trim: function(){
			return $.trim(this);
		}
	});

	$.extend(String, {
		escape: function(string) {
			return string.replace(/('|\\)/g, "\\$1");
		}
	});

})(jQuery);

/**
 * namespace container
 */
var App = {};


/**
 * boyan in sidebar
 */
(function($){

	$.ns('App.accordion');

	var el = null;

	var params = {
		active: 0,
    	autoHeight: false,
        icons: {
            header: "ui-icon-plus",
            headerSelected: "ui-icon-minus"
        }
    };

	var acc = {
		active: function(index){
			if ($.isNumber(index)) {
				el.accordion('option', 'active', index);
			}
			else {
				return el.accordion('option', 'active');
			}
		},
		setDefActive: function(index){
			params.active = index;
		},
		init: function (){
			el = $("#accordion").accordion(params);
		}
	};

    App.accordion = acc;

})(jQuery);


/**
 * contact form
 */
(function($){

	$.ns('App.contact');

	/**
	 * jQuery
	 */
	var form = null;

	var params = {
		beforeSubmit: function (data, jqForm, options){
			var error = false;

			for(i in data) {
				var el = data[i];
				if (!el.value.length) {
					$('#l_' + el.name).addClass('error');
					error = true;
				}
			}

			if (error) {
				alert('Please fill form correctly!');
				return false;
			}

			return true;
		},
		success: function (text, status){
			if (text != 'success') {
				return alert(text);
			}

			form.slideUp('slow', function(){
					form.resetForm();
					$('#contact-success')
						.html('Your message has been sent!')
						.slideDown();
				});
		},
		dataType: 'html'
	};

	function init(){
		form = $('#contact-form');
		form.ajaxForm(params);

		form.find('a[href=#submit]')
			.click(function(e){
				e.preventDefault();
				form.submit();
			});

		form.find('a[href=#clear]')
			.click(function(e){
				e.preventDefault();
				form.resetForm();
			});

		form.find(':input')
			.blur(function(){
				var id = '#l_' + $(this).attr('name');
				var dt = $(id);

				if ($(this).val().length) {
					dt.removeClass('error');
				}
				else {
					dt.addClass('error');
				}
			});
	}

	App.contact.init = function(){
		$(function(){
			init();
		});
	};

})(jQuery);


/**
 * submenu
 */
(function($){

	$.ns('App.submenu');

	var currentURI;

	var nav = null;

	function init(){
		menu.el = $('div.sub-menu a').filter('[href^='+currentURI+']');

		if (menu.el.size()) {
			menu.el.addClass('active');
		}
	}

	var menu = {
		el: null,
		init: function(){
			$(function(){
				init();
			});
		},
		setCurrent: function(uri){
			currentURI = uri;
		}
	};

	App.submenu = menu;

})(jQuery);


/**
 * run application 
 */
(function($){

	$(function(){

		/**
		 * Informational Video
		 */
		$.support.boxModel = false;

		$("a[href^=/demo]")
			.addClass('nyroModal')
			.attr('title', 'Demonstration Video')
			.attr('target', '_blank')
			.nyroModal({
				titleFromIframe: false,
				width: 721,
				height: 555,
				padding: 0,
				autoSizable: false
			});

		App.accordion.init();

	    /**
	     * open download section in sidebar
	     */
	    $('#box-third-btn').click(function(e){

	    	if (App.accordion.active() == 0) {
	    		$('#sb-download').showTooltip();
	    	}

	    	App.accordion.active(0);

	    	return false;
	    });

	    /**
	     * open info center section in sidebar
	     */
	    $('a[href=#info-center]').click(function(e){

	    	if (App.accordion.active() == 1) {
	    		$('#sb-info-center').showTooltip();
	    	}

	    	App.accordion.active(1);

	    	return false;
	    });

		/**
		 * download dialog 
		 */
		var dd = $("#download-dialog");
		dd.dialog({
			modal: true,
			title:'Please choose your download method.',
			overlay: {opacity: 0.8,background: "black"},
			height: 120,
			width: 350,
			resizable: false,
			closeOnEscape: true,
			autoOpen: false
		});

		$.extend(App, {dialog: {
			open: function(){
				dd.dialog('open');
			},
			close: function(){
				dd.dialog('close');
			}
		}});

	    /**
	     * demo button
	     */
	    var demoA = $('#demo a');
	    var flag = false;

	    function animDemo(){
	    	demoA.animate({color: (flag ? '#000' : '#fff')}, animDemo);
	    	flag = !flag;
	    };

	    animDemo();

	    /**
	     * carousel
	     */
		$('.carousel').mscroll();

		var $rollover = $('img.box-first-hover, h2.box-first-hover');

		$rollover.hover(function(){
			$('#box-first-btn').addClass('hover');
			$('#arrow').show();
		}, function(){
			$('#box-first-btn').removeClass('hover');
			$('#arrow').hide();
		});
		
	});

})(jQuery);

