// JavaScript Document

/*

*		===================   Jquery JOW PLUGINS  ==============

*	

*			Version 		: 	0.1.3

*			Desarrollador 	: 	Williams Medina Aguirre

*           Modificado en   :   29-nov-2009, 10:24:47 AM

*                       

*			Copyright (c) 2009 WiLLiAms Medina A. - JOW

* 			Condiciones de uso  | 

*			GPL (http://www.opensource.org/licenses/gpl-license.php)

*

*			Description:

*

*				- Consola		ex. $.Log(mensaje);

*               - Cookies		ex. $.CreateCookie(variable,valor,dias); - $.EraseCookie(variable); - var a = $.ReadCookie(variable);

*               - Preload		ex. $.Preload(imgurl);

*               - Mascaras      ex. $("#selector").Mask(opciones);

*				- Slider		en progreso...

*				- ToolTip		en progreso...

*                           

*			Compatibilidad	: 

*				- IE 6+	

*				- Firefox 2.0 + 

*				- Google Chrome 2, 3 + 

*				- Opera 9, 10 +

*				- Safari

*				

*	       ==========================================================

*

*/

( function($) {

		/*---------- Consola  ----------*/

        $.Log = function(msj,opcion){

			var ol = $.extend( {}  , $.fn.OLog ,opcion );

			

			if($.browser.msie){

               if($.browser.version=="6.0"){	/*No Soporta*/	}else{

				   if (typeof console != 'object') { console = {log:function() {}} } console.log("> williams@jow.com:~$ "+msj+".");

			   }

			}else{

				if (typeof console != 'object') {

						  console = {log:function() {}}

				}else{

					if (! ('console' in window) || !('firebug' in console)) {

						var names = ['debug', 'info', 'warn', 'error', 'assert', 'dir', 'dirxml', 'group', 'groupEnd', 'time', 'timeEnd', 'count', 'trace', 'profile', 'profileEnd'];

						window.console = {};

						for (var i = 0; i < names.length; ++i) window.console[names[i]] = function() {};

					}

					if (window.console && window.console.firebug) { 

						if(ol.clear==true){ console.clear()}

						console.log("> williams@jow.com:~$ "+msj+".");

					}

				}

			}

        }



        $.fn.OLog = {

                 clear 		: false

        }

		/*---------- Cookies -----------*/

		$.CreateCookie = function(name,value,days){

			if (days) {

				var date = new Date();

				date.setTime(date.getTime()+(days*24*60*60*1000));

				var expires = "; expires="+date.toGMTString();

			}

			else var expires = "";

			document.cookie = name+"="+value+expires+"; path=/";



		}

		$.ReadCookie = function (name) {

			var nameEQ = name + "=";

			var ca = document.cookie.split(';');

			for(var i=0;i < ca.length;i++) {

				var c = ca[i];

				while (c.charAt(0)==' ') c = c.substring(1,c.length);

				if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);

			}

			return null;

		}

		$.EraseCookie = function (name) {

			createCookie(name,"",-1);

		}

		var PreloadImagenes = new Array();

		$.Preload =function(){
		   var result="";
		   for (x=0; x<$.Preload.arguments.length; x++){
				PreloadImagenes[x] = new Image();
				PreloadImagenes[x].src = $.Preload.arguments[x];
				result += ""+PreloadImagenes[x].src+"...(OK)\n";
		   }
		   $.Log("Iniciando Precarga\n"+result+"> Imagenes Precargadas: "+$.Preload.arguments.length,{clear:true});
        }

	/*---Tooltip----*/

	$.fn.Tooltip = function(opciones6){ 

						var o = $.extend( {} ,$.fn.Otool , opciones6 );

						return this.each( function(){

								var CurrentT = $(this).find(".tooltipo");

								if(o.Content!=null){OTool.element.html(o.Content)}

								$(this).children().attr('title','');

								$(this).mousemove(function(e){

									var Toffset = $(this).offset();

									var cy =  (e.clientY - document.body.scrollTop) + o.ofY;

									var cx =  (e.pageX) - o.ofX;

									var position = "fixed";

									if($.browser.msie){

										if($.browser.version=="6.0"){

											position = "absolute";

											cx -= 320;  //(e.offsetX - e.pageX) + (e.clientX + o.ofX);// + Toffset.left;//

											cy -= 420;  //e.clientY ;

										}

									}

									CurrentT.css({'position':position,'left':cx,'top':cy})

								})

							   $(this).mouseover(function(){ $(".tooltipo").hide(); CurrentT.show(); }) 

							   $(this).mouseout(function(){	CurrentT.hide(); })

						});

						}

		$.fn.Otool = {

			 Content : null,

			 ofX : -10,

			 ofY : 0

		}

		

	/*--------mask ---------*/

	$.fn.Mask = function(opciones){ 

		

		var o = $.extend( {} ,$.fn.OMask , opciones );

		 

		 return this.each( function(){	

			var $obj		 	= $(this);

			var $val		 	= $(this).val();

			var $mask 			= o.Texto;

			var $mensaje 		= o.Mensaje;

			$obj.val($mask);
			$obj.bind("focus", function(e){
				$newobj =$(this);if ($newobj.val()==$mask){$newobj.val("");}
			});
			$obj.bind("blur", function(e){
				$newobj =$(this);if ($newobj.val()==""){$newobj.val($mask);}
			});

		 });

	 }

	 $.fn.OMask = {

		 Texto 		: "Hola",

		 Img 		: "user_32.png"	,

		 ImgSize	: 16,	

		 Borde		: 1	,

		 BordeColor	: "#666"

	 }

	 	

		

		

	/*	 	Pager		*/

	$.fn.pager = function(options) {

		var opts = $.extend({}, $.fn.pager.defaults, options);

		return this.each(function() {

			$(this).empty().append(renderpager(parseInt(options.pagenumber), parseInt(options.pagecount), options.buttonClickCallback));

			$('.pages li').mouseover(function() { document.body.style.cursor = "pointer"; }).mouseout(function() { document.body.style.cursor = "auto"; });

        });

    };

    function renderpager(pagenumber, pagecount, buttonClickCallback) {

		var $pager = $('<ul class="pages"></ul>');

		$pager.append(renderButton('primera', pagenumber, pagecount, buttonClickCallback)).append(renderButton('anterior', pagenumber, pagecount, buttonClickCallback));

		var startPoint = 1;

        var endPoint = 9;

		if (pagenumber > 4) {

            startPoint = pagenumber - 4;

            endPoint = pagenumber + 4;

        }

		if (endPoint > pagecount) {

            startPoint = pagecount - 8;

            endPoint = pagecount;

        }

		if (startPoint < 1) {

            startPoint = 1;

        }

		for (var page = startPoint; page <= endPoint; page++) {

			var currentButton = $('<li class="page-number">' + (page) + '</li>');

			page == pagenumber ? currentButton.addClass('pgCurrent') : currentButton.click(function() { buttonClickCallback(this.firstChild.data); });

            currentButton.appendTo($pager);

        }

		$pager.append(renderButton('siguiente', pagenumber, pagecount, buttonClickCallback)).append(renderButton('ultima', pagenumber, pagecount, buttonClickCallback));

		return $pager;

    }

	function renderButton(buttonLabel, pagenumber, pagecount, buttonClickCallback) {



        var $Button = $('<li class="pgNext">' + buttonLabel + '</li>');

		var destPage = 1;

		switch (buttonLabel) {

            case "primera":

                destPage = 1;

                break;

            case 'anterior':

                destPage = pagenumber - 1;

                break;

            case 'siguiente':

                destPage = pagenumber + 1;

                break;

            case "ultima":

                destPage = pagecount;

                break;

        }

		if (buttonLabel == "primera" || buttonLabel == 'anterior') {

            pagenumber <= 1 ? $Button.addClass('pgEmpty') : $Button.click(function() { buttonClickCallback(destPage); });

        }

        else {

            pagenumber >= pagecount ? $Button.addClass('pgEmpty') : $Button.bind("click",function() { buttonClickCallback(destPage); });

        }return $Button;

    }

	$.fn.pager.defaults = {

        pagenumber: 1,

        pagecount: 1

    };

	

})(jQuery);
