var PageShoppingCart = {
	div_ids: {
		btn_clear: 'btn_clear_cart',
		btn_continue: 'btn_continue',
		btn_checkout: 'btn_checkout'
	},

	init: function() {
		var bcl = $(this.div_ids['btn_clear']);
		if (bcl) {
			bcl.onclick = function() {
				ITcraft.showConfirm("Are you sure you want to remove all items from your cart?", "Shopping Cart", function(){document.location = '?cmd=clear_cart';});
			};
		}

		var bc = $(this.div_ids['btn_continue']);
		if (bc) {
			bc.onclick = function() {
				document.location = '?cmd=continue_shopping';
			};
		}
		var bcheckout = $(this.div_ids['btn_checkout']);
		if (bcheckout && !bcheckout.disabled) {
			bcheckout.onclick = function() {
				document.location = 'https://' +document.location.host+'/order/details/?return='+ITcraft.getCookie('PHPSESSID');
			}
		}
	}
};

var PagePrePay = {
	div_ids: {
		form_id: 'customer_info_form',
		copy_btn: 'copy_info_btn',
		form_mask_element: 'form_pre_pay_mask'
	},

	init: function() {
		this.form = new ITcraft.ajaxForm({
			form: this.div_ids['form_id'],
			mask_element: this.div_ids['form_mask_element'],
			listeners: {
				onSuccess: function(d) {
					document.location = '/order/summary/';
				},
				scope: this
			}
		});

		this.billing_elements = {};
		this.contact_elements = {};

		var copy_btn = document.getElementById(this.div_ids['copy_btn']);
		if (copy_btn) {
			copy_btn.onclick = this.copyContactToBillingInfo.bind(this);

			var f_el = document.getElementById(this.div_ids['form_id']);

			if (f_el) {
				var fields_list = {
					first_name: 1,
					last_name: 1,
					company: 1,
					phone_code: 1,
					phone: 1,
					email: 1,
					address: 1,
					address2: 1,
					city: 1,
					country_id: 1,
					state_id: 1,
					zip: 1
				};

				var call_stack = [];
				for(var i=0; i<f_el.elements.length; i++) {
					var el = f_el.elements[i];

					var f_contact = el.name.replace(/(?:c_info\[)(.*)(?:\])/, "$1");
					var f_billing = el.name.replace(/(?:b_info\[)(.*)(?:\])/, "$1");

					if (fields_list[f_contact]) {
						this.contact_elements[f_contact] = el;
					}

					if (fields_list[f_billing]) {
						this.billing_elements[f_billing] = el;
					}
				}

				for(var i=0; i<call_stack.length; i++) {
					call_stack[i]();
				}
			} /*else {
				alert('Form not found');
			}*/
		} /*else {
			alert('Btn not found');
		}*/
	},

	copyContactToBillingInfo: function() {
		for(var name in this.billing_elements) {
			var t = this.billing_elements[name];
			if (!this.contact_elements[name]) {
				continue;
			}
			var d = this.contact_elements[name];
			var allowed_type = true;
			switch(t.type) {
				case 'text':
					t.value = d.value;
					break;

				case 'select-one':
					var l = {};
					for(var i=0; i<d.options.length; i++) {
						l[d.options[i].value] = d.options[i].text;
					};
					UserAction.updateStateSelector(t, l);
					t.setValue(d.value);
					break;

				default:
					allowed_type = false;
					break;
			}

			if (allowed_type) {
				t.disabled = d.disabled;
				var is_valid = !d.is_invalid ? true : false;
				var mes = !is_valid && d.error_div ? d.error_div.innerHTML : '';
				this.form._setFieldState(t, is_valid, mes);
			}
		}
	}
};

