	// ajax requests object
	var ajaxRequest = {
		objName : 'ajaxRequest',
		autoSuggest: function(func, inputName, inputId) {
			$.post(site_url+"/ajax_request/", { func: func }, 
				function(data){	
					$(inputName).autocomplete({
						source: data,
						select: function(event, ui) {
							//alert(inputName);
							switch(inputId){
								case "txtMemberNameTo":
									$("#"+inputId).val(ui.item.f_name);
									//alert(ui.item.userid);
									$("#hdnMemberIdTo").val(ui.item.userid);
									$("#txtTransferDesc").val('TRANSFER TO '+ui.item.userid);
									$('.transferPointTrHide').fadeIn('slow');
									
									if($('#txtAmtToTransfer').val() != '' && $('#txtAmtToTransfer').val() > 0){
										$('#btnSave').attr('disabled', false);
									}else{
										$('#btnSave').attr('disabled', true);
										$('#txtAmtToTransfer').val(0);
										$('#txtAmtToTransfer').focus();
									}
									break;
							}
						},
						close: function(event, ui) {
							//$('#txtAmtToTransfer').focus();		
						}
					});
					
				}, 
				"json"
			);
		},
		getAutoSuggestWords: function(func, fieldId, idHandler, extra, extra2) {
			$.post(site_url+"/ajax_request/", { func: func, label_disp:extra2}, 
				function(data){	
					var valid = 'no';
					// console.log(data);
					$(fieldId).autocomplete({
						source: data,
						minLength: 1,
						select: function(event, ui) {
							$(idHandler).val(ui.item.id);
							
							if(extra != ''){
								$('#txtStockOnHand').val(ui.item.on_hand_qty);
								//$('#txtUnitPrice').val(myHelper.numberFormat(ui.item.retail_price, 2));
								
								if(segment1 == 'cart'){ // for member
									$('#txtUnitPrice').val(myHelper.numberFormat(parseFloat(ui.item.member_price)+parseFloat(ui.item.member_gst), 2));
								}else{ // for customer
									$('#txtUnitPrice').val(myHelper.numberFormat(parseFloat(ui.item.retail_price)+parseFloat(ui.item.gst), 2));			
								}
								
								var amt = 0;
		  						amt = myHelper.computeAmount($('#txtQty').val(), $('#txtUnitPrice').val(), $('#txtFee').val(), $('#txtTax').val());	
								$('#txtAmount').val(myHelper.numberFormat(amt, 2))
							}
							
							valid = 'yes';
						},
						close: function(event, ui) {
							if($(idHandler).val() == ""){
								$(fieldId).val('');
							}
							/*if(valid == 'no'){
								$(fieldId).val('');
							}*/
						}
					});
					
				}, 
				"json"
			);
		},
		getTicketFaqInfo: function(func, id) {
			$.post(site_url+"/ajax_request/", { func: func, id:id }, 
				function(data){	
					$('#txtReply').val(data.content);
					
					if($('#txReply').val() != '')
						$('#btnReply').attr('disabled', false);
					else
						$('#btnReply').attr('disabled', true);
				}, 
				"json"
			);
		}
	};
	
	var myHelper = {
		objName : 'myHelper',
		numberFormat : function(number, decimals, dec_point, thousands_sep) {
			// *     example 1: number_format(1234.56);
			// *     returns 1: '1,235'
			// *     example 2: number_format(1234.56, 2, ',', ' ');
			// *     returns 2: '1 234,56'
			// *     example 3: number_format(1234.5678, 2, '.', '');
			// *     returns 3: '1234.57'
			// *     example 4: number_format(67, 2, ',', '.');
			// *     returns 4: '67,00'
			// *     example 5: number_format(1000);
			// *     returns 5: '1,000'
			// *     example 6: number_format(67.311, 2);
			// *     returns 6: '67.31'
			// *     example 7: number_format(1000.55, 1);
			// *     returns 7: '1,000.6'
			// *     example 8: number_format(67000, 5, ',', '.');
			// *     returns 8: '67.000,00000'
			// *     example 9: number_format(0.9, 0);
			// *     returns 9: '1'
			// *     example 10: number_format('1.20', 2);
			// *     returns 10: '1.20'
			// *     example 11: number_format('1.20', 4);
			// *     returns 11: '1.2000'
			// *     example 12: number_format('1.2000', 3);
			// *     returns 12: '1.200'
			var n = number, prec = decimals;
			
			if(isNaN(n)){
				n = this.removeCommas(n);
			}
			
			var toFixedFix = function (n,prec) {
				var k = Math.pow(10,prec);
				return (Math.round(n*k)/k).toString();
			};
		 
			n = !isFinite(+n) ? 0 : +n;
			prec = !isFinite(+prec) ? 0 : Math.abs(prec);
			var sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep;
			var dec = (typeof dec_point === 'undefined') ? '.' : dec_point;
		 
			var s = (prec > 0) ? toFixedFix(n, prec) : toFixedFix(Math.round(n), prec); //fix for IE parseFloat(0.55).toFixed(0) = 0;
		 
			var abs = toFixedFix(Math.abs(n), prec);
			var _, i;
		 
			if (abs >= 1000) {
				_ = abs.split(/\D/);
				i = _[0].length % 3 || 3;
		 
				_[0] = s.slice(0,i + (n < 0)) +
					  _[0].slice(i).replace(/(\d{3})/g, sep+'$1');
				s = _.join(dec);
			} else {
				s = s.replace('.', dec);
			}
		 
			var decPos = s.indexOf(dec);
			if (prec >= 1 && decPos !== -1 && (s.length-decPos-1) < prec) {
				s += new Array(prec-(s.length-decPos-1)).join(0)+'0';
			}
			else if (prec >= 1 && decPos === -1) {
				s += dec+new Array(prec).join(0)+'0';
			}
			return s;
		}, 
		removeCommas : function(num){
			var StartNumber = num;
			var ReplacedNumber = StartNumber.replace(/\,/g,'');
			return parseFloat(ReplacedNumber);	
		},
		checkProductIfExists : function(selector, id){
			var ctr = 0;
			$(selector).each(function(){
				if($(this).val() == id){
					ctr++;
				}
			});
			return ctr;
		},
		computeAmount: function(qty, unit_cost, fee, tax){
			var amt = 0;
			var _qty = myHelper.removeCommas(qty);
			var _unit_cost = myHelper.removeCommas(unit_cost);
			var _fee = myHelper.removeCommas(fee);
			var _tax = myHelper.removeCommas(tax);
			
			amt = ((_qty * _unit_cost) + _fee) - _tax;
			return amt;
		}
		
	};
	
	
	var myTable = {
		objName : 'myTable',
		addRow : function(tblId, data) {
			switch(tblId){
				case 'tblProductList':
				
					console.log(data[0].value);
					break;
				case 'tblPurchaseProductList':
					
					$("#"+tblId).find('tbody').append('<tr>'+
						'<td><a href="#" class="lnkDelete" title="Remove Product" rel="#yesno">'+
							'<img src="'+base_url+'public/images/x.png" />'+
						'</a></td>'+
						'<td><input type="text" name="txtProdName[]" class="txtProdName" value="'+data[0].value+'" readonly="readonly" />'+
						'<input type="hidden" name="hdnProdId[]" class="hdnProdId" value="'+data[1].value+'" /></td>'+
						'<td><input type="text" name="txtProdQty[]" class="txtProdQty" value="'+data[2].value+'" ></td>'+
						'<td><input type="text" name="txtProdPrice[]" class="txtProdPrice" value="'+data[3].value+'" ></td>'+
						'<td><input type="text" name="txtProdFee[]" class="txtProdFee" value="'+data[4].value+'" ></td>'+
						'<td><input type="text" name="txtProdTax[]" class="txtProdTax" value="'+data[5].value+'" ></td>'+
						'<td><input type="text" name="txtProdAmount[]" class="txtProdAmount" value="'+data[6].value+'" readonly="readonly" ></td>'+
					'</tr>');
					
					
					$('#'+tblId+' tbody tr:last .lnkDelete').bind('click', function(event){
						var handler = $(this);
						event.preventDefault();
						$(handler).parent().parent().fadeOut('slow', function(){
							handler.parent().parent().remove();
							var total_amt = 0;
							$('#'+tblId+' .txtProdAmount').each(function(){
								total_amt += parseFloat(myHelper.removeCommas($(this).val()));	
							});
							
							$('#'+tblId+' #txtTotalAmount').val(myHelper.numberFormat(total_amt, 2));	
						});
					});
					
				
					$('#'+tblId+' tbody tr:last .txtProdQty, #'+tblId+' tbody tr:last .txtProdPrice, #'+tblId+' tbody tr:last .txtProdFee, #'+tblId+' tbody tr:last .txtProdTax').bind('change', function(event){
						var handler = $(this).parent().parent();
						var amt = 0;
						var total_amt = 0;
						
						// formula ((qty * unit cost) + fee) - tax
						amt = myHelper.computeAmount($(handler).find('input:eq(2)').val(), $(handler).find('input:eq(3)').val(), $(handler).find('input:eq(4)').val(),$(handler).find('input:eq(5)').val());
						
						handler.find('input:eq(6)').val(myHelper.numberFormat(amt, 2));
						
						$('#'+tblId+' .txtProdAmount').each(function(){
							total_amt += parseFloat(myHelper.removeCommas($(this).val()));	
						});
						
						$('#'+tblId+' #txtTotalAmount').val(myHelper.numberFormat(total_amt, 2));	
					});
					
					var total_amt2 = 0;
					$('#'+tblId+' .txtProdAmount').each(function(){
						total_amt2 += parseFloat(myHelper.removeCommas($(this).val()));	
					});
					
					$('#'+tblId+' #txtTotalAmount').val(myHelper.numberFormat(total_amt2, 2));	
					
					break;
				case 'tblSalesProductList':
					
					$("#"+tblId).find('tbody').append('<tr>'+
						'<td><a href="#" class="lnkDelete" title="Remove Product" rel="#yesno">'+
							'<img src="'+base_url+'public/images/x.png" />'+
						'</a></td>'+
						'<td><input type="text" name="txtProdName[]" class="txtProdName" value="'+data[0].value+'" readonly="readonly" />'+
						'<input type="hidden" name="hdnProdId[]" class="hdnProdId" value="'+data[1].value+'" /></td>'+
						'<td><input type="text" name="txtProdQty[]" class="txtProdQty" value="'+data[2].value+'" ></td>'+
						'<td><input type="text" name="txtProdPrice[]" class="txtProdPrice" value="'+data[3].value+'" ></td>'+
						'<td><input type="text" name="txtProdFee[]" class="txtProdFee" value="'+data[4].value+'" ></td>'+
						'<td><input type="text" name="txtProdTax[]" class="txtProdTax" value="'+data[5].value+'" ></td>'+
						'<td><input type="text" name="txtProdAmount[]" class="txtProdAmount" value="'+data[6].value+'" readonly="readonly" ></td>'+
					'</tr>');
					
					
					$('#'+tblId+' tbody tr:last .lnkDelete').bind('click', function(event){
						var handler = $(this);
						event.preventDefault();
						$(handler).parent().parent().fadeOut('slow', function(){
							handler.parent().parent().remove();
							var total_amt = 0;
							$('#'+tblId+' .txtProdAmount').each(function(){
								total_amt += parseFloat(myHelper.removeCommas($(this).val()));	
							});
							
							$('#'+tblId+' #txtTotalAmount').val(myHelper.numberFormat(total_amt, 2));	
						});
					});
					
				
					$('#'+tblId+' tbody tr:last .txtProdQty, #'+tblId+' tbody tr:last .txtProdPrice, #'+tblId+' tbody tr:last .txtProdFee, #'+tblId+' tbody tr:last .txtProdTax').bind('change', function(event){
						var handler = $(this).parent().parent();
						var amt = 0;
						var total_amt = 0;
						
						// formula ((qty * unit cost) + fee) - tax
						amt = myHelper.computeAmount($(handler).find('input:eq(2)').val(), $(handler).find('input:eq(3)').val(), $(handler).find('input:eq(4)').val(),$(handler).find('input:eq(5)').val());
						
						handler.find('input:eq(6)').val(myHelper.numberFormat(amt, 2));
						
						$('#'+tblId+' .txtProdAmount').each(function(){
							total_amt += parseFloat(myHelper.removeCommas($(this).val()));	
						});
						
						$('#'+tblId+' #txtTotalAmount').val(myHelper.numberFormat(total_amt, 2));	
					});
					
					var total_amt2 = 0;
					$('#'+tblId+' .txtProdAmount').each(function(){
						total_amt2 += parseFloat(myHelper.removeCommas($(this).val()));	
					});
					
					$('#'+tblId+' #txtTotalAmount').val(myHelper.numberFormat(total_amt2, 2));	
					
					break;
				
			}
		}
	};
	
	// datepicker object
	var myDatepicker = {
		objName : 'myDatepicker',
		advanced : function() {
			$("#txtDateFrom,#txtDateTo").datepicker({ 
				showOn: "both", 
				buttonImage: base_url + 'public/images/calendar.gif',
				buttonImageOnly: true, 
				changeMonth: true,
				changeYear: true,
				dateFormat: $.datepicker.ATOM,
				onChangeMonthYear: function(year, month, inst) { 
					var date_from = $('#txtDateFrom').val();
					var date_to = $('#txtDateTo').val();
					var date_from_month = month;
					
					var day_from  = date_from.substr(8,2);
					var month_from = date_from.substr(5,2);
					var year_from  = date_from.substr(0,4);
					
					var day_to  = date_to.substr(8,2);
					var month_to = date_to.substr(5,2);
					var year_to  = date_to.substr(0,4);
					
					if(inst.id == 'txtReportsDateFrom'){
						date_from_month = date_from_month < 10 ? '0' + date_from_month : date_from_month;
						if(date_from_month.toString() != month_from && year_from == year_to){
							var day_to = daysInMonth(date_from_month, year_to);
							$('#txtDateFrom').val(year_from+'-'+date_from_month.toString()+'-'+day_from);
							$('#txtDateTo').val(year_to+'-'+date_from_month.toString()+'-'+day_to);
						}
					}
				}
			});	
		},
		basic : function(initial_val) {
			$("#txtOrderDate").datepicker({ 
				showOn: "both", 
				buttonImage: base_url + 'images/calendar.gif',
				buttonImageOnly: true, 
				changeMonth: true,
				changeYear: true,
				dateFormat: $.datepicker.ATOM
			});	
		}
	};
	
