   var BROWSER                          = '';
   var ACTIVE                           = 'Active';
   var INACTIVE                         = 'Inactive';
   var CONFIRM_STATUS_CHANGE            = 'Are you sure you want to change the status to ';
   var editFlag                         = false;

   var RULE_GROUP_ADD_SUCCESS           = 'Thanks, A new Rule Group has been added!';
   var RULE_GROUP_ADD_FAILURE           = 'Sorry, new Rule Group cant be added!';
   var RULE_GROUP_EDIT_SUCCESS          = 'Thanks, Rule Group Information has been updated!';
   var RULE_GROUP_EDIT_FAILURE          = 'Sorry, Rule Group Information cant be updated!';

   var SECTION_EDIT_SUCCESS             = 'Thanks, Section Information has been updated!';
   var SECTION_EDIT_FAILURE             = 'Sorry, Section Information cant be updated!';

   var RULE_ADD_SUCCESS                 = 'Thanks, A new Rule has been added!';
   var RULE_ADD_FAILURE                 = 'Sorry, new Rule cant be added!';
   var RULE_EDIT_SUCCESS                = 'Thanks, Rule Information has been updated!';
   var RULE_EDIT_FAILURE                = 'Sorry, Rule Information cant be updated!';

   var ADD_RULE_EMPTY_FIELD             = 'Please fill up the Rule Name & Rule Priority field!';
   var ADD_GROUP_EMPTY_FIELD            = 'Please fill up the Name, Priority & Control field!';
   var ADD_SECTION_EMPTY_FIELD          = 'Please fill up the Name & Control field!';
   var ADD_PRIORITY_CONTROL_EMPTY_FIELD = 'Please fill up the Priority & Control field!';

   var NEW_GREOGRAPHY_ADD_SUCCESS       = 'Thanks, a new Geography condition has been added!';
   var NEW_GREOGRAPHY_ADD_FAILURE       = 'Sorry, Geography condition cant be added!';

   var GEOGRAPHY_REMOVE_SUCCESS         = 'Thanks, a Geography condition has been removed successfully!';
   var GEOGRAPHY_REMOVE_FAILURE         = 'Sorry, Geography condition cant be removed now!';

   var REFERRER_URL_ADD_SUCCESS         = 'Thanks, a new Referrer URL condition has been added!';
   var REFERRER_URL_ADD_FAILURE         = 'Sorry, Referrer URL condition cant be added!';

   var REFERRER_URL_REMOVE_SUCCESS      = 'Thanks, a Referrer URL condition has been removed successfully!';
   var REFERRER_URL_REMOVE_FAILURE      = 'Sorry, Referrer URL condition cant be removed now!';

   var SEARCH_KEYWORD_ADD_SUCCESS       = 'Thanks, a Search Engine Keyword condition has been added!';
   var SEARCH_KEYWORD_ADD_FAILURE       = 'Sorry, Search Engine Keyword condition cant be added!';

   var SEARCH_KEYWORD_REMOVE_SUCCESS    = 'Thanks, a Search Engine Keyword condition has been removed successfully!';
   var SEARCH_KEYWORD_REMOVE_FAILURE    = 'Sorry, Search Engine Keyword condition cant be removed now!';

   var PAGE_TAG_ADD_SUCCESS             = 'Thanks, a Page Tag condition has been added!';
   var PAGE_TAG_ADD_FAILURE             = 'Sorry, Page Tag condition cant be added!';

   var PAGE_TAG_REMOVE_SUCCESS          = 'Thanks, a Page Tag condition has been removed successfully!';
   var PAGE_TAG_REMOVE_FAILURE          = 'Sorry, Page Tag condition cant be removed now!';

   var PAGE_URL_ADD_SUCCESS             = 'Thanks, a Page Url condition has been added!';
   var PAGE_URL_ADD_FAILURE             = 'Sorry, Page Url condition cant be added!';

   var PAGE_URL_REMOVE_SUCCESS          = 'Thanks, a Page Url condition has been removed successfully!';
   var PAGE_URL_REMOVE_FAILURE          = 'Sorry, Page Url condition cant be removed now!';

   var PRO_CAT_MANF_ADD_SUCCESS         = 'Thanks, Product - Categories and Manfucature condition(s) has been added!';
   var PRO_CAT_MANF_ADD_FAILURE         = 'Sorry, Product - Categories and Manfucature condition(s) cant be added!';

   var PRO_CAT_MANF_REMOVE_SUCCESS      = 'Thanks, Product - Categories and Manfucature condition has been removed successfully!';
   var PRO_CAT_MANF_REMOVE_FAILURE      = 'Sorry, Product - Categories and Manfucature condition cant be removed now!';

   var INVALID_RULE_NAME                = 'Invalid value for Rule name!';
   var INVALID_PRIORITY_ERROR           = 'Please provide valid value for priority field!';
   var ADD_GROUP_CONTROL_RANGE_ERROR    = 'Please provide a value for control field in range of 1 to 100!';
   var PRIORITY_RANGE_ERROR             = 'Please provide a value for Default Priotiry field in range of 1 to 100!';
   var ADD_PAGE_URL_EMPTY_FIELD         = 'Please fill up the Page Url field!';
   var ADD_PAGE_TAG_EMPTY_FIELD         = 'Please fill up the Page Tag field!';
   var ADD_REFERRER_URL_EMPTY_FIELD     = 'Please fill up the Referrer Url field!';
   var ADD_SEARCH_KEYWORD_EMPTY_FIELD   = 'Please fill up the Keyword field!';
   var ADD_PRO_CAT_MANF_EMPTY_FIELD     = 'Please select a product!';
   var ADD_LINKED_GROUP_ERROR           = 'Please select Section and Rule Groups!';


   var PRODUCT_CAT_MANF_CONDITION       = 'product_categories_manufactures';

   var MULTIPLE_GROUP_LOCK_SELECT_ERROR = 'Mupltiple group locking is not allowed!';

   var EXCLUSION_ERROR                  = 'Please select any Categories atleast!';
   var EXCLUSION_ADD_SUCCESS            = 'Exclusion(s) added successfully!';

   var CONTENT_TYPE_ERROR               = 'Please save content name and content type!';
   var CONTENT_EMPTY_FIELD_ERROR        = 'Please fill up the Content Name, Default Priority & Select a Content Type';
   var CONTENT_IMAGE_NOT_FOUND          = 'Content image not uploaded!';
   var CONTENT_ADD_SUCCESS              = 'Thanks content has been saved successfully!';

   var COOKIE_VERSION_UPDATE_SUCCESS    = "Cookie Version has been Changed";
   var COOKIE_VERSION_UPDATE_ERROR      = "Sorry, Cookie Version cant be updated!";

   var BROWSER_ADD_SUCCESS              = 'Thanks, Browser condition(s) has been added!';
   var BROWSER_ADD_FAILURE              = 'Sorry, Browser condition(s) cant be added!';

   var BROWSER_REMOVE_SUCCESS           = 'Thanks, Browser condition has been removed successfully!';
   var BROWSER_REMOVE_FAILURE           = 'Sorry, Browser condition cant be removed now!';

   var BROWSER_ALREADY_EXIST            = 'Following browser(s) were previously added as condition!\n';

   var UPDATE_COOKIE_VERSION_CONFIRMATION = 'Do you really want to update the cookie version?';
   
   var RETIRE_CONFIRMATION = 'Do you really want to inactive this ';
   var MILESTONE_CONFIRMATION = 'Do you really want to save milestone ';

   var rule_priority_arr                = Array(); // used in /view/rulegroup/rule_group_detail.html
   var content_priority_arr             = Array(); // used in /view/rule/rule_detail.html

   var globalSelectedOption             = '';

   var globalContentId                  = '';
   var globalContentImage               = '';
   var globalRuleGroupIds               = Array();

   var RG_FORM_SERIALIZE                = Array();
   var RG_LAST_SAVE_MSG                 = Array();;

   var RULE_FORM_SERIALIZE              = Array();
   var RULE_LAST_SAVE_MSG               = Array();

   var LANGUAGE_FORM_SERIALIZE          = Array();
   var LANGUAGE_LAST_SAVE_MSG           = Array();

   var NO_OF_VISIT_FORM_SERIALIZE       = Array();
   var NO_OF_VISIT_LAST_SAVE_MSG        = Array();

   var LENGTH_OF_VISIT_FORM_SERIALIZE   = Array();
   var LENGTH_OF_VISIT_LAST_SAVE_MSG    = Array();

   var DEPTH_OF_VISIT_FORM_SERIALIZE    = Array();
   var DEPTH_OF_VISIT_LAST_SAVE_MSG     = Array();

   var TIME_OF_VISIT_FORM_SERIALIZE     = Array();
   var TIME_OF_VISIT_LAST_SAVE_MSG      = Array();

   //on window load set the browser
   window.onload = function () {
      setBrowser();
   }

   /*
   * purpose: set the user browser name
   * param: none
   * return: none
   */
   function setBrowser() {
      ua = navigator.userAgent;
      if(ua.indexOf('MSIE') >= 0) {
         this.BROWSER = 'IE';
      }
      else {
         if(ua.indexOf('Firefox') >= 0) {
            this.BROWSER = 'FF';
         }
         else {
            this.BROWSER = 'UN';
         }
      }
   }

   /*
   * purpose: get the user browser name
   * param: none
   * return: browser name
   */
   function getBrowser() {
      return this.BROWSER;
   }

   /*
   * purpose: update the logged in user
   * param: logged in user id
   * return: none
   */
   function updateLoggedInUser(logged_in_id) {
      $.post("./Library", { "cmd" : "updateLoggedInUser", "id" : logged_in_id},
         function(data){
            //alert(data);
         }, "json");
   }

   /*
   * purpose: get last five action history
   * param: none
   * return: html of last five action history
   */
   function getLastFiveActionHistory() {
      $.post("./Library", { "cmd" : "getActionList"},
         function(response){
            if(response.success) {
               $('#action_history_list').html('');
               $('#action_history_list').html(response.html);
            }
         }, "json");
   }

   /*
   * purpose: get the logged in user list
   * param: mode, history [i.e: value = 'edit' / 'view'] if edit mode is provided then html will return the text in editable mode
   * return: html of logged in user list
   */
   function getLoggedInUser(edit,user_history) {
      $("#loggedInUser").load("./Library", { "cmd" : "getLoggedInUser", "edit" : edit, "history" : user_history});
   }

   /*
   * purpose: get the Rule Group List
   * param: section_id, mode [i.e: 'edit' / 'view']
   * return: response object
   *  i. ruleGroupIds = array
   * ii. html = plain html
   */
   function getRuleGroupList(section_id, mode) {
      $.post("./Section", { "cmd" : "getRuleGroupList", "section_id" : section_id, "mode" : mode},
      function(response) {
         if(response.html) {
            $("#ruleGroupList").html(response.html);
            if(response.ruleGroupIds) {
               for(var i = 0; i < response.ruleGroupIds.length; i++) {
                  globalRuleGroupIds[i] = response.ruleGroupIds[i];
               }
            }
         }
      }, "json");
   }

   /*
   * purpose: save Section Info
   * param: section_id
   * return: response object
   * i. success = boolean
   */
   function saveSection(section_id,dom_element) {
      var collection = Array();
      var sectionStatus = true;
      for(var i = 0; i < globalRuleGroupIds.length; i++) {
         if($('#list_rule_group_priority_' + globalRuleGroupIds[i]).val() <= 0 || $('#list_rule_group_priority_' + globalRuleGroupIds[i]).val() =='')
         {
            alert(PRIORITY_RANGE_ERROR)            
            $('#list_rule_group_priority_' + globalRuleGroupIds[i]).focus();            
            
            sectionStatus = false;
            break;
         }
         var ruleGroupObj = {};
         ruleGroupObj.rule_group_id = globalRuleGroupIds[i];
         ruleGroupObj.new_priority  = $('#list_rule_group_priority_' + globalRuleGroupIds[i]).val();
         ruleGroupObj.locked        = ($('#list_rule_group_lock_' + globalRuleGroupIds[i]).attr('checked') == true) ? 1 : 0;
         ruleGroupObj.retire        = ($('#list_rule_group_retire_' + globalRuleGroupIds[i]).attr('checked') == true) ? 1 : 0;

         if(!isInt(ruleGroupObj.new_priority) || ruleGroupObj.new_priority <= 0) {
            alert(INVALID_PRIORITY_ERROR);
            return false;
         }

         collection[i]              = ruleGroupObj;
      }
      
      if(sectionStatus)
      {
         var count = 0;
         
         if(globalRuleGroupIds.length > 0)
         {
            for(var i = 0; i < globalRuleGroupIds.length; i++) 
            {
               if($('#list_rule_group_lock_' + globalRuleGroupIds[i]).attr('checked') == true)
               {
                  count++;
               }
            }
         }
         /*
         $(":checkbox:checked").each(function() {
            if(this.value) count++;
         });
         */
         
         if(count > 1) {
            alert(MULTIPLE_GROUP_LOCK_SELECT_ERROR);
            return false;
         }
         
         var section_name              = $('#sectionName').val();
         var section_control           = $('#sectionControl').val();
         
         var section_retire            = ($('#sectionRetire').attr('checked') == true)? 1: 0; //$('#sectionRetire').val();
         
         if(section_name == '' || section_control == '') {
            alert(ADD_PRIORITY_CONTROL_EMPTY_FIELD)
            return false;
         }
         if(section_control <= 0 || !isInt(section_control)) {
            alert(ADD_GROUP_CONTROL_RANGE_ERROR)
            return false;
         }
         
         var str = {'ruleGroups' : collection, 'section_id' : section_id, 'section_name' : section_name, 'section_control' : section_control, 'section_retire':section_retire};
         var jsonStr = JSON.stringify(str);
         
         //make it disable for multiple entry...
         $(dom_element).attr('disabled', 'disabled');
         
         $.post("./Section", { "cmd" : "saveSection", data : jsonStr},
         function (response) {
            if(response.success) {
               $('#section_last_modified_lbl').html('Last Modified: ' + response.date_modified);
               $('#section_last_modified_lbl').css('color', '#28556A');
               //make it disable for multiple entry...
               $(dom_element).attr('disabled', '');
               alert(SECTION_EDIT_SUCCESS);
            }
            else {
               alert(SECTION_EDIT_FAILURE);
            }
         }, "json");
      }
   }

   var loadRuleGroupMode = '';
   var loadMileStoneMode = '';
   var loadMileStoneModeRule = '';
   var loadRuleMode      = '';
   var rule_edited       = Array();
   var rule_viewed       = Array();
   var rule_group_edited = Array();
   var milestone_viewed  = Array();
   var rule_group_viewed = Array();
   
   function retireConfirm(objId,prntId)
   {      
      var indicator  = 0;
      var mindicator = 0;
      
      var strObj = new String(objId.id);
      
      if(strObj.indexOf("sectionRetire") >= 0)
      {                  
         var RETIRE_CONFIRMATION_ALERT = RETIRE_CONFIRMATION + "section?"            
      }
      
      if(strObj.indexOf("list_rule_group_retire") >= 0)
      {
         indicator = "sectionInactiveBg2";
         mindicator = "sectionBg2";
         var RETIRE_CONFIRMATION_ALERT = RETIRE_CONFIRMATION + "rule group?"            
      }
      
      if(strObj.indexOf("list_rule_retire") >= 0)
      {
         indicator = "sectionInactiveBg3";
         mindicator = "sectionBg3";
         var RETIRE_CONFIRMATION_ALERT = RETIRE_CONFIRMATION + "rule?"
      }

      if(strObj.indexOf("list_content_retire") >= 0)
      {
         indicator = "inactiveTblHeading";
         var prntObj = new String(prntId);
         var strArry = prntObj.split("_");
         
         if(strArry[(strArry.length-1)]%2 == 0)
         {
            mindicator = "sectionEvenRow";
         }
         else
         {   
            mindicator = "sectionOddRow";            
         }

         var RETIRE_CONFIRMATION_ALERT = RETIRE_CONFIRMATION + "content?"
      }
         
      if($("#" + objId.id).attr('checked') == true)
      {                            
         if(confirm(RETIRE_CONFIRMATION_ALERT)) 
         {            
            if(strObj.indexOf("sectionRetire") >= 0)
            {
               $("#sectionStatHeading").attr('class', 'inactiveTblHeading'); 
               $("#sectionStatOddRow").attr('class', 'inactiveOddRow');
               $("#sectionStatEvenRow").attr('class', 'inactiveEvenRow');  
            }
            else
            {
               $("#"+prntId).attr('class', indicator);
            }
         }
         else
         {            
            if(strObj.indexOf("sectionRetire") >= 0)
            {
               $("#sectionStatHeading").attr('class', 'tblHeading');
               $("#sectionStatOddRow").attr('class', 'oddRow');
               $("#sectionStatEvenRow").attr('class', 'evenRow');
            }
            else
            {
               $("#"+prntId).attr('class', mindicator);
            }
            $("#"+objId.id).attr('checked', false);
         }
      }
      else
      {
         if(strObj.indexOf("sectionRetire") >= 0)
         {
            $("#sectionStatHeading").attr('class', 'tblHeading');
            $("#sectionStatOddRow").attr('class', 'oddRow');
            $("#sectionStatEvenRow").attr('class', 'evenRow');
         }
         else
         {            
            $("#"+prntId).attr('class', mindicator);
         }
      }
   }
   
  /*
   * purpose: save Rule Info
   * param: rule_id
   * return: response object
   *   i. success = boolean
   *  ii. rule_id = ID
   * iii. rule_name = RULE_NAME
   */
   function saveRule(rule_id) {
      if(content_priority_arr[rule_id]) {
         var ruleStatus = true;
         var collection = Array();

         for(var i = 0; i < content_priority_arr[rule_id].length; i++) {
            if($('#list_content_priority_' + content_priority_arr[rule_id][i].content_id).val() <= 0 || $('#list_content_priority_' + content_priority_arr[rule_id][i].content_id).val() =='')
            {
               alert(PRIORITY_RANGE_ERROR)            
               $('#list_content_priority_' + content_priority_arr[rule_id][i].content_id).focus();            
               ruleStatus = false;
               break;
            }
            var contentObj = {};
            contentObj.new_priority = $("#list_content_priority_" + content_priority_arr[rule_id][i].content_id).val();
            contentObj.content_id   = content_priority_arr[rule_id][i].content_id;
            contentObj.retire       = ($("#list_content_retire_" + content_priority_arr[rule_id][i].content_id).attr('checked') == true) ? 1 : 0;
            collection[i]           = contentObj;
         }

         if(collection && ruleStatus) {
            var rule_name    = $("#rule_name_"    + rule_id).val();

            if(rule_name != "") {
               var str = {'content_priority' : collection, 'rule_id' : rule_id, 'rule_name' : rule_name};
               var jsonStr = JSON.stringify(str);

               $.post("./Rule", { "cmd" : "saveRule", data : jsonStr},
                      function (response) {
                         if(response.success) {
                            $("#rule_last_modified_" + rule_id).html("<i>Last Modified: " + response.last_saved + "</i>");
                            $("#list_rule_name_" + response.rule_id).html(response.rule_name);
                            RULE_FORM_SERIALIZE[rule_id] = $("#rule_form_" + rule_id).serialize();
                            alert(RULE_EDIT_SUCCESS);
                         }
                         else {
                            alert(RULE_EDIT_FAILURE);
                         }

                         //cancelRuleEdit(rule_id);

                      }, "json");
            }
            else {
               alert(INVALID_RULE_NAME);
               var cancel = false;
            }
         }
         else {
            var cancel = false;
         }
      }
      else {
         var cancel = false;
      }

      if(cancel) {
         //cancelRuleEdit(rule_id);
      }
   }

   /*
   * purpose: Cancel Rule Edit
   * param: rule_id
   * return: none
   */
   function cancelRuleEdit(rule_id) {
      closeRule(rule_id, 'edit');
   }

   /*
   * purpose: Close Rule Tab
   * param: rule_id, mode [i.e: 'edit' / 'view']
   * return: none
   */
   function closeRule(rule_id, mode) {
      if(mode == 'view') {
         var html = rule_viewed[rule_id];
         $("#nav_rule_" + rule_id).html(html);
         $("#detail_rule_" + rule_id).slideToggle();
      }
      else if(mode == 'edit') {
         var html = rule_edited[rule_id];
         $("#nav_rule_" + rule_id).html(html);
         $("#detail_rule_" + rule_id).slideToggle();
      }
   }

   /*
   * purpose: Close Rule View
   * param: rule_id
   * return: none
   */
   function closeRuleView(rule_id) {
      closeRule(rule_id, 'view');
   }

   /*
   * purpose: Get Rule Detail
   * param: rule_id, mode [i.e: 'edit' / 'view']
   * return: response object
   *  i. html = plain html
   */
   function getRuleDetail(rule_id, mode) {
      if(!rule_id) {
         return false;
      }
      else {
         if(loadRuleMode == mode) {
            if(mode == 'edit') {
               var load = false;
            }
            else if(mode == 'view') {
               if(rule_viewed[rule_id] != '' && rule_viewed[rule_id] != undefined) {  //fix for opening multiple rule detail
                  $("#detail_rule_" + rule_id).slideToggle();
                  rule_viewed[rule_id] = $("#nav_rule_" + rule_id).html();
                  $("#nav_rule_" + rule_id).html("<a href='javascript:closeRuleView("+ rule_id +")'>Close</a>");
                  var load = true;
               }
               else {
                  var load = false;
               }
            }
         }
         else {
            var load = false;
         }

         if(!load) {
            $.post("./Rule", { "cmd" : "getRuleDetail", "rule_id" : rule_id, "mode" : mode},
            function(response) {
               if(response.html) {
                  $("#detail_rule_" + rule_id).html(response.html);
                  $("#detail_rule_" + rule_id).slideToggle();

                  if(mode == 'edit') {
                     rule_edited[rule_id] = $("#nav_rule_" + rule_id).html();
                     rule_viewed[rule_id] = '';
                     rule_group = 'rule_group';
                     $("#nav_rule_" + rule_id).html("<a href='javascript:saveRule("+ rule_id +");'>Save</a>&nbsp;&nbsp;<a href='javascript:cancelRuleEdit("+ rule_id +")'>Cancel</a> ");
                  }
                  else if(mode == 'view') {
                     rule_viewed[rule_id] = $("#nav_rule_" + rule_id).html();
                     $("#nav_rule_" + rule_id).html("<a href='javascript:closeRuleView("+ rule_id +")'>Close</a>");
                  }

                  loadRuleMode = mode;
               }
            }, "json");
         }
      }
   }

   /*
   * purpose: Test if number provided is an int or not
   * param: number
   * return: boolean
   */
   function isInt(numb) {
      var numberToTest = numb;
      return /^-?\d+$/.test(numberToTest);
   }

   /*
   * purpose: Save Rule Group
   * param: rule_group_id
   * return: response object
   *      a. success = boolean
   *      b. rule_group_id = ID
   *      c. rule_group_name = RULE_GROUP_NAME
   */
   function saveRuleGroup(rule_group_id) {
      if(rule_priority_arr[rule_group_id]) {
         var collection = Array();
         var ruleGrStatus = true;
         for(var i = 0; i < rule_priority_arr[rule_group_id].length; i++) {
            if($('#list_rule_priority_' + rule_priority_arr[rule_group_id][i].rule_id).val() <= 0 || $('#list_rule_priority_' + rule_priority_arr[rule_group_id][i].rule_id).val() =='')
            {
               alert(PRIORITY_RANGE_ERROR)            
               $('#list_rule_priority_' + rule_priority_arr[rule_group_id][i].rule_id).focus();            
               
               ruleGrStatus = false;
               break;
            }
            var ruleObj = {};
            
            ruleObj.new_priority = $("#list_rule_priority_" + rule_priority_arr[rule_group_id][i].rule_id).val();            
            ruleObj.retire = ($("#list_rule_retire_" + rule_priority_arr[rule_group_id][i].rule_id).attr('checked') == true) ? 1 : 0;
            ruleObj.rule_id = rule_priority_arr[rule_group_id][i].rule_id;
            collection[i] = ruleObj;
         }

         if(collection && ruleGrStatus) {
            var rule_group_name    = $("#rule_group_name_"    + rule_group_id).val();
            var rule_group_control = $("#rule_group_control_" + rule_group_id).val();

            if(rule_group_name != "" && rule_group_control >= 0 && rule_group_control <= 100 && isInt(rule_group_control)) {
               var str = {'rule_priority' : collection, 'rule_group_id' : rule_group_id, 'rule_group_name' : rule_group_name, 'rule_group_control' : rule_group_control};
               var jsonStr = JSON.stringify(str);

              
               $.post("./RuleGroup", { "cmd" : "updateRuleGroup", data : jsonStr},
                      function (response) {
                         if(response.success) {
                            $("#last_modified_" + rule_group_id).html("<i>Last Modified: " + response.last_saved + "</i>");
                            $("#list_rule_group_name_" + response.rule_group_id).html(response.rule_group_name);
                            RG_FORM_SERIALIZE[rule_group_id] = $("#rule_group_form_" + rule_group_id).serialize();
                            
                            alert(RULE_GROUP_EDIT_SUCCESS);
                         }
                         else {
                            alert(RULE_GROUP_EDIT_FAILURE);
                         }

                         //cancelRuleGroupEdit(rule_group_id);

                      }, "json");
            }
            else {
               alert('Invalid value for Rule Group name or control!');
               var cancel = false;
            }
         }
         else {
            var cancel = false;
         }
      }
      else {
         var cancel = false;
      }

      if(cancel) {
         //cancelRuleGroupEdit(rule_group_id);
      }
   }

   /*
   * purpose: Cancel Rule Group edit
   * param: rule_group_id
   * return: none
   */
   function cancelRuleGroupEdit(rule_group_id) {
      closeGroup(rule_group_id, 'edit');
   }

   /*
   * purpose: Close Rule Group tab
   * param: rule_group_id, mode [i.e: 'edit' / 'view']
   * return: none
   */
   function closeGroup(rule_group_id, mode) {
      if(mode == 'view') {
         var html = rule_group_viewed[rule_group_id];
         $("#nav_rule_group_" + rule_group_id).html(html);
         $("#detail_rule_group_" + rule_group_id).slideToggle();
      }
      else if(mode == 'edit') {
         var html = rule_group_edited[rule_group_id];
         $("#nav_rule_group_" + rule_group_id).html(html);
         $("#detail_rule_group_" + rule_group_id).slideToggle();
      }
      else if(mode == 'view_milestone') {
         var html = milestone_viewed[rule_group_id];
         //alert(html)
         $("#nav_rule_group_" + rule_group_id).html(html);
         $("#detail_milestone_" + rule_group_id).slideToggle();
      }
      else if(mode == 'view_milestone_rule') {
         var html = milestone_viewed[rule_group_id];
         $("#nav_rule_" + rule_group_id).html(html);
         $("#detail_milestone_rule_" + rule_group_id).slideToggle();
      }
      
   }

   /*
   * purpose: Close Rule Group view
   * param: rule_group_id
   * return: none
   */
   function closeRuleGroupView(rule_group_id) {
      closeGroup(rule_group_id, 'view');
   }

   /*
   * purpose: Get Rule Group detail
   * param: rule_group_id, mode [i.e: 'edit' / 'view']
   * return: response object
   * a. html = plain html
   */
   function getRuleGroupDetail(section_id,rule_group_id, mode) {
      if(!rule_group_id) {
         return false;
      }
      else {
         if(loadRuleGroupMode == mode) 
         {
            if(mode == 'edit') 
            {
               var load = false;
            }
            else if(mode == 'view') {
               if(rule_group_viewed[rule_group_id] != '' && rule_group_viewed[rule_group_id] != undefined) {
                  $("#detail_rule_group_" + rule_group_id).slideToggle();
                  $("#detail_milestone_" + rule_group_id).hide();
                  rule_group_viewed[rule_group_id] = $("#nav_rule_group_" + rule_group_id).html();
                  $("#nav_rule_group_" + rule_group_id).html("<a href='javascript:closeRuleGroupView("+ rule_group_id +")'>Close</a>");
                  var load = true;
               }
               else {
                  var load = false;
               }
            }
         }
         else {
            var load = false;
         }

         if(!load) {
            $.post("./RuleGroup", { "cmd" : "getRuleGroupDetail", "rule_group_id" : rule_group_id, "mode" : mode},
               function(response) {
                  if(response.html) {
                     $("#detail_rule_group_" + rule_group_id).html(response.html);
                     $("#detail_rule_group_" + rule_group_id).slideToggle();
                     $("#detail_milestone_" + rule_group_id).hide();
                     //saveMileStone('1','','','','section')   
                     $("#detail_milestone_" + rule_group_id).hide(); 
                     if(mode == 'edit') {
                        rule_group_edited[rule_group_id] = $("#nav_rule_group_" + rule_group_id).html();
                        rule_group_viewed[rule_group_id] = '';
                        rule_group = 'rule_group';
                       //$("#nav_rule_group_" + rule_group_id).html("<a  href='javascript:saveRuleGroup("+ rule_group_id +",this);'>Save</a>&nbsp;&nbsp;<a href='javascript:cancelRuleGroupEdit("+ rule_group_id +")'>Cancel</a>&nbsp;&nbsp;<a href='javascript:viewMileStone("+ section_id +","+ rule_group_id +",0,0,"+ rule_group +")'>View MileStone</a> &nbsp;&nbsp; ");
                        $("#nav_rule_group_" + rule_group_id).html("<a  href='javascript:saveRuleGroup("+ rule_group_id +",this);'>Save</a>&nbsp;&nbsp;<a href='javascript:cancelRuleGroupEdit("+ rule_group_id +")'>Cancel</a>&nbsp;&nbsp;");
                     }
                     else if(mode == 'view') {
                        rule_group_viewed[rule_group_id] = $("#nav_rule_group_" + rule_group_id).html();
                        $("#nav_rule_group_" + rule_group_id).html("<a href='javascript:closeRuleGroupView("+ rule_group_id +")'>Close</a>");
                     }

                     loadRuleGroupMode = mode;
                  }
            }, "json");
         }
      }
   }
   
   
   /*
   * purpose: Get MileStone  detail
   * param: rule_group_id, mode [i.e: 'edit' / 'view']
   * return: response object
   * a. html = plain html
   */
   function getMileStoneDetail(section_id,rule_group_id, mode) {
      if(!rule_group_id)
       {
         return false;
      }
            $.post("./Section", { "cmd" : "getMilestoneDetail","section_id" : section_id, "rule_group_id" : rule_group_id, "mode" : "view_milestone", "show_type" :  "rulegroup"},
               function(response) {
                  
                  if(response.html) {
                  	
                     $("#detail_milestone_" + rule_group_id).html(response.html);
                     $("#detail_milestone_" + rule_group_id).slideToggle();
                     //saveMileStone('1','','','','section')   
                      
                     if(mode == 'view_milestone') 
                     {
                        milestone_viewed[rule_group_id] = $("#nav_rule_group_" + rule_group_id).html();
                       
                        rule_group = 'rule_group';
                       //$("#nav_rule_group_" + rule_group_id).html("<a  href='javascript:saveRuleGroup("+ rule_group_id +",this);'>Save</a>&nbsp;&nbsp;<a href='javascript:cancelRuleGroupEdit("+ rule_group_id +")'>Cancel</a>&nbsp;&nbsp;<a href='javascript:viewMileStone("+ section_id +","+ rule_group_id +",0,0,"+ rule_group +")'>View MileStone</a> &nbsp;&nbsp; ");
                        $("#nav_rule_group_" + rule_group_id).html("<a href='javascript:closeGroup("+ rule_group_id +",\""+ mode +"\")'>Close MileStone</a> &nbsp;&nbsp; ");
                     }
                      
                     loadMileStoneMode = mode;
                    
                  }
            }, "json");
         }
      
   
   
   /*
   * purpose: Get MileStone  detail
   * param: rule_group_id, mode [i.e: 'edit' / 'view']
   * return: response object
   * a. html = plain html
   */
   function getRuleMileStoneDetail(section_id,rule_id, mode) {
      if(!rule_id)
       {
         return false;
      }
            $.post("./Section", { "cmd" : "getMilestoneDetail","section_id" : section_id, "rule_id" : rule_id, "mode" : "view_milestone_rule", "show_type": "rule"},
               function(response) {
                  
                  if(response.html) {
                  	
                     $("#detail_milestone_rule_" + rule_id).html(response.html);
                     $("#detail_milestone_rule_" + rule_id).slideToggle();
                      //alert('mode:: '+mode);
                     if(mode == 'view_milestone_rule') 
                     {
                        milestone_viewed[rule_id] = $("#nav_rule_" + rule_id).html();
                      //$("#nav_rule_group_" + rule_group_id).html("<a  href='javascript:saveRuleGroup("+ rule_group_id +",this);'>Save</a>&nbsp;&nbsp;<a href='javascript:cancelRuleGroupEdit("+ rule_group_id +")'>Cancel</a>&nbsp;&nbsp;<a href='javascript:viewMileStone("+ section_id +","+ rule_group_id +",0,0,"+ rule_group +")'>View MileStone</a> &nbsp;&nbsp; ");
                        $("#nav_rule_" + rule_id).html("<a href='javascript:closeGroup("+ rule_id +",\""+ mode +"\")'>Close MileStone</a> &nbsp;&nbsp; ");
                     }
                    
                  }
            }, "json");
         }
   

   /*
   * purpose: Get the login history grid
   * param: url
   * return: response object
   * a. html = plain html
   */
   function load_ajax_grid(url_string) {
      var paramArray = Array();

      var j = 0;

      $.post(url_string, { },
         function(response){
            if(response.html) {
               $("#grid_html").html('');
               $("#grid_top").html('');
               $("#grid_html").html(response.html);
            }
         }, "json");
   }

   function showHideTR() {
      var selectObj      = document.getElementById('visitConditonList')
      var selectedOption = selectObj.options[selectObj.options.selectedIndex].value;

      if(globalSelectedOption != '') {
         selectedOption       = globalSelectedOption;
         globalSelectedOption = '';
      }

      if(selectedOption == 'between') {
         document.getElementById('maxVisitDiv').style.display  = 'inline';
         document.getElementById('rangeTxtTd').innerHTML       = 'to';
         return;
      }

      document.getElementById('maxVisitDiv').style.display  = 'none';
      document.getElementById('rangeTxtTd').innerHTML       = document.getElementById('rangetxt').value;

   }

   function showHideTROnRevert(formId) {
      globalSelectedOption = document.getElementById('visitCondition').value;
      showHideTR();
      document.getElementById(formId).reset();
   }

   function togleTimeOfVisitsTR() {
      var selectObj      = document.getElementById('visitConditonList')
      var selectedOption = selectObj.options[selectObj.options.selectedIndex].value;

      if(globalSelectedOption != '') {
         selectedOption       = globalSelectedOption;
         globalSelectedOption = '';
      }

      if(selectedOption == 'between') {
         document.getElementById('maxTimeTR').style.display  = '';
         return;
      }

      document.getElementById('maxTimeTR').style.display  = 'none';
   }

   function showHideTimeOfVisitsTROnRevert(formId) {
      globalSelectedOption = document.getElementById('visitCondition').value;
      togleTimeOfVisitsTR();
      document.getElementById(formId).reset();
   }

   /*
   * purpose: Get States for Country
   * param: select box id
   * return: response object
   * a. state_list = array of objects
   */
   function getStatesForCountry(selectObjId) {
      var countryName = $('#'+ selectObjId).val();

      if(countryName != '') {
         $.post("./Library", { "cmd" : "getStates", "country_name" : countryName },
               function(response) {
                  if(response.state_list) {
                     createStateOption(response.state_list);
                  }
               },"json" );
      }
      else {
         $('#stateList').html('');
      }
   }

   /*
   * purpose: Create State list
   * param: state list object
   * return: none
   */
   function createStateOption(stateList) {
      var totalState = stateList.length;

      $('#stateList').html('');

      for(i=0; i < totalState; i++) {
         $('#stateList').append("<option value='" + stateList[i].state + "'>" + stateList[i].state + "</option>");
      }
   }

   /*
   * purpose: Add a new Geography
   * param: rule_id
   * return: response object
   * a. success = boolean
   */
   function addNewGeography(rule_id) {
      var countryName = $('#country_list').val();

      if(countryName != '') {
         var state   = $('#stateList').val();

         if(state == null) {
            //state = $("#stateList option[text='-']").val();
            state = '';
         }

         $.post("./Library", { "cmd" : "addGeography", "rule_id" : rule_id, "country" : countryName, "state" : state },
            function(response) {
               if(response.success) {
                  getGeographyList(rule_id);
                  loadRuleDetailWithoutWindowClose(rule_id, 'edit');
                  /*added saikat*/
                  $('#last_modified_lbl').css('color', 'red');
               $('#last_modified_lbl').html('Last modified date: '+ response.date_modified);
                  /*End here*/
                  alert(NEW_GREOGRAPHY_ADD_SUCCESS);
               }
               else
               {
                  alert(NEW_GREOGRAPHY_ADD_FAILURE);
               }
            },"json" );
      }
   }

   /*
   * purpose: Add new page url
   * param: rule_id
   * return: response object
   * a. success = boolean
   */
   function addNewPageUrl(rule_id) {
      var pageUrl = $('#page_url').val()
      if(pageUrl == '') {
         alert(ADD_PAGE_URL_EMPTY_FIELD);
         return false;
      }

      if($('#advanceCheckBox').attr('checked') == true) {
         var advance = 1;
      }
      else {
         var advance = 0;
      }

      $.post("./Library", { "cmd" : "addPageUrl", "rule_id" : rule_id, "page_url" : pageUrl, "advance_url": advance},
         function(response) {
            if(response.success) {
               getPageUrlList(rule_id);
               loadRuleDetailWithoutWindowClose(rule_id, 'edit');
               /*added saikat*/
                 $('#last_modified_lbl').css('color', 'red');
               $('#last_modified_lbl').html('Last modified date: '+ response.date_modified);
                /*End here*/
               alert(PAGE_URL_ADD_SUCCESS);
            }
            else {
               alert(PAGE_URL_ADD_FAILURE);
            }
         },"json" );
   }

   /*
   * purpose: Add new page url
   * param: rule_id
   * return: response object
   * a. success = boolean
   */
   function addExclusionPageUrl(dom_element) {

      var content_id   = $('#hidden_content_id').val();
      var pageUrl      = $('#exclusion_page_url').val()

      if(pageUrl == '') {
         alert(ADD_PAGE_URL_EMPTY_FIELD);
         return false;
      }

      if($('#advanceCheckBox').attr('checked') == true) {
         var advance = 1;
      }
      else {
         var advance = 0;
      }
      //make it disable for multiple entry...
      $(dom_element).attr('disabled', 'disabled');  
     
      $.post("./Library", { "cmd" : "addExclusionPageUrl", "content_id" : content_id, "page_url" : pageUrl, "advance_url": advance},
         function(response) {
            if(response.success) {
            	//make it disable for multiple entry...
               getUrlExclusionList(content_id);
              $(dom_element).attr('disabled', '');
            }
         },"json" );
   }

   /*
   * purpose: Add new Referrer url
   * param: rule_id
   * return: response object
   * a. success = boolean
   */
   function addNewReferrerUrl(rule_id) {
      var referrerUrl = $('#referrer_url').val()
      if(referrerUrl == '') {
         alert(ADD_REFERRER_URL_EMPTY_FIELD);
         return false;
      }

      if($('#advanceCheckBox').attr('checked') == true) {
         var advance = 1;
      }
      else {
         var advance = 0;
      }

      $.post("./Library", { "cmd" : "addReferrerUrl", "rule_id" : rule_id, "referrer_url" : referrerUrl, "advance_url": advance},
         function(response) {
            if(response.success) {
               getPageReferrerList(rule_id);
               loadRuleDetailWithoutWindowClose(rule_id, 'edit');
               /*added saikat*/
               $('#last_modified_lbl').css('color', 'red');
               $('#last_modified_lbl').html('Last modified date: '+ response.date_modified);
              /*End here*/
               alert(REFERRER_URL_ADD_SUCCESS);
            }
            else {
               alert(REFERRER_URL_ADD_FAILURE);
            }
         },"json" );
   }

   /*
   * purpose: Add new Page tag
   * param: rule_id
   * return: response object
   * a. success = boolean
   */
   function addNewPageTag(rule_id) {
      var pageTag = $('#page_tag').val()
      if(pageTag == '') {
         alert(ADD_PAGE_TAG_EMPTY_FIELD);
         return false;
      }

      $.post("./Library", { "cmd" : "addPageTag", "rule_id" : rule_id, "page_tag" : pageTag},
         function(response) {
            if(response.success) {
               getPageTagList(rule_id);
               loadRuleDetailWithoutWindowClose(rule_id, 'edit');
               /*added saikat*/
                 $('#last_modified_lbl').css('color', 'red');
               $('#last_modified_lbl').html('Last modified date: '+ response.date_modified);
               /*End here*/
               alert(PAGE_TAG_ADD_SUCCESS);
            }
            else {
               alert(PAGE_TAG_ADD_FAILURE);
            }
         },"json" );
   }

   /*
   * purpose: Add new Search engine keyword
   * param: rule_id
   * return: response object
   * a. success = boolean
   */
   function addNewSearchKeyword(rule_id) {
      var keyword = $('#referrer_keyword').val()
      if(keyword == '') {
         alert(ADD_SEARCH_KEYWORD_EMPTY_FIELD);
         return false;
      }

      $.post("./Library", { "cmd" : "addSearchKeyword", "rule_id" : rule_id, "keyword" : keyword},
         function(response) {
            if(response.success) {
               getSearchKeywordList(rule_id);
               loadRuleDetailWithoutWindowClose(rule_id, 'edit');
               /*added saikat*/
                $('#last_modified_lbl').css('color', 'red');
               $('#last_modified_lbl').html('Last modified date: '+ response.date_modified);
               /*End here*/
               alert(SEARCH_KEYWORD_ADD_SUCCESS);
            }
            else {
               alert(SEARCH_KEYWORD_ADD_FAILURE);
            }
         },"json" );
   }

   /*
   * purpose: Remove Geography
   * param: rule_id, geography_id (table auto inc id)
   * return: response object
   * a. success = boolean
   */
   function removeGeography(rule_id, geogrpahy_id) {
      $.post("./Library", { "cmd" : "removeGeography", "geogrpahy_id" : geogrpahy_id},
         function(response) {
            if(response.success) {
               getGeographyList(rule_id);
               loadRuleDetailWithoutWindowClose(rule_id, 'edit');
               /*added saikat*/
               $('#last_modified_lbl').css('color', 'red');
               $('#last_modified_lbl').html('Last modified date: '+ response.date_modified);
               /*End here*/
               alert(GEOGRAPHY_REMOVE_SUCCESS);
            }
            else {
               alert(GEOGRAPHY_REMOVE_FAILURE);
            }
         },"json" );
   }

   /*
   * purpose: Remove Page Url
   * param: rule_id, page_url_id (table auto inc id)
   * return: response object
   * a. success = boolean
   */
   function removePageUrl(rule_id, page_url_id) {
      $.post("./Library", { "cmd" : "removePageUrl", "page_url_id" : page_url_id},
         function(response) {
            if(response.success) {
               getPageUrlList(rule_id);
               loadRuleDetailWithoutWindowClose(rule_id, 'edit');
               /*added saikat*/
               $('#last_modified_lbl').css('color', 'red');
               $('#last_modified_lbl').html('Last modified date: '+ response.date_modified);
               /*End here*/
               alert(PAGE_URL_REMOVE_SUCCESS);
            }
            else {
               alert(PAGE_URL_REMOVE_FAILURE);
            }
         },"json" );
   }

   /*
   * purpose: Remove Referrer Url
   * param: rule_id, page_referrer_url_id (table auto inc id)
   * return: response object
   * a. success = boolean
   */
   function removePageReferrerUrl(rule_id, page_referrer_url_id) {
      $.post("./Library", { "cmd" : "removeReferrerUrl", "page_referrer_url_id" : page_referrer_url_id},
         function(response) {
            if(response.success) {
               getPageReferrerList(rule_id);
               loadRuleDetailWithoutWindowClose(rule_id, 'edit');
               /*added saikat*/
               $('#last_modified_lbl').css('color', 'red');
               $('#last_modified_lbl').html('Last modified date: '+ response.date_modified);
               /*End here*/
               alert(REFERRER_URL_REMOVE_SUCCESS);
            }
            else {
               alert(REFERRER_URL_REMOVE_FAILURE);
            }
         },"json" );
   }

   /*
   * purpose: Remove Page tag
   * param: rule_id, page_tag_id (table auto inc id)
   * return: response object
   * a. success = boolean
   */
   function removePageTag(rule_id, page_tag_id) {
      $.post("./Library", { "cmd" : "removePageTag", "page_tag_id" : page_tag_id},
         function(response) {
            if(response.success) {
               getPageTagList(rule_id);
               loadRuleDetailWithoutWindowClose(rule_id, 'edit');
               /*added saikat*/
               $('#last_modified_lbl').css('color', 'red');
               $('#last_modified_lbl').html('Last modified date: '+ response.date_modified);
               /*End here*/
               alert(PAGE_TAG_REMOVE_SUCCESS);
            }
            else {
               alert(PAGE_TAG_REMOVE_FAILURE);
            }
         },"json" );
   }

   /*
   * purpose: Remove Search engine keyword
   * param: rule_id, search_keyword_id (table auto inc id)
   * return: response object
   * a. success = boolean
   */
   function removeSearchKeyword(rule_id, search_keyword_id) {
      $.post("./Library", { "cmd" : "removeSearchKeyword", "search_keyword_id" : search_keyword_id},
         function(response) {
            if(response.success) {
               getSearchKeywordList(rule_id);
               loadRuleDetailWithoutWindowClose(rule_id, 'edit');
               /*added saikat*/
               $('#last_modified_lbl').css('color', 'red');
               $('#last_modified_lbl').html('Last modified date: '+ response.date_modified);
               /*End here*/
               alert(SEARCH_KEYWORD_REMOVE_SUCCESS);
            }
            else {
               alert(SEARCH_KEYWORD_REMOVE_FAILURE);
            }
         },"json" );
   }

   /*
   * purpose: Load Rule Group detail
   * param: rule_group_id, mode [i.e: 'edit' / 'view']
   * return: response object
   * a. html = plain html
   */
   function loadRuleGroupDetail(rule_group_id, mode) {
      $.post("./RuleGroup", { "cmd" : "getRuleGroupDetail", "rule_group_id" : rule_group_id, "mode" : mode},
               function(response){
                  if(response.html) {                     
                     $("#detail_rule_group_" + rule_group_id).html(response.html);
                     //$('#TB_closeWindowButton').click();
                     closeExistingWindow();
                  }
               }, "json");
   }

   /*
   * purpose: Load Rule detail
   * param: rule_id, mode [i.e: 'edit' / 'view']
   * return: response object
   * a. html = plain html
   */
   function loadRuleDetail(rule_id, mode) {
      $.post("./Rule", { "cmd" : "getRuleDetail", "rule_id" : rule_id, "mode" : mode},
      function(response) {
         if(response.html) {
            /*added saikat*/
            $('#last_modified_lbl').css('color', '#28556A');
            /*End here*/
            $("#detail_rule_" + rule_id).html(response.html);
            //$('#TB_closeWindowButton').click();
            closeExistingWindow();
         }
      }, "json");
   }

   /*
   * purpose: Get Geography list
   * param: rule_id
   * return: response object
   * a. list = array of objects
   * b. success = boolean
   */
   function getGeographyList(rule_id) {
      $.post("./Library", { "cmd" : "getGeographyList", "rule_id" : rule_id},
            function(response) {
               $('#geographyLocation_list').html('');
               var html = '';

               if(response.success) {
                  if(response.list) {
                     for(var i = 0; i < response.list.length; i++) {
                        var j = i + 1;
                        var stateHtml = (response.list[i].state == "") ? "" : response.list[i].state + ", ";
                        html += "<div>" + j + ". " + stateHtml + response.list[i].country + " [<a href='javascript:removeGeography(" + rule_id + ", " + response.list[i].id + ");'>Remove</a>]</div>";
                     }
                  }
               }

               $('#geographyLocation_list').html(html);
            },"json" );
   }

   /*
   * purpose: Get Page url list
   * param: rule_id
   * return: response object
   * a. list = array of objects
   * b. success = boolean
   */
   function getPageUrlList(rule_id) {
      $.post("./Library", { "cmd" : "getPageUrlList", "rule_id" : rule_id},
            function(response) {
               $('#page_url_list').html('');
               var html = '';

               if(response.success) {
                  if(response.list) {
                     for(var i = 0; i < response.list.length; i++) {
                        var j = i + 1;
                        var page_url_Html = (response.list[i].url == "") ? "" : response.list[i].url ;
                        html += "<div>" + j + ". " + page_url_Html + " [<a href='javascript:removePageUrl(" + rule_id + ", " + response.list[i].id + ");'>Remove</a>]</div>";
                     }
                  }
               }

               $('#page_url_list').html(html);
            },"json" );
   }

   /*
   * purpose: Get Referrer url list
   * param: rule_id
   * return: response object
   * a. list = array of objects
   * b. success = boolean
   */
   function getPageReferrerList(rule_id) {
      $.post("./Library", { "cmd" : "getPageReferrerUrlList", "rule_id" : rule_id},
            function(response) {
               $('#page_referrer_list').html('');
               var html = '';

               if(response.success) {
                  if(response.list) {
                     for(var i = 0; i < response.list.length; i++) {
                        var j = i + 1;
                        var pageHtml = (response.list[i].url == "") ? "" : response.list[i].url ;
                        html += "<div>" + j + ". " + pageHtml + " [<a href='javascript:removePageReferrerUrl(" + rule_id + ", " + response.list[i].id + ");'>Remove</a>]</div>";
                     }
                  }
               }

               $('#page_referrer_list').html(html);
            },"json" );
   }

   /*
   * purpose: Get Page tag list
   * param: rule_id
   * return: response object
   * a. list = array of objects
   * b. success = boolean
   */
   function getPageTagList(rule_id) {
      $.post("./Library", { "cmd" : "getPageTagList", "rule_id" : rule_id},
            function(response) {
               $('#page_tag_list').html('');
               var html = '';

               if(response.success) {
                  if(response.list) {
                     for(var i = 0; i < response.list.length; i++) {
                        var j = i + 1;
                        var pageHtml = (response.list[i].page_tag == "") ? "" : response.list[i].page_tag ;
                        html += "<div>" + j + ". " + pageHtml + " [<a href='javascript:removePageTag(" + rule_id + ", " + response.list[i].id + ");'>Remove</a>]</div>";
                     }
                  }
               }

               $('#page_tag_list').html(html);
            },"json" );
   }

   /*
   * purpose: Get Search engine keyword list
   * param: rule_id
   * return: response object
   * a. list = array of objects
   * b. success = boolean
   */
   function getSearchKeywordList(rule_id) {
      $.post("./Library", { "cmd" : "getSearchKeywordList", "rule_id" : rule_id},
            function(response) {
               $('#search_keyword_list').html('');
               var html = '';

               if(response.success) {
                  if(response.list) {
                     for(var i = 0; i < response.list.length; i++) {
                        var j = i + 1;
                        var pageHtml = (response.list[i].keyword == "") ? "" : response.list[i].keyword ;
                        html += "<div>" + j + ". " + pageHtml + " [<a href='javascript:removeSearchKeyword(" + rule_id + ", " + response.list[i].id + ");'>Remove</a>]</div>";
                     }
                  }
               }

               $('#search_keyword_list').html(html);
            },"json" );
   }

   /*
   * purpose: Remove a condition
   * param: rule_id, condition
   * return: response object
   * a. success = boolean
   */
   function removeCondition(rule_id, condition) {
      $.post("./Library", { "cmd" : "removeCondition", "rule_id" : rule_id, "condition" : condition},
            function(response) {
               if(response.success) {
                  loadRuleDetail(rule_id, 'edit');
               }
            }, "json");
   }

   /*
   * purpose: Open a new window
   * param: rule_id
   * return: none
   */
   function openPopUp(rule_id) {
      var condition = $('#conditionSelect_' + rule_id).val();

      if(condition != '') {
         var cmd = 'showConditionPopUp';

         if(condition == PRODUCT_CAT_MANF_CONDITION) {
            createNWindow('Add Rule Condition', '/index.php/Library?cmd=' + cmd + '&rule_id=' + rule_id + '&condition=' + condition, 600,500);
            //$('#hidden_a_' + rule_id).attr('href', './Library?cmd=' + cmd + '&rule_id=' + rule_id + '&condition=' + condition + '&height=500&width=600');
         }
         else {
            createNWindow('Add Rule Condition', '/index.php/Library?cmd=' + cmd + '&rule_id=' + rule_id + '&condition=' + condition, 600,300);
            //$('#hidden_a_' + rule_id).attr('href', './Library?cmd=' + cmd + '&rule_id=' + rule_id + '&condition=' + condition + '&height=300&width=600');
         }         

         //$('#hidden_a_' + rule_id).click();
      }
   }

   /*
   * purpose: Add a rule
   * param: rule_group_id
   * return: response object
   * a. success = boolean
   */
   function addRule(rule_group_id,dom_element) {
      var ruleName     = $('#rule_name').val();
      var rulePriority = $('#rule_priority').val();
      
       //make it disable for multiple entry...
       $(dom_element).attr('disabled', 'disabled');
      
      if(ruleName && rulePriority) {
         $.post("./Library", { "cmd" : "addRule", "rule_group_id" : rule_group_id, "rule_name" : ruleName, "rule_priority" : rulePriority},
         function(response) {
            if(response.success) {
               alert(RULE_ADD_SUCCESS);
               //make it enable ...
               $(dom_element).attr('disabled', '');
               loadRuleGroupDetail(rule_group_id, 'edit');
               closeExistingWindow();
            }
            else
            {
               alert(RULE_ADD_FAILURE);
            }
         }, "json");
      }
      else {
         alert(ADD_RULE_EMPTY_FIELD);
      }
   }

   /*
   * purpose: Save a content
   * param: rule_id
   * return: boolean
   */
   function saveContent(rule_id,dom_element) {
      var content_name      = $('#content_name').val();
      var content_type      = $('#content_type').val();
      var content_priority  = $('#content_priority').val();
      var content_image     = $('#hidden_content_image').val();

      if(content_type && content_name && content_priority) {
         if(!isInt(content_priority) || content_priority <= 0) {
            alert(PRIORITY_RANGE_ERROR);
            return false;
         }
         if(content_type != 'html') {
            if(content_image) 
            {
               //make it disable for multiple entry...
               $(dom_element).attr('disabled', 'disabled');
               saveImageContentInfo(rule_id, content_name, content_type, content_priority, content_image);
            }
            else {
               alert(CONTENT_IMAGE_NOT_FOUND);
               return false;
            }
         }
         else if(content_type == 'html') {
         	 
         	  //make it disable for multiple entry...
            $(dom_element).attr('disabled', 'disabled');
           
            saveHTMLContentInfo(rule_id, content_name, content_type, content_priority);
         }
      }
      else {
         alert(CONTENT_EMPTY_FIELD_ERROR);
         return false;
      }

      return true;
   }

   /*
   * purpose: Save a image content
   * param: rule_id, content_name, content_type, content_image
   * return: boolean
   */
   function saveImageContentInfo(rule_id, content_name, content_type, content_priority, content_image) {
      return saveContentInfo(rule_id, content_name, content_type, content_priority, content_image);
   }

   /*
   * purpose: Save a html content
   * param: rule_id, content_name, content_type
   * return: boolean
   */
   function saveHTMLContentInfo(rule_id, content_name, content_type, content_priority) {
      return saveContentInfo(rule_id, content_name, content_type, content_priority, '');
   }

   /*
   * purpose: Save a image content
   * param: rule_id, content_name, content_type, content_image
   * return: response object
   * a. success = boolean
   * b. content_id = CONTENT_ID
   * c. limit_id = LIMIT_ID
   */
   function saveContentInfo(rule_id, content_name, content_type, content_priority, content_image) {
      var textarea_html     = $('#textarea_html').val(); //html

      var alt_tag           = $('#alt_tag').val(); //image
      var clickable_alt_tag = $('#clickable_alt_tag').val(); //image

      var clickable_img     = $('#clickable_img').val();
      var target_url        = $('#target_url').val();
      var title_tag         = $('#title_tag').val();
      var linked_coupon     = $('#linked_coupon').val();
      var content_image     = $('#hidden_content_image').val();
      var content_id        = $('#hidden_content_id').val();

      //limit processing
      var limit_id          = $('#hidden_limit_id').val();

      var limit_impression_checkbox = $('#limit_impression_checkbox').attr('checked');
      if(limit_impression_checkbox == true) {
         var limit_impression  = $('#limit_impression').val();
      }
      else {
         var limit_impression  = 0;
      }

      var limit_clicks_checkbox = $('#limit_clicks_checkbox').attr('checked');
      if(limit_clicks_checkbox == true) {
         var limit_clicks      = $('#limit_clicks').val();
      }
      else {
         var limit_clicks      = 0;
      }

      var limit_visitor_checkbox = $('#limit_visitor_checkbox').attr('checked');
      if(limit_visitor_checkbox == true) {
         var limit_visitor     = $('#limit_visitor').val();
         var duration          = $('#duration').val();
         var reset_duration    = $('#reset_duration').val();
      }
      else {
         var limit_visitor     = 0;
         var duration          = 'Lifetime';
         var reset_duration    = 'Unlimited';
      }

      if(content_type) {
         $.post("./Library", { "cmd" : "saveContent", "content_name" : content_name, "content_id" : content_id, "rule_id" : rule_id,
                               "content_type" : content_type, "content_priority": content_priority ,"textarea_html" : textarea_html, "clickable_img" : clickable_img,
                               "alt_tag" : alt_tag, "clickable_alt_tag" : clickable_alt_tag, "target_url" : target_url, "title_tag" : title_tag, "linked_coupon" : linked_coupon,
                               "content_image" : content_image, "limit_id" : limit_id, "limit_impression" : limit_impression,
                               "limit_clicks" : limit_clicks, "limit_visitor" : limit_visitor, "duration" : duration, "reset_duration" : reset_duration },
         function(response) {
            if(response.success) {
               var content_id = response.content_id;
               var newFile    = response.newFile;
               var limit_id   = response.limit_id;

               $('#hidden_content_id').val(content_id);
               $('#hidden_limit_id').val(limit_id);
               //$('#hidden_content_image').val(newFile);

               $('#img').html('');
               $('#img').html("<img src='/document/" + rule_id + "/" + content_id + "/" + newFile + "?" + new Date().getTime() + "' border='0'>");

               $('#clk_img').html('');
               $('#clk_img').html("<img src='/document/" + rule_id + "/" + content_id + "/" + newFile + "?" + new Date().getTime() + "' border='0'>");

               loadRuleDetailWithoutWindowClose(rule_id, 'edit');

               /*added saikat*/
               $('#last_modified_lbl').css('color', 'red');
               $('#last_modified_lbl').html('Last modified date: '+ response.date_modified);
              
               //make save button active for entry...
               $('#save').attr('disabled', '');
               /*End here*/
               alert(CONTENT_ADD_SUCCESS);
            }
         }, "json");
      }
   }

   /*
   * purpose: Load Rule detail without window close
   * param: rule_id, mode
   * return: response object
   * a. html = plain html
   */
   function loadRuleDetailWithoutWindowClose(rule_id, mode) {
      $.post("./Rule", { "cmd" : "getRuleDetail", "rule_id" : rule_id, "mode" : mode},
               function(response) {
                  if(response.html) {
                     $("#detail_rule_" + rule_id).html(response.html);
                  }
               }, "json");
   }

   /*
   * purpose: Populate the manufacture list
   * param: ruleId
   * return: response object
   * a. list = array of objects
   */
   function populate_manufacture(ruleId) {
      var  categories = $('#categories').val();

      var  rule_id    = ruleId;
      $.post("./Library", { "cmd" : "populateManufacture", "rule_id" : rule_id, "categories[]" : categories},
         function(response) {
            $('#products').html('');
            $('#manufacture').html('');
            if(response.list) {
               //alert(response.list.length);
               var  selectHtml = "";
               for(var i = 0; i < response.list.length; i++) {
                  selectHtml +=  "<option value=" +response.list[i].manid+ ">" +response.list[i].manufacture+ "</option>";
               }
               $('#manufacture').html(selectHtml);
               //loadRuleDetail(rule_id, 'edit');
            }
         }, "json");
   }

   /*
   * purpose: Populate the products list
   * param: rule_id
   * return: response object
   * a. list = array of objects
   */
   function populateProducts(rule_id) {
      var manufacturers = $('#manufacture').val();
      var  categories   = $('#categories').val();

      $.post("./Library", { "cmd" : "populateProducts", "rule_id" : rule_id, "manufacturers[]" : manufacturers, "categories[]" : categories},
         function(response) {
            $('#products').html('');
            if(response.list) {
               var  selectHtml = "";
               for(var i = 0; i < response.list.length; i++) {
                 selectHtml +=  "<option value=" + response.list[i].unpid + ">" + response.list[i].sku + "</option>";
               }
               $('#products').html(selectHtml);
            }
         }, "json");
   }

   /*
   * purpose: Get the exclusion list
   * param: content_id
   * return: response object
   * a. list = array of objects
   */
   function getExclusionList(content_id) {
      $.post("./Library", { "cmd" : "getExclusionList", "content_id" : content_id},
         function(response) {
            $('#exclusion_list').html('');
            if(response.list) {
               var divhtml = "";
               for(var i = 0; i < response.list.length; i++) {
                  var j = i + 1;

                  var display_name = (response.list[i].man_display_name) ? " - " + 	response.list[i].man_display_name : "";
                  var sku          = (response.list[i].sku) ? " | " + response.list[i].sku : "";
                  var str          =  response.list[i].pt_display_name + display_name + sku;

                  divhtml += "<div>" + j + ". " + str + " [<a href='javascript:removeFromExclusion(" + content_id + ", " + response.list[i].id + ");'>Remove</a>]</div>";
               }
               $('#exclusion_list').html(divhtml);
            }
         }, "json");
   }

   /*
   * purpose: Get the exclusion list for page url
   * param: content_id
   * return: response object
   * a. list = array of objects
   */
   function getUrlExclusionList(content_id)
   {
      $.post("./Library", { "cmd" : "getUrlExclusionList", "content_id" : content_id},
         function(response) {
            $('#url_exclusion_list').html('');
            if(response.list) {
               var html = "";
               for(var i = 0; i < response.list.length; i++) {
                  var j = i + 1;
                  var page_url_Html = (response.list[i].url == "") ? "" : response.list[i].url ;

                  html += "<div>" + j + ". " + page_url_Html + " [<a href='javascript:removeUrlExclusion(" + content_id + ", " + response.list[i].id + ");'>Remove</a>]</div>";
               }
               $('#url_exclusion_list').html(html);
            }
         }, "json");
   }

   /*
   * purpose: Get the products list
   * param: rule_id
   * return: response object
   * a. list = array of objects
   */
   function getProductList(rule_id) {
      $.post("./Library", { "cmd" : "getProductList", "rule_id" : rule_id},
         function(response) {
            $('#pro_cat_man_list').html('');
            if(response.list) {
               var divhtml = "";
               for(var i = 0; i < response.list.length; i++) {
                  var j = i + 1;

                  var display_name = (response.list[i].man_display_name) ? " - " + 	response.list[i].man_display_name : "";
                  var sku          = (response.list[i].sku) ? " | " + response.list[i].sku : "";
                  var str          =  response.list[i].pt_display_name + display_name + sku;
                  divhtml += "<div>" + j + ". " + str + " [<a href='javascript:removeFromProduct(" + rule_id + ", " + response.list[i].id + ");'>Remove</a>]</div>";
               }
               $('#pro_cat_man_list').html(divhtml);
            }
         }, "json");


   }

   /*
   * purpose: Remove from exclusion list
   * param: content_id, exclusion_id
   * return: none
   */
   function removeFromExclusion(content_id, exclusion_id) {
      $.post("./Library", { "cmd" : "removeFromExclusion", "content_id" : content_id, "exclusion_id" : exclusion_id},
         function(response) {
            getExclusionList(content_id);
         }, "json");
   }

   /*
   * purpose: Remove from exclusion list
   * param: content_id, exclusion_id
   * return: none
   */
   function removeUrlExclusion(content_id, exclusion_id) {
      $.post("./Library", { "cmd" : "removeFromUrlExclusion", "content_id" : content_id, "exclusion_id" : exclusion_id},
         function(response) {
            getUrlExclusionList(content_id);
         }, "json");
   }

   /*
   * purpose: Get browser list for Rule
   * param: rule_id
   * return: response object
   * a. success = boolean
   * b. browserCondition = array of objects
   */
   function getBrowserForRule(rule_id) {
      $.post("./Library", { "cmd" : "getBrowserForRule", "rule_id" : rule_id},
         function(response) {
            $('#browser_list').html('');
            if(response.success) {
               var divhtml = "";
               for(var i = 0; i < response.browserCondition.length; i++) {
                  var j = i + 1;
                  divhtml += "<div>" + j + ". " + response.browserCondition[i].display_name + " [<a href='javascript:removeBrowser(" + rule_id + ", " + response.browserCondition[i].id + ");'>Remove</a>]</div>";
               }
               $('#browser_list').html(divhtml);
            }
         }, "json");
   }

   /*
   * purpose: Add a browser for Rule
   * param: rule_id
   * return: response object
   * a. success = boolean
   */
   function addBrowser(rule_id) {
      var browser = $('#browser').val();
      $.post("./Library", { "cmd" : "addBrowser", "rule_id" : rule_id, "browser[]": browser},
         function(response) {
            if(response.success) {
               getBrowserForRule(rule_id);
               loadRuleDetailWithoutWindowClose(rule_id, 'edit');
               /*added saikat*/
               $('#last_modified_lbl').css('color', 'red');
               $('#last_modified_lbl').html('Last modified date: '+ response.date_modified);
               /*End here*/
               alert(BROWSER_ADD_SUCCESS);
            }
            else {
               if(response.exists) {
                  var str = '';

                  for(var i=0; i < response.browser.length; i++) {
                     var j  = i + 1;
                     str   += j + ". " + response.browser[i] + "\n";
                  }

                  getBrowserForRule(rule_id);
                  loadRuleDetailWithoutWindowClose(rule_id, 'edit');
                  alert(BROWSER_ALREADY_EXIST + str);
               }
               else {
                  alert(BROWSER_ADD_FAILURE);
               }
            }
         }, "json");
   }

   /*
   * purpose: Remove a browser for a Rule
   * param: rule_id, browser_id [table auto inc id]
   * return: response object
   * a. success = boolean
   */
   function removeBrowser(rule_id, browser_id) {
      $.post("./Library", { "cmd" : "removeBrowser", "rule_id" : rule_id, "browser_id": browser_id},
         function(response) {
            if(response.success) {
               getBrowserForRule(rule_id);
               loadRuleDetailWithoutWindowClose(rule_id, 'edit');
               /*added saikat*/
               $('#last_modified_lbl').css('color', 'red');
               $('#last_modified_lbl').html('Last modified date: '+ response.date_modified);
               /*End here*/
               alert(BROWSER_REMOVE_SUCCESS);
            }
            else {
               alert(BROWSER_REMOVE_FAILURE);
            }
         }, "json");
   }

   /*
   * purpose: Remove an exclusion
   * param: rule_id, exclusion_id [table auto inc id]
   * return: none
   */
   function removeFromProduct(rule_id, exclusion_id) {
      $.post("./Library", { "cmd" : "removeFromProduct", "rule_id" : rule_id, "exclusion_id" : exclusion_id},
         function(response) {
            if(response.success) {
               getProductList(rule_id);
               loadRuleDetailWithoutWindowClose(rule_id, 'edit');
               /*added saikat*/
               $('#last_modified_lbl').css('color', 'red');
               $('#last_modified_lbl').html('Last modified date: '+ response.date_modified);
               /*End here*/
               alert(PRO_CAT_MANF_REMOVE_SUCCESS);
            }
            else {
               alert(PRO_CAT_MANF_REMOVE_FAILURE);
            }
         }, "json");
   }

   /*
   * purpose: Save browser list
   * param: rule_id
   * return: none
   */
   function saveBrowser(rule_id) {
      loadRuleDetail(rule_id, 'edit');
   }

   /*
   * purpose: Save Page url condition
   * param: rule_id
   * return: none
   */
   function savePageUrlCondition(rule_id) {
      loadRuleDetail(rule_id, 'edit');
   }

   /*
   * purpose: Save Page Tag condition
   * param: rule_id
   * return: none
   */
   function savePageTagCondition(rule_id) {
      loadRuleDetail(rule_id, 'edit');
   }

   /*
   * purpose: Save Referrer Url condition
   * param: rule_id
   * return: none
   */
   function savePageReferrerCondition(rule_id) {
      loadRuleDetail(rule_id, 'edit');
   }

   /*
   * purpose: Save Search engine keyword condition
   * param: rule_id
   * return: none
   */
   function saveSearchKeywordCondition(rule_id) {
      loadRuleDetail(rule_id, 'edit');
   }

   /*
   * purpose: Save Products/Cat/manf condition
   * param: rule_id
   * return: none
   */
   function saveProCatManfCondition(rule_id) {
      loadRuleDetail(rule_id, 'edit');
   }

   /*
   * purpose: Add a product
   * param: none
   * return: response object
   * a. success = boolean
   */
   function addProducts() {
      var categories   = $('#categories').val();
      var manufactures = $('#manufacture').val();
      var products     = $('#products').val();
      var content_id   = $('#hidden_content_id').val();

      if(content_id) {
         if(categories) {
            $.post("./Library", { "cmd" : "addProducts", "content_id" : content_id, "categories[]": categories, "manufactures[]" : manufactures, "products[]" : products },
               function(response) {
                  if(response.success) {
                     getExclusionList(content_id);
                     alert(EXCLUSION_ADD_SUCCESS);
                  }
               }, "json");
         }
         else {
            alert(EXCLUSION_ERROR);
         }
      }
      else {
         alert(CONTENT_TYPE_ERROR);
      }
   }

   /*
   * purpose: Add a product/cat/manf
   * param: rule_id
   * return: response object
   * a. success = boolean
   */
   function addNewProCatManf(rule_id,dom_element) {
      var categories   = $('#categories').val();
      var manufactures = $('#manufacture').val();
      var products     = $('#products').val();

      if(rule_id) {
         if(categories) {
         	 //make it disable for multiple entry...
            $(dom_element).attr('disabled', 'disabled');
            $.post("./Library", { "cmd" : "addProCatManf", "rule_id" : rule_id, "categories[]": categories, "manufactures[]" : manufactures, "products[]" : products },
               function(response) {
                  if(response.success) {
                     getProductList(rule_id);
                     loadRuleDetailWithoutWindowClose(rule_id, 'edit');
                     /*added saikat*/
                     $('#last_modified_lbl').css('color', 'red');
                     $('#last_modified_lbl').html('Last modified date: '+ response.date_modified);
                     //make it disable for multiple entry...
                     $(dom_element).attr('disabled', '');
                     /*End here*/
                     alert(PRO_CAT_MANF_ADD_SUCCESS);
                  }
                  else {
                     alert(PRO_CAT_MANF_ADD_FAILURE);
                  }
               }, "json");
         }
         else {
            alert(EXCLUSION_ERROR);
         }
      }
      else {
         alert(CONTENT_TYPE_ERROR);
      }
   }

   /*
   * purpose: Add a Rule Group
   * param: section_id
   * return: response object
   * a. success = boolean
   */
   function addRuleGroup(section_id,dom_element) {
      var group_name     = $('#rule_group_name').val();
      var priority       = $("#rule_group_priority").val();
      var control        = $("#rule_group_control").val();

      if(priority && control && group_name) {
         if(!isInt(priority) || !(priority > 0)) {
            alert(INVALID_PRIORITY_ERROR);
            return false;
         }

         if(!isInt(control) || !(control >= 0 && control <= 100)) {
            alert(ADD_GROUP_CONTROL_RANGE_ERROR);
            return false;
         }
         //make it disable for multiple entry...
         $(dom_element).attr('disabled', 'disabled');
         
         //input ok...save now...
         $.post("./Section", { "cmd" : "addRuleGroup", "section_id" : section_id,
                               "group_name" : group_name, "priority" : priority, "group_control" : control},
         function(response) {
            if(response.success) {
               getRuleGroupList(section_id,'edit');
               alert(RULE_GROUP_ADD_SUCCESS);
               //$('#TB_closeWindowButton').click();
               closeExistingWindow();
            }
            else {
               alert(RULE_GROUP_ADD_FAILURE);
            }
         }, "json");
      }
      else {
         alert(ADD_GROUP_EMPTY_FIELD);
         return false;
      }
   }


   /*
   * purpose: Add a Section
   * return: response object
   * a. success = boolean
   */

   function addSection(dom_element)
   {
      var section_name   = $('#section_name').val();
      var control        = $("#section_control").val();

      if(control && section_name)
      {
         if(!isInt(control) || !(control >= 0 && control <= 100)) {
            alert(ADD_GROUP_CONTROL_RANGE_ERROR);
            return false;
         }
          
          //make it disable for multiple entry...
         $(dom_element).attr('disabled', 'disabled');   

         //input ok...save now...
         $.post("./Section", { "cmd" : "saveNewSection", "section_name" : section_name, "section_control" : control},
         function(response) {
            if(response.success) {
               location.href = './Section?cmd=list';
            }
            else
            	{
            		alert(response.text);
            		//make it disable for multiple entry...
                $(dom_element).attr('disabled', '');
                $('#section_name').focus();
            	}
         }, "json");
      }
      else {
         alert(ADD_SECTION_EMPTY_FIELD);
         return false;
      }
   }

   /*
   * purpose: Populate Rule groups
   * param: none
   * return: response object
   * a. success = boolean
   * b. ruleGroupList = array of objects
   */
   function populateRuleGroups() {
      var section_id = $('#sections').val();
      $('#rule_groups').html('');

      if(section_id) {
         $.post("./RuleGroup", { "cmd" : "populateRuleGroups", "section_id" : section_id},

         function(response) {
            if(response.success) {
               var optionhtml = '';
               if(response.ruleGroupList) {
                  for(var i = 0; i < response.ruleGroupList.length; i++) {
                     optionhtml += "<option value=" + response.ruleGroupList[i].rule_group_id+ ">" + response.ruleGroupList[i].name + "</option>";
                  }
               }

               $('#rule_groups').html(optionhtml);
            }
         }, "json");
      }
   }

   /*
   * purpose: Add a link group
   * param: none
   * return: response object
   * a. success = boolean
   */
   function addLinkedGroup() {
      var linked_section_id  = $('#sections').val();
      var linked_rule_groups = $('#rule_groups').val();
      var rule_group_id      = $('#hidden_rule_group_id').val();

      if(rule_group_id && linked_section_id && linked_rule_groups) {
         $.post("./RuleGroup", { "cmd" : "addLinkedGroup", "rule_group_id" : rule_group_id, "linked_section_id" : linked_section_id, "linked_rule_groups[]" : linked_rule_groups},
         function(response) {
            if(response.success) {
               getLinkedGroups(rule_group_id, 'edit');
               /*added saikat*/
               $('#last_modified_lbl').css('color', 'red');
               $('#last_modified_lbl').html('Last modified date: '+ response.date_modified);
              /*End here*/
            }
         }, "json");
      }
      else {
         alert(ADD_LINKED_GROUP_ERROR);
      }
   }

   /*
   * purpose: Add a link group
   * param: rule_group_id, mode [i.e: 'edit' / 'view']
   * return: response object
   * a. linked_group_list = array of objects
   */
   function getLinkedGroups(rule_group_id, mode) {
      $.post("./RuleGroup", { "cmd" : "getLinkedGroups", "rule_group_id" : rule_group_id},
      function(response) {
         $('#linkedGroupList').html('');
         var divhtml = '';
         if(response.linked_group_list) {
            for(var i = 0; i < response.linked_group_list.length; i++) {
               var j = i + 1;
               divhtml += "<div>" + j + ". " + "<b>Section:</b> <i>" + response.linked_group_list[i].section_name + "</i> - " + " <b>Rule Group:</b> <i>" + response.linked_group_list[i].rule_group_name + "</i> <br>";
               divhtml += "&nbsp;&nbsp;&nbsp;&nbsp;<b>Linked to Section:</b> <i>" + response.linked_group_list[i].to_section_name + "</i> - <b>Rule Group:</b> <i>" + response.linked_group_list[i].to_rule_group_name + "</i>";
               if(mode == 'edit') {
                  divhtml += "&nbsp;&nbsp;[ <a href='javascript:removeLinkedGroup("+ rule_group_id +"," + response.linked_group_list[i].id + ")'>Remove</a> ]</div>";
               }
            }

            $('#linkedGroupList').html(divhtml);
         }
      }, "json");
   }

   /*
   * purpose: Remove a link group
   * param: rule_group_id, link_group_id
   * return: response object
   * a. success = boolean
   */
   function removeLinkedGroup(rule_group_id, link_group_id) {
      $.post("./RuleGroup", { "cmd" : "removeLinkedGroup", "id" : link_group_id, "rule_group_id" : rule_group_id},
      function(response) {
         $('#linkedGroupList').html('');

         if(response.success) {
            getLinkedGroups(rule_group_id, 'edit');
            /*added saikat*/
            $('#last_modified_lbl').css('color', 'red');
               $('#last_modified_lbl').html('Last modified date: '+ response.date_modified);
           /*End here*/
         }
      }, "json");
   }

   function updateCookieVersion() {
      if(confirm(UPDATE_COOKIE_VERSION_CONFIRMATION)) {
         $.post("./Library", { "cmd" : "updateCookieVersion"},
         function(response) {
            if(response.success) {
               alert(COOKIE_VERSION_UPDATE_SUCCESS);
            }
            else
            {
               alert(COOKIE_VERSION_UPDATE_ERROR);
            }
         }, "json");
      }
   }
   function checkValidPriority(htlObj)
   {      
      if(htlObj.value <= 0 )
      {
         alert(PRIORITY_RANGE_ERROR)         
         $('#' + htlObj.id).attr('value','');         
         $('#' + htlObj.id).focus();         
         return false
      }
      return true;
   }

   function initiateRGSerialize(rule_group_id) {
      var new_value = $("#rule_group_form_" + rule_group_id).serialize();
      if(new_value != RG_FORM_SERIALIZE[rule_group_id])
      {
         RG_LAST_SAVE_MSG[rule_group_id] = $("#last_modified_" + rule_group_id).html();
         $("#last_modified_" + rule_group_id).html("<span style='color:red'>Rule Group Information Modified</span>");
      }
      else {
         $("#last_modified_" + rule_group_id).html(RG_LAST_SAVE_MSG[rule_group_id]);
      }
   }

   function initiateLanguageSerialize(rule_id) {
      var new_value = $("#language_form_" + rule_id).serialize();

      if(new_value != LANGUAGE_FORM_SERIALIZE[rule_id])
      {
         LANGUAGE_LAST_SAVE_MSG[rule_id] = $("#last_modified_lbl").html();
         $("#last_modified_lbl").html("<span style='color:red'>Language Information Modified</span>");
      }
      else {
         $("#last_modified_lbl").html(LANGUAGE_LAST_SAVE_MSG[rule_id]);
      }
   }

   function initiateNoOfVisitSerialize(rule_id) {
      var new_value = $("#num_of_visits_form_" + rule_id).serialize();

      if(new_value != NO_OF_VISIT_FORM_SERIALIZE[rule_id])
      {
         NO_OF_VISIT_LAST_SAVE_MSG[rule_id] = $("#last_modified_lbl").html();
         $("#last_modified_lbl").html("<span style='color:red'>No Of Visit Information Modified</span>");
      }
      else {
         $("#last_modified_lbl").html(NO_OF_VISIT_LAST_SAVE_MSG[rule_id]);
      }
   }

   function initiateLengthOfVisitSerialize(rule_id) {
      var new_value = $("#length_of_visits_form_" + rule_id).serialize();

      if(new_value != LENGTH_OF_VISIT_FORM_SERIALIZE[rule_id])
      {
         LENGTH_OF_VISIT_LAST_SAVE_MSG[rule_id] = $("#last_modified_lbl").html();
         $("#last_modified_lbl").html("<span style='color:red'>Length Of Visit Information Modified</span>");
      }
      else {
         $("#last_modified_lbl").html(LENGTH_OF_VISIT_LAST_SAVE_MSG[rule_id]);
      }
   }

   function initiateDepthOfVisitSerialize(rule_id) {
      var new_value = $("#depth_of_visits_form_" + rule_id).serialize();

      if(new_value != DEPTH_OF_VISIT_FORM_SERIALIZE[rule_id])
      {
         DEPTH_OF_VISIT_LAST_SAVE_MSG[rule_id] = $("#last_modified_lbl").html();
         $("#last_modified_lbl").html("<span style='color:red'>Depth Of Visit Information Modified</span>");
      }
      else {
         $("#last_modified_lbl").html(DEPTH_OF_VISIT_LAST_SAVE_MSG[rule_id]);
      }
   }

   function initiateTimeOfVisitSerialize(rule_id) {
      var new_value = $("#time_of_visits_form_" + rule_id).serialize();

      if(new_value != TIME_OF_VISIT_FORM_SERIALIZE[rule_id])
      {
         TIME_OF_VISIT_LAST_SAVE_MSG[rule_id] = $("#last_modified_lbl").html();
         $("#last_modified_lbl").html("<span style='color:red'>Time Of Visit Information Modified</span>");
      }
      else {
         $("#last_modified_lbl").html(TIME_OF_VISIT_LAST_SAVE_MSG[rule_id]);
      }
   }

   function initiateRuleFormSerialize(rule_id) {
      var new_value = $("#rule_form_" + rule_id).serialize();
      if(new_value != RULE_FORM_SERIALIZE[rule_id])
      {
         RULE_LAST_SAVE_MSG[rule_id] = $("#rule_last_modified_" + rule_id).html();
         $("#rule_last_modified_" + rule_id).html("<span style='color:red'>Rule Information Modified</span>");
      }
      else {
         $("#rule_last_modified_" + rule_id).html(RULE_LAST_SAVE_MSG[rule_id]);
      }
   }

   function saveLinkedGroup() {
      $('#last_modified_lbl').css('color', '#28556A');
      //$('#TB_closeWindowButton').click();            
       closeExistingWindow();
   }
   
   function viewMileStone(section_id,rule_group_id,rule_id,content_id,save_type)
   {
   	//alert(url);
   	$.post("./Section", { "cmd" : "viewSectionMilestone", "section_id" : section_id, "rule_group_id" : rule_group_id, "rule_id" : rule_id, "content_id" : content_id, "save_type" : save_type   },
        function(response){
            if(response.success) 
            {
            	alert(response.text);
            }
           }, "json");

   }
   function saveMileStone(section_id,rule_group_id,rule_id,content_id,save_type)
   {
   	//alert(url);
   	if(confirm(MILESTONE_CONFIRMATION)) 
   	{
        $.post("./Section", { "cmd" : "saveMileStone", "section_id" : section_id, "rule_group_id" : rule_group_id, "rule_id" : rule_id, "content_id" : content_id, "save_type" : save_type   },
        function(response){
            if(response.success) 
            {
            	alert(response.text);
            }
           }, "json");
      }  
   }
   function saveRuleMileStone(section_id,rule_group_id,rule_id,content_id,save_type)
   {
   	//alert(url);
   	if(confirm(MILESTONE_CONFIRMATION)) 
   	{
        $.post("./Section", { "cmd" : "saveRuleMileStone", "section_id" : section_id, "rule_group_id" : rule_group_id, "rule_id" : rule_id, "content_id" : content_id, "save_type" : save_type   },
        function(response){
            if(response.success) 
            {
            	alert(response.text);
            }
           }, "json");
      }  
   }
   
   function saveContentMileStone(section_id,rule_group_id,rule_id,content_id,save_type)
   {
   	//alert(url);
   	if(confirm(MILESTONE_CONFIRMATION)) 
   	{
        $.post("./Section", { "cmd" : "saveContentMileStone", "section_id" : section_id, "rule_group_id" : rule_group_id, "rule_id" : rule_id, "content_id" : content_id, "save_type" : save_type   },
        function(response){
            if(response.success) 
            {
            	alert(response.text);
            }
           }, "json");
      }  
   }
   
   
   