var PagePay = {
	div_ids: {
		form_id: 'order_info_form',
		edit_btn1: 'btn_edit_billing_info',
		edit_btn2: 'btn_edit_contact_info',
		form_mask_el: 'form_mask_element',
		payment_types: [
			'rb_payment_type_1', 'rb_payment_type_2'
		],

		dop_divs: {
			'PayPal': 'PayPal_div_element',
			'Authorize': 'Authorise_div_element'
		}
	},

	init_commands: {
		block_pay_pal: false
	},

	init: function() {
		var new_form = new ITcraft.ajaxForm({
			form: this.div_ids['form_id'],
			mask_element: this.div_ids['form_mask_el'],
			listeners: {
				onSuccess: function(d) {
					document.location = '/order/summary/?cmd=pay';
				},
				scope: this
			}
		});

		this.dop_divs = {};
		for(var i in this.div_ids['dop_divs']) {
			this.dop_divs[i] = $(this.div_ids.dop_divs[i]);
		};

		var pt = this.div_ids['payment_types'];
		for(var i=0; i<pt.length; i++) {
			var r = document.getElementById(pt[i]);
			if (r) {
				r.onclick = this.onPaymentTypeChange.bind(this, r);
				if (r.checked) {
					r.onclick();
				}
			}
		};

		var b1 = $(this.div_ids['edit_btn1']);
		var b2 = $(this.div_ids['edit_btn2']);
		if (b1 && b2) {
			b2.onclick = b1.onclick = this.onEditBtn;
		}

		for(var i in this.init_commands) {
			if(this.init_commands[i] == true) {
				if(i == 'block_pay_pal') {
					var pp_r = document.getElementById(this.div_ids.payment_types[0]);
					if (pp_r) {
						var au_r = document.getElementById(this.div_ids.payment_types[1]);
						if (au_r) {
							au_r.checked = true;
							au_r.onclick({target:au_r});
						}
						pp_r.disabled = true;

					}
				}
			}
		}

	},

	onEditBtn: function() {
		document.location = '/order/details/';
	},

	onPaymentTypeChange: function(el) {
		if (!this.dop_divs[el.value]) return false;
		var cel = this.dop_divs[el.value];

		cel.style.display = '';
		for(var i in this.dop_divs) {
			if (el.value != i) {
				this.dop_divs[i].style.display = 'none';
			}
		}
	}
};

//page service subscriptions
var PageSS = {
	with_autoupdate: false,

	auSet: function(checkbox) {
		PageSS.with_autoupdate = checkbox && checkbox.checked ? true : false;
	},

	onCancel: function(subscription_id) {
		var msg = 'Are you sure?';
		var title = 'Cancel Service';

		var send_cancel_request = function(sub_id) {
			var url = "?cmd=decline&sid="+sub_id;
			document.location = url;
		};

		ITcraft.showConfirm(msg, title, send_cancel_request.bind(this, subscription_id));
	},

	onProlong: function(subscription_id, allow_autoupdate) {
		this.with_autoupdate = false;

		var send_prolong_request = function(sub_id) {
			var url = "?cmd=prolong_subscription&sid=" + sub_id;
			if (this.with_autoupdate) {
				url += "&autoupdate=1";
			}
			document.location = url;
		};

		if (allow_autoupdate == '1') {
			this.with_autoupdate = true;

			var msg = 'Do you want this service to be automatically renewed <input type="checkbox" onclick="PageSS.auSet(this);" checked /> ?';
			var title = 'Prolong Service';

			ITcraft.showAlert(
				msg,
				title,
				send_prolong_request.bind(this, subscription_id),
				this
			);
		} else {
			send_prolong_request.apply(this, [subscription_id]);
		}
	}
};

//page payments history
var PagePHistory = {
	target_url: '/http/transactions_history.php',

	getOrderItems: function(order_id, el) {
		el = el.parentNode;
		var r = new Ajax.Request(
			this.target_url,
			{
				parameters: {
					cmd: 'get_order_items',
					order_id: order_id
				},
				onSuccess: function(transport, json) {
					el.innerHTML = transport.responseText;
				}
			}
		)
	},

	getSubPayments: function(sub_id, el) {
		el = el.parentNode;
		var r = new Ajax.Request(
			this.target_url,
			{
				parameters: {
					cmd: 'get_subscription_payments',
					subscription_id: sub_id
				},
				onSuccess: function(transport, json) {
					el.innerHTML = transport.responseText;
				}
			}
		)
	},

	getPayoutInfo: function(payout_id, el){
		el = el.parentNode;
		var r = new Ajax.Request(
			this.target_url,
			{
				parameters: {
					cmd: 'get_payout_info',
					payout_id: payout_id
				},
				onSuccess: function(transport, json) {
					el.innerHTML = transport.responseText;
				}
			}
		)
	},
	
	CDM: function(el) {
		var c_cont = el.parentNode;
		var container = c_cont.parentNode;
		if (c_cont && container) {
			var n_cont = null;
			for(var i=0; i<container.childNodes.length; i++) {
				n_cont = container.childNodes[i];
				if (n_cont.tagName == c_cont.tagName && n_cont != c_cont) {
					break;
				}
			}

			if(n_cont && c_cont) {
				c_cont.style.display = 'none';
				n_cont.style.display = '';
			}
		}
	}
};

var PageContactUs = {
	div_ids: {
		form_id: 'contact_us_form',
		form_mask_element: 'mask_container'
	},

	init: function() {
		this.form = new ITcraft.ajaxForm({
			form: this.div_ids['form_id'],
			mask_element: this.div_ids['form_mask_element'],
			listeners: {
				onSuccess: function(d) {
					this.form.reset();
				},
				scope: this
			}
		});
	}
};