//Added to support old Javascript token
function popUp(link) {
	window.location = link;
}

var KagiStore = {
	Settings: {
		Version:0.2,
		logging:true
	},
	
	browser_id: '',
	
	view: '',
	
	location_menu_class: 'kagi-location-ie',
	
	logMessage: function(message) {
		if (!KagiStore.Settings.logging) {return;}
		if(!window.console) {return;}
		window.console.log(message);
	},
	
	init: function() {
		KagiStore.browser_id = navigator.appName;
		KagiStore.logMessage('KagiStore Initiated for ' + KagiStore.browser_id);
		//alert(KagiStore.browser_id);
		KagiStore.setView();
		KagiStore.logMessage('KagiStore: Current View is: ' + KagiStore.view);
		
		if (KagiStore[KagiStore.view]) {
			KagiStore[KagiStore.view].init();
		}
		
	},
	
	setView: function() {
		KagiStore.logMessage('KagiStore.setView Initiated!');
		var view = $('kagi-view').className;
		view = $A(view.split('-')).last().capitalize();
		KagiStore.view = view;
		return view;
	},
	
	selectedButton: function(form, input) {
		var form = $(form);
		var inputs = form[input];
		for (var i=0; i < inputs.length; i++) {
			if (inputs[i].checked) {
				var ret = $(inputs[i]);
			}
		}
		return ret;
	},
	
	observeLocationMenu: function() {
		KagiStore.logMessage('KagiStore.observeLocationMenu Initiated!');
		if ($w(KagiStore.browser_id).first() == 'Microsoft') {
			$$('select.kagi-location').invoke('removeClassName', KagiStore.location_menu_class);
			$$('select.kagi-location').invoke('observe', 'focusin', KagiStore.expandLocationMenu.bindAsEventListener(KagiStore));
			$$('select.kagi-location').invoke('observe', 'focusout', KagiStore.contractLocationMenu.bindAsEventListener(KagiStore));
		}
	},
	
	expandLocationMenu: function(event) {
		KagiStore.logMessage('KagiStore.expandLocationMenu Initiated!');
		var el = event.element();
		el.absolutize().setStyle({height:'auto', width:'auto'});
	},
	
	contractLocationMenu: function(event) {
		KagiStore.logMessage('KagiStore.contractLocationMenu Initiated!');
		var el = event.element();
		el.relativize();
	},
	
	loadFile: function(container, type, attr) {
		KagiStore.logMessage('KagiStore.loadFile Initiated!');
		container = $(container);
		
		if (!KagiStore[type]) { return false; }
		
		var file = KagiStore[type](attr);
		var div = KagiStore.DIV({className:"kagi-loaded"}, file);
		
		div.hide();
		container.insert(div);
		return div.identify();
	}
	
}

KagiStore.Products = {
	obs_freq:0.3,
	menu_values: $H({}),
	init: function() {
		KagiStore.logMessage('KagiStore Products Initiated!');
		KagiStore.Products.startObservers();
	},
	startObservers: function() {
		KagiStore.logMessage('KagiStore.Products.startObservers Initiated!');
		$$('#kagi-option_menu select', '#kagi-lang_menu select').collect(function(menu) {
			KagiStore.Products.menu_values.set(menu.identify(), $F(menu));
			if ($w(KagiStore.browser_id).first() == 'Microsoft') {
				menu.observe('click', function(event){
					event.element().observe('change', function(evt) {
						evt.element().up('form').submit();
						if (evt.element().match('select.kagi-location')) {
							KagiStore.contractLocationMenu(evt);
						}
						event.element().stopObserving('change');
					});
				});
				menu.observe('keypress', function(event) {
					if (event.keyCode == 13) {
						event.element().up('form').submit();
						if (evt.element().match('select.kagi-location')) {
							KagiStore.contractLocationMenu(event);
						}
					}
				});
				menu.observe('focusout', function(event) {
					if (event.element().value != KagiStore.Products.menu_values.get(event.element().identify())) {
						KagiStore.Products.menu_values.set(event.element().identify(), event.element().value);
						event.element().up('form').submit();
					}
				});
			} else {
				menu.observe('change', function(event) {
					event.element().up('form').submit();
				});
			}
		});
		KagiStore.observeLocationMenu();
	}
}

