      //
      //  Cookie Functions -- "Night of the Living Cookie" Version (25-Jul-96)
      //
      //  Written by:  Bill Dortch, hIdaho Design <bdortch@hidaho.com>
      //  The following functions are released to the public domain.
      //
      //  This version takes a more aggressive approach to deleting
      //  cookies.  Previous versions set the expiration date to one
      //  millisecond prior to the current time; however, this method
      //  did not work in Netscape 2.02 (though it does in earlier and
      //  later versions), resulting in "zombie" cookies that would not
      //  die.  DeleteCookie now sets the expiration date to the earliest
      //  usable date (one second into 1970), and sets the cookie's value
      //  to null for good measure.
      //
      //  Also, this version adds optional path and domain parameters to
      //  the DeleteCookie function.  If you specify a path and/or domain
      //  when creating (setting) a cookie**, you must specify the same
      //  path/domain when deleting it, or deletion will not occur.
      //
      //  The FixCookieDate function must now be called explicitly to
      //  correct for the 2.x Mac date bug.  This function should be
      //  called *once* after a Date object is created and before it
      //  is passed (as an expiration date) to SetCookie.  Because the
      //  Mac date bug affects all dates, not just those passed to
      //  SetCookie, you might want to make it a habit to call
      //  FixCookieDate any time you create a new Date object:
      //
      //    var theDate = new Date();
      //    FixCookieDate (theDate);
      //
      //  Calling FixCookieDate has no effect on platforms other than
      //  the Mac, so there is no need to determine the user's platform
      //  prior to calling it.
      //
      //  This version also incorporates several minor coding improvements.
      //
      //  **Note that it is possible to set multiple cookies with the same
      //  name but different (nested) paths.  For example:
      //
      //    SetCookie ("color","red",null,"/outer");
      //    SetCookie ("color","blue",null,"/outer/inner");
      //
      //  However, GetCookie cannot distinguish between these and will return
      //  the first cookie that matches a given name.  It is therefore
      //  recommended that you *not* use the same name for cookies with
      //  different paths.  (Bear in mind that there is *always* a path
      //  associated with a cookie; if you don't explicitly specify one,
      //  the path of the setting document is used.)
      //  
      //  Revision History:
      //
      //    "Toss Your Cookies" Version (22-Mar-96)
      //      - Added FixCookieDate() function to correct for Mac date bug
      //
      //    "Second Helping" Version (21-Jan-96)
      //      - Added path, domain and secure parameters to SetCookie
      //      - Replaced home-rolled encode/decode functions with Netscape's
      //        new (then) escape and unescape functions
      //
      //    "Free Cookies" Version (December 95)
      //
      //
      //  For information on the significance of cookie parameters, 
      //  and on cookies in general, please refer to the official cookie
      //  spec, at:
      //
      //      http://www.netscape.com/newsref/std/cookie_spec.html    
      //
      //******************************************************************
      //
      // "Internal" function to return the decoded value of a cookie
      //
      function getCookieVal (offset) {
         var endstr = document.cookie.indexOf (";", offset);
         if (endstr == -1) {
            endstr = document.cookie.length;
         }
         return unescape(document.cookie.substring(offset, endstr));
      }

      //
      //  Function to correct for 2.x Mac date bug.  Call this function to
      //  fix a date object prior to passing it to SetCookie.
      //  IMPORTANT:  This function should only be called *once* for
      //  any given date object!  See example at the end of this document.
      //
      function FixCookieDate (date) {
         var base = new Date(0);
         var skew = base.getTime(); // dawn of (Unix) time - should be 0
         if (skew > 0) {  // Except on the Mac - ahead of its time
            date.setTime (date.getTime() - skew);
         }
      }

      //
      //  Function to return the value of the cookie specified by "name".
      //    name - String object containing the cookie name.
      //    returns - String object containing the cookie value, or null if
      //      the cookie does not exist.
      //
      function GetCookie (cname) {
         var arg = cname + "=";
         var alen = arg.length;
         var clen = document.cookie.length;
         var i = 0;
         while (i < clen) {
            var j = i + alen;
            if (document.cookie.substring(i, j) == arg) {
               return getCookieVal (j);
            }
            i = document.cookie.indexOf(" ", i) + 1;
            if (i == 0) {
               break;
            }
         }
         return null;
      }
 
      //
      //  Function to create or update a cookie.
      //    name - String object containing the cookie name.
      //    value - String object containing the cookie value.  May contain
      //      any valid string characters.
      //    [expires] - Date object containing the expiration data of the cookie.  If
      //      omitted or null, expires the cookie at the end of the current session.
      //    [path] - String object indicating the path for which the cookie is valid.
      //      If omitted or null, uses the path of the calling document.
      //    [domain] - String object indicating the domain for which the cookie is
      //      valid. If omitted or null, uses the domain of the calling document.
      //    [secure] - Boolean (true/false) value indicating whether cookie transmission
      //      requires a secure channel (HTTPS).  
      //
      //  The first two parameters are required.  The others, if supplied, must
      //  be passed in the order listed above.  To omit an unused optional field,
      //  use null as a place holder.  For example, to call SetCookie using name,
      //  value and path, you would code:
      //
      //      SetCookie ("myCookieName", "myCookieValue", null, "/");
      //
      //  Note that trailing omitted parameters do not require a placeholder.
      //
      //  To set a secure cookie for path "/myPath", that expires after the
      //  current session, you might code:
      //
      //      SetCookie (myCookieVar, cookieValueVar, null, "/myPath", null, true);
      //
      function SetCookie (cname,value,expires,path,domain,secure) {
         document.cookie = cname + "=" + escape (value) +
            //((expires) ? "; expires=" + expires.toGMTString() : "") +
            ((expires) ? "; expires=" + expires : "") +
            ((path) ? "; path=" + path : "") +
            ((domain) ? "; domain=" + domain : "") +
            ((secure) ? "; secure" : "");
      }
      
      //  Function to delete a cookie. (Sets expiration date to start of epoch)
      //    name -   String object containing the cookie name
      //    path -   String object containing the path of the cookie to delete.  This MUST
      //             be the same as the path used to create the cookie, or null/omitted if
      //             no path was specified when creating the cookie.
      //    domain - String object containing the domain of the cookie to delete.  This MUST
      //             be the same as the domain used to create the cookie, or null/omitted if
      //             no domain was specified when creating the cookie.
      //
      function DeleteCookie (cname,path,domain) {
         if (GetCookie(cname)) {
            document.cookie = cname + "=" +
               ((path) ? "; path=" + path : "") +
               ((domain) ? "; domain=" + domain : "") +
               "; expires=Thu, 01-Jan-70 00:00:01 GMT";
         }
      }
      
      //
      //  Examples
      //
