var $j = jQuery.noConflict();

var specificOpen = false;
var standardOpen = false;

$j(document).ready( function() {
    //Dongle group form - text field validation
			$j("#dongleGroupForm").validate({
			    rules: { group: { required: true }},
			    messages: { group: { required: "Group name required" }}
			});
    //Specific activation code form - text field validation
			$j("#spc_form").validate({
			    rules: { application_id: { number: true },
				         integer_1: { range: [-9999999999, 9999999999] }, double_1: {range: [-4294967.295, 4294967.295] },
			             integer_2: { range: [-9999999999, 9999999999] }, double_2: {range: [-4294967.295, 4294967.295] },
			             integer_3: { range: [-9999999999, 9999999999] }, double_3: {range: [-4294967.295, 4294967.295] },
			             integer_4: { range: [-9999999999, 9999999999] }, double_4: {range: [-4294967.295, 4294967.295] },
			             integer_5: { range: [-9999999999, 9999999999] }, double_5: {range: [-4294967.295, 4294967.295] }},
			    messages: { application_id: { number: "Numerics only!" },
				            integer_1: { range: "<br>Whole numbers!" },double_1: { range: "<br>Decimal places!" },
			                integer_2: { range: "<br>0 to 65535" },double_2: { range: "<br>-4294967.295 to 4294967.295" },
			                integer_3: { range: "<br>0 to 65535" },double_3: { range: "<br>-4294967.295 to 4294967.295" },
			                integer_4: { range: "<br>0 to 65535" },double_4: { range: "<br>-4294967.295 to 4294967.295" },
			                integer_5: { range: "<br>0 to 65535" },double_5: { range: "<br>-4294967.295 to 4294967.295" }}
			});



        // hidden area
        $j('div.collapsible_panel > div').hide();
        $j('div.collapsible_panel > h2').click( function() {
            $j(this).siblings('h2').removeAttr('class');
            var my_div = $j(this).next('div:visible');
            $j(this).toggleClass('opened').next('div:hidden').slideDown('slow').siblings('div:visible').slideUp('slow');
            my_div.slideUp('slow');
        });

        //dongles table functions
        $j.tablesorter.defaults.widgets = ['zebra'];
        $j('#dongles_table').tablesorter();

        //dongles table check boxes
        $j("#select_all").click( function() {
            $j("#dongles_table :checkbox").each( function() {
                this.checked = true;
            });
        });
        $j("#unselect_all").click( function() {
            $j("#dongles_table :checkbox").each( function() {
                this.checked = false;
            });
        });


        function getSelectedDongleIds() {
            var result = "";
            $j('#dongles_table').find('input:checkbox:checked').each( function() {
                result = result + $j(this).parent().parent().attr('id') + ",";
            });
            result = result.substring(0,result.length-1);
            return result;
        }

        function getSelectedDongles() {
            var result = "";
            $j('#dongles_table').find('input:checkbox:checked').each( function() {
               result = result + $j(this).parent('td').next('td').text() + ",";
            });
            result = result.substring(0,result.length-1);
            return result;
        }

        /** Adds spaces after the commas to allow them to be correctly displayed on html */
        function getSelectedDonglesWithSpaces() {
            var result = "  ";
            $j('#dongles_table').find('input:checkbox:checked').each( function() {
                result = result + $j(this).parent('td').next('td').text() + ", ";
            });
            result = result.substring(0,result.length-2);
            /*/result.replace(/^\s+|\s+$/g,'');  Trims whitespaces */
            var trimmed = result.replace(/^\s+|\s+$/g, '');
            return trimmed;
        }


        //find all serial numbers for checked dongles
        $j('#std_button').click( function() {
            $j("#std_dongles").val( getSelectedDongles() );
            $j("#std_dongle_ids").val( getSelectedDongleIds() );
            var data = $j("#std_form").serialize();
            //var exp_date = $j("#std_expiry_date_human").val();
            data = dir_modifier + 'jqm_ac_confirm.php?type=std&' + data; // + '&std_expiry_date_human=' + exp_date;
            $j('#jqm').jqm( {ajax: data, trigger: 'false', modal:'true', toTop: 'true' } ).jqmShow();
        });



        $j('#spc_button').click( function() {
            $j("#spc_dongles").val( getSelectedDongles() );
            $j("#spc_dongle_ids").val( getSelectedDongleIds() );
            var data = $j("#spc_form").serialize();
            //var exp_date = $j("#spc_expiry_date_human").val();
            data = dir_modifier + 'jqm_ac_confirm.php?type=spc&' + data; // + '&spc_expiry_date_human=' + exp_date;
            $j('#jqm').jqm( {ajax: data, trigger: 'false', modal:'true', toTop: 'true' } ).jqmShow();
        });

        $j('#db_button').click( function() {
            // Updates the db only
            $j("#spc_dongles").val( getSelectedDongles() );
            $j("#spc_dongle_ids").val( getSelectedDongleIds() );
            var data = $j("#spc_form").serialize();
            data = dir_modifier + 'jqm_ac_confirm.php?type=spc&update_db_only=true&' + data;
            $j('#jqm').jqm( {ajax: data, trigger: 'false', modal:'true', toTop: 'true' } ).jqmShow();
        });

        // Stop Specific Form From submitting
        $j("#std_form").submit(function() {
               return false;
        });

        // Stop Specific Form From submitting
        $j("#spc_form").submit(function() {
             return false;
        });



        // change the dongle Group
        $j('#dg_button').click( function() {
            // Updates the group
            $j("#group_dongles").val( getSelectedDongles() );
            $j("#group_dongle_ids").val( getSelectedDongleIds() );
            var data = $j("#dongleGroupForm").serialize();
            data = dir_modifier + 'jqm_group_update_confirm.php?' + data;
            $j('#jqm').jqm( {ajax: data, trigger: 'false', modal:'true', toTop: 'true' } ).jqmShow();
        });
       // Stop Specific Form From submitting
        $j("#dongleGroupForm").submit(function() {
             return false;
        });
	   // change the recipient name
       $j('#recipient_button').click( function() {
          $j("#recipient_name_dongles").val( getSelectedDongles() );
          $j("#recipient_name_dongle_ids").val( getSelectedDongleIds() );
           var data = $j("#recipient_form").serialize();
           data = dir_modifier + 'jqm_recipient_update_confirm.php?' + data;
           $j('#jqm').jqm( {ajax: data, trigger: 'false', modal:'true', toTop: 'true' } ).jqmShow();
       });
       // Stop Specific Form From submitting
       $j("#recipient_form").submit(function() {
           return false;
       });

	   // change the recipient e-mail
       $j('#recipient_mail_button').click( function() {
          // Updates the group
          $j("#recipient_mail_dongles").val( getSelectedDongles() );
          $j("#recipient_mail_dongle_ids").val( getSelectedDongleIds() );
          var data = $j("#recipient_mail_form").serialize();
          data = dir_modifier + 'jqm_recipient_mail_update_confirm.php?' + data;
          $j('#jqm').jqm( {ajax: data, trigger: 'false', modal:'true', toTop: 'true' } ).jqmShow();
       });
       // Stop Specific Form From submitting
       $j("#recipient_mail_form").submit(function() {
           return false;
       });

	   // change the dongle status
       $j('#status_button').click( function() {
          // Updates the group
          $j("#status_dongles").val( getSelectedDongles() );
          $j("#status_dongle_ids").val( getSelectedDongleIds() );
          var data = $j("#status_form").serialize();
          data = dir_modifier + 'jqm_status_update_confirm.php?' + data;
          $j('#jqm').jqm( {ajax: data, trigger: 'false', modal:'true', toTop: 'true' } ).jqmShow();
       });
       // Stop Specific Form From submitting
       $j("#status_form").submit(function() {
           return false;
       });


	// Standard Activation Code callback from impromptu, v is the button value, m is the whole message.
	function sendStandardActivationCode(v,m) {
	    if (v) {
		//alert("Form:" +  );
		var data = $j("#std_form").serialize();
		$j.post( dir_modifier + "activation_code.php", data, function(response){
                    $j.prompt(response,
                    {
                        buttons: { Ok: true }
                    } );
		});
	    }
	    else {
		/** Not sending Standard Activation Codes */
	    }
	}




        //datepicker
        $j('.date').datepicker({ dateFormat: "dd-M-yy", altField: "#std_expiry_date", altFormat: "yymmdd", showOn: "both", buttonImage: dir_modifier + "images/cal_images/calendar.gif", buttonImageOnly: true });
        $j('.date2').datepicker({ dateFormat: "dd-M-yy", altField: "#spc_expiry_date", altFormat: "yymmdd", showOn: "both", buttonImage: dir_modifier + "images/cal_images/calendar.gif", buttonImageOnly: true });

        //table scroll bar
        /*$j('#dongles_table').Scrollable(200, 987);*/

        //tooltips
        /*$j('.tip').tooltip();*/

        // Add ability to select a dongle by clicking on its row.
        $j('#dongles_table tbody tr').hover( function() {
            $j(this).addClass('table-hover');
        }, function() {
            $j(this).removeClass('table-hover');
        }).find('td:gt(1)').click( function() {
            $j(this).parent().find(':checkbox').each( function() {
                if (this.checked) this.checked = false;
                else this.checked = true;
            });
        });


        $j("#dongles_filter_button").click( function() {
            /*var form_data = $j('#report_form').serialize();*/
            var filterWord = $j('#dongles_filter_text').val();
            var extras = "&mode=html";
            $j('#dongles_table_div').load( dir_modifier + 'create_dongles_table.php?randval=' + Math.random()+ '&filter=' + filterWord + extras,
            function() {
                $j("#dongles_table").tablesorter();
            });
            /*window.open('create_dongles_table.php?randval=' + Math.random()+ '&filter=' + filterWord + extras);*/
        });

        $j("#dongles_reset_button").click( function() {
            /*var form_data = $j('#report_form').serialize();*/
            var filterWord = "";
            $j('#dongles_filter_text').val("");
            $j('#dongles_table_div').load( dir_modifier + 'create_dongles_table.php?randval=' + Math.random()+ '&filter=' + filterWord,
            function() {
                $j("#dongles_table").tablesorter();
            });
        });




        // Special Values
        $j('img.edit_feature').hover(
            function() {
                $j(this).addClass('pretty-hover');
            }, function() {
                $j(this).removeClass('pretty-hover');
            }
        );

        $j("img.edit_feature").click( function() {
            var currentId = $j(this).attr('id'); // contains feature_name~special_values_id~value~name
                                                 // i.e. integer_1~1~119~Special Configuration
            var info = currentId.split("~");
            var feature_name = info[0];
            var special_values_id = info[1];
            var value = info[2];
            var name = escape(info[3]);
            var text = info[4];
            $j('#jqm_last_value').text(value);
            $j('#jqm_last_value_text').html(text);

            // What to do after dialog box is closed
            // onHide : fade the window out, remove overlay after fade.
            var rValue = value;
            var rValueText = text;
            var myClose = function(hash) {
                hash.w.fadeOut('2000', function(){
                    hash.o.remove();
                    rValue = $j('#jqm_last_value').text();
                    rValueText = $j('#jqm_last_value_text').html();
                    $j('#value_text_'+feature_name).html(rValueText);
                    $j('#value_'+feature_name).val(rValue);
                    //alert(rValue);
                });
            };
            //$('#dialog').jqm({onHide:myClose});

            //alert(currentId);
            //alert( feature_name + " " + special_values_id + " " + value + " " + name);
            
            data = dir_modifier + 'jqm_special_values_confirm.php?feature_name='+feature_name+"&special_values_id="+special_values_id+"&value="+escape(value)+"&name="+name;
            $j('#jqm').jqm( {ajax: data, trigger: 'false', modal:'true', toTop: 'true', onHide: myClose } ).jqmShow();
            //alert(rValue);
        });



    });