var SI_ERROR = 'error';
var SI_NORMAL = 'normal';         

function myevalScripts(src){        
  scripts = [];
  var regexp = /<script[^>]*>([\s\S]*?)<\/script>/gi;
  while ((script = regexp.exec(src))) scripts.push(script[1]);
  scripts = scripts.join('\n');
  if (scripts) (window.execScript) ? window.execScript(scripts) : window.setTimeout(scripts, 0);
}

     
function getScrollTop() {
  if ( document.documentElement.scrollTop )
    return document.documentElement.scrollTop;

  return document.body.scrollTop;
}

function get_radio_value (radio_array)
{
 var i;
 for (i = 0; i < radio_array . length; ++ i)
  if (radio_array [i] . checked)
   return radio_array [i] . value;
 return null; 
}

function show_info(text, type, delay)
{   
   if (!$defined(text) || text.trim() == '') return;
   if (!$defined($('hintdiv'))) {
    var hintdiv = new Element('div', {    
      'id': 'hintdiv',
      'class': 'hintdiv',
      'styles': {
        'display': 'block',                
        'z-index': '100'
       }}
     );     
     hintdiv.injectTop(document.body);       
     hintdiv.injectTop(document.body);       
     $('hintdiv').setStyle('top', getScrollTop()+'px');
     
     window.addEvent('scroll', function() {              
       $('hintdiv').setStyle('top', getScrollTop()+'px');
     });
     
   }                        

    var type = (type == null) ? SI_NORMAL : type;
    var delay = (delay == null) ? 4000 : delay;            
    
    var classnm = 'hintdiv_'+type;
    var hint = new Element('div', {            
        'class': classnm
    }).injectInside($('hintdiv')).set('html', text);
    
    /*var myEffect = hint.effect('opacity', {duration: 3000});
    myEffect.start(1,0.7);*/
                           
    (function(){                     
      var slider = new Fx.Slide(hint, {duration: delay/2});
      slider.slideOut().          
      chain(function(){hint.setStyle('display', 'none')}).      
      chain(function(){hint.remove();})      
     }).delay(delay);        
}

           
         

/**
 * text selection&cursor functions
 */
function getSelectionStart(o){
    if (o.createTextRange) {
        var r = document.selection.createRange().duplicate();
        r.moveEnd('character', o.value.length);
        if (r.text == '') 
            return o.value.length;
        return o.value.lastIndexOf(r.text);
    }
    else 
        return o.selectionStart;
}

function getSelectionEnd(o){
    if (o.createTextRange) {
        var r = document.selection.createRange().duplicate();
        r.moveStart('character', -o.value.length);
        return r.text.length;
    }
    else 
        return o.selectionEnd;
}

function setSelectionRange(o, selectionStart, selectionEnd){
    if (o.createTextRange) {
        var range = o.createTextRange();
        range.collapse(true);
        range.moveEnd('character', selectionEnd);
        range.moveStart('character', selectionStart);
        range.select();
    }
    else 
        if (o.setSelectionRange) {
            o.focus();
            o.setSelectionRange(selectionStart, selectionEnd);
        }
}

/**
 * misc functions
 */
function copyToClipboard(s){
    if (window.clipboardData) {
        window.clipboardData.setData("Text", s);
    }
    else 
        if (window.netscape) {
        /*netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
         var clip = Components.classes['@mozilla.org/widget/clipboard;1']
         .createInstance(Components.interfaces.nsIClipboard);
         if (!clip) return;
         var trans = Components.classes['@mozilla.org/widget/transferable;1']
         .createInstance(Components.interfaces.nsITransferable);
         if (!trans) return;
         trans.addDataFlavor('text/unicode');
         var str = new Object();
         var len = new Object();
         var str = Components.classes["@mozilla.org/supports-string;1"]
         .createInstance(Components.interfaces.nsISupportsString);
         var copytext=s;
         str.data=copytext;
         trans.setTransferData("text/unicode",str,copytext.length*2);
         var clipid=Components.interfaces.nsIClipboard;
         if (!clip) return false;
         clip.setData(trans,null,clipid.kGlobalClipboard);*/
        }
    return false;
}