KagiStore.Detail = KagiStore.Products;

KagiStore.Cart = {
	obs_freq:0.3,
	init: function() {
		KagiStore.logMessage('KagiStore Cart Initiated!');
		KagiStore.Cart.startObservers();
		if ($F('order/coupon/code')==''){
		$('kagi-coupon_field').hide();
		}else{
		$('kagi-display_coupon_option').hide();

		}
	},
	startObservers: function() {
		KagiStore.logMessage('KagiStore.Cart.startObservers Initiated!');
		KagiStore.observeLocationMenu();
		$('customer/billing/country').observe('change', function(event){
			var actionField = document.createElement('input');
			actionField.setAttribute('type','hidden');
			actionField.setAttribute('value','cart');
			actionField.setAttribute('name','action');
			$('kagi-form').appendChild(actionField);
			$('kagi-form').submit();
		});
		$('kagi-display_coupon_option').observe('click', function(event){
		var display = $('kagi-coupon_field').readAttribute('style');
			if (display.include('display: none')){
			var li = $('kagi-coupon_field');
			new Effect.SlideDown(li, { duration: 0.4,
			afterFinish: function(){
					$('order/coupon/code').focus();
				}
			});
			
			}
			$('kagi-display_coupon_option').hide();

			return false;
		});
	}
}

