/*======================================================================*\
|| #################################################################### ||
|| # GECKO 1.0                                                        # ||
|| # ---------------------------------------------------------------- # ||
|| # Copyright 2011 Gecko All Rights Reserved.                        # ||
|| # This file may not be redistributed in whole or significant part. # ||
|| #   ---------------- Gecko IS NOT FREE SOFTWARE ----------------   # ||
|| # http://www.cmsgecko.com | http://www.cmsgecko.com/license        # ||
|| #################################################################### ||
\*======================================================================*/

(function(){
	jakCMS = {
		jakcms_lang: "",
		jakcms_url: "",
		jakcms_url_orig: "",
		jakcmsrequest_uri: "",
		jakcms_search_link: "",
	}
})();

(function($){
$.fn.captchaRefresh = function (conf) {
    var config = jQuery.extend({
        src:    '', 
        title: jakCMS.jakcms_msg8
    }, conf);

    return this.each(function (x) {
        jQuery('img[src^="' + config.src + '"]', this).attr('title', config.title);

        jQuery(this).click(function (event) {
            var clicked = jQuery(event.target);

            if (clicked.attr('src') && clicked.attr('src').indexOf(config.src) === 0) {
                var now            = new Date();
                var separator    = config.src.indexOf('?') == -1 ? '?' : '&';

                clicked.attr('src', config.src + separator + now.getTime());
            }
        });
    });
};
})(jQuery);

