#!/usr/bin/perl

#$infile="sampleJSONXML.xml";
#$infile="MRF_tl_2013_38027_addrfeat.shp.xml";
$infile="sample2JSONXML.xml";
$geoJSON= "geoJson.json";

open INXML, "$infile";
open OUTJSON, ">>$geoJSON";

while (<INXML>){
print "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n";
$line=$_;
$lenLine=length($line);

print "\$line= $line\n";
print "\$lenLine = $lenLine\n";
print "\$descriptionInd =  $descriptionInd\n";

#if ($line =~/profile_type="vector"/){

#?xml version=\"1.0\" encoding=\"ISO-8859-1\"--------------------------------------------------------------------------------
if ($line eq "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>"){
print "skipping <?xml version=\"1.0\" encoding=\"ISO-8859-1\"?> \n";
}elsif($line =~/encoding/){
print "skipping <?xml version=\"1.0\" encoding=\"ISO-8859-1\"?> 222222222222222222222222222222 \n";

#PODVer1_1------------------------------------------------------------------------------------------------------
}elsif($line =~/\/PODVer1_1/){
print OUTJSON "}";
print "end POD tag\n\n";
print "}";
}elsif($line =~/PODVer1_1/){
print OUTJSON "{";
print "start POD tag\n";

#type--------------------------------------------------------------------------------------------------
}elsif($line =~/<type>/){

if ($spatial eq 'yes'){
print OUTJSON "\\\"type\\\":";
$spatial="no";
#}elsif($dist eq 'yes'){

}else{
$righbracLoc=index($line,">")+1;
$slashLoc=index($line, "/");
$length=$slashLoc-$righbracLoc-1;
$elText=substr($line,$righbracLoc,$length);
print "\$elText = $elText\n";
#print OUTJSON "type: \"$elText\",";
#print OUTJSON "\"type\": \"$elText\",";
print OUTJSON "\"\@type\": \"$elText\",";
#print OUTJSON "done!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!";
};


#keyword----------------------------------------------------------------------------------------------------
}elsif($line =~/keyword/){
#print "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n";
if ($line =~/<keywordItem/){#keywordItem
$leftBracket=index($line,"<");
$righbracLoc=index($line,">");
$slashLoc=index($line, "/");
$length=$slashLoc-$righbracLoc-2;
$elText=substr($line,$righbracLoc+1,$length);
print "inserting the keyword: $elText\n";
print OUTJSON"\"$elText\",";
#elsif($line =~/\/keywordItem/){
#print "dealing with the end keywordItem tag \n";
#print OUTJSON"],"
}elsif($line =~/\/keyword/){
print OUTJSON "],";
print "dealing with $line (end tag)\n"
}else{
print OUTJSON "\"keyword\": [";
print "dealing with $line (start  tag)\n";
};
#print "-----------------------------------------------------------------------\n";

#description-------------------------------------------------------------------------------
}elsif($line =~/<\/description>/){
print "dealing with the end description tag!!!!!!!!!!!!!!!!\n";

$locEndSlash=index($line,"/");
$elTextB= substr($line,0,$locEndSlash-1);
print "\$elTextB = $elTextB\n";
#$elTextC = $elText . ". " . $elTextB;

print "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n";
foreach $elTextDesc (@elTextDesc){
chomp($elTextDesc); 
$elText = $elText . " " . $elTextDesc;
print "\$elText = $elText\n";
};

print "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\n";
$elTextC = $elTextBeg . " " . $elText . ". " . $elTextB;
print OUTJSON "\"description\": \" $elTextC \",";
$descriptionInd="no";
}elsif($line =~/<description>/){
$leftBracket=index($line,"<");
$righbracLoc=index($line,">");
$slashLoc=index($line, "/");
$length=$slashLoc-$righbracLoc-2;


$elTextBeg=substr($line,$righbracLoc+1,$length);

$newText=substr($line,$righbracLoc+1,$length);
chomp($newText);

#$elTextDesc[$elTextDescCounter]=$newText;
#$elTextDescCounter++;

print "dealing with the description start tag !!!!!!!!!!!!!!!!!!!!!!!!\n";
$descriptionInd="yes";
}elsif($descriptionInd eq "yes"){

chomp($line);
$elTextDesc[$elTextDescCounter]=$line;
$elTextDescCounter++;

print "dealing with more of the description !!!!!!!!!!!!!!!!!!!!!!!!\n"
#dealing with line length------------------------------------------------------------------
}elsif($lenLine <3){
#skip
print "skipping this line!!!!!!!!!!!!!!!!!!!!!!!!!\n";

#publisher--------------------------------------------------------------------
}elsif($line =~/<\/publisher>/){
#print OUTJSON "},";

foreach $subOrgArray(@subOrgArray){
print OUTJSON "$subOrgArray";
};

print OUTJSON "},";

}elsif($line =~/<publisher>/){
print OUTJSON "\"publisher\":{";
}elsif($line =~/name/){
$leftBracket=index($line,"<");
$righbracLoc=index($line,">");
$slashLoc=index($line, "/");
$length=$slashLoc-$righbracLoc-2;
$elText=substr($line,$righbracLoc+1,$length);
print OUTJSON "\"name\": \"$elText\",";
#subOrganization----------------------------------------------------
}elsif($line =~/subOrganizationOf/){
$leftBracket=index($line,"<");
$righbracLoc=index($line,">");
$slashLoc=index($line, "/");
$length=$slashLoc-$righbracLoc-2;
$elText=substr($line,$righbracLoc+1,$length);
$elLength=$righbracLoc-$leftBracket-1;
$elementMain=substr($line,$leftBracket+1, $elLength);
#elLength=$righbracLoc-$leftBracket;
$newElement= "\"" . $elementMain .  "\":{";
$subOrgName="\"name\":";
print OUTJSON "$newElement $subOrgName \"$elText\",";

$subOrgArray[$subOrgArrayCounter]="}";
$subOrgArrayCounter++;
#-language--------------------------------------------------------------------------------
}elsif($line =~/<language>/){
$leftBracket=index($line,"<");
$righbracLoc=index($line,">");
$slashLoc=index($line, "/");
$length=$slashLoc-$righbracLoc-2;
$elText=substr($line,$righbracLoc+1,$length);

$elLength=$righbracLoc-$leftBracket-1;
$elementMain=substr($line,$leftBracket+1, $elLength);

#elLength=$righbracLoc-$leftBracket;
$newElement= "\"" . $elementMain .  "\":";
print OUTJSON "$newElement [\"$elText\"],";

# -ContactPoint---------------------------------------------------------------------------
}elsif($line =~/<\/contactPoint>/){
print OUTJSON "},";
}elsif($line =~/<contactPoint>/){
print OUTJSON "\"contactPoint\": {"

#spatial-----------------------------------------------------------------------------------
}elsif($line =~/<\/spatial>/){
print OUTJSON "}\",";
}elsif($line =~/<spatial>/){
print OUTJSON "\"spatial\": \"{";
$spatial="yes";
#polygon--------------------------------------------------------------------------------
}elsif($line =~/<Polygon>/){
print OUTJSON " \\\"Polygon\\\",";
}elsif($line =~/<coordinates>/){
print OUTJSON " \\\"coordinates\\\": [[";

#pairs------------------------------------------------------------------------------
}elsif($line =~/<pair1>/){
#skip
}elsif($line =~/<\/pair1>/){
print OUTJSON "[$westBC,$northBC],";
}elsif($line =~/<pair2>/){
#skip
}elsif($line =~/<\/pair2>/){
print OUTJSON "[$eastBC,$southBC],";
}elsif($line =~/<pair3>/){
#skip
}elsif($line =~/<\/pair3>/){
print OUTJSON "[$eastBC,$northBC],";
}elsif($line =~/<pair4>/){
#skip
}elsif($line =~/<\/pair4>/){
print OUTJSON "[$westBC,$southBC],";
}elsif($line =~/ <pair5>/){
#skip
}elsif($line =~/ <\/pair5>/){
print OUTJSON "[$westBC,$northBC]";
#bureau and codes---------------------------------------------
}elsif($line =~/<bureauCode>/){
$leftBracket=index($line,"<");
$righbracLoc=index($line,">");
$slashLoc=index($line, "/");
$length=$slashLoc-$righbracLoc-2;
$elText=substr($line,$righbracLoc+1,$length);

$elLength=$righbracLoc-$leftBracket-1;
$elementMain=substr($line,$leftBracket+1, $elLength);

#elLength=$righbracLoc-$leftBracket;
$newElement= "\"" . $elementMain .  "\":";
print OUTJSON "$newElement [\"$elText\"],";
}elsif($line =~/<programCode>/){
$leftBracket=index($line,"<");
$righbracLoc=index($line,">");
$slashLoc=index($line, "/");
$length=$slashLoc-$righbracLoc-2;
$elText=substr($line,$righbracLoc+1,$length);

$elLength=$righbracLoc-$leftBracket-1;
$elementMain=substr($line,$leftBracket+1, $elLength);

#elLength=$righbracLoc-$leftBracket;
$newElement= "\"" . $elementMain .  "\":";
print OUTJSON "$newElement [\"$elText\"],";

#coordinates---------------------------------------------------------------
}elsif($line =~/<west>/){
$leftBracket=index($line,"<");
$righbracLoc=index($line,">");
$slashLoc=index($line, "/");
$length=$slashLoc-$righbracLoc-2;
$westBC=substr($line,$righbracLoc+1,$length);
}elsif($line =~/<north>/){
$leftBracket=index($line,"<");
$righbracLoc=index($line,">");
$slashLoc=index($line, "/");
$length=$slashLoc-$righbracLoc-2;
$northBC=substr($line,$righbracLoc+1,$length);
}elsif($line =~/<east>/){
$leftBracket=index($line,"<");
$righbracLoc=index($line,">");
$slashLoc=index($line, "/");
$length=$slashLoc-$righbracLoc-2;
$eastBC=substr($line,$righbracLoc+1,$length);
}elsif($line =~/<south>/){
$leftBracket=index($line,"<");
$righbracLoc=index($line,">");
$slashLoc=index($line, "/");
$length=$slashLoc-$righbracLoc-2;
$southBC=substr($line,$righbracLoc+1,$length);
#temporal---------------------------------------------------------------------
}elsif($line =~/<begin>/){
$leftBracket=index($line,"<");
$righbracLoc=index($line,">");
$slashLoc=index($line, "/");
$length=$slashLoc-$righbracLoc-2;
$begina=substr($line,$righbracLoc+1,$length);
$beginaLength=length($begina);

if ($beginaLength == 4){
$begin=$begina;
}elsif($beginaLength == 6){
$year=substr($begina,0,4);
$month=substr($begina,4);
$begin=$year . "-" . $month
}else{
$year=substr($begina,0,4);
$month=substr($begina,4,4);
$day=substr($begina,6);
$begin=$year . "-" . $month . "-" . $day . "T00:00:00"
};

}elsif($line =~/<end>/){
$leftBracket=index($line,"<");
$righbracLoc=index($line,">");
$slashLoc=index($line, "/");
$length=$slashLoc-$righbracLoc-2;
$endA=substr($line,$righbracLoc+1,$length);
$endALength=length($endA);

if ($endALength == 4){
$end=$enda;
}elsif($endALength == 6){
$year=substr($endA,0,4);
$month=substr($endA,4);
$end=$year . "-" . $month;
}else{
$year=substr($endA,0,4);
$month=substr($endA,4,4);
$day=substr($endA,6);
$end=$year . "-" . $month . "-" . $day . "T00:00:00"
};


}elsif($line =~/<\/temporal>/){
print OUTJSON "\"$begin/$end\",";

}elsif($line =~/<temporal>/){
$leftBracket=index($line,"<");
$righbracLoc=index($line,">");
$slashLoc=index($line, "/");
$length=$slashLoc-$righbracLoc-2;
$elText=substr($line,$righbracLoc+1,$length);

$elLength=$righbracLoc-$leftBracket-1;
$elementMain=substr($line,$leftBracket+1, $elLength);

#elLength=$righbracLoc-$leftBracket;
$newElement= "\"" . $elementMain .  "\":";
#print OUTJSON "$newElement \"$elText\",";
print OUTJSON "$newElement";
print "temporal!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n";

}elsif($line =~/<\/distribution>/){
print OUTJSON "}]";
$dist="yes";
}elsif($line =~/<distribution>/){
print OUTJSON "\"distribution\":[{";
$dist="no";

}else{

$leftBracket=index($line,"<");
$righbracLoc=index($line,">");
$slashLoc=index($line, "/");
$length=$slashLoc-$righbracLoc-2;
$elText=substr($line,$righbracLoc+1,$length);

$elLength=$righbracLoc-$leftBracket-1;
$elementMain=substr($line,$leftBracket+1, $elLength);

#elLength=$righbracLoc-$leftBracket;
$newElement= "\"" . $elementMain .  "\":";
print OUTJSON "$newElement \"$elText\",";




print "In the default!!!!!!!!!!!!!!!!!!\n";
};


};


