$(document).ready(function(){


    var labels_container = $("#labels");
    if (!labels_container.is(':visible')){
        if ($("#set_label").is(":checked")){
             var codes = $('#code_textarea').val();

              if (codes.length){
                var array_codes = codes.split('\n');
                var content = '<table><tr><th>Barcodes</th><th>Labels</th></tr>';

                var label_values = $("#label_values").val();
                var labels = label_values.split(",");

                for(i=0;i<array_codes.length;i++){
                    content += '<tr><td>' + array_codes[i] + '</td><td><input type="text" id="alternativeLabel'+
                    i+'" name="alternativeLabel'+i+'" value="' + labels[i] + '" size="20"/></td></tr>';
                }
                content += '</table>';

                labels_container.append(content);
                labels_container.show();
            }else{
                $("#set_label").attr('checked', false);
            }

            var series_type_value = $("#series_type_value").val();
            $("input[name=SeriesType][value=" + series_type_value + "]").attr('checked',true);
         }
    }
	
	$('#codetype').change(function(){
		var codetype = $('#codetype').val();
		if(codetype == 5){
			$('#check_char option[value="N"]').attr('selected','selected');
		} else {
			$('#check_char option[value="Y"]').attr('selected','selected');
		}
		
	})
	
	$('#code_form').submit(function(){
		var codes = $('#code_textarea').val();
		var series = ($('#series_radio').attr('checked'))?true:false;
		if(series){
			var total_codes = (parseInt($('#last_code').val()) - parseInt($('#start_code').val()))/(parseInt($('#inc_code').val()));
			if(parseInt(total_codes) > 100){
				alert('Note: The FREE Barcode Generator can produce up to 100 barcodes at a time, please create a Serialio.com store account to remove this limit');
				return false;
			}
		} else if(codes){
			var array_codes = codes.split('\n');
			if(array_codes.length>100){
				alert('Note: The FREE Barcode Generator can produce up to 100 barcodes at a time, please create a Serialio.com store account to remove this limit');
				return false;
			}
		}

                var index = 0;
                var labels = '';
               do{
                   var label = $('#alternativeLabel'+index++);
                   if (label.length){
                       if (labels != ''){
                           labels += ',';
                       }
                       labels += label.val();
                   }
               } while(label.length);

               if (labels != ''){
                    var label_values = $('#label_values');
                    label_values.val(labels);
               }

               var seris_types_value = $("input[name=SeriesType]:checked").val();
               $('#series_type_value').val(seris_types_value);
	})

        $("#set_label").click(function(){

            var labels = $("#labels");
            var labels_barcodes = $('#labels_barcodes');

            if (!$("#set_label").is(":checked")){
                var labels_values = '';
                var index = 0;
                 do{
                     var code = $('#barcodeLabel'+index);
                     var label = $('#alternativeLabel'+index++);

                    if (label.length){
                        if (labels_values != ''){
                             labels_values += ',,';
                        }
                        labels_values += code.text() + '==' + label.val();
                    }
                   } while(label.length);

                   if (labels_values != ''){
                        labels_barcodes.val(labels_values);
                   }
            }
            labels.empty();

           if ($("#set_label").is(":checked")){

               var code_control = $('#code_textarea');
               var codes = code_control.val();
               if (codes == ''){
                    alert('Please specified barcode(s) first.');
                    code_control.focus();
                    return false;
               }

               var labels_barcodes_value = labels_barcodes.val();
               var labels_data = new Array();
               var barcodes_data = new Array();
               if (labels_barcodes_value.length){
                   labels_barcodes_array = labels_barcodes_value.split(',,');

                   for(i=0;i<labels_barcodes_array.length;i++){
                       labels_barcodes_line = labels_barcodes_array[i].split('==');
                       barcodes_data[i] = labels_barcodes_line[0]
                       labels_data[i] = labels_barcodes_line[1];
                   }
               }
               var array_codes = codes.split('\n');              
               var content = '<table><tr><th>Barcodes</th><th>Labels</th></tr>';
               
               for(i=0;i<array_codes.length;i++){
                   var label_value = '';
                   var barcodes_data_index = barcodes_data.indexOf(array_codes[i], 0);
                   if(barcodes_data_index != -1){
                       if (labels_data[barcodes_data_index] != undefined){
                           label_value = labels_data[barcodes_data_index];
                       }
                   }
                   content += '<tr><td><div id="barcodeLabel'+i+'">' + array_codes[i] + '</div></td><td><input type="text" id="alternativeLabel'+i+'" name="alternativeLabel'+i+'" size="20" value="'+label_value+'"/></td></tr>';
               }
               content += '</table>';

               labels.append(content);

                var firstEditbox = $('#alternativeLabel1');
                firstEditbox.focus();

                labels.fadeIn(500);
            } else {
                labels.fadeOut(500);
            }
        });

        jQuery("#createURL").click(function(){
           var code_control = $('#code_textarea');
           var codes = code_control.val();
           if (codes == ''){
                alert('Please specified barcode(s).');
                code_control.focus();
                return false;
            }

            var barcodes = '';

            var array_codes = codes.split('\n');
            if(array_codes.length>100){
                    alert('Note: The FREE Barcode Generator can produce up to 100 barcodes at a time, please create a Serialio.com store account to remove this limit');
                    return false;
            }
            codes = codes.replace(',', ',,', 'g');
            barcodes = codes.replace('\n', ',', 'g');

            var labels = '';
            if ($("#set_label").is(":checked")){
                 for(i=0;i<array_codes.length;i++){
                     var label = $('#alternativeLabel'+i);
                     if (label){
                         if (i != 0){
                             labels += ', ';
                         }
                        labels +=  label.val();
                     }
                 }
            }

            var url_value = 'http://serialio.com/Tools/Barcode/barcode_gen.php?mk=1';            

            var series_types_value = $("input[name=SeriesType]:checked").val();
            url_value += '&rb=' + encodeURLParameter(series_types_value);
            url_value += '&bc=' + encodeURLParameter(barcodes);

            if (labels != ''){
                url_value += '&lb=' + encodeURLParameter(labels);
            }

            var bar_height = $("#bar_height").val();

            if (bar_height != ''){
                url_value += '&bar_h=' + encodeURLParameter(bar_height);
            }

            var url = '<br><a href="'+url_value+'">'+url_value+'</a>';
            var url_control = $('#url');
            url_control.html(url);
        });


        if($('#download_barcodes').get(0)){
	    $('#download_barcodes').click(function(){

                var url_name = $('#url_name');
                var url = url_name.val();
                if (url == ''){
                    alert('Please specified url.');
                    url_name.focus();
                    return false;
                }

                if(!/^(https?|ftp):\/\//i.test(url)) {
                    url = 'http://'+url;
                    url_name.val(url);
                }

                if (!checkURL(url)){
                    alert('Please specified valid url.');
                    url_name.focus();
                    return false;
                }

                $('#loading').show();
                $('#download_barcodes').hide();

                $.post(
                    'barcode_gen.php',
                    {'action':'process',
                    'url_for_download':url},
                    function (resp) {
                             $('#loading').hide();
                             $('#download_barcodes').show();
                             var code_textarea = $('#code_textarea');
                             code_textarea.empty();
                             var labels = $("#labels");
                             labels.empty();
                             $("#set_label").attr('checked', false);
                             var container = $('#results_errors');
                             container.empty();

                            if (resp.errors && resp.errors.length > 0){                               
                                container.html('')
                                for(i=0;i<resp.errors.length;i++){
                                    container.append(resp.errors[i]);
                                    container.append('<br/>');
                                }
                                container.append('<br/>');
                                container.slideDown(200);
                            }
                            if (resp.data){
                                
                                code_textarea.text(resp.data);
                            }
                            if (resp.barcodes && resp.labels){
                                content = '<table><tr><th>Barcodes</th><th>Labels</th></tr>';
                                for(i=0;i<resp.barcodes.length;i++){
                                    content += '<tr><td>' + resp.barcodes[i] + 
                                        '</td><td><input type="text" id="alternativeLabel'+i+'" name="alternativeLabel'+i+'" value="'+resp.labels[i]+'" size="20"/></td></tr>';
                                }
                                content += '</table>';

                                labels.append(content);
                                $("#set_label").attr('checked', true);
                                labels.show();
                            }
                    },
                    'json'
	        );
	       
	        return false;
	    })
	}
});

function checkURL(value) {
  var urlregex = new RegExp(
        "^(http:\/\/|http:\/\/www.|https:\/\/www.|ftp:\/\/www.|www.){1}([0-9A-Za-z]+\.)");
  if(urlregex.test(value)) {
    return true;
  }
  return false;
}

function encodeURLParameter(value){
    var encodedInputString=escape(value);
    encodedInputString=encodedInputString.replace("+", "%2B", 'g');
    encodedInputString=encodedInputString.replace("/", "%2F", 'g');
    return encodedInputString;
}