function validate(name, type){
    el = $(name);
    errorel = $(name + '_error');
    var error = '';
    var requestdone = false;
    result = new Json.Remote('/rt_validate/', {
        method: 'post',
        autoCancel: true,
        onComplete: function(resp){
            error = resp.error;
            errorel.set('html', resp.error);
            requestdone = true;
        },
        onFailure: function(){
            error = '';
            errorel.empty();
            requestdone = true;
        }
    }).send({
        value: el.value,
        type: type
    });
    while (!requestdone) {
    };
    return error;
}

function notifydiv(el, newoptions){
    if ($type(el) != 'element') {
        el = $(el);
    }
    if (!$defined(el)) 
        return false;
    var options = {
        'background-color': '#F0F0F0'
    };
    var oldoptions = {
        'background-color': '#FFFFFF'
    };
    el_transparent = false;
    if ($defined(el.getStyle('background-color')) && el.getStyle('background-color') != 'transparent') {
        oldoptions['background-color'] = el.getStyle('background-color');
    }
    else 
        el_transparent = true;
    if ($defined(newoptions)) 
        var options = $merge(options, newoptions);
    el.setStyles(oldoptions);
    new Fx.Styles(el, {
        duration: 200,
        onComplete: function(){
            new Fx.Styles(el, {
                duration: 1000,
                onComplete: function(){
                    el.setStyle('background-color', '');
                }
            }).start(oldoptions);
        }
    }).start(options);
}

/**
 * popup functions
 */
 
var mboxvar = 0;

function popboxurl(url, width, height, data, popbox_close){
    if (!$defined(width)) width = 400;
    if (!$defined(height)) height = 250;
    
    var a = new Element('a', 
        {'href': '#',
         'id': 'multibox',           
         'rel': 'height:'+height+',width:'+width+',data:'+data+',ajax:true,url:'+url}).inject(document.body, "bottom");  
    a.addClass('multibox');        
        
    mboxvar = new MultiBox('multibox', {onClose: popbox_close});
    mboxvar.open(a);       
    
    a.destroy();  
}

function popbox(type, method, width, height, data, queryfolder, popbox_close){
    if (!$defined(queryfolder)) queryfolder = '/query/';
    var url = queryfolder + type + '/' + method;        
    if ($defined(data)) {
    	//url+='?' + data;
    }
    
    return popboxurl(url, width, height, data, popbox_close);
}


function closebox(){
    if (mboxvar) mboxvar.close();
}

/**
 * ajax form functions
 */
function setformerror(name, text, options){    
    if (!$defined(options)) 
        var options = {};
            
    el = ($defined(options.formid) ? $$('#' + options.formid + ' #' + name)[0] : $(name));
    if ($defined(el)) {
        er_name = $defined(options.error_element) ? options.error_element : name + '-error';        
        el2 = $(er_name);
        if ($defined(el2) && text == '') {
            el2.empty();
            return true;
        }
        if (!$defined(el2)) 
            el2 = new Element('div', {
                'class': 'form-error',
                id: er_name
            }).injectAfter(el);
        el2.set('html', text);        
        return true;
    }
    else 
        return false;
}

function clearformerror(name, options){
    return setformerror(name, '', options);
}

function clearformerrors(formid, newoptions){
    var options = {
        error_place: '%element%-error',
        error_places: {}
    }
    if ($defined(newoptions)) 
        options = $merge(options, newoptions);
    var er_place = $($defined(options.error_places[formid]) ? options.error_places[formid] : options.error_place.replace('%element%', formid));
    if ($defined(er_place)) 
        er_place.empty();
    $$('#' + formid + ' input', '#' + formid + ' radio', '#' + formid + ' checkbox', '#' + formid + ' select', '#' + formid + ' textarea').each(function(el){
        er_place = $($defined(options.error_places[el.name]) ? options.error_places[el.name] : options.error_place.replace('%element%', el.name));
        if ($defined(er_place)) {
            //alert(options.error_place);
            //alert(options.error_places[el.name])?options.error_places[el.name]:options.error_place.replace('%element%', el.name);
            //alert(er_place.getText());
            er_place.empty();
        }
    });
}

