//Basket Object
	IMF.namespace("imfPrd.basket");
	IMF.imfPrd.basket = {
		TARGET_ID:'dd-target-basket',
		TARGET_BASKET_COUNT_CLASS:'basket-total-item',
		ADD_URL:ILANG.BASKET_ADD_URL,
		REFRESH_URL:ILANG.BASKET_REFRESH_URL,
		BASKET_URL:ILANG.BASKET_URL,
		PROCESS_ADD:false,
		PROCESS_REFRESH:false,
		init:function(){
			var Event = IMF.util.Event;
			var Dom = IMF.util.Dom;
			var ob = this;
			Event.on( this.TARGET_ID, 'mouseover', function(){
				Dom.setStyle( this, "cursor", "pointer" );
				this.className = "selected";
				Event.on( this, "click", function(){
					window.location = ob.BASKET_URL;
				});
			});
			
			Event.on( this.TARGET_ID, 'mouseout', function(){
				Dom.setStyle( this, "cursor", "default" );
				this.className = "normal";
				Event.on( this, "click", function(){} );
			});
			
			this.refresh();
		},
		add:function( el ){
			var Dom = IMF.util.Dom;				
			var ob = this;

			this.handleSuccess = function(o){
				if(o.responseText !== undefined){
					ob.stopProcess();
					ob.PROCESS_ADD = false;		
					var data;
		            try {
		                data = IMF.lang.JSON.parse(o.responseText);
		            }catch (x) { return; }
		            
		            if( typeof data.messages != 'boolean' ){
		            	for( var i in data.messages ){
		            		var msg = data.messages[i];
		            		switch( msg.type ){
			            		case 'dialog':
		            				if( msg.dialog == true && typeof data.dialog == 'object' ){
		            					IMF.imfPrd.DDTarget.dialog( data.dialog.title, data.dialog.content, { ok:function(){ this.submit(); }, callback:{ success:ob.handleSuccess, failure:ob.handleFailure } } );
		            				}
		            				break;
		            			case 'alert':
		            				var att = {};
		            				if( msg.dialog == true && typeof data.dialog == 'object' ){
		            					att.ok = function(){
		            						this.hide();
		            						IMF.imfPrd.DDTarget.dialog( data.dialog.title, data.dialog.content, { ok:function(){ this.submit(); }, callback:{ success:ob.handleSuccess, failure:ob.handleFailure } } );
		            					};
		            				}
		            				IMF.imfPrd.DDTarget.alert( msg.title, msg.message, att );
		            				break;
		            			case 'inner':
		            				ob.setTotalProduct( msg.message, true );
		            				break;
		            		}
		            	}
		            }
		            if( data.status == 'ok' ){
		            	ob.refresh();
            			IMF.imfPrd.DDTarget.alert( 'Ürün Sepete Eklendi', 'Ürününüz Sepete Eklenmiştir.' );
		            }
				}
			};

			this.handleFailure = function(o){
				if(o.responseText !== undefined){
					ob.stopProcess();
					ob.PROCESS_ADD = false;
				}
			};

			var callback = { success:this.handleSuccess, failure:this.handleFailure };
			if(typeof el == 'number'){
				var postData = "product_id=" + el;
			}else{
				var postData = "product_id=" + IMF.imfPrd.DDTarget.getProductID( el );
			}
			var request = IMF.util.Connect.asyncRequest('POST', this.ADD_URL, callback, postData);
			this.startProcess( "add" );
			this.PROCESS_ADD = true;
		},
		setTotalPrice:function( price ){
			var Dom = IMF.util.Dom;
			var priceEl = Dom.getElementsByClassName( "price", "cite", this.TARGET_ID );
			if( !priceEl || !priceEl[0] ){ return; }
			priceEl[0].innerHTML = ILANG.BASKET_TOTAL_PRICE+" " + price; 
		},
		setTotalProduct:function( count, ed ){
			var Dom = IMF.util.Dom;
			var countEl = Dom.getElementsByClassName( "items", "cite", this.TARGET_ID );
			if( !countEl || !countEl[0] ){ return; }
			countEl[0].innerHTML = count + ( !ed ? " "+ILANG.COUNT_PRODUCT : ''); 
			  
			var countEl = Dom.getElementsByClassName( this.TARGET_BASKET_COUNT_CLASS, "span" );
			if( !countEl ){ return; }
			for( var i in countEl ){
				var el = countEl[i];
				if( el ){
					el.innerHTML = ( !ed ? ' ( <b>' + count + " " + ILANG.COUNT_PRODUCT + "</b> )" : '');
				} 
			}
		},
		refresh:function(){
			var Dom = IMF.util.Dom;
			var targetEl = Dom.get( this.TARGET_ID );
			var ob = this;
			
			var handleSuccess = function(o){
				if(o.responseText !== undefined){
					ob.PROCESS_REFRESH = false;
					ob.stopProcess();
					var data;
		            try {
		                data = IMF.lang.JSON.parse(o.responseText);
		            }catch (x) { return; }

		            if( typeof data.messages != 'boolean' ){
		            	for( var i in data.messages ){
		            		var msg = data.messages[i];
		            		switch( msg.type ){
		            			case 'alert':
		            				IMF.imfPrd.DDTarget.alert( msg.title, msg.message );
		            				break;
		            			case 'inner':
		            				ob.setTotalProduct( msg.message, true );
		            				break;
		            		}
		            	}
		            }
		            if( typeof data.totals == 'object' ){ ob.setTotalProduct( parseInt(data.totals.items) ); ob.setTotalPrice( data.totals.price ); }
				}
			};

			var handleFailure = function(o){
				if(o.responseText !== undefined){
					ob.stopProcess();
					ob.PROCESS_REFRESH = false;
				}
			};

			var callback = { success:handleSuccess, failure:handleFailure };
			var request = IMF.util.Connect.asyncRequest( 'GET', this.REFRESH_URL, callback );
			this.startProcess( "refresh" );
			this.PROCESS_REFRESH = true;
			
		},
		startProcess:function( action ){
			var Dom = IMF.util.Dom;
		
			switch( action ){
				case "add": var msg = ILANG.BASKET_PROCESS_ADD; break;
				case "refresh": var msg = ILANG.BASKET_PROCESS_REFRESH; break;
				default: var msg = ILANG.BASKET_PROCESS; break; 
			}
			
			var processEl = Dom.getElementsByClassName( "process", "cite", this.TARGET_ID );
			if( !processEl || !processEl[0] ){ return; }
			processEl[0].innerHTML = '<img src="'+ILANG.THEME+'images/progress.gif" border="0" style="vertical-align: bottom;" /> ' + msg; 
		},
		stopProcess:function(){
			var Dom = IMF.util.Dom;					
			var processEl = Dom.getElementsByClassName( "process", "cite", this.TARGET_ID );
			if( !processEl || !processEl[0] ){ return; }
			processEl = processEl[0];
			processEl.innerHTML = ''; 
		}
	}