KagiStore.Checkout = {
	sameas:0,
	obs_freq:0.3,
	pay_type:'card',
	selected_pay_type:'',
	
	init: function() {
		KagiStore.logMessage('KagiStore Checkout Initiated!');
		KagiStore.location_menu_class = "295px";
		KagiStore.Checkout.setPaymentMethod();
		KagiStore.Checkout.showShipping(false);
		KagiStore.Checkout.processPayType(false);
		KagiStore.Checkout.startObservers();
		KagiStore.Checkout.paypal_button = KagiStore.loadFile('kagi-form', 'IMG', {
			src:"https://www.paypal.com/en_US/i/btn/btn_xpressCheckoutsm.gif", 
			alt: " ",
			className: "kagi-paypal"});
		KagiStore.Checkout.clickandbuy_button = KagiStore.loadFile('kagi-form', 'IMG', {
			src:"/gif/OPTIONX/default/buttons/goto_clickandbuy.gif", 
			alt: "Checkout with ClickandBuy",
			className: "kagi-clickandbuy"});
	},
	
	startObservers: function() {
		KagiStore.logMessage('KagiStore.Checkout.startObservers Initiated!');
		new Form.Observer('kagi-form', KagiStore.Checkout.obs_freq, function(form, value) {
			KagiStore.Checkout.showShipping(true);
			KagiStore.Checkout.setPaymentMethod();
		});
		
		document.observe("pay_type:changed", KagiStore.Checkout.processPayTypeChange.bindAsEventListener(KagiStore));
		
		$('kagi-form').observe('change', function(event){
			var target = $('kagi-form').currency.identify();
			var billCountry = 'customer/billing/country';
			var shipCountry = 'customer/shipping/country';
				if(event.element().identify() == target || event.element().identify() == billCountry || event.element().identify() == shipCountry){
					var actionField = document.createElement('input');
					actionField.setAttribute('type','hidden');
					actionField.setAttribute('value','x_checkout');
					actionField.setAttribute('name','action');
					$('kagi-form').appendChild(actionField);
					$('kagi-form').submit();
				}

			});
	},
	
	showShipping: function(animate) {
		KagiStore.logMessage('KagiStore.Checkout.showShipping Initiated!');
		var ship = $('kagi-shipping_address');
		if (KagiStore.Checkout.checkSameAs()) {
			if (KagiStore.Checkout.sameas != 'YES') {
				if (animate) {
					new Effect.SlideDown(ship, { duration: 0.2 });
				} else {
					ship.show();
				}
			} else {
				if (animate) {
					new Effect.SlideUp(ship, { duration: 0.2 });
				} else {
					ship.hide();
				}
			}
		}
	},
	
	checkSameAs: function() {
		KagiStore.logMessage('KagiStore.Checkout.checkSameAs Initiated!');
		var sameas = KagiStore.selectedButton('kagi-form','customer/shipping/sameasbilling').value;
		
		KagiStore.logMessage('Same as Billing: ' + sameas);
		
		if (KagiStore.Checkout.sameas != sameas) {
			KagiStore.Checkout.sameas = sameas;
			return true;
		} else {
			return false;
		}
	},
	
  setPaymentMethod: function() {
    KagiStore.logMessage('KagiStore.Checkout.getPaymentMethod Initiated!');
    KagiStore.Checkout.selected_pay_type = KagiStore.selectedButton('kagi-form','customer/payment/type');
    if (!KagiStore.Checkout.selected_pay_type) {
      KagiStore.logMessage('No payment type selected for currency');
      $('kagi-payment_options').update(
        '<li class="kagi-error">No payment methods available. Please select a different currency.</li>'
      );
      $$('#kagi-buttons_bottom div.kagi-next_button_trans').invoke('hide');
    } else {
        var pay_type = KagiStore.Checkout.selected_pay_type.value;
        if (KagiStore.Checkout.pay_type != pay_type) {
          KagiStore.Checkout.pay_type = pay_type;
          document.fire("pay_type:changed", {pay_type: pay_type});
        }
      return pay_type;
      }
  },
	
	processPayTypeChange: function(event) {
		KagiStore.logMessage('KagiStore.Checkout.processPayTypeChange Initiated!');
		KagiStore.logMessage('Payment Type: ' + event.memo.pay_type);
		KagiStore.Checkout.processPayType(true);
	},
	
	processPayType: function(animate) {
		KagiStore.logMessage('KagiStore.Checkout.processPayType Initiated!');
		KagiStore.Checkout.highlightSelectedPayType();
		if (KagiStore.Checkout.pay_type == 'paypal') {
			//KagiStore.Checkout.showAddress(false, animate);
			KagiStore.Checkout.showBillingAddress(false, animate);
			KagiStore.Checkout.showShippingAddress(false, animate);
			KagiStore.Checkout.showEmailAddress(false, animate);
			KagiStore.Checkout.checkSameAsBilling(true);

			KagiStore.Checkout.showPayPalButton(true);
			KagiStore.Checkout.showTrialpayNotice(false, animate);
			KagiStore.Checkout.showClickandBuyButton(false);
		} else if (KagiStore.Checkout.pay_type == 'trialpay') {
			//KagiStore.Checkout.showAddress(true, animate);
			KagiStore.Checkout.showBillingAddress(true, animate);
			KagiStore.Checkout.showShippingAddress(true, animate);
			KagiStore.Checkout.showEmailAddress(true, animate);
			KagiStore.Checkout.checkSameAsBilling(true);

			KagiStore.Checkout.showPayPalButton(false);
			KagiStore.Checkout.showTrialpayNotice(true, animate);
			KagiStore.Checkout.showClickandBuyButton(false);
		} else if (KagiStore.Checkout.pay_type == 'clickandbuy') {
			//KagiStore.Checkout.showAddress(false, animate);
			KagiStore.Checkout.showBillingAddress(false, animate);
			KagiStore.Checkout.showShippingAddress(true, animate);
			KagiStore.Checkout.showEmailAddress(false, animate);
			KagiStore.Checkout.checkSameAsBilling(false);

			KagiStore.Checkout.showPayPalButton(false);
			KagiStore.Checkout.showTrialpayNotice(false, animate);
			//KagiStore.Checkout.showClickandBuyButton(true);
			KagiStore.Checkout.showClickandBuyButton(false);
		} else {
			//KagiStore.Checkout.showAddress(true, animate);
			KagiStore.Checkout.showBillingAddress(true, animate);
			KagiStore.Checkout.showShippingAddress(true, animate);
			KagiStore.Checkout.showEmailAddress(true, animate);
			KagiStore.Checkout.checkSameAsBilling(true);

			KagiStore.Checkout.showPayPalButton(false);
			KagiStore.Checkout.showTrialpayNotice(false, animate);
			KagiStore.Checkout.showClickandBuyButton(false);
		}
	},
	
	highlightSelectedPayType: function() {
		var sel_li = KagiStore.Checkout.selected_pay_type.up('li');
		$$('.kagi-selected').invoke('removeClassName', 'kagi-selected');
		sel_li.addClassName('kagi-selected');
	},
	
	showAddress: function(show, animate) {
		KagiStore.logMessage('KagiStore.Checkout.showAddress Initiated!');
		var addr = $$('div.kagi-ppexp');
		if (addr.length == 0) { return; }
		var viz = addr[0].visible();
		if (show) {
			if (!viz) {
				if (animate && $w(KagiStore.browser_id).first() != 'Opera') {
					addr.collect(function(div) {
						new Effect.SlideDown(div, { duration: 0.2 });
					});
				} else {
					addr.invoke('show');
				}
			}
		} else {
			if (viz) {
				if (animate && $w(KagiStore.browser_id).first() != 'Opera') {
					addr.collect(function(div) {
						new Effect.SlideUp(div, { duration: 0.2 });
					});
				} else {
					addr.invoke('hide');
				}
			}
		}
	},
	
	
	checkSameAsBilling: function(check) {
		KagiStore.logMessage('KagiStore.Checkout.checkSameAsBilling Initiated!');
		if (check==false) {
			$('customer/shipping/sameasbilling_no').checked="true";
    } else{
      $('customer/shipping/sameasbilling').checked="true";
			
		}

	},

	
	showShippingAddress: function(show, animate) {
		KagiStore.logMessage('KagiStore.Checkout.showShipping Initiated!');
		var addr = $$('div#kagi-shipping_address div.kagi-ppexp');
		if (addr.length == 0) { return; }
		var viz = addr[0].visible();
		if (show) {
			if (!viz) {
				if (animate && $w(KagiStore.browser_id).first() != 'Opera') {
					addr.collect(function(div) {
						new Effect.SlideDown(div, { duration: 0.2 });
					});
				} else {
					addr.invoke('show');
				}
			}
		} else {
			if (viz) {
				if (animate && $w(KagiStore.browser_id).first() != 'Opera') {
					addr.collect(function(div) {
						new Effect.SlideUp(div, { duration: 0.2 });
					});
				} else {
					addr.invoke('hide');
				}
			}
		}
	},


	showBillingAddress: function(show, animate) {
		KagiStore.logMessage('KagiStore.Checkout.showBilling Initiated!');
		var addr = $$('div#kagi-billing_address div.kagi-ppexp');
		if (addr.length == 0) { return; }
		var viz = addr[0].visible();
		if (show) {
			if (!viz) {
				if (animate && $w(KagiStore.browser_id).first() != 'Opera') {
					addr.collect(function(div) {
						new Effect.SlideDown(div, { duration: 0.2 });
					});
				} else {
					addr.invoke('show');
				}
			}
		} else {
			if (viz) {
				if (animate && $w(KagiStore.browser_id).first() != 'Opera') {
					addr.collect(function(div) {
						new Effect.SlideUp(div, { duration: 0.2 });
					});
				} else {
					addr.invoke('hide');
				}
			}
		}
	},


	showEmailAddress: function(show, animate) {
		KagiStore.logMessage('KagiStore.Checkout.showEmail Initiated!');
		var addr = $$('div.kagi-email_address');
		if (addr.length == 0) { return; }
		var viz = addr[0].visible();
		if (show) {
			if (!viz) {
				if (animate && $w(KagiStore.browser_id).first() != 'Opera') {
					addr.collect(function(div) {
						new Effect.SlideDown(div, { duration: 0.2 });
					});
				} else {
					addr.invoke('show');
				}
			}
		} else {
			if (viz) {
				if (animate && $w(KagiStore.browser_id).first() != 'Opera') {
					addr.collect(function(div) {
						new Effect.SlideUp(div, { duration: 0.2 });
					});
				} else {
					addr.invoke('hide');
				}
			}
		}
	},


	showPayPalButton: function(show) {
		KagiStore.logMessage('KagiStore.Checkout.showPayPalButton Initiated!');
		var div = $('kagi-buttons_bottom');
		if (show) {
			div.addClassName('kagi-paypal');
		} else {
			div.removeClassName('kagi-paypal');
		}
	},

	showClickandBuyButton: function(show) {
		KagiStore.logMessage('KagiStore.Checkout.showClickandBuyButton Initiated!');
		var div = $('kagi-buttons_bottom');
		if (show) {
			div.addClassName('kagi-clickandbuy');
		} else {
			div.removeClassName('kagi-clickandbuy');
		}
	},
	
	showTrialpayNotice: function(show, animate) {
		KagiStore.logMessage('KagiStore.Checkout.showTrialpayNotice Initiated!');
		if (!$('kagi-trialpay_notice')) { return; }
		var note = $('kagi-trialpay_notice');
		var viz = note.visible();
		if (show) {
			if (!viz) {
				if (animate && $w(KagiStore.browser_id).first() != 'Opera') {
					new Effect.SlideDown(note, { duration: 0.2 });
				} else {
					note.show();
				}
			}
		} else {
			if (viz) {
				if (animate && $w(KagiStore.browser_id).first() != 'Opera') {
					new Effect.SlideUp(note, { duration: 0.2 });
				} else {
					note.hide();
				}
			}
		}
	}
}