var formsinfofx = {};

function setforminfo(formid, info, infoplace){
    if (!$defined(infoplace)) 
        infoplace = formid + '-info';
    el = $(infoplace);
    if (!$defined(info) || info == '') {
        if ($defined(el)) {
            el.setStyle('display', 'none');
            el.empty();
        }
        return true;
    }
    if (!$defined(el)) 
        el = new Element('div', {
            'class': 'form-info',
            id: infoplace,
            style: 'display: none;'
        }).injectBefore(formid);
    el.setStyle('display', 'block');
    if (!$defined(formsinfofx[infoplace])) 
        formsinfofx[infoplace] = new Fx.Slide(infoplace);
    formsinfofx[infoplace].stop();
    formsinfofx[infoplace].hide();
    el.setHTML(info);
    formsinfofx[infoplace].slideIn();
    hideinfoplace.delay(3000, false, {
        infoplace: infoplace
    });
    return true;
}

function hideinfoplace(args){
    if ($defined(formsinfofx[args.infoplace])) {
        formsinfofx[args.infoplace].stop();
        formsinfofx[args.infoplace].slideOut();
    }
    //new Fx.Slide(args.infoplace, {duration: 500}).slideOut();
}

function setformerrors(formid, errors, options){
    if (!$defined(options)) 
        var options = {};
    if ($defined(errors)) {
        $each(errors, function(text, name){                                
            if (name == '%form%' || name == formid) {                                              
                setformerror(formid, text, {
                    error_element: ($defined(options.error_places[formid]) ? options.error_places[formid] : options.error_place.replace('%element%', formid))
                });
            }
            else {
                setformerror(name, text, {
                    formid: formid,
                    error_element: ($defined(options.error_places[name]) ? options.error_places[name] : options.error_place.replace('%element%', name))
                });
            }
        });
    }
    else {
        setformerror(formid, 'Unable to process the form', {
            error_element: ($defined(options.error_places[formid]) ? options.error_places[formid] : options.error_place.replace('%element%', formid))
        });
    }
}

function setformvalue(formid, name, value){
    el = $$('#' + formid + ' #' + name)[0];
    if ($defined(el)) {
        switch (el.getTag()) {
            case 'textarea':
            case 'input':
                el.value = value;
                break;
            //case 'select': el.selectedIndex = value; break;
            //case 'radio':
            //case 'checkbox': el.checked = (value==el.value); break;
            default:
                return false;
        }
        return true;
    }
    return false;
}

function setformvalues(formid, values){
    if ($defined(values)) {
        $each(values, function(item, index){
            setformvalue(formid, index, item);
        });
    }
}

