$redirectPage = 'index.php';
//Return obj by id
function $ (id) {return document.getElementById (id);}

//Check if item in array
function inArray (item, list) {
    for (var i=0; i < list.length; i++) {
      if (list [i] == item)
        return true
    }
    return false;
}

//Redirect to page
function    go (url, _blank) {
  if (_blank)
     open (url);
  else
    location.href = url;
};

//Restore page from hash if variable "hash" is true else set page from variable pageName
function showPage (pageName, hash)
{
    if (hash && location.hash) {
        hashPageName = location.hash.split ('=') [1];
        if (inArray (hashPageName, g_pages)) pageName = hashPageName;
    }
    for (var i=0; i < g_pages.length; i++) {
      $(g_pages [i]).style.display = g_pages [i] != pageName ? 'none' : 'block';
    }
    savepage (pageName);
}

//Save page in hash
function savepage (pageName)
{
    location.hash = "page=" + pageName;
}

//Show popup form
function showForm (id)
{
  var s = $("shadow");
  s.style.display = 'block';
  s.style.height = Math.max(document.body.offsetHeight, 800) + 'px';
  s.style.width = document.body.offsetWidth + 'px';

  $(id).style.display = 'block';

  if ($("splash"))
    $("splash").style.visibility = 'hidden';
  if ($('pages_count_sb'))
      $('pages_count_sb').style.visibility = 'hidden';
      
/* -------------------------------------------------------------------
   Comment by Tan to hide Media
   -------------------------------------------------------------------

    if ($('media_video1'))
        $('media_video1').style.display = $('media_news1').style.display = $('media_blogs1').style.display = $('media_forums1').style.display = $('media_ads1').style.display = 'none';
    if ($('media_video2'))
        $('media_video2').style.display = $('media_news2').style.display = $('media_blogs2').style.display = $('media_forums2').style.display = $('media_ads2').style.display = 'none';
*/        
    if (id=='contactUsForm')
        $("submitFeedback").disabled = false;

  if (id == 'tourForm')
     $('tourIframe').src = 'http://www.freshdrop.net/videos/index.html';

  return false;
}

//Hide popup forms
function hideForm(id)
{
  if ($(id))
      if ($(id).style.display == 'block') {
            $(id).style.display = 'none';
          $("shadow").style.display = 'none';
        }
  if ($("splash"))
    $("splash").style.visibility = 'visible';
  if ($('pages_count_sb'))
      $('pages_count_sb').style.visibility = 'visible';

/* -------------------------------------------------------------------
   Comment by Tan to hide Media
   -------------------------------------------------------------------

  if (window.mediaControl1)
        mediaControl1(g_mediaType1);

  if (window.mediaControl2)
        mediaControl2(g_mediaType2);
*/
}

//Send ajax request to login
function login (form)
{
  var loginForm = form;
  var username = loginForm.username.value;
  var password = loginForm.password.value;
  
  var url = "login.php";
  $$.post(url, {
         'task' : 'login',
         'username' : username,
         'password' : password
     }, function(data){

     var arr=data.split(':');
     if (arr[0]=='OK'){
        hideForm ('loginForm');
        //Needs PRO but user not PRO
        (isPro && arr[1] != 'Y') ? go ( 'bill_launch.php') : go ( getRedirectPage() + '?DF=' + g_tableName);

     }else{
        var errMsg = "Invalid username or password.";
        if (/redirect/.test ( data ))
            errMsg = "Activation required. Please check you email.";

        $("loginMsg").innerHTML = errMsg;
        $("loginMsg").className = "failMsg";
     }
  });

/*

  var ajaxSender = new ajax ();
    ajaxSender.onSuccessHandler(function() {
            hideForm ('loginForm');
            //Needs PRO but user not PRO
            isPro && this.getResponse().split(':')[1] != 'Y' ? go ( 'bill_launch.php') : go ( getRedirectPage () + '?DF=' + g_tableName);
        });  
    ajaxSender.onFailureHandler(function() {
        var errMsg = "Invalid username or password.";  
            if (/redirect/.test ( this.getResponse () ))
                errMsg = "Activation required. Please check you email.";
            //  go( this.getResponse ().split ("|") [1]);
        $("loginMsg").innerHTML = errMsg;
        $("loginMsg").className = "failMsg";
    });
  ajaxSender.send (url);
*/
  return false;
 // ajaxSend
}

//Send ajax request to logout
function logout ()
{
  var url = "login.php?task=logout";
  var ajaxSender = new ajax ();
  ajaxSender.onSuccessHandler(function() {
        go ( "index.php" );
    });
    ajaxSender.onFailureHandler(function() {
      alert ("Logout failed.");
    });
  ajaxSender.send (url);
}