KagiStore.Payment = {
	init: function() {
		KagiStore.logMessage('KagiStore Payment Initiated!');
		KagiStore.Payment.progress_bar = KagiStore.loadFile('kagi-form', 'IMG', {
			src:"/gif/OPTIONX/default/processing.gif", 
			alt: "Processing. Please Wait.",
			className: "kagi-processing",
			align: "right"});
		KagiStore.Payment.startObservers();
	},
	
	startObservers: function() {
		KagiStore.logMessage('KagiStore.Payment.startObservers Initiated!');
		if ($('kagi-buttons_bottom')) {
			$('kagi-form').observe('submit', function(event){
				KagiStore.Payment.disableButtons();
			});
		}
	},
	
	disableButtons: function() {
		KagiStore.logMessage('KagiStore.Payment.disableButtons Initiated!');
		var div = $('kagi-buttons_bottom');
		var overlay = KagiStore.DIV({className:'kagi-button_cover'});
		
		overlay.setOpacity('0.5');
		overlay.setStyle({
			height: div.getHeight() + 'px'
		});
		div.insert(overlay);
		
		new Effect.SlideDown(KagiStore.Payment.progress_bar, { duration: 0.2 });
	}
}

KagiStore.Help = {
	init: function() {
		KagiStore.logMessage('KagiStore.Help Initiated!');
		if (history.length > 1) {
			$$('span.kagi-back').invoke('show');
		}
		KagiStore.Help.goBack();
	},
	goBack: function() {
		KagiStore.logMessage('KagiStore.Help.goBack Initiated!');
		KagiStore.Help.o_hist = history.length;
		KagiStore.Help.goback = -1;
		if ($('kagi-iframe')) {
			$('kagi-iframe').observe('load', function(frame) {
				KagiStore.Help.goback = KagiStore.Help.o_hist - history.length;
				KagiStore.Help.goback = KagiStore.Help.goback - 1;
			});
		}
	}
}

KagiStore.Refunds = KagiStore.Help;
KagiStore.Privacy = KagiStore.Help;
KagiStore.Security = KagiStore.Help;
KagiStore.Kagi = KagiStore.Help;
KagiStore.Cvv2 = KagiStore.Help;
KagiStore.Backup = KagiStore.Help;
KagiStore.Lookup = KagiStore.Help;

KagiStore.Vbv = {
	init: function() {
		$('kagi-form').submit();		
	}
}

Builder.dump(KagiStore);  //Add script.aculo.us Builder library to base object

document.observe('dom:loaded', function() {
	KagiStore.init();
});