function submitform(formid, type, newoptions, queryfolder){  
    var options = {
        error_place: '%element%-error',
        submit_place: '%form%-submit-place',
        submit_loading_place: '%form%-submit-loading',
        form_info: '%form%-info',
        error_places: {}
    }
    var data = {};
    if ($defined(newoptions)) {
        options = $merge(options, newoptions);
        if ($defined(newoptions.data)) data = newoptions.data;
    }
        
    options.submit_place = options.submit_place.replace('%form%', formid);
    options.submit_loading_place = options.submit_loading_place.replace('%form%', formid);
    options.form_info = options.form_info.replace('%form%', formid);
    var aform = $(formid);
    var el = $$('#' + formid + ' input[name=to]')[0];    
    if ($defined(el)) var to = el.value; else var to = "request";
    if (!$defined(queryfolder)) queryfolder = '/query/';
    var act = queryfolder + type;
    if ($defined(to) && to) {
        act += '/' + to;
    }
    aform.action = act;    
   
    var submitplace = $(options.submit_place);
    
    disable(submitplace);
    clearformerrors(formid, options);               
    
    if ($defined(newoptions.data)) {
      for (k in newoptions.data) {
        if ($type(newoptions.data[k]) != "function") {
            new Element('input', {
                    'class': 'tempsendform',
                    'type': 'hidden',
                    'name': k,
                    'value': newoptions.data[k]
                }).injectInside(aform); 
        }
      }
    }      
        
                  
    aform.set('send', {          
        autoCancel: true,
        onComplete: function(){                           
            if ($defined(this.response.text) && this.response.text != '') {
                var res = JSON.decode(this.response.text);                
            }
            else {
                var res = {};
            }                        
            var next = true;
            if ($defined(options.onComplete)) {
                next = options.onComplete(res, options);
            }
            if (next) {
                if ($defined(res.status) && res.status == 'ok') {
                    if ($defined(options.onSuccess)) {
                        next = options.onSuccess(res, options);
                    }
                    if (next) {
                        show_info(res.info);
                        //setforminfo(formid, res.info, options.form_info);
                        setformvalues(formid, res.values);
                        /*submitloadingplace.setStyle('display', 'none');
                        submitplace.setStyle('display', 'block');*/
                        disable(submitplace, false);
                        if ($defined(options.postSuccess)) {
                            options.postSuccess(res, options);
                        }
                    }
                }
                else {
                    if ($defined(options.onError)) {
                        next = options.onError(res, options);
                    }
                    if (next) {                       
                        setformerrors(formid, res.errors, options);
                        setforminfo(formid, res.info, options.form_info);
                        setformvalues(formid, res.values);
                        /*if ($defined(submitloadingplace)) 
                            submitloadingplace.setStyle('display', 'none');
                        if ($defined(submitplace)) 
                            submitplace.setStyle('display', 'block');*/
                        disable(submitplace, false);
                        if ($defined(options.postError)) {
                            options.postError(res, options);
                        }
                    }
                }
                if ($defined(options.postComplete)) {
                    options.postComplete(res);
                }
            }
        }
    });
    aform.send();
    
    if ($defined(newoptions.data)) 
      $$('input.tempsendform').destroy();
}

//

var loadedscripts = {};

function loadscript(sname){
    if (!$defined(loadedscripts[sname])) {
        var e = new Element('script');
        e.src = '/js/' + sname;
        e.type = "text/javascript";
        e.injectInside($$('head')[0]);
        loadedscripts[sname] = true;
        return true;
    }
}

function query(type, query_name, newoptions, queryfolder){        
    var options = {
        method: 'post',
        autoCancel: true,
        evalScripts: true,
        onFailure: function(){    
            if ($defined(this.options.postFailed)) {
                this.options.postFailed(this);
            }
        },
        data: {'ajax': true},
        onComplete: function(){
            if ($defined(this.options.postComplete)) {
                if ($defined(this.response.text) && this.response.text != '') {
                    var resp = JSON.decode(this.response.text);
                }
                else {
                    var resp = {};
                }
                if ($defined(resp.popupinfo)) show_info(resp.popupinfo);
                this.options.postComplete(resp, this);
            }
        }
    }    
    
    if ($defined(newoptions)) {                        
		options = $merge(options, newoptions);        
	}   
    
    if (!$defined(queryfolder)) queryfolder = '/query/';
    var queryurl = queryfolder + type;
    if ($defined(query_name) && query_name && query_name != '') 
        queryurl += '/' + query_name;    
    options.url = queryurl;            
    var req = new Request.HTML(options);    
    req.send();
}