//Set page for redirecting
function setRedirectPage (page) { $redirectPage = page}

//Get page for redirecting
function getRedirectPage () { return $redirectPage}

//Select row in table
function selectRow (obj) {
  var selectedRow = obj.parentNode.selectedRow;
  if (selectedRow)
      for (var i=0; i < selectedRow.childNodes.length; i++)
        if (selectedRow.childNodes [i].nodeName == 'TD')
            if (selectedRow.cells[1].childNodes[0].nodeValue == 'No')
                selectedRow.childNodes [i].style.backgroundColor = "#aaa";
              else
                selectedRow.childNodes [i].style.backgroundColor = "";

  for (var i=0; i < obj.childNodes.length; i++)
    if (obj.childNodes [i].nodeName == 'TD')
        obj.childNodes [i].style.backgroundColor = "#077fc9";

  obj.parentNode.selectedRow = obj;
}

//send ajax request to get new password
function getPassword(form) {
    var email = form.email.value;
    var url = "newpassword.php?doPostBack=pass&email=" + email;
  var ajaxSender = new ajax ();
    ajaxSender.onSuccessHandler(function() {
            var msg = "Your new password was sent to your email.";
        $("fpMsg").innerHTML = msg;
            $("fpMsg").className = "succMsg";
        });
    ajaxSender.onFailureHandler(function() {
        var msg = "Some error."+this.getResponse ();
            if (/email/i.test ( this.getResponse () ))
                msg = this.getResponse ();
        $("fpMsg").innerHTML = msg;
        $("fpMsg").className = "failMsg";
    });
  ajaxSender.send (url);
}

//send ajax request to get member id
function getMemberId(form) {
    var email = form.email.value;
    var url = "membername.php?doPostBack=pass&email=" + email;
  var ajaxSender = new ajax ();
    ajaxSender.onSuccessHandler(function() {
            var msg = "Your member id was sent to your email.";
        $("fiMsg").innerHTML = msg;
            $("fiMsg").className = "succMsg";
        });
    ajaxSender.onFailureHandler(function() {
        var msg = "Some error."+this.getResponse ();
            if (/email/i.test ( this.getResponse () ))
                msg = this.getResponse ();
        $("fiMsg").innerHTML = msg;
        $("fiMsg").className = "failMsg";
    });
  ajaxSender.send (url);
}
//Move selected table row up or down
function moveRow (tableId, direction) {
  var parent = $(tableId).tBodies[0];
  var selectedRow = parent.selectedRow;
  if (!selectedRow || selectedRow.rowIndex == 0 || (selectedRow.rowIndex == parent.rows.length - 1 && direction == 'down')) return;
  if (direction == 'up') {
      var previousRow = parent.rows [selectedRow.rowIndex - 1];
        if (previousRow.rowIndex != 0) {
           selectedRow.cells[2].childNodes[0].nodeValue = selectedRow.rowIndex - 1;
           previousRow.cells[2].childNodes[0].nodeValue = previousRow.rowIndex + 1;
           parent.insertBefore(selectedRow, previousRow);
        }
    } else if (direction == 'down') {
      var nextRow = parent.rows [selectedRow.rowIndex + 1];
      selectedRow.cells[2].childNodes[0].nodeValue = selectedRow.rowIndex + 1;
      nextRow.cells[2].childNodes[0].nodeValue = nextRow.rowIndex - 1;
      parent.insertBefore(nextRow, selectedRow);
    }
}

//Change item visibility for selected table row
function setVisibility (tableId, mode) {
  var parent = $(tableId).tBodies[0];
  var selectedRow = parent.selectedRow;
  if (selectedRow)
      selectedRow.cells[1].childNodes[0].nodeValue = mode ? 'Yes' : 'No';
}

//Save table data
function saveTableData (tableId, helper_id) {
    var parent = $(tableId);
    var rows = parent.rows;
    var url = 'actions.php?task=';

    if (tableId.match(/^gridColumnsTable/i) )
        url += 'updateGridColumns&id='+helper_id;
    else
    if (tableId == 'quickFiltersTable')
        url += 'updateQuickFilters';
    else
    if (tableId == 'dataFeedsTable')
        url += 'updateDataFeeds';

    for (var i = 1; i < rows.length; i++)
        url += '&itemId[]=' + rows[i].getAttribute ('itemId') + '&vis[]=' + rows[i].cells[1].childNodes[0].nodeValue + '&order[]=' + rows[i].cells[2].childNodes[0].nodeValue;
  var ajaxSender = new ajax ();
    ajaxSender.onSuccessHandler(function() {
            alert ( "Data successfully saved");
        });
    ajaxSender.onFailureHandler(function() {
      alert(this.getResponse ());
            alert ( "Data not saved");
    });
  ajaxSender.send (url);
}