NewWindow = function (title, content, resizable, draggable, options, cssOptions){
                                                                  
                      this.options = {
                                    content:'',
                                    buttons:'m,c',
                                    icon:'',
                                    skin:'default',
                                    iconized:false,
                                    collapsed:false,
                                    width:600,
                                    height:400,
                                    dock:undefined,
                                    grid:undefined,
                                    gridx:undefined,
                                    gridy:undefined,
                                    rememberMe:false
                      };
                      
                      this.cssOptions = {
                        position:'absolute',
                        left:100,
                        top:50
                      };
                      
                      $.extend (this.options, options);
                      $.extend (this.cssOptions, cssOptions);
                                            
                      var myWindow = $('<div><div class="no"><div class="ne"><div class="n"></div></div><div class="o"><div class="e"><div class="c"><div class="mbcontainercontent"></div></div></div></div><div><div class="so"><div class="se"><div class="s"></div></div></div></div></div></div>');
                      
                      myWindow.find('.mbcontainercontent:first').html(content);
                      myWindow.find('.n:first').html(title);                                            
                                            
                      myWindow.addClass('containerPlus').attr(this.options).css(this.cssOptions).appendTo(document.body);
                      /*
                      if (resizable)
                          myWindow.addClass('resizable');
                          */
                      if (draggable)
                          myWindow.addClass('draggable');
                      
                      myWindow.buildContainers({
                          containment:"document", 
                          elementsPath:"/ext/jquerycontainerplus/elements/",
                          mantainOnWindow:true,
                          onClose:function(){
                                             myWindow.find('.mbcontainercontent:first').html("&nbsp;");
                                            },
                          onLoad:function(){
                                             //myWindow.find('.mbcontainercontent:first').html("&nbsp;");
                                             //$('document').disable();
                                            }                  
                      });
                      //myWindow.mb_centerOnWindow(false);

                      return myWindow;
}
var popupHeight = '';
var popupWidth = '';   
function createNWindow(wtitle,wurl,wwidth,wheight)
{      
   closeExistingWindow();
   //request data for centering  
   
   var windowWidth = document.documentElement.clientWidth;  
   //var windowHeight = document.documentElement.clientHeight;                        
   var windowHeight = $("#mainContainer").height();
   //alert(windowHeight)
   /*
   var windowWidth = document.width;  
   var windowHeight = document.height; 
   */                   
   
   popupHeight = wheight;
   popupWidth = wwidth;   
   
   var totalheight = parseInt((windowHeight/2)-(popupHeight/2)+$().scrollTop());
   var leftposition = (windowWidth/2)-(popupWidth/2);

   if(wurl !='')
   {
      NewWindow(wtitle, '<center><img align="absmiddle" src="/view/common/images/loadingAnimation.gif"></center>', true, true, {content:wurl, width:wwidth, height:wheight},{left:leftposition, top:totalheight});
   }
   else
   {
      alert("Please Provide the Content URL");
   }
}

function closeExistingWindow()
{
   if($().find(".buttonBar"))
   {
      $().find(".buttonBar").find(".close").click();
   }
}

function resetTabindex(tabId)
{   
   $("#"+tabId).focus();
}