var caution = false

function setCookie(name, value, expires, path, domain, secure) {
 var curCookie = name + "=" + escape(value) +
  ((expires) ? "; expires=" + expires.toGMTString() : "") +
  ((path) ? "; path=" + path : "") +
  ((domain) ? "; domain=" + domain : "") +
  ((secure) ? "; secure" : "")
 if (!caution || (name + "=" + escape(value)).length <= 4000)
  document.cookie = curCookie
 else
  if (confirm("Cookie превышает 4KB и будет вырезан"))
   document.cookie = curCookie
}

function getCookie(name) {
 var prefix = name + "="
 var cookieStartIndex = document.cookie.indexOf(prefix)
 if (cookieStartIndex == -1) return null
 var cookieEndIndex = document.cookie.indexOf(";", cookieStartIndex + prefix.length)
 if (cookieEndIndex == -1) cookieEndIndex = document.cookie.length
 return unescape(document.cookie.substring(cookieStartIndex + prefix.length, cookieEndIndex))
}

function deleteCookie(name, path, domain) {
 if (getCookie(name)) {
  document.cookie = name + "=" + ((path) ? "; path=" + path : "") +
   ((domain) ? "; domain=" + domain : "") + "; expires=Thu, 01-Jan-70 00:00:01 GMT"
 }
}

function fixDate(date) {
 var base = new Date(0)
 var skew = base.getTime()
 if (skew > 0) date.setTime(date.getTime() - skew)
}

function check_var(field,cookie_name) {
 var S = new String(getCookie(cookie_name))
 var ArrayID = S.split(',')
 var flag=false
 for (var i=0; i < ArrayID.length; i++) { 
  if (ArrayID[i] == field) flag=true
 }
 return flag
}

function add_var(field,cookie_name) {
 if(!check_var(field,cookie_name)) {
  var S = new String(getCookie(cookie_name))
  if(S == 'null') S=field
  else {
   S+=','
   S+=field
  }
  var now = new Date()
  fixDate(now)
  now.setTime(now.getTime() + 999999999)
  setCookie(cookie_name, S, now, '/')
 }
}

function remove_var(field,cookie_name) {
 if(check_var(field,cookie_name)) {
  var S = new String(getCookie(cookie_name))
  var OutS = new String
  var ArrayID = S.split(',')
  for (var i=0; i < ArrayID.length; i++) {
   if(ArrayID[i] != field) {
    if(OutS.length) OutS+=','
     OutS+=ArrayID[i]
    }
  }
  var now = new Date()
  fixDate(now)
  now.setTime(now.getTime() + 999999999)
  setCookie(cookie_name, OutS, now, '/')
 }
}

function control_box(checkbox, field, cookie_name) {
 if(checkbox.checked) add_var(field,cookie_name)
 else remove_var(field,cookie_name)
}