function edit_element(id, type, query_name, options){
    var el = $(id);
    var inputType = $defined(options) && $defined(options.inputType) && options.inputType == 'text' ? 'text' : 'textarea';

    if ($defined(el)) {
        var opt = {
            onComplete: function(obj){
                var newContent = obj.element.innerHTML;
                var oldContent = obj.self.originalText;
                if (newContent != oldContent || false) {
                    var data = {
                        'text': newContent
                    };
                    if ($defined(options) && $defined(options.data)) 
                        data = $merge(data, options.data);                        
                    query(type, query_name, {
                        'data': data,
                        postComplete: function(resp){
                            if (resp.status == 'ok') {                                
                                el.set('html', resp.text);
                                if ($defined(resp.info)) show_info(resp.info, null, 500);
                                /*if (!($defined(options)) || ($defined(options.notify) && options.notify)) 
                                    notifydiv(id);*/
                                if ($defined(options) && $defined(options.onSuccess)) {
                                    options.onSuccess(id, options, newContent, oldContent);
                                }
                            }
                            else {
                                obj.element.set('html', oldContent);
                                if ($defined(options) && $defined(options.onFailure)) {
                                    options.onFailure(id, options);
                                }                                
                            }
                        }
                    });
                } else {
                	if ($defined(options) && $defined(options.onFailure)) {                    
                    	options.onFailure(id, options);
                    }                
                }
            },
            onCancel: function (obj) {
            	if ($defined(options) && $defined(options.onCancel)) {
                	options.onCancel(id, options);
                }            	
            }
        };
        if ($defined(options.options)) 
            opt = $merge(opt, options.options);
        el.inlineEdit(opt);
    }
}

function set_ajaxloading(elname, active) {
	if (!$defined(active)) active = true;
	//if (!$type(elname))
	var el = $(elname);    
	if (!$defined(el)) return false;
	var ajname = elname + '-ajaxloding';
	var ajel = $(ajname);
	if (active) {
		el.addClass('ajax-loading-container');
		if (!$defined(ajel)) {
			ajel = new Element('div', {
				'class': 'ajax-loading',
				'id': ajname,
				'display': 'none'
			});
		}
		var zindex = el.getStyle('z-index');
		if (!$defined(zindex) || !zindex || isNaN(zindex)) zindex = 1000;
		else zindex++;        
        var coords = $(el).getCoordinates();
        ajel.setStyles({
			'z-index': zindex,
			'width': coords.width,
			'height': coords.height,
			'left': coords.left,
			'top': coords.top,
			'position': 'absolute'
		});
		ajel.inject(window.document.body, "bottom");
		ajel.setStyle('display', '');
	} else {
		if ($defined(ajel)) {
			ajel.empty();
			ajel.destroy();			
		}
		el.removeClass('ajax-loading-container');
	}
}

function disable(elname, active) {
	if (!$defined(active)) active = true;
	//if (!$type(elname))
	var el = $(elname);
	if (!$defined(el)) return false;
	var dname = elname + '-disabled';
	var del = $(dname);
	if (active) {
		if (!$defined(del)) {
			del = new Element('div', {
				'class': 'disabled',
				'id': dname
			});
			del.injectInside(el);
		}
		var zindex = el.getStyle('z-index');
		if (!$defined(zindex) || !zindex || isNaN(zindex)) zindex = 10;
		else zindex++;
        var coords = el.getCoordinates();
		del.setStyles({
			'display': '',
			'z-index': zindex,
			'height': coords.height,
			'width': coords.width
		});
		el.addClass('disabled-container');
	} else {
		if ($defined(del)) {
			del.setStyle('display', 'none');
		}
		el.removeClass('disabled-container');
	}
}

function inputOnBlur(name, text) {
	var el = $(name);
	if ($defined(el)) {
		if (!$defined(text)) text = el.title;
		if (el.value.trim() == '') {
			el.value = text;
            el.addClass('emptyfield');
		}
	}
}

function inputOnFocus(name, text) {
	var el = $(name);
	if ($defined(el)) {
		if (!$defined(text)) text = el.title;
		if (el.value.trim() == text) {
			el.value = '';
            el.removeClass('emptyfield');
		}
	}
}

function undefValue(name) {
    var el = $(name);
    if ($defined(el)) {
        st = el.getProperty('emptyv');
        return (el.value == st)?"":el.value;        
    }      
    return false;
}