function showLoginForm (form) {
  var forms = ['enterForm', 'forgotPassword', 'forgotId'];
  for (var i=0; i < forms.length; i++)
    $(forms [i]).style.display = forms [i] != form ? 'none' : 'block';
}

function openSubMenu(id) {
    var m = $(id);
    m.style.display = (m.style.display == 'block') ? 'none' : 'block';
}

//Show/hide splash
function switchSplash() {
  var flash = $('flash');
  if ( flash.style.visibility == "hidden") {
    flash.style.visibility = "visible";
    flash.style.height = '252px';
    flash.style.width = '879px';
  }
  else {
    flash.style.visibility = "hidden";
    flash.style.height = '0px';
    flash.style.width = '0px';
 }
}

//Load custom filter info
function loadCustomFilter (obj, id) {
  var ajaxSender = new ajax ();
  var url = "actions.php?task=loadCustomFilter&filterId=" + id;
    ajaxSender.onSuccessHandler(function() {
        var response = this.getResponse ().substr(2).split (':');
            var filterName          = response [0];
            var filterKeywords  = response [1];
            var filterType          = response [2];
            var filterPro           = response [3] > (filterType == 'exactmatch' ? 5000 : 50) ? true : false;
            var form = $('editFilterForm');
            //Set parameters for edit form
            form.filterId.value     = id;
            form.filterName.value = filterName;
            form.keywords.value     = filterKeywords;
            form.type [filterType == 'exactmatch' ? 0 : 1].checked = 'checked';

            if (filterPro && !userIsPro) {
                $('editFilterSaveBtn').style.display = "none";
                $('inactiveLabel').style.display = "block";
            } else {
                $('editFilterSaveBtn').style.display = "";
                $('inactiveLabel').style.display = "none";
            }
            filterTypeInfo ('keywordsE', 'editFilterKeysLabel', 'filterInfoE' ,filterType);
//          $('editFilterKeysLabel').innerHTML = "Keywords (" + filterKeywords.split ("\n").length + " of " + (userIsPro ? 200 : 50) + " available) : ";
            //set filter id for delete form
            $('deleteFilterForm').filterId.value = id;
            showPage    ('editQuickFilter');

        });
    ajaxSender.onFailureHandler (function   () {
        alert ('Some error occured while getting filter info.');
    });
  ajaxSender.send (url);

  //Set current custom filter
  curCusFilt = obj;
}

//Send feedback
function sendFeedback (form) {
    var loginForm   = form;
  var firstName = form.FeedFName.value;
    var lastName    = form.FeedLName.value;
    var email       = form.FeedEmail.value;
    var subject     = form.FeedSubject.value;
    var comment     = form.FeedComment.value;

    $("submitFeedback").disabled = true;
  if (form.FeedComment.value.replace(" ","") == "") {
        $("feedbackMsg").innerHTML = "Please write some comments.";
        $("feedbackMsg").className = "failMsg";
        $("submitFeedback").disabled = false;
    }

  var url = "feedback.php?FeedFName="+firstName+"&FeedLName=" + lastName + "&FeedEmail=" + email + "&FeedSubject="+subject+"&FeedComment="+comment;
  var ajaxSender = new ajax ();
    ajaxSender.onSuccessHandler(function() {
        $("feedbackMsg").innerHTML = "Your message successfully sent.";
        $("feedbackMsg").className = "succMsg";
        });
    ajaxSender.onFailureHandler(function() {
        var errMsg = "Some error occured when sending message.";
            //  go( this.getResponse ().split ("|") [1]);
        $("feedbackMsg").innerHTML = errMsg;
        $("feedbackMsg").className = "failMsg";
        $("submitFeedback").disabled = false;
    });
  ajaxSender.send (url);

  return false;
}

