function init_tree(div){
    $('li.collapsed div.treeIconClose', div).click(function() { tree_liToogle($(this)) });
}

function tree_liToogle(div) {
    div.toggleClass("treeIconClose").toggleClass("treeIconOpen");
    var li = div.parent().parent();
    li.toggleClass("collapsed").toggleClass("opened");
    li.children('ul.collapsedTree, ul.expandTree').toggleClass("collapsedTree").toggleClass("expandTree");
}

function init_rating(onChange){
  $('div._rating, div._ratingLittel').each(function() {
      var o = $(this);
      $('input._star[value=' + o.attr("val") + ']', o).attr('checked', 'checked');
      $('input._star', o).rating({
          required: true,
          readOnly: o.attr('canEdit') == '0',
          callback: function(value, sender) {                        
              ajaxWS("addProductRating", { rating: value, productID: o.attr('productID') }, function (res){
                var root = $('root', res);
                if(root.getText('result') == 'true')
                {
                  $('input._star', o).rating('select', root.getText('rating'), true);
                  if(typeof onChange == 'function') onChange(root,o);
                }
              });
              o.animate({ backgroundColor: "#fe0" }, 1000, function() {
                  o.animate({ backgroundColor: "white" }, 1000);
              })
          }
      });
  });
}

function ajaxWS(functionName, data, onSuccess, notAsync) {
  if (!onSuccess)
      onSuccess = function(res, status) { };
  $.ajax({
      async: !notAsync,
      dataType: 'xml',
      url: ApplicationUrl + "WS/webservice.asmx/" + functionName,
      data: data,
      type: 'POST',
      success: onSuccess,
      error: function(XMLHttpRequest, textStatus, errorThrown) {
        alert("Error:" + errorThrown);
        $('#shadow').hide();
          //showError(xhr, errorMsg, thrown);     
      }
  });
}


function ajaxHelper(functionName, data, onSuccess, dataType) {
  if (!onSuccess)
      onSuccess = function(res, status) { };
  var onError = function(xhr, errorMsg, thrown) {};
  data = $.extend(data, {method: functionName});   
  var option = {
        url: ApplicationUrl + "Helper.ashx",
        type: "POST",
        data: data,
        success: onSuccess,
        error: onError
     };
    if(dataType == 'json')
      option = $.extend(option,{
                data: JSON2.stringify(data),
                dataType: 'json',
                contentType: "application/json" // : 'application/x-www-form-urlencoded',
               });
    $.ajax(option);
}

(function($){
    $.fn.getObj = function(path) { return path ? $(path+':eq(0)', this) : this; }
    $.fn.getText = function(path) { return this.getObj(path).text(); }
    $.fn.getAttr = function(attr, path) { return this.getObj(path).attr(attr); }
    $.fn.getAsInt = function(path,canNaN) { var v = parseInt(this.getText(path), 10); return !isNaN(v) || canNaN ? v : 0;}
})(jQuery);


function createPage(cur, pages, addPrev, addNum, addCur, addPoint, addNext) {
    var th = $('<th colspan="6" class="pages">');
    if (pages < 2) return $('<tr>').append(th.append('&nbsp;'));

    var i = cur - 1;
    if (cur > 1) addPrev(cur - 1);
    if (cur > 3) {
        addNum(1);                
        if (cur > 4) addPoint();
    }
    if (cur > 2) addNum(cur - 2); 
    if (cur > 1) addNum(cur - 1); 
    addCur(cur); 
    if (cur + 1 <= pages) addNum(cur + 1);
    if (cur + 2 <= pages) addNum(cur + 2);
    if (cur +2 < pages) {
        if (cur + 3< pages) addPoint();
        addNum(pages); 
    }
    if (cur + 1 < pages) addNext(cur + 1); 
}

function openPreview (btn, width){
    if (btn.attr('lnk') != '#') {
        var html = "<img alt='' src='" + btn.attr('lnk') + "' />";
        var div = $('#imgPreview');
        $('#imgP').html(html);
        $('#shadow').show();
        width = width ? width : 650;
        div.css({ width: 200, marginLeft: -100 }).show().animate({ width: width, marginLeft: -(width / 2) }, 1000);
    }
}

