#usage "<b>Export PCB board to ecad.io (Create a 3D PCB for use in MCAD)</b>\n"
       "<p>"
       "<author>Author: ecadio@autodesk.com</author>"

int hor = 1;
int ver = 1;
string fileName;
string userName;
string password;
string cfgToolName="ecadio";
string session;


string productionAuthUrl="https://[user]:[password]@www.ecad.io";		//Base authorization url for production (used in api calls)
string productionUrl="https://www.ecad.io";								//Base url for production
string uploadUrl="/api/Upload/UploadEagle";								//URL for upload file api. Returns id of file uploaded if successful
string showUrl="/PCB/ShowSession?session=[session]";					//URL for viewing the PCB in ecad.io. Session id corresponds to return from the upload call.

string url="";
string Message;
string fileText;
string netResult;
string fName;
int nText;
int agreeToS=0;
int dialogAccepted=0;

string termsAndConditionsHtml="<html>\
<head>\
<title>Simple online ECAD to MCAD file conversion with ecad.io</title>\
<style>\
p.MsoNormal\
 {margin:0cm;\
 margin-bottom:.0001pt;\
 font-size:12.0pt;\
 font-family:Cambria;}\
 p.MsoHeader\
 {margin:0cm;\
 margin-bottom:.0001pt;\
 font-size:12.0pt;\
 font-family:Arial;}\
</style>\
</head>\
<body bgcolor='#EDEDED' lang=EN-GB link=blue vlink=purple>\
<div class=WordSection1>\
<p class=MsoHeader>\
<b>Simple online ECAD to MCAD file conversion with ecad.io</b><br> \
</p>\
<p class=MsoNormal>This tool uploads the active EAGLE board file to the ecad.io \
online Electrical to Mechanical CAD translation service.&nbsp; </p>\
<p class=MsoNormal>&nbsp;</p>\
<p class=MsoNormal>Once the file has been uploaded, you can view the board \
online in 3D, add detailed 3D component models if required, and then convert it \
to a STEP file. The STEP file can be sent directly to Autodesk Fusion 360, \
Autodesk A360 or downloaded for use with any other MCAD system that supports \
STEP.</p>\
<p class=MsoNormal>&nbsp;</p>\
<p class=MsoNormal>Use of ecad.io requires registering for a free Autodesk user \
account, and acceptance of Autodesk’s terms of service.</p>\
<p class=MsoNormal>&nbsp;</p>\
<p class=MsoNormal>For more information about ecad.io please visit the <i>Resources</i> \
section of the website at <a href='https://www.ecad.io'>www.ecad.io</a>.</p>\
<p class=MsoNormal>&nbsp;</p>\
</div>\
</html>";


string footerHtml="<html> \
<body> \
<img src='data:image/png;base64,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'/> \
</body> \
</html>";

string macFooterHtml="<html> \
<body> \
<img src='data:image/png;base64,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'/> \
</body> \
</html>";

//**************************************************FUNCTIONS***************************************************

int writeToFile(string fileName,string contents)
{
	output(fileName,"wt")
	{
		printf(contents);
	}

	return 1;
}

int isWindows()
{
	if(strstr(strupr(OS_SIGNATURE),"WINDOWS")>=0)
	{
		return 1;
	}

	return 0;
}

int isMac()
{
	if(strstr(strupr(OS_SIGNATURE),"MAC")>=0)
	{
		return 1;
	}

	return 0;
}

int isLinux()
{
	if(isWindows()==0 && isMac()==0)
	{
		return 1;
	}

	return 0;
}

int getWindowWidth()
{
	if(isWindows())
	{
		return 1000;
	}
	else if(isMac())
	{
		return 400;
	}
	else
	{
		return 600;
	}
}

int getWindowHeight()
{
	if(isWindows())
	{
		return 700;
	}
	else if(isMac())
	{
		return 300;
	}
	else
	{
		return 500;
	}
}

string getFooterHtml()
{
	if(isWindows())
	{
		return footerHtml;
	}
	else if(isMac())
	{
		return macFooterHtml;
	}
	else
		return macFooterHtml;

}