$(document).ready(function(){
						   
	// for spam guard/captcha
	$('#change-image').click(function(event){
		event.preventDefault();
		$('#captcha').attr('src', base_url+'/system/application/helpers/captcha/captcha.php?'+Math.random());
		$('#captcha-form').focus();
	});
	
	
	// first example
	$("#navigation").treeview({
		persist: "location",
		collapsed: true,
		unique: true
	});
	
	// second example
	$("#browser").treeview();
	$("#add").click(function() {
		var branches = $("<li><span class='folder'>New Sublist</span><ul>" + 
			"<li><span class='file'>Item1</span></li>" + 
			"<li><span class='file'>Item2</span></li></ul></li>").appendTo("#browser");
		$("#browser").treeview({
			add: branches
		});
		branches = $("<li class='closed'><span class='folder'>New Sublist</span><ul><li><span class='file'>Item1</span></li><li><span class='file'>Item2</span></li></ul></li>").prependTo("#folder21");
		$("#browser").treeview({
			add: branches
		});
	});
	
	// third example
	$("#red").treeview({
		animated: "fast",
		collapsed: true,
		unique: true,
		persist: "cookie",
		toggle: function() {
			window.console && console.log("%o was toggled", this);
		}
	});
	
	// fourth example
	$("#black, #gray").treeview({
		control: "#treecontrol",
		persist: "cookie",
		cookieId: "treeview-black"
	});

});
