function DNFlyout(expander,openLeft,closedLeft,open) {
    // init the controllers
    var expanded = (open === true) ? true : false;
    var openLeft = (typeof openLeft == 'number') ? openLeft : 0;
    var closedLeft = (typeof closedLeft == 'number') ? closedLeft : 0-454;
    
    if (document.getElementById(expander)) {
        var expandElement = document.getElementById(expander);
        var leftChangeMemInt = false;
    }
    
    // switches the controller
    var changeController = function(exp) {
        if (exp) {
            collapse.style.display = 'block';
            expand.style.display = 'none';
        } else {
            collapse.style.display = 'none';
            expand.style.display = 'block';
        }
    }
    
    // init the controllers
    if (document.getElementById(expander + '_control_expand') && document.getElementById(expander + '_control_collapse')) {
        var expand = document.getElementById(expander + '_control_expand');
        var collapse = document.getElementById(expander + '_control_collapse');
        if (window.addEventListener) {
            expand.addEventListener('click', function() {doLeftChangeMem(closedLeft, openLeft,10,10,0.333)}, false);
            collapse.addEventListener('click', function() {doLeftChangeMem(openLeft, closedLeft,10,10,0.333)}, false);
        } else if (window.attachEvent) {
            expand.attachEvent('onclick', function() {doLeftChangeMem(closedLeft, openLeft,10,10,0.333)});
            collapse.attachEvent('onclick', function() {doLeftChangeMem(openLeft, closedLeft,10,10,0.333)});
        }
        changeController(expanded);
    }
    
    //open or close
    var doLeftChangeMem = function (start,end,steps,intervals,powr) {
        if (window.dn_flyout_init_event) window.clearTimeout(window.dn_flyout_init_event);
        if (leftChangeMemInt) window.clearInterval(leftChangeMemInt);
        var actStep = 0;
        if (start < end)
            var opened = true;
        else if (start > end)
            var opened = false;
        changeController(opened);
        leftChangeMemInt = window.setInterval(
            function() {
                expandElement.currentLeft = easeInOut(start,end,steps,actStep,powr);
                expandElement.style.left = expandElement.currentLeft+"px";
                actStep++;
                if (actStep > steps) window.clearInterval(leftChangeMemInt);
            }
            ,intervals);
    }
    
    // controls the slide effect
    var easeInOut = function(minValue,maxValue,totalSteps,actualStep,powr) {
        //Generic Animation Step Value Generator By www.hesido.com
        var delta = maxValue - minValue;
        var stepp = minValue+(Math.pow(((1 / totalSteps)*actualStep),powr)*delta);
        return Math.ceil(stepp);
    }
    // callable from an object instance
    this.expandIt = function() {
        doLeftChangeMem(closedLeft, openLeft,10,10,0.333);
    }
    this.collapseIt = function() {
        doLeftChangeMem(openLeft, closedLeft,10,10,0.333);
    }
    this.writeCookie = function(name,value,days) {
	if (days) {
            var date = new Date();
            date.setTime(date.getTime()+(days*24*60*60*1000));
            var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
    }
    this.readCookie = function(name) {
        var nameEQ = name + "=";
        var ca = document.cookie.split(';');
        for(var i=0;i < ca.length;i++) {
            var c = ca[i];
            while (c.charAt(0)==' ') c = c.substring(1,c.length);
            if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
        }
        return null;
    }
    this.eraseCookie = function(name) {
            createCookie(name,"",-1);
    }
}

// instantiate
     function setCookie(c_name,value,exdays){
        var exdate=new Date();
        exdate.setDate(exdate.getDate() + exdays);
        var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
        document.cookie=c_name + "=" + c_value;
    }   
    function getCookie(c_name){
    var i,x,y,ARRcookies=document.cookie.split(";");
    for (i=0;i<ARRcookies.length;i++)
    {
      x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
      y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
      x=x.replace(/^\s+|\s+$/g,"");
      if (x==c_name)
        {
        return unescape(y);
        }
      }
   }
  setCookie('hasCookie',"test",2);
  var cookie = getCookie("hasCookie"); 
  if(cookie !=null && cookie != ""){  
    if (document.getElementById && document.getElementsByTagName) {
        document.cookie

        if (window.addEventListener) window.addEventListener('load', function() {
            dn_flyout = new DNFlyout("dn_flyout",0,0-454,false);
            //if (!dn_flyout.readCookie('dn-flyout')) {
            //    dn_flyout_open = dn_flyout.expandIt();
            //    dn_flyout_init_event = window.setTimeout("dn_flyout.collapseIt()",15000);
            //    dn_flyout.writeCookie('dn-flyout',1,1);
            //}
        }, false);
        else if (window.attachEvent) window.attachEvent('onload', function() {
            dn_flyout = new DNFlyout("dn_flyout",0,0-454,false);
            //if (!dn_flyout.readCookie('dn-flyout')) {
            //    dn_flyout_open = dn_flyout.expandIt();
            //    dn_flyout_init_event = window.setTimeout("dn_flyout.collapseIt()",15000);
            //    dn_flyout.writeCookie('dn-flyout',1,1);
           // }
        });

    }
 }