string strReplace(string srcString,string toReplace, string replaceWith)
{
	string curStr=srcString;
	int pos = strstr(curStr,toReplace);

	while(pos >= 0)
	{
		if(pos==0){
			curStr=replaceWith + strsub(curStr,strlen(toReplace));
		}
		else{
			curStr=strsub(curStr,0,pos) + replaceWith + strsub(curStr,pos+strlen(toReplace));
		}

		pos = strstr(curStr,toReplace);

	}

	return curStr;

}

string urlEncode(string strToEncode)
{
	string retEncode=strToEncode;
	retEncode=strReplace(retEncode,"@","%40");

	return retEncode;

}

string getAuthUrl(string userName, string password)
{
	string retUrl="";
	string encodedUserName=urlEncode(userName);
	string encodedPassword=urlEncode(password);
	string baseUrl=productionAuthUrl;
	retUrl=strReplace(baseUrl,"[user]",encodedUserName);
	retUrl=strReplace(retUrl,"[password]",encodedPassword);

	return retUrl;
}

string getUrl()
{
	string retUrl=productionUrl;

	return retUrl;
}

string getUploadUrl(string userName, string password)
{
	return getUrl()+uploadUrl;

	//return getAuthUrl(userName,password)+uploadUrl;

}


string getShowUrl(string session)
{
	return getUrl()+strReplace(showUrl,"[session]",session);
}

string getBrowserCommand(string session)
{
	string cmd="";

	if(isWindows()){
		cmd="explorer \"[url]\"";

	}
	else if (isLinux()){
	    cmd="xdg-open '[url]'";
	}
	else{
		cmd="open \"[url]\"";
	}

	return strReplace(cmd,"[url]",getShowUrl(session));

}

string getValueFromKeyValueList(string list, string key, char listSeperator)
{
	string keyVals[];
	string curKeyVal[];
	int noEntries=strsplit(keyVals,list,listSeperator);
	int noCurEntries=0;

	if(noEntries>0)
	{
		for(int i=0;i<noEntries;i++)
		{
			noCurEntries=strsplit(curKeyVal,keyVals[i],'=');
			if(noCurEntries>=2)
			{
				if(curKeyVal[0]==key)
				{
					return strReplace(keyVals[i],key + "=","");
				}

			}
		}

	}

	return "";


}

string getCfgValue(string name)
{
	return cfgget(cfgToolName + "." + name);
}

void setCfgValue(string name,string value)
{
	cfgset(cfgToolName + "." + name,value);

}

//**************************************************************************************************************

//Save file if not already saved..

if(argv[1] != "saved") {
	if(dlgMessageBox("!The Document will be saved before exporting to ecad.io. Click 'OK' to continue and save the document","OK","Cancel")==1)
	{
		exit(0);
	}
	exit("write; run ecadio saved;");
}



int Result = dlgDialog("EAGLE MCAD/ECAD Interface") {

   dlgVBoxLayout {
   dlgHBoxLayout dlgSpacing( getWindowWidth() );
	   dlgHBoxLayout{
		   dlgTextView(termsAndConditionsHtml);
		   dlgVBoxLayout{
				dlgSpacing(getWindowHeight());

		   }
	   }
   }
  dlgVBoxLayout {
   dlgHBoxLayout dlgSpacing( getWindowWidth() );
	  dlgHBoxLayout
	  {

		dlgCheckBox("", agreeToS) { }
		dlgLabel("I accept the <a href='http://www.autodesk.com/company/legal-notices-trademarks/software-license-agreements'>Terms of Service</a>");
		dlgStretch(1);
		dlgPushButton("+OK")
		{
			if(agreeToS)
			{
				dialogAccepted=1;
				dlgAccept();
			}
			else
			{
				dlgMessageBox("!You must agree to the terms of use to upload the PCB to ecad.io","OK");
			}
		}
		dlgPushButton("Cancel")
		{
			dlgReject();
			exit(0);
		}
	  }
	  dlgSpacing(20);
	  dlgLabel(getFooterHtml());
  }
};

if(!agreeToS || !dialogAccepted)
{
	exit(0);
}



board(B)
{
	fName=B.name;
}

fileread(fileText, fName);
fileText=filename(fName)+"|"+fileText;

if (netpost(netResult,getUploadUrl(userName,password), fileText,100,"multipart/form-data;") >= 0) {
   // process Result

   session=getValueFromKeyValueList(netResult,"session",';');
   system(getBrowserCommand(session));

}
else
   dlgMessageBox(neterror());