function setListLighting(div){
    var trs = div.find('tr');
        trs.hover(function() { $(this).addClass('hover'); }, function() { $(this).removeClass('hover'); });
//        trs.click(function() { if($(this).hasClass('selected')){$(this).removeClass('selected');} else {$(this).addClass('selected');} });
}

function CommaFormatted(amount) {
        var delimiter = ","; // replace comma if desired
        var a = amount.split('.', 2)
        var d = a[1];
        var i = parseInt(a[0]);
        if (isNaN(i)) { return ''; }
        var minus = '';
        if (i < 0) { minus = '-'; }
        i = Math.abs(i);
        var n = new String(i);
        var a = [];
        while (n.length > 3) {
                var nn = n.substr(n.length - 3);
                a.unshift(nn);
                n = n.substr(0, n.length - 3);
        }
        if (n.length > 0) { a.unshift(n); }
        n = a.join(delimiter);
        if (d.length < 1) { amount = n; }
        else { amount = n + '.' + d; }
        amount = minus + amount;
        return amount;
}

function ParceCurrency(amount) {
        return parseFloat(amount.replace(/,/g, "").substr(1));
}

function cutText(o, length, fixTable){
  if(o.nodeName == '#text')
  { 
    if(length==0){
      o.nodeValue = "";
    }else{  
      o.nodeValue = stringMegaTrim(o.nodeValue);
      if(o.length > length){ 
        var subStr = o.nodeValue.substr(0, length);
        var lastindex = subStr.lastIndexOf(' ',length-1);
        var lastindex2 = subStr.lastIndexOf('&nbsp;',length-1);
        o.nodeValue =  subStr.substr(0, lastindex > lastindex2 ? lastindex : lastindex2) + " ...";
      }
    }
    // && o.nodeValue.indexOf(' ',length) > 0)
    return o.nodeValue.length;
  }else{    
    if(!o.jquery) o=$(o);
    if(length==0){o.remove(); return 0;}    
    var s = stringMegaTrim(o.text());
    if(s.length > length){ 
      var l=0;               
      if(fixTable && o[0].nodeName == "TABLE"){
        $('tr',o).each(function(){
          var tr = $(this);
          var s = stringMegaTrim(tr.text());          
          if(s.length > length-l){
            l = length;
            tr.remove();
          }
          else l+= s.length;
        })
      }else{
        $(o[0].childNodes).each(function(){      
          l += cutText(this, length-l, fixTable)
        })
      }
      return length;
    }
    return stringMegaTrim(o.text()).length;
  }        
}

function stringMegaTrim(str){
  return str.replace(/[\n\r\t]/g,' ').replace(/( ){2,}/g,' ');
}

function showConfirm(str, func, stopHideShadow, onCancel, hideCancel, divId){
  $('#shadow').show();      
  var div = $(divId ? '#' + divId : '#confirm');
  $('#msg', div).html(str);  
  $('#btnCancel',div).unbind().bind('click', function(){
       div.hide();
        if(!stopHideShadow) $('#shadow').hide();
        if(typeof onCancel == 'function') onCancel(div);
  });
  hideCancel ? $('#btnCancel',div).hide() : $('#btnCancel',div).show();

  $('#btnOk', div).unbind().bind('click', function() {
    div.hide();
    if(typeof func == 'function') func(div);
    if(!stopHideShadow) $('#shadow').hide(); 
  });
  div.show();
}

function FixText(str) { return str.replace(/%20/g, ' ').replace(/%22/g, '\"').replace(/\n/g, ' '); }
function EmulatorClickButton(buttonID) {
    btn = document.getElementById(buttonID);
    if (btn != null)
        s = FixText(btn.href);
    else
        alert(buttonID + ' is not object');
    try {
        eval(s);
    } catch (err) {
        alert(err);
    }
}
