Array.prototype.remove = function(from, to) {
  var rest = this.slice((to || from) + 1 || this.length);
  this.length = from < 0 ? this.length + from : from;
  return this.push.apply(this, rest);
};
var ProductCompare = {
	itemMax : 5,
	itemMin : 2,
	itemCount : 0,
	items : [],
	comparelinkBase : "",
	comparelink : "",
	init : function() {
	//table daki urunlere gore olusturmak gerekiyor, selected lar eklenecek, elenen ürünler cikarilacak 
		jQuery(".cntResultsTable input.chk:checkbox").each(function(i) {
			ProductCompare.items[jQuery(this).attr("id").replace(".", "").replace("/", "")] = {
				id : jQuery(this).attr("id").replace(".", "").replace("/", ""),
				orjID : jQuery(this).attr("id"),
				img : jQuery(this).parents(".cntResultsTable").find(".img").eq(i).find("div.smallimg img").clone().show(),
				text : jQuery(this).parents(".cntResultsTable").find("div.hl").eq(i).html(),
				value : jQuery(this).val(),
				input : jQuery(this)
			}
			
			
			jQuery(this).unbind("click").click(function() {
				if (jQuery(this).attr("checked")) {
					ProductCompare.Add(jQuery(this).attr("id").replace(".", "").replace("/", ""));
					this.checked = true;
				} else {
					ProductCompare.Remove(jQuery(this).attr("id").replace(".", "").replace("/", ""));
					this.checked = false;
				}
				if (ProductCompare.itemCount > ProductCompare.itemMax) {
					this.checked = false;
				}
			});
		});
		jQuery(".cntProductCompare a.compare").unbind("click").live("click", function(e) {
			if (ProductCompare.itemCount < ProductCompare.itemMin) {
				e.preventDefault();
				return false;
			}
			
			/*test edilecek
			jQuery("#restoreFromCookieOrBack").val("true");
			*/
			window.location.href = ProductCompare.Validation.Format();
			
			e.preventDefault();
			return false;
		});
		
		if (this.SelectedItems.Arr.length > 0) {
			this.checkSelectedProducts();
		}
		
		this.Control();
		
	},
	
	checkSelectedProducts: function() {
		for(var i = 0; i < ProductCompare.SelectedItems.Arr.length; i++) {
	        jQuery(".comp input.chk[id="+ProductCompare.SelectedItems.Arr[i].orjID+"]:checkbox").attr("checked", true);
	    }
  	},
	
	Add : function(index) {
		var This;
		if(jQuery(".cntProductCompare .product-list").length > 0) {
			var close = jQuery("<a>Close</a>").attr({
				href : "javascript:;"
			})
			.unbind("click").click(function() {
				ProductCompare.items[index].input.attr("checked", false).click().attr("checked", false);
			});
			if (jQuery(".cntProductCompare .product-list ul li").length == 0) {
				for (var i = 0; i < this.itemMax; i++) {
					This = jQuery("<li></li>").prependTo(".cntProductCompare .product-list ul");
					if (i == (this.itemMax-1)) {
						This.addClass("cntProductCompareItem").append(close);
					}
				}
				jQuery(ProductCompare.items[index].img).appendTo(This);
				jQuery("<span>"+ProductCompare.items[index].text+"</span>").appendTo(This);
				jQuery(This).find("sup").remove();
			} else {
				if (jQuery(".cntProductCompare .product-list li.cntProductCompareItem").length > 0) {
					This = 	jQuery(".cntProductCompare .product-list li.cntProductCompareItem:last").next().addClass("cntProductCompareItem").append(close);
				} else {
					This = 	jQuery(".cntProductCompare .product-list li:first").addClass("cntProductCompareItem").append(close);
				}
				This.append(ProductCompare.items[index].img).append("<span>"+ProductCompare.items[index].text+"</span>");
				jQuery(This).find("sup").remove();
			}
			This.attr({
				id : ProductCompare.items[index].id
			});
			this.itemCount++;
			this.SelectedItems.Add({
				id : ProductCompare.items[index].id,
				orjID : ProductCompare.items[index].orjID,
				img : ProductCompare.items[index].img,
				text : ProductCompare.items[index].text,
				value : ProductCompare.items[index].value,
				input : ProductCompare.items[index].input
			});
			this.Control();
		} else {
			jQuery("<div><ul class=\"clearfix\"></ul>")
			.attr({
				className : "product-list"
			})
			.prependTo(".cntProductCompare .cntProductCompareInner");
			this.Add(index);
		}
	},
	Remove : function(index) {
		if (this.itemCount <= this.itemMax) {
			jQuery(".cntProductCompare .product-list ul li#"+ProductCompare.items[index].id).remove();
			jQuery(".cntProductCompare .product-list ul").append("<li></li>");
		} else {
			this.itemCount = this.itemMax;
		}
		this.itemCount--;
		this.SelectedItems.Remove(index);
		this.Control();
	},
	Control : function() {
		if (this.itemCount > 0) {
			jQuery(".cntProductCompare .cntTitle").hide();
			if (this.itemCount >= this.itemMin) {
				jQuery(".cntProductCompare .btn-block a").removeClass("btn-type5 disabled-button").addClass("btn-type3");
			} else {
				jQuery(".cntProductCompare .btn-block a").removeClass("btn-type3").addClass("btn-type5 disabled-button");
			}
			if (this.itemCount >= this.itemMax) {
				this.itemCount = this.itemMax;
				jQuery(".cntResultsTable input.chk:checkbox[checked='false']").attr("disabled", "disabled");
			} else {
				jQuery(".cntResultsTable input.chk:checkbox[checked='false']").attr("disabled", "");
			}
		} else {
			jQuery(".cntProductCompare .cntTitle").show();
			jQuery(".cntProductCompare .product-list").remove();
			this.itemCount = 0;
		}
	},
	Validation : {
		Format : function() {
			ProductCompare.comparelink = ProductCompare.comparelinkBase;
			for (var i = 0; i < ProductCompare.SelectedItems.Arr.length; i++) {
				ProductCompare.comparelink+= "/"+ this.formatProductEntity(ProductCompare.SelectedItems.Arr[i].value.toLowerCase());
			}
			return ProductCompare.comparelink;
		},
		
		// format product names for simplified url
	  	formatProductEntity : function(prodName) { 
		  	var newProdName = '';
		  	var charr = '';
	  		for(var c = 0; c < prodName.length; c++) { 
	  			charr = prodName.charAt(c);
	  			if(charr.isNum() || charr == '.' || charr.isLetter()) {
	  				newProdName = newProdName + charr;
	  			} else {
	  				newProdName = newProdName + '-';
	  			}
	  		}
	  		return newProdName;
		}
	},
	
	Reset : function() {
		
		for(var i = 0; i < ProductCompare.SelectedItems.Arr.length; i++) {
			ProductCompare.SelectedItems.Arr[i].img = ProductCompare.items[ProductCompare.SelectedItems.Arr[i].id].img;
			ProductCompare.SelectedItems.Arr[i].value = ProductCompare.items[ProductCompare.SelectedItems.Arr[i].id].value;
			jQuery(".cntProductCompare .product-list ul li#"+ProductCompare.SelectedItems.Arr[i].id+" img").attr("src", ProductCompare.SelectedItems.Arr[i].img.attr("src"));
		}
	},
	
	SelectedItems : {
		
		Arr : [],
		
		Add : function(obj) {
			this.Arr.push(obj);
		},
		
		Remove : function(index) {
			for (var i = 0; i < this.Arr.length; i++) {
				if (ProductCompare.items[index].id == this.Arr[i].id) {
					this.Arr.remove(i);
				}
			}
		}
	}

		
}