<craft>
    <parameter name="side1" type="string" default="none"/>
    <parameter name="side2" type="string" default="none"/> 
    <parameter name="side3" type="string" default="none"/> 
    <parameter name="side4" type="string" default="none"/> 
    <script type="text/openjscad">
        function main(params) {


			//	to do: deal with minus sign
            //          if minus -> difference
            //          if plus -> union
            //  to do: deal with no sideN parameter e.g.) only side1, side2?
            
            var connectors = []; //for connector addtion
            var holes = [];      //for connector hole

            if (params.side1 != 'none') { //bottom
				var direction = params.side1[0]
                console.log(direction)
				var shape = params.side1.substring(1,params.side1.length)

                if(shape === 'triangle'){
                    var connector1 = cylinder({r:5,fn:3})
                                    .rotateZ(60)
                }else if(shape === 'rectangle'){
                    var connector1 = cylinder({r:4,fn:4})
                                    .rotateZ(45)
                }else if(shape === 'circle'){
                    var connector1 = cylinder({r:4,fn:50})
                }else if(shape === 'pentagon'){
                    var connector1 = cylinder({r:4,fn:5})
                }else if(shape === 'hexagon'){
                    var connector1 = cylinder({r:4,fn:6})
                }else if(shape === 'heptagon'){
                    var connector1 = cylinder({r:4,fn:7})
                }else if(shape === 'octagon'){
					     var connector1 = cylinder({r:4,fn:10})
					 }

                if(direction === '+')
                    connectors.push(connector1.translate([10,0,0]));
                else if(direction === '-')
                    holes.push(connector1.translate([10,0,0]))
                else
                    console.log("You need to specify the direction of connector at the bottom.\nconvex: + \nconcave: -")

            }

            if (params.side2 != 'none') { //left
                var direction = params.side2[0]
                var shape = params.side2.substring(1,params.side2.length)
                
                if(shape === 'triangle'){
                    var connector2 = cylinder({r:5,fn:3}).rotateZ(180)
                }else if(shape === 'rectangle'){
                    var connector2 = cylinder({r:4,fn:4})
                                    .rotateZ(45)
                }else if(shape === 'circle'){
                    var connector2 = cylinder({r:4,fn:50})
                }else if(shape === 'pentagon'){
                    var connector2 = cylinder({r:4,fn:5})
                }else if(shape === 'hexagon'){
                    var connector2 = cylinder({r:4,fn:6})
                }else if(shape === 'heptagon'){
                    var connector2 = cylinder({r:4,fn:7})
                }else if(shape === 'octagon'){
					     var connector2 = cylinder({r:4,fn:10})
					 }

                if(direction === '+')
                    connectors.push(connector2.translate([0,10,0]));
                else if(direction === '-')
                    holes.push(connector2.translate([0,10,0])); 
                else
                    console.log("You need to specify the direction of connector at the left.\nconvex: + \nconcave: -")
            }

            if (params.side3 != 'none') { //top
                var direction = params.side3[0]
                var shape = params.side3.substring(1,params.side3.length)
                
                if(shape === 'triangle'){
                    var connector3 = cylinder({r:5,fn:3}).rotateZ(180)
                }else if(shape === 'rectangle'){
                    var connector3 = cylinder({r:4,fn:4})
                                    .rotateZ(45)
                }else if(shape === 'circle'){
                    var connector3 = cylinder({r:4,fn:50})
                }else if(shape === 'pentagon'){
                    var connector3 = cylinder({r:4,fn:5})
                }else if(shape === 'hexagon'){
                    var connector3 = cylinder({r:4,fn:6})
                }else if(shape === 'heptagon'){
                    var connector3 = cylinder({r:4,fn:7})
                }else if(shape === 'octagon'){
					     var connector3 = cylinder({r:4,fn:10})
					 }

                if(direction === '+')
                    connectors.push(connector3.translate([10,20,0]));
                else if(direction === '-')
                    holes.push(connector3.translate([10,20,0])); 
                else
                    console.log("You need to specify the direction of connector at the top of \nconvex: + \nconcave: -")
            }

            if (params.side4 != 'none') { //top
                var direction = params.side4[0]
                var shape = params.side4.substring(1,params.side4.length)
                
                if(shape === 'triangle'){
                    var connector4 = cylinder({r:5,fn:3}).rotateZ(180)
                }else if(shape === 'rectangle'){
                    var connector4 = cylinder({r:4,fn:4})
                                    .rotateZ(45)
                }else if(shape === 'circle'){
                    var connector4 = cylinder({r:4,fn:50})
                }else if(shape === 'pentagon'){
                    var connector4 = cylinder({r:4,fn:5})
                }else if(shape === 'hexagon'){
                    var connector4 = cylinder({r:4,fn:6})
                }else if(shape === 'heptagon'){
                    var connector4 = cylinder({r:4,fn:7})
                }else if(shape === 'octagon'){
					     var connector4 = cylinder({r:4,fn:10})
					 }
                
                if(direction === '+')
                    connectors.push(connector4.translate([20,10,0])); 
                else if(direction === '-')
                    holes.push(connector4.translate([20,10,0])); 
                else
                    console.log("You need to specify the direction of connector at the right.\nconvex: + \nconcave: -")
            } 

            var piece = cube([20,20,1])

            connectors.forEach(function(c){
                console.log("now adding side")
                piece = union(piece, c)
                return piece;
            })

            holes.forEach(function(h){
                console.log("now subtracting side")
                piece = difference(piece, h)
                return piece;
            })

            return piece;
            /*
            return union(
                    cube([20, 20, 1]) //flat canvas

                    ,connector1 //should deal with case withough sideN param
                    ,connector2
                    ,connector3
                    ,connector4
           );*/
        } // end of main
        

    </script>
</craft>