//Add custom quick filter
function addQuickFilter (form) {
  var keywords = (form.keywords.value = form.keywords.value.toLowerCase ().replace (/[^a-z0-9\-\r\n]/g, '').replace (/\n\n/g,"")).replace (/\n/g, ":");
  var filterName = form.filterName.value;
    for (var i = 0; i < form.type.length; i++)
        if (form.type [i].checked)
            var type = form.type [i].value;
    var keywordsCount = form.keywords.value.split("\n").length;
    var availableKeywordsCount = userIsPro ? (g_customFilterType == 'exactmatch' ? 50000 : 200) : (g_customFilterType == 'exactmatch' ? 5000 : 50);
    //Check values of filterName and keywords
    if (filterName == '' || !/[^:]/.test (keywords))
        return false;
    //Check filters count
    var itemsCount = 0;
    filtersList = $('filtersMenu');
    for (var i = 0; i < filtersList.childNodes.length; i++)
        if (filtersList.childNodes [i].nodeName.toLowerCase () == 'li')
            itemsCount += 1;
    if (itemsCount >= 20) {
      alert ('Custom quick filters count limited to 20');
        return false;
    }

    var url = "actions.php?task=addQuickFilter&keywords=" + keywords + "&filterName=" + filterName + "&type="+type;

  var ajaxSender = new ajax ();
    ajaxSender.onSuccessHandler(function() {

            var filterId = this.getResponse ().split (':') [1];
          //add menu item
          var filterItem = document.createElement('li');
          filterItem.onclick=function () {loadCustomFilter (filterItem, filterId)};
          filterItem.appendChild (document.createTextNode (filterName));
          filtersList.appendChild (filterItem);
        alert ("Quick Filter Saved" + (availableKeywordsCount < keywordsCount ? "\nOnly the first " + availableKeywordsCount + " keywords saved." : '') );

        //Add row to quick filters table
          var quickFiltersTable = $ ('quickFiltersTable');
          var tr = quickFiltersTable.insertRow (quickFiltersTable.rows.length);
            tr.onclick = function(){ selectRow (this); };
            tr.setAttribute ('itemId', filterId);
            var td = tr.insertCell (0);
            td.className  = 'tdOddWide';
            td.appendChild (document.createTextNode (filterName));
            td = tr.insertCell (1);
            td.className  = 'tdEven';
            td.appendChild (document.createTextNode ('Yes'));
            td = tr.insertCell (2);
            td.className  = 'tdOdd';
            td.appendChild (document.createTextNode (quickFiltersTable.rows.length-1));

            //Set parameters for edit form
            var editForm = $('editFilterForm');
            editForm.filterId.value     = filterId;
            editForm.filterName.value = filterName;
            editForm.keywords.value     = keywords.split (':').slice (0, availableKeywordsCount).join ("\n");
            editForm.type [type == 'exactmatch' ? 0 : 1].checked = 'checked';
            keywordsCount ($('keywordsA'),'editFilterKeysLabel');
            //set filter id for delete form
            $('deleteFilterForm').filterId.value = filterId;
            showPage    ('editQuickFilter');
          //Set current custom filter
          curCusFilt = filterItem;
          //Hide label and show save button
            $('editFilterSaveBtn').style.display = "";
            $('inactiveLabel').style.display = "none";

        });
    ajaxSender.onFailureHandler(function() {
            alert ("Duplicate Custom Quick Filter Name.");
    });
  ajaxSender.send (url);


}

//Update custom quickfilter
function updateQuickFilter (form) {
  var keywords = (form.keywords.value = form.keywords.value.toLowerCase ().replace (/[^a-z0-9\-\r\n]/g, '')).replace (/\n/g, ":");
  var filterName = form.filterName.value;
  var filterId = form.filterId.value;
    for (var i = 0; i < form.type.length; i++)
        if (form.type [i].checked)
            var type = form.type [i].value;
    var keywordsCount = form.keywords.value.split("\n").length;
    var availableKeywordsCount = userIsPro ? (g_customFilterType == 'exactmatch' ? 50000 : 200) : (g_customFilterType == 'exactmatch' ? 5000 : 50);

    //If user logged in
    if (/userlogin=/.test (document.cookie)) {
      //If user is active member
      if (userIsPro)
         {/*do smth*/}
    }

    var url = "actions.php?task=updateQuickFilter&filterId="+filterId+"&keywords=" + keywords + "&filterName=" + filterName + "&type="+type;
  var ajaxSender = new ajax ();
    ajaxSender.onSuccessHandler(function() {
        alert ("Quick Filter Saved" + (availableKeywordsCount < keywordsCount ? "\nOnly the first " + availableKeywordsCount + " keywords saved." : '') );
            curCusFilt.childNodes [0].nodeValue = filterName;
        });
    ajaxSender.onFailureHandler(function() {
            alert ("Some error occured.");
    });
  ajaxSender.send (url);

}