/*      
      var expdate = new Date ();
      FixCookieDate (expdate); // Correct for Mac date bug - call only once for given Date object!
      expdate.setTime (expdate.getTime() + (24 * 60 * 60 * 1000)); // 24 hrs from now 
      SetCookie ("ccpath", "http://www.hidaho.com/colorcenter/", expdate);
      SetCookie ("ccname", "hIdaho Design ColorCenter", expdate);
      SetCookie ("tempvar", "This is a temporary cookie.");
      SetCookie ("ubiquitous", "This cookie will work anywhere in this domain",null,"/");
      SetCookie ("paranoid", "This cookie requires secure communications",expdate,"/",null,true);
      SetCookie ("goner", "This cookie must die!");
      document.write (document.cookie + "<br>");
      DeleteCookie ("goner");
      document.write (document.cookie + "<br>");
      document.write ("ccpath = " + GetCookie("ccpath") + "<br>");
      document.write ("ccname = " + GetCookie("ccname") + "<br>");
      document.write ("tempvar = " + GetCookie("tempvar") + "<br>");
*/

    var expdate = new Date ();  
    var present = new Date ();
    var path = '/';
	//alert(document.cookie);	
	
	expdate.setHours(23);
	expdate.setMinutes(59);
	expdate.setSeconds(59);
	
	//alert(parseInt(expdate.getTime()));
	//alert(parseInt(present.getTime()));

	
	function SetCookies() {
		SetCookie ("voted", "yes", null, path, null, null);		
		SetCookie ("votexptime", expdate.getTime() , null, path, null, null);
		//SetCookie ("votexptime", present.getTime() + 1000*60*5, null, path, null, null);		//5 min
	}
	
	
    function isVoted(){
        if(!parent.document.getElementById("templateframe")){
        	if(document.getElementById('noform'))
        		noformEl=document.getElementById('noform');
        	else
        		return;
        		
        		if(document.getElementById('form'))
        			formEl=document.getElementById('form');
        		else
        			return;
        		
        		if(document.getElementById('pollResultsFormTbl')) {
        			resButton = document.getElementById('pollResultsFormTbl');
        		}
        	
        	gg = GetCookie("voted");
        	
        	if(gg == 'yes' && GetCookie("votexptime") && (parseInt(GetCookie("votexptime")) < parseInt(present.getTime()))) {				
				DeleteCookie("voted", path, null);
				DeleteCookie("votexptime", path, null);
				
				noformEl.style.display ='none';
                noformEl.style.visibility ='hidden';
                formEl.style.display ='block';
                formEl.style.visibility ='visible';
                
                resButton.style.display ='none';
                resButton.style.visibility ='hidden';
                
                //Возможно, return не хватало для нормальной работы в ФФ. Надо проверить!
                return;
			}    
            if(gg == 'yes'){
                formEl.style.display ='none';
                formEl.style.visibility ='hidden';
                noformEl.style.display ='block';
                noformEl.style.visibility ='visible';
                
                resButton.style.display ='block';
                resButton.style.visibility ='visible';
            }else{
                noformEl.style.display ='none';
                noformEl.style.visibility ='hidden';
                formEl.style.display ='block';
                formEl.style.visibility ='visible';
                
                resButton.style.display ='none';
                resButton.style.visibility ='hidden';          
            }
        }
    }
    
    var isOpera		= self.opera;
	var ie			= document.all && document.getElementById && !isOpera;
	var ns6			= document.getElementById && !document.all; 
	
	if(ie || isOpera) {	
		window.attachEvent("onload", isVoted);
	} else {	
		window.addEventListener("load", isVoted, true);
	}