function clearDefValue(name) {
    var el = $(name);
    if ($defined(el)) {
        el.value = undefValue(el.value);        
    }          
}

function attachHint(name, text) {
    var el = $(name);       
    if ($defined(el)) {       
       el.setProperty('emptyv', text);
       el.addEvent('blur', function(){inputOnBlur(this, this.getProperty('emptyv'));} );
       el.addEvent('focus', function(){inputOnFocus(this, this.getProperty('emptyv'));} );
       el.value=text;
       el.addClass("emptyfield");
    }
}

var lastrqform = "";
var lastrqclose = true;

function update_rq(json)
{
    var formerror = false;
    if (json.status=='ok') {             
       if (json.process) {         
         for (k in json.process) {
             var prc = json.process[k];
             if ($defined(prc['errors'])) {
                var errors = prc['errors'];
                for (e in errors) {                                                          
                   setformerror(e, errors[e], {});
                   formerror = true;
                }
             }           
         }
       }                                              
    
       if (!formerror && json.update) {
         for (k in json.update) {                   
           $(k).set('html', json.update[k]);                
           myevalScripts(json.update[k]);                   
           set_ajaxloading(k, false);            
         }
       }                                                     
    }                        
    if (lastrqform != "") set_ajaxloading(lastrqform, false);                        
    
    if (!formerror && lastrqclose) closebox();  
}

function submitform_rq(formid, type, newoptions, queryfolder, closeform){      
    //if (lastrqform != "") { set_ajaxloading(lastrqform, false); lastrqform = ""; }
    lastrqclose = true;
    if ($defined(closeform)) lastrqclose = closeform; 
    lastrqform = formid;    
    
    set_ajaxloading(formid);
    submitform(formid, type, {
        data: newoptions,
        postComplete: function(json) {         
          update_rq(json); 
                    
          formerror = false;
          for (k in json.process) {
             var prc = json.process[k];
             if ($defined(prc['errors'])) {                 
                 formerror = true;
                 break;             
             }
          }

          if (!formerror && $defined(newoptions.postComplete)) {
             newoptions.postComplete(json);
          }
        }
    }, queryfolder);  
}

function query_rq(divid, type, newoptions, queryfolder, closeform){      
    //if (lastrqform != "") { set_ajaxloading(lastrqform, false); lastrqform = ""; }
    lastrqclose = true;
    if ($defined(closeform)) lastrqclose = closeform; 
    lastrqform = divid;    
        
    if (divid != "") set_ajaxloading(divid);
    query(type, 'request', {
        data: newoptions,
        postComplete: function(json) { 
            update_rq(json); 
            if ((json.status=="ok") && ($defined(newoptions.postComplete))) {
              newoptions.postComplete(json);
            }
          }        
    }, queryfolder);  
}

/* 
   page navigator
                     */
       
// выполняет все скрипты из html и возвращает их в ресалте       
function eval_scripts(resp)
{
    var scripts=[];
    var regexp = /<script[^>]*>([\s\S]*?)<\/script>/gi;
    while ((script = regexp.exec(resp))) scripts.push(script[1]);
    scripts = scripts.join('\n');                    
    if (scripts) (window.execScript) ? window.execScript(scripts) : window.setTimeout(scripts, 0);
    return scripts;
}

function floatpark() {
    if ($('floatpark')) 
       $('floatad').inject('floatpark');                         
}

function floatshow() {
    if ($('floatpark')) 
      $('floatad').inject('floatblock');
}


function nav_move(delta, div)
{               
   _vnav[div]['page'] = parseInt(_vnav[div]['page']) + delta;      
   var params = new Object();            
   for (key in _vnav[div]) {
      if (key == "json") continue;
      if (typeof(_vnav[div][key])=="function") continue;
      if (typeof(_vnav[div][key])=="object") continue;
      params[key] = _vnav[div][key];                  
   }      
   
    floatpark();
              
    set_ajaxloading(div, true);     
    query(_vnav[div]["obj"], _vnav[div]["to"], {
            'data': params,            
            onComplete: function(){                                                          
                   var resp = this.response.text;                                       
                   $(div).set('html', resp);                                       
                   set_ajaxloading(div, false);                     
                   floatshow();
            }             
    }, '/query/');                
}

