/**
 * Admin
 *
 * for admin pages
 */
var Admin = {};

/**
 * Navigation
 *
 * @return void
 */
Admin.navigation = function() {
    $('ul.sf-menu').supersubs({
        minWidth:    12,                                // minimum width of sub-menus in em units
        maxWidth:    27,                                // maximum width of sub-menus in em units
        extraWidth:  1                                  // extra width can ensure lines don't sometimes turn over
    }).superfish({
        delay:       200,                               // delay on mouseout
        animation:   {opacity:'show'},    				// fade-in animation
        speed:       'fast',                            // faster animation speed
        autoArrows:  true,                              // disable generation of arrow mark-up
        dropShadows: false                              // disable drop shadows
    });

    $('#nav ul li:has(ul)').children(0).addClass('has-ul');
};

/**
 * Forms
 *
 * @return void
 */
Admin.form = function() {
	$("form input[type=submit]").not('.filter input[type=submit]').addClass("ui-state-default ui-corner-all").hover(
		function(){
			$(this).addClass("ui-state-hover");
		},
		function(){
			$(this).removeClass("ui-state-hover");
		}
	);

	$("input[type=text][rel], select[rel]").not(":hidden").each(function() {
		var sd = $(this).attr('rel');
		$(this).after("<span class=\"description\">"+sd+"</span>");
	});
	$("textarea[rel]").not(":hidden").each(function() {
		var sd = $(this).attr('rel');
        if (sd != '') {
            $(this).after("<br /><span class=\"description nospace\">"+sd+"</span>");
        }
	});
};

/**
 * Extra stuff
 *
 * rounded corners, striped table rows, etc
 *
 * @return void
 */
Admin.extra = function() {
	$("table tr:nth-child(even)").not('.controller-row').addClass("striped");
	$("div.message").addClass("notice");
	$('#loading p').addClass('ui-corner-bl ui-corner-br');
};

/**
 * Rounded corners
 *
 * @return void
 */
Admin.roundedCorners = function() {
    $("#navigation ul li, #navigation ul li ul, table, .notice, .success, .error, input, select, textarea, div.actions ul li a, div.meta, div.filter").addClass('ui-corner-all');
};

/**
 * Document ready
 *
 * @return void
 */
$(document).ready(function() {
    Admin.navigation();
    Admin.form();
    Admin.extra();
    Admin.roundedCorners();

	$('.tabs').tabs();
    $('a.tooltip').tipsy({gravity: 's', html: false});
    $('textarea').not('.content').elastic();
    
    $("#flashMessage").each(function() {
        $ui_icon = $('<span class="ui-icon ui-icon-info flashMessageIcon"></span>');
        $(this).prepend($ui_icon);
    });
    $("#authMessage").each(function() {
        $ui_icon = $('<span class="ui-icon ui-icon-info flashMessageIcon"></span>');
        $(this).prepend($ui_icon);
    });
    $(".flashMessage").each(function() {
        $ui_icon = $('<span class="ui-icon ui-icon-info flashMessageIcon"></span>');
        $(this).prepend($ui_icon);
    });
    
    $('#SiteContent').markItUp(mySettings);
    
    $('#preview').bind('mousewheel', function (ev, delta) {
        var scrollTop = $(window).scrollTop();
        $(window).scrollTop(scrollTop - Math.round(delta * 20));
    });
    
	createDropDown();
	
	var $dropTrigger = $(".dropdown dt a");
	var $languageList = $(".dropdown dd ul");
	
	$dropTrigger.toggle(function() {
		$languageList.slideDown(200);
		$dropTrigger.addClass("active");
	}, function() {
		$languageList.slideUp(20);
		$(this).removeAttr("class");
	});

	$(document).bind('click', function(e) {
		var $clicked = $(e.target);
		if (! $clicked.parents().hasClass("dropdown"))
			$languageList.slideUp(20);
			$dropTrigger.removeAttr("class");
	});

	$(".dropdown dd ul li a").click(function() {
		var clickedValue = $(this).parent().attr("class");
		var clickedTitle = $(this).find("em").html();
		$("#target dt").removeClass().addClass(clickedValue);
		$("#target dt em").html(clickedTitle);
		$languageList.hide();
		$dropTrigger.removeAttr("class");
	});

});

function createDropDown() {
	var $form = $("div#language-options select");
	$form.hide();
	var source = $("#language-select");
	source.removeAttr("autocomplete");
	var selected = source.find("option:selected");
	var options = $("option", source);
	$("#language-options").append('<dl id="target" class="dropdown"></dl>')
	$("#target").append('<dt class="' + selected.val() + '"><a href="#"><em>' + selected.text() + '<img class="select-arrow" src="/img/icons/bullet_arrow_down.png" /></em></a></dt>')
	$("#target").append('<dd><ul></ul></dd>')
	options.each(function(){
		$("#target dd ul").append('<li class="' + $(this).val() + '"><a href="' + $(this).attr("title") + '"><em>' + $(this).text() + '</em></a></li>');
	});
}

/**
 * Ajax request: Validate field
 *
 * @return void
 */
function validate_field(field, status, url, fieldname) {
	field.keyup(function () {	  
		var field_value = this.value; 
		var parent_field = field.parent();
		if (this.value != this.lastValue) {
	      	if (this.timer) clearTimeout(this.timer);
	      	status.html('<img src="/img/ajax/loader.gif" height="16" width="16" />');          
	      	this.timer = setTimeout(function () {          		
	            $.ajax({
	                url: url + '/' + fieldname,
	                data: fieldname + '=' + field_value,
	                dataType: 'json',
	                type: 'post',                
	                success: function (response) {
	                    if (response == false) {
	                    	$('#ajax-error').remove();
	                    	status.html('<img src="/img/ajax/tick.png" height="16" width="16" />');                            	
	                    } else {
	                    	$('#ajax-error').remove();
	                    	$.each(response, function(key, value) {
	    	                    	parent_field.append('<div id="ajax-error" class="error-message">' + value + '</div>');
	                    	});
	                    	status.html('<img src="/img/ajax/alert.png" height="16" width="16" />');
	                    }
	                }
	            });                
	      	}, 200);          
	    	this.lastValue = this.value;
	    }
	});
}

/**
 * Ajax request: Validate keyword
 *
 * @return void
 */
function validate_keyword(field, field_2_value, status, url, fieldname, field_3_value) {
	field.keyup(function () {	  
		var field_value = this.value; 
		var parent_field = field.parent();
		if (this.value != this.lastValue) {
	      	if (this.timer) clearTimeout(this.timer);
	      	status.html('<img src="/img/ajax/loader.gif" height="16" width="16" />');          
	      	this.timer = setTimeout(function () {          		
	            $.ajax({
	                url: url + '/' + fieldname,
	                data: fieldname + '=' + field_value + '&' + 'shortcode_id' + '=' + field_2_value + '&' + 'keyword_id' + '=' + field_3_value,
	                dataType: 'json',
	                type: 'post',                
	                success: function (response) {
	                    if (response == false) {
	                    	$('#ajax-error').remove();
	                    	status.html('<img src="/img/ajax/tick.png" height="16" width="16" />');                            	
	                    } else {
	                    	$('#ajax-error').remove();
	                    	$.each(response, function(key, value) {
	    	                    	parent_field.append('<div id="ajax-error" class="error-message">' + value + '</div>');
	                    	});
	                    	status.html('<img src="/img/ajax/alert.png" height="16" width="16" />');
	                    }
	                }
	            });                
	      	}, 200);          
	    	this.lastValue = this.value;
	    }
	});
}