(function($){
	$.fn.jakclearDefault = 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);

/*
	jQuery Tags Input Plugin 1.3
	
	Copyright (c) 2011 XOXCO, Inc
	
	Licensed under the MIT license:
	http://www.opensource.org/licenses/mit-license.php
*/

(function($) {

	var delimiter = new Array();
	var tags_callbacks = new Array();
	var gotAutoComplete = false;
	
	$.fn.addTag = function(value,options) {
			var options = jQuery.extend({focus:false,callback:true},options);
			this.each(function() { 
				id = $(this).attr('id');

				var tagslist = $(this).val().split(delimiter[id]);
				if (tagslist[0] == '') { 
					tagslist = new Array();
				}

				value = jQuery.trim(value);
		
				if (options.unique) {
					skipTag = $(tagslist).tagExist(value);
				} else {
					skipTag = false; 
				}
				
				if (options.taglimit) {
					skipTagC = $(tagslist).tagCount(options.taglimit);
				} else {
					skipTagC = false; 
				}
				
				if (value !='' && skipTag != true && skipTagC != true) { 
                    $('<span>').addClass('tag').append(
                        $('<span>').text(value).append('&nbsp;&nbsp;'),
                        $('<a>', {
                            href  : '#',
                            title : 'Removing tag',
                            text  : 'x'
                        }).click(function () {
                            return $('#' + id).removeTag(escape(value));
                        })
                    ).insertBefore('#' + id + '_addTag');

					tagslist.push(value);
				
					$('#'+id+'_tag').val('');
					if (options.focus) {
						$('#'+id+'_tag').focus();
					} else {		
						$('#'+id+'_tag').blur();
					}
					
					if (options.callback && tags_callbacks[id] && tags_callbacks[id]['onAddTag']) {
						var f = tags_callbacks[id]['onAddTag'];
						f(value);
					}
					if(tags_callbacks[id] && tags_callbacks[id]['onChange'])
					{
						var i = tagslist.length;
						var f = tags_callbacks[id]['onChange'];
						f($(this), tagslist[i]);
					}					
				}
				$.fn.tagsInput.updateTagsField(this,tagslist);
		
			});		
			
			return false;
		};
		
	$.fn.removeTag = function(value) { 
			value = unescape(value);
			this.each(function() { 
				id = $(this).attr('id');
	
				var old = $(this).val().split(delimiter[id]);
	
				
				$('#'+id+'_tagsinput .tag').remove();
				str = '';
				for (i=0; i< old.length; i++) { 
					if (old[i]!=value) { 
						str = str + delimiter[id] +old[i];
					}
				}
				
				$.fn.tagsInput.importTags(this,str);

				if (tags_callbacks[id] && tags_callbacks[id]['onRemoveTag']) {
					var f = tags_callbacks[id]['onRemoveTag'];
					f(value);
				}
			});
					
			return false;
		};
	
	$.fn.tagExist = function(val) {
		if (jQuery.inArray(val, $(this)) == -1) {
		  return false; /* Cannot find value in array */
		} else {
		  return true; /* Value found */
		}
	};
	
	$.fn.tagCount = function(limit) {
		
		if ($(this).size() >= limit) {
			return true;
		} else {
			return false;
		}
		
	};
	
	// clear all existing tags and import new ones from a string
	$.fn.importTags = function(str) {
		$('#'+id+'_tagsinput .tag').remove();
		$.fn.tagsInput.importTags(this,str);
	}
		
	$.fn.tagsInput = function(options) { 
    var settings = jQuery.extend({
      interactive:true,
      defaultText:'add a tag',
      minChars:3,
      width:'300px',
      height:'100px',
      hide:true,
      delimiter:' ',
      autocomplete:{},
      unique:true,
      taglimit:2,
      removeWithBackspace:true,
      placeholderColor:'#666666'
    },options);

		this.each(function() { 
			if (settings.hide) { 
				$(this).hide();				
			}
				
			id = $(this).attr('id')
			
			data = jQuery.extend({
				pid:id,
				real_input: '#'+id,
				holder: '#'+id+'_tagsinput',
				input_wrapper: '#'+id+'_addTag',
				fake_input: '#'+id+'_tag'
			},settings);
	
	
			delimiter[id] = data.delimiter;
			
			if (settings.onAddTag || settings.onRemoveTag || settings.onChange) {
				tags_callbacks[id] = new Array();
				tags_callbacks[id]['onAddTag'] = settings.onAddTag;
				tags_callbacks[id]['onRemoveTag'] = settings.onRemoveTag;
				tags_callbacks[id]['onChange'] = settings.onChange;
			}
	
			var markup = '<div id="'+id+'_tagsinput" class="tagsinput"><div id="'+id+'_addTag">';
			
			if (settings.interactive) {
				markup = markup + '<input id="'+id+'_tag" value="" data-default="'+settings.defaultText+'" />';
			}
			
			markup = markup + '</div><div class="tags_clear"></div></div>';
			
			$(markup).insertAfter(this);

			$(data.holder).css('width',settings.width);
			$(data.holder).css('height',settings.height);
	
			if ($(data.real_input).val()!='') { 
				$.fn.tagsInput.importTags($(data.real_input),$(data.real_input).val());
			}		
			if (settings.interactive) { 
				$(data.fake_input).val($(data.fake_input).attr('data-default'));
				$(data.fake_input).css('color',settings.placeholderColor);		
		
				$(data.holder).bind('click',data,function(event) {
					$(event.data.fake_input).focus();
				});
			
				$(data.fake_input).bind('focus',data,function(event) {
					if ($(event.data.fake_input).val()==$(event.data.fake_input).attr('data-default')) { 
						$(event.data.fake_input).val('');
					}
					$(event.data.fake_input).css('color','#000000');		
				});
						
				if (settings.autocomplete_url != undefined) {
				  autocomplete_options = {source: settings.autocomplete_url};
				  for (attrname in settings.autocomplete) { 
				    autocomplete_options[attrname] = settings.autocomplete[attrname]; 
				  }
          
					$(data.fake_input).autocomplete(autocomplete_options).bind('autocompleteselect',data,function(event,ui) {
            gotAutoComplete = true;
					  $(event.data.real_input).addTag(ui.item.value,{focus:true,unique:(settings.unique),taglimit:(settings.taglimit)});
					  return false;
          });
					
					
          $(data.fake_input).bind('blur',data,function(event) {
            setTimeout(function() {
              if(gotAutoComplete == true) {
                gotAutoComplete = false;
                return false;
              }
              if ( $(event.data.fake_input).val() != $(event.data.fake_input).attr('data-default')) {
                if((event.data.minChars <= $(event.data.fake_input).val().length) && (!event.data.maxChars || (event.data.maxChars >= $(event.data.fake_input).val().length))) {
                  $(event.data.real_input).addTag($(event.data.fake_input).val(),{focus:false,unique:(settings.unique),taglimit:(settings.taglimit)});						
                }
              }

              $(event.data.fake_input).val($(event.data.fake_input).attr('data-default'));
              $(event.data.fake_input).css('color',settings.placeholderColor);              
            }, 100);
            return false;
					});
			
				} else {
						// if a user tabs out of the field, create a new tag
						// this is only available if autocomplete is not used.
						$(data.fake_input).bind('blur',data,function(event) { 
							var d = $(this).attr('data-default');
							if ($(event.data.fake_input).val()!='' && $(event.data.fake_input).val()!=d) { 
								if( (event.data.minChars <= $(event.data.fake_input).val().length) && (!event.data.maxChars || (event.data.maxChars >= $(event.data.fake_input).val().length)) )
									$(event.data.real_input).addTag($(event.data.fake_input).val(),{focus:true,unique:(settings.unique),taglimit:(settings.taglimit)});
							} else {
								$(event.data.fake_input).val($(event.data.fake_input).attr('data-default'));
								$(event.data.fake_input).css('color',settings.placeholderColor);
							}
							return false;
						});
				
				}
				// if user types a comma, create a new tag
				$(data.fake_input).bind('keypress',data,function(event) { 
					if (event.which==event.data.delimiter.charCodeAt(0) || event.which==13 ) {
						if( (event.data.minChars <= $(event.data.fake_input).val().length) && (!event.data.maxChars || (event.data.maxChars >= $(event.data.fake_input).val().length)) )
							$(event.data.real_input).addTag($(event.data.fake_input).val(),{focus:true,unique:(settings.unique),taglimit:(settings.taglimit)});
						
						return false;
					}
				});
				//Delete last tag on backspace
				data.removeWithBackspace && $(data.fake_input).bind('keydown', function(event)
				{
					if(event.keyCode == 8 && $(this).val() == '')
					{
						 event.preventDefault();
						 var last_tag = $(this).closest('.tagsinput').find('.tag:last').text();
						 var id = $(this).attr('id').replace(/_tag$/, '');
						 last_tag = last_tag.replace(/[\s]+x$/, '');
						 $('#' + id).removeTag(escape(last_tag));
						 $(this).trigger('focus');
					};
				});
				$(data.fake_input).blur();
			} // if settings.interactive
			return false;
		});
			
		return this;
	
	};
	
	$.fn.tagsInput.updateTagsField = function(obj,tagslist) { 
		id = $(obj).attr('id');
		$(obj).val(tagslist.join(delimiter[id]));
	};
	
	$.fn.tagsInput.importTags = function(obj,val) {			
		$(obj).val('');
		id = $(obj).attr('id');
		var tags = val.split(delimiter[id]);
		for (i=0; i<tags.length; i++) { 
			$(obj).addTag(tags[i],{focus:false,callback:false});
		}
		if(tags_callbacks[id] && tags_callbacks[id]['onChange'])
		{
			var f = tags_callbacks[id]['onChange'];
			f(obj, tags[i]);
		}
	};

})(jQuery);

(function($){

	$.fn.alphanumeric = function(p) { 

		p = $.extend({
			ichars: "öäüéàèô£†Ω°¡øπœ∑€®¢æ§¨!@#$%^&*()+=[]\\\';,/{}|\":<>?~`. ",
			nchars: "",
			allow: ""
		  }, p);	

		return this.each
			(
				function() 
				{

					if (p.nocaps) p.nchars += "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
					if (p.allcaps) p.nchars += "abcdefghijklmnopqrstuvwxyz";
					
					s = p.allow.split('');
					for ( i=0;i<s.length;i++) if (p.ichars.indexOf(s[i]) != -1) s[i] = "\\" + s[i];
					p.allow = s.join('|');
					
					var reg = new RegExp(p.allow,'gi');
					var ch = p.ichars + p.nchars;
					ch = ch.replace(reg,'');

					$(this).keypress
						(
							function (e)
								{
								
									if (!e.charCode) k = String.fromCharCode(e.which);
										else k = String.fromCharCode(e.charCode);
										
									if (ch.indexOf(k) != -1) e.preventDefault();
									if (e.ctrlKey&&k=='v') e.preventDefault();
									
								}
								
						);
						
					$(this).bind('contextmenu',function () {return false});
									
				}
			);

	};

	$.fn.numeric = function(p) {
	
		var az = "abcdefghijklmnopqrstuvwxyz";
		az += az.toUpperCase();

		p = $.extend({
			nchars: az
		  }, p);	
		  	
		return this.each (function()
			{
				$(this).alphanumeric(p);
			}
		);
			
	};
	
	$.fn.alpha = function(p) {

		var nm = "1234567890";

		p = $.extend({
			nchars: nm
		  }, p);	

		return this.each (function()
			{
				$(this).alphanumeric(p);
			}
		);
			
	};	

})(jQuery);

// Ajax Search
(function($){

	$.fn.ajaxSearch = function(settings){
	
	var defaultSettings = {
		apiURL : '',
		resultsDiv : $('#ajaxsearchR'),
		seo : '',
		msg : 'No result were found',
		working : false,
		append : false
	}
	
	$('#ajaxsearchForm').submit(function(){
	
	/* Combining the default settings object with the supplied one */
	sett = $.extend(defaultSettings,settings);
	
	if(sett.working) return false;
	
	// Input id
	usrinput = $('#Jajaxs').val();
	
	sett.working = true;
	$('.loadSearchResult').fadeIn();
	
	// Get the result
	$.get(sett.apiURL,{q:usrinput, url:jakCMS.jakcms_url, url_detail:jakCMS.jakcms_search_link, seo:sett.seo},function(r){
		
		sett.working = false;
		$('.loadSearchResult').fadeOut();
		
		if(r.length){
			
			// If results were returned, add them to a pageContainer div,
			// after which append them to the #resultsDiv:
			
			var pageContainer = $('<div>').addClass('ajaxspageContainer');
			
			
			pageContainer.append(r);
			
			if(!sett.append){
				// This is executed when running a new search, 
				// instead of clicking on the More button:
				sett.resultsDiv.empty();
			}
			
			pageContainer.append('<div class="clear"></div>').hide().appendTo(sett.resultsDiv).fadeIn('slow');
			
			$('.hideSearchResult').fadeIn();
			$('.hideAdvSearchResult').fadeOut();
						 
		}
		// No result display the nothing found message
		else {
			
			$('.hideSearchResult').fadeOut();
			
			// No results were found for this search.
			
			sett.resultsDiv.empty();
			$('<p>',{html:sett.msg}).addClass('status-failure').hide().appendTo(sett.resultsDiv).fadeIn();
		}
	});
	
	return false;
	
	});
	
	$('.hideSearchResult a').click(function(e){
		e.preventDefault();
		defaultSettings.resultsDiv.empty();
		$('.hideSearchResult').fadeOut();
		$('.hideAdvSearchResult').fadeIn();
		$('#Jajaxs').val('');
	});
};

})(jQuery);

(function($){

	$.fn.voteRate = (function(settings){
			
			var defaultSettings = {
				table		: "",
				title		: "",
				id			: ""
			}
			
			sett = $.extend(defaultSettings,settings);
			
			// Fade in stuff if faded out
			$(".voteresult").fadeIn();
			$(".votehide").fadeIn();
			
			var vcid = $("#votecommentid").val();
			
			$("#loader").fadeIn();
			var dataString = 'vote='+ sett.title +'&voteid='+ sett.id +'&votetable=' + sett.table +'&votecommentid='+ vcid;
				
			$.ajax({
				type: "POST",
				url: jakCMS.jakcms_url + "include/ajax/vote.php",
				data: dataString,
				cache: false,
				   
			success: function(html) {
				$(".votecontainer").hide();
				//alert(html);
				var totalvotes = $("#totalvotes").text();
				var voteup = $("#voteup").text();
				var votedown = $("#votedown").text();
				
				$("#totalvotes").text(parseFloat(totalvotes) + 1);
				
				if (html == "down") {
					$("#votedown").text(parseFloat(votedown) + 1);
					$("#votedownbar").css("width", "+=5%");
					$("#voteupbar").css("width", "-=5%");
				} else {
					$("#voteup").text(parseFloat(voteup) + 1);
					$("#voteupbar").css("width", "+=5%");
					$("#votedownbar").css("width", "-=5%");
				}
				$("#loader").fadeOut();
			}
			});	
		});
})(jQuery);
