# 2nd Revamp Website

## Figma Design

{% embed url="<https://www.figma.com/design/hAb4a4qzZbMPCJQBEioCkz/KYZN-2.0---Portfolio?node-id=392-2236&t=eGFFpw4LeA7hYUyT-1>" %}
KYZN 2.0
{% endembed %}

## Use URL Parameters to Set Cookies

{% code title="end of <body> tag" overflow="wrap" lineNumbers="true" %}

```javascript
// Function to set a cookie
function setCookie(name, value, days) {
    var expires = "";
    if (days) {
        var date = new Date();
        date.setTime(date.getTime() + days * 86400000); // 24 * 60 * 60 * 1000
        expires = "; expires=" + date.toUTCString();
    }
    document.cookie = name + "=" + encodeURIComponent(value || "") + expires + "; path=/";
}

// Function to get a cookie by name
function getCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(";");
    for(var i=0; i < ca.length; i++) {
        var c = ca[i].trim();
        if (c.indexOf(nameEQ) === 0) return decodeURIComponent(c.substring(nameEQ.length, c.length));
    }
    return null;
}

// Capture URL parameters
var urlParams = new URLSearchParams(window.location.search);

// Check for specific URL parameters
var sourceParam = urlParams.get('source');
var sremarksParam = urlParams.get('sremarks');
var mediumParam = urlParams.get('medium');
var mremarksParam = urlParams.get('mremarks');

// If 'source' parameter exists in URL, use URL parameters to set cookies
if (sourceParam) {
    // Set cookies based on URL parameters, overwriting existing cookies
    setCookie('source', sourceParam, 30);
    setCookie('sremarks', sremarksParam || '', 30);
    setCookie('medium', mediumParam || '', 30);
    setCookie('mremarks', mremarksParam || '', 30);

    // Also save other URL parameters to cookies
    urlParams.forEach(function(value, key) {
        setCookie(key, value, 30); // Save each parameter as a cookie for 30 days
    });

    // Capture referrer URL
    var referrer = document.referrer || "";
    setCookie('referrer', referrer, 30); // Always store the actual referrer URL (could be empty)

} else {
    // If 'source' cookie is not already set, proceed to determine traffic source
    var sourceCookie = getCookie('source');

    if (!sourceCookie) {
        // Save URL parameters to cookies if they don't already exist
        urlParams.forEach(function(value, key) {
            if (!getCookie(key)) { // Only set the cookie if it doesn't already exist
                setCookie(key, value, 30); // Save each parameter as a cookie for 30 days
            }
        });

        // Capture referrer URL
        var referrer = document.referrer || "";
        if (!getCookie('referrer')) {
            setCookie('referrer', referrer, 30); // Always store the actual referrer URL (could be empty)
        }

        // Function to get search engine name from referrer
        function getSearchEngineName(referrer) {
            var searchEngines = {
                'google.': 'google',
                'bing.': 'bing',
                'yahoo.': 'yahoo',
                'duckduckgo.': 'duckduckgo',
                'baidu.': 'baidu',
                // Add more search engines as needed
            };
            for (var key in searchEngines) {
                if (referrer.indexOf(key) !== -1) {
                    return searchEngines[key];
                }
            }
            return null;
        }

        var searchEngineName = getSearchEngineName(referrer);

        // Get 'gclid' parameter
        var gclid = urlParams.get('gclid') || '';

        // Determine traffic source based on referrer and 'gclid'
        if (searchEngineName && !gclid) {
            // Traffic came from a search engine organically
            setCookie('source', searchEngineName, 30);
            setCookie('sremarks', 'organic', 30);
            setCookie('medium', 'organic', 30);
            setCookie('mremarks', referrer, 30);
        } else if (!referrer || referrer === '') {
            // Traffic is direct (no referrer)
            setCookie('source', 'web', 30);
            setCookie('sremarks', 'direct_visit', 30);
            setCookie('medium', 'direct', 30);
            setCookie('mremarks', '', 30);
        } else {
            // Traffic is from a non-search referrer
            setCookie('source', 'web', 30);
            setCookie('sremarks', 'direct_visit', 30);
            setCookie('medium', 'direct', 30);
            setCookie('mremarks', referrer, 30);
        }
    }
}
```

{% endcode %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://work.bahrul.me/work/kyzn/website/2nd-revamp-website.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
