﻿/*
 * KobiMaster - Table Class Sorter
 *
 * http://www.kobimaster.com
 *
 */
 
(function($) {
    $.fn.extend({
        KM_GridShaper: function(options) {
			// Default ayarlar
            var defaults = {
                		RowClass	: 'Row',
				ColumnClass	: 'Column',
				ItemClass	: 'Item',
				FirstRowClass	: 'First-Row',
				LastRowClass	: 'Last-Row',
				FirstColumnClass: 'First-Column',
				LastColumnClass	: 'Last-Column',
				Alternate	: '',
				AlternateClass	: 'Alternate',
				VerticalClass	: 'Vertical',
				HorizontalClass	: 'Horizontal',
                		Row		: false,
				Column		: true,
				Item		: false
            };
            
            var options = $.extend(defaults, options);
            return this.each(function() {
                var $this = $(this);
                var o = options;
				// Tablodaki satır sayısı bulunuyor
				var RowCount	= $this.find('tr').length;
				// Tablodaki hücre sayısı bulunuyor
				var ItemCount	= $this.find('td').length;
				// Tablodaki sütun sayısı bulunuyor
				var ColumnCount	= (Math.round((ItemCount / RowCount) * 10)/10).toFixed(0) - 1;
				// Satır class'ları aktif ise tüm satırlara class atanıyor
				if(o.Row){
					for(var i = 0; i <= RowCount; i++){
						var s	= i + 1;
						
						if(RowCount != 1){
							if( i == 0 ){
								$this.find('tr').eq(i).addClass(o.FirstRowClass);
							}else if( i == (RowCount - 1) ){
								$this.find('tr').eq(i).addClass(o.LastRowClass);
							}else{
								$this.find('tr').eq(i).addClass(o.RowClass+'-'+s);
							}
						}else{
							$this.find('tr').eq(i).addClass(o.FirstRowClass).addClass(o.LastRowClass);
						}
					}
				}
				// Sütun class'ları aktif ise tüm sütunlara class atanıyor
				if(o.Column){
					for(var i = 0; i <= ColumnCount; i++ ){
						var s	= i + 1;
						for(var e = 0; e <= RowCount; e++ ){
							if(i == 0){
								$this.find('tr').eq(e).find('td').eq(i).addClass(o.FirstColumnClass);
							}else if( i == ColumnCount ){
								$this.find('tr').eq(e).find('td').eq(i).addClass(o.LastColumnClass);
							}else{
								$this.find('tr').eq(e).find('td').eq(i).addClass(o.ColumnClass+'-'+s);
							}
						}
					}
				}
				// Hücre class'ları aktif ise tüm hücrelere class atanıyor
				if(o.Item){
					for(var i = 0; i <= ItemCount; i++ ){
						var s	= i + 1;
						$this.find('td').eq(i).addClass(o.ItemClass+'-'+s);
					}
				}
				
				if(o.Alternate == 'vertical'){
					for(var i = 0; i <= ColumnCount; i++ ){
						var s	= i + 1;
						for(var e = 0; e <= RowCount; e++ ){
							if(i % 2 == 1){
								$this.find('tr').eq(e).find('td').eq(i).addClass(o.AlternateClass).addClass(o.VerticalClass+'-'+s);
							}						
						}
					}
				}else if(o.Alternate == 'horizontal'){
					for(var e = 0; e <= RowCount; e++ ){
						k = e + 1;
						if(e % 2 == 1){
							$this.find('tr').eq(e).addClass(o.AlternateClass).addClass(o.HorizontalClass+'-'+k);
						}
					}
				}else if(o.Alternate == 'both'){
					for(var j = 0; j <= RowCount; j++ ){
						k = j + 1;
						if(j % 2 == 1){
							$this.find('tr').eq(j).addClass(o.AlternateClass).addClass(o.HorizontalClass+'-'+k);
						}
					}
				
					for(var i = 0; i <= ColumnCount; i++ ){
						var s	= i + 1;
						for(var e = 0; e <= RowCount; e++ ){
							if(i % 2 == 1){
								$this.find('tr').eq(e).find('td').eq(i).addClass(o.AlternateClass).addClass(o.VerticalClass+'-'+s);
							}						
						}
					}
				}
            });
        }
    });
})(jQuery);