function autoresizetextarea(txtbox, limitmin, limitmax)
{
    var cols = txtbox.cols ;
    var content = txtbox.value ;
    var lineCount = 0 ;
    var lastEOL = -1 ;   
    if (!$defined(limitmin)) var limitmin = 20;
    if (!$defined(limitmax)) var limitmax = 50; 
    do {
        var begin = lastEOL+1 ;
        lastEOL = content.indexOf("\n",lastEOL+1) ;
        var line = "" ;
        if(lastEOL != -1) {
            line = content.substring(begin,lastEOL) ;
        } else {
            line = content.substring(begin,content.length) ;
        }
        //var rows_in_line = Math.floor(line.length/cols)+1 ;
        lineCount += 1;//rows_in_line
    } while (lastEOL != -1) ;
    lineCount = lineCount < limitmin?limitmin:(lineCount > limitmax?limitmax:lineCount);
    txtbox.rows = lineCount ;
     
}

function checkbox_click(name) {
	var el = $(name);
	if ($defined(el)) el.setProperty('checked', el.checked?'':'on');
	return true;
}


function Set_Cookie( name, value, expires, path, domain, secure )
{
    // set time, it's in milliseconds
    var today = new Date();
    today.setTime( today.getTime() );
    if ( expires )
    {
    expires = expires * 1000 * 60 * 60 * 24;
    }
    var expires_date = new Date( today.getTime() + (expires) );

    document.cookie = name + "=" +escape( value ) +
    ( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) +
    ( ( path ) ? ";path=" + path : "" ) +
    ( ( domain ) ? ";domain=" + domain : "" ) +
    ( ( secure ) ? ";secure" : "" );
}

function Get_Cookie( check_name ) {
    // first we'll split this cookie up into name/value pairs
    // note: document.cookie only returns name=value, not the other components
    var a_all_cookies = document.cookie.split( ';' );
    var a_temp_cookie = '';
    var cookie_name = '';
    var cookie_value = '';
    var b_cookie_found = false; // set boolean t/f default f

    for ( i = 0; i < a_all_cookies.length; i++ )
    {
        // now we'll split apart each name=value pair
        a_temp_cookie = a_all_cookies[i].split( '=' );


        // and trim left/right whitespace while we're at it
        cookie_name = a_temp_cookie[0].replace(/^\s+|\s+$/g, '');

        // if the extracted name matches passed check_name
        if ( cookie_name == check_name )
        {
            b_cookie_found = true;
            // we need to handle case where cookie has no value but exists (no = sign, that is):
            if ( a_temp_cookie.length > 1 )
            {
                cookie_value = unescape( a_temp_cookie[1].replace(/^\s+|\s+$/g, '') );
            }
            // note that in cases where cookie is initialized but no value, null is returned
            return cookie_value;
            break;
        }
        a_temp_cookie = null;
        cookie_name = '';
    }
    if ( !b_cookie_found )
    {
        return null;
    }
}  

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

function copyIntoClipboard(text) {
    var flashId = 'flashId-HKxmj5';

    /* Replace this with your clipboard.swf location */
    var clipboardSWF = '/swf/clipboard.swf';

    if(!document.getElementById(flashId)) {
       var div = document.createElement('div');
       div.id = flashId;
       document.body.appendChild(div);
    }
    document.getElementById(flashId).innerHTML = '';
    var content = '<embed src="' +
            clipboardSWF +
            '" FlashVars="clipboard=' + encodeURIComponent(text) +
            '" width="0" height="0" type="application/x-shockwave-flash"></embed>';
    document.getElementById(flashId).innerHTML = content;
}

    
    