#include <iostream>
#include <sstream>


using namespace std;

std::string gethex( unsigned int c )
{
    std::ostringstream stm ;
    stm << '%' << std::hex << std::nouppercase << c ;
    return stm.str();
}

std::string encode(std::string str)
{
static const std::string unreserved = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
                                      "abcdefghijklmnopqrstuvwxyz"
                                      "-_.~";

std::string r;

   for( unsigned int i = 0; i<str.length(); i+=1)
    {
    	unsigned char c = str.at(i);
        if( unreserved.find(c) != -1 ) r += c ; else r += gethex(c) ;
    }

return r;
}



std::string str_base = "ie=UTF-8&oe=UTF-8&hl=pt-BR&client=t&sc=2&sl=";

std::string Idiomas[] = { "Portuguese", "Spanish", "English", "Estonian", "French", "German", "Italian" };

std::string Idioms[] = { "pt", "es", "en", "et", "fr", "de", "it"};

/*
std::string getClipboard()
{
    std::string strData;

    if (OpenClipboard(NULL))
    {
        HANDLE hClipboardData = GetClipboardData(CF_TEXT);
        if (hClipboardData)
        {
            CHAR *pchData = (CHAR*) GlobalLock(hClipboardData);
            if (pchData)
            {
                strData = pchData;
                GlobalUnlock(hClipboardData);
            }
        }
        CloseClipboard();
    }
    return strData;
}

bool setClipboard(std::string textToclipboard)
{
    bool success = true;

    if (OpenClipboard(NULL))
    {
        EmptyClipboard();
        size_t size = (textToclipboard.length()+1) * sizeof(CHAR);
        HGLOBAL hClipboardData = GlobalAlloc(NULL, size);
        if (hClipboardData)
        {
            CHAR* pchData = (CHAR*) GlobalLock(hClipboardData);
            if (pchData)
            {
                memcpy(pchData, (CHAR*) textToclipboard.c_str(), size);
                GlobalUnlock(hClipboardData);
                SetClipboardData(CF_TEXT, hClipboardData);
            }
        }
        CloseClipboard();
    }
    return success;
}*/

bool Translate(unsigned short language1, unsigned short language2)
{
    // std::string str (str_base+Idioms[language1]+"&tl="+Idioms[language2]+"&q="+encode(getClipboard()));
    std::string str (str_base+Idioms[language1]+"&tl="+Idioms[language2]+"&q="+encode("áéíóú"));
    cout << str;
    return true;
}

int main()
{
    cout << "Press CTRL and SPACE.\n\nCreated by Pedro Henrique.";
    unsigned short language1=0, language2=2;
    Translate(language1, language2);
    return 0;
}