//Count keywords
function keywordsCount (obj, label) {
  var keywords = obj.value.split("\n");
  var maxKeywords = userIsPro ? (g_customFilterType == 'exactmatch' ? 50000 : 200) : (g_customFilterType == 'exactmatch' ? 5000 : 50);
  if (obj.value.indexOf ("\n\n") != -1)
      obj.value = obj.value.replace (/\n\n$/g, "\n");
    /*
    if (keywords.length > maxKeywords) {
      keywords = keywords.slice (0, maxKeywords)
        obj.value = keywords.join ("\n");
    }
    */
    $(label).innerHTML = "Keywords (" + keywords.length + " of " + maxKeywords + " available) : ";

}

//Save paypal email
function savePaypalEmail (form) {
  var email = form.email.value.toLowerCase();
  var reemail = form.reemail.value.toLowerCase();
  var password = form.password.value.toLowerCase();

    var url = "actions.php?task=savePaypalEmail&email="+email+"&reemail=" + reemail + "&password=" + password;
  var ajaxSender = new ajax ();
    ajaxSender.onSuccessHandler(function() {
          $('statusMsg1').innerHTML = 'New PayPal email successfully saved.';
        $('statusMsg1').style.color = '#2c7dea';
        form.password.value = '';
        });
    ajaxSender.onFailureHandler(function() {
          $('statusMsg1').innerHTML = this.getResponse ();
        $('statusMsg1').style.color = 'red';
    });
  ajaxSender.send (url);
}

//Clear form
function clearForm (form) {
  form = $(form);
    form.filterName.value = '';
    form.keywords.value = '';
    form.type [0].checked = 'checked';
    keywordsCount ($('keywordsA'),'addFilterKeysLabel');
}

//Get affiliate report
function getReport (form) {
  var reportBox = $('summaryReport');
  for (var i = 0; i < form.type.length; i++)
        if (form.type [i].checked)
            var type = form.type [i].value;

    var url = "actions.php?task=getReport&type="+type;
  var ajaxSender = new ajax ();
    ajaxSender.onSuccessHandler(function() {
            reportBox.innerHTML = this.getResponse ().substr(2);
        });
    ajaxSender.onFailureHandler(function() {
            alert ("Some error occured.");
    });
  ajaxSender.send (url);

}

//Check agree with TOS
function checkTosAgree () {

    if (/tosAgree=yes/.test (document.cookie)) {
        hideForm ('tosForm');
    } else {
        showForm ('tosForm');
        $ ('tosIframe').src = 'tos_text.php' ;
    }
}

//Agree with TOS
function tosAgree () {
  var b = new Date(new Date().getTime()+3600*24*1000); //set cookies for next 24h
  document.cookie="tosAgree=yes; expires="+b;
    hideForm ('tosForm');
}

//Show filter type info
function filterTypeInfo (textarea,label,link,type) {
  g_customFilterType = type;
  if ($(link))
        $(link).childNodes [0].nodeValue = '(Upgrade to PRO Subscriptions to increase keyword limit to ' + (type == 'exactmatch' ? '50,000' : '200') + ')';
    keywordsCount ($(textarea), label);
}


function show_add_tab(){
 showForm('addTabForm');

 $$('#add_tab_list').html("<div style='padding-top:50px'><img src='"+g_static+"/images/loading.gif' width='16' height='16' border='0' /> loading...</div>");

 var data={
     'task': 'getAddTabColumns'
 };
 $$.getJSON('setup.php', data, function(data){
     var html='';
     for (var v in data) {
         v=data[v];
         if (parseInt(v.id)>0){
            html+='<label><input type="checkbox" checked="checked" name="d['+v.id+']" value="1"> '+v.name+'</label><br/>';
         }
     }
     if (html=='') html='<b>error: no columns found</b>';
     $$('#add_tab_list').html(html);
 });

}

function add_tab_submit(F){

 var data={
     'task': 'addTab',
     'add_tab_name' : $$('#add_tab_name').val()
 };

 $$('input:checked', F).each(function(){
       data[this.name]=1;
 });

 $$.getJSON('setup.php', data, function(data){
     if (data.status!=0){
        $$('#at_helper').addClass('errorMsg').html(data.err_msg);
     }else{
        hideForm ('addTabForm');
        if (window.location.href.match(/setup\.php/) ) {
           window.location='setup.php?page=gridColumns&cur_id='+data.id+'&rnd='+Math.random();
        }else{
           window.location='index.php';
        }
     }
 });

 return false;
}

function at_check_all(){
 var cb=$$('#at_cb_all')[0].checked;
 
 $$('#add_tab_list input:checkbox').attr('checked', cb);
}

function confirm_loc(loc){
 if ( confirm('Are you sure?') ){
    window.location=loc;
    return true;
 }
 return false;
}
