The first part of the search engine script is similar to the above script except that we don't need any arguments. We do not only search in one XML file but in two. The search is performed by first uploading the XML file and then looking for string matches.
//this is the function for the search engine
function searchModel() {
var modelName;
model = new XML();
model.onLoad = newModel;
model.ignoreWhite = true;
model.load("fmodels.xml");
function newModel() {
for (var count01=0; count01<=models.childNodes.length; count01++) {
if (this.childNodes[count01].nodeName.toLowerCase() == "models") {
modelsDescryption = this.childNodes[count01];
}
}
findMFModels(modelsDescryption);
}
//here is a specific function for the search engine with the var myModel
function findMFModels(myModel) {
var myModel;
var modelName;
for (var count02=0; count02<=myModel.childNodes.length; count02++) {
//we are defining the var modelName here
modelName = myModel.childNodes[count02].nodeName.toLowerCase();
//here the string from the input textfield is compared
//with the name of the childnodes
if (searchWindow.toLowerCase() == modelName) {
//if there is a match we do all this
modelsDescryption = myModel.childNodes[count02].firstChild;
InstanceName_0.text = modelsDescryption;
headline = myModel.childNodes[count02].attributes.name;
pic = myModel.childNodes[count02].attributes.photo;
loadMovie(pic,"modelHolder");
//if there is no match...
//see below for special comment
}else if (searchWindow.toLowerCase() !== headline.toLowerCase()){
//we continue searching in another xml file, this can be done for many
//xml files in a row
searchMModel();
}
}
}
}
//function for the second and last xml file in the search attempt
function searchMModel() {
var modelName;
model = new XML();
model.onLoad = newModel;
model.ignoreWhite = true;
model.load("mmodels.xml");
function newModel() {
for (var count01=0; count01<=models.childNodes.length; count01++) {
if (this.childNodes[count01].nodeName.toLowerCase() == "models") {
modelsDescryption = this.childNodes[count01];
}
}
findMaleModels(modelsDescryption);
}
function findMaleModels(myModel) {
var myModel;
var modelName;
for (var count02=0; count02<=myModel.childNodes.length; count02++) {
modelName = myModel.childNodes[count02].nodeName.toLowerCase();
//if there is a match we do all this
if (searchWindow.toLowerCase() == modelName) {
modelsDescryption = myModel.childNodes[count02].firstChild;
InstanceName_0.text = modelsDescryption;
headline = myModel.childNodes[count02].attributes.name;
pic = myModel.childNodes[count02].attributes.photo;
loadMovie(pic,"modelHolder");
//if here is also no match...
}else if (searchWindow.toLowerCase() !== headline.toLowerCase()){
//we give up and tell there was no match
headline = "";
InstanceName_0.text = "Sorry, this model is not in our database.";
loadMovie("agency.swf","modelHolder");
}
}
}
}
special comment: by some reason if we write here
}else if (searchWindow.toLowerCase() !== modelName){
which we should imagine to be the correct syntax instead of
}else if (searchWindow.toLowerCase() !== headline.toLowerCase()){
we end up always with a false statement even the name was correct. Therefore, I recommend to always add a name attribute and then as in this case use it for the comparison