var isIE  = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;
var isNN = (navigator.appName.indexOf("Netscape")!=-1) ? true : false;
var requiredMinorVersion = 0;
var requiredRevision = 0;

$(document).ready(function(){
	if(isIE){
		$("#mainMenu > li").hover(function(){
			$("ul",this).css('left','0px');
		},
		function(){
			$("ul",this).css('left','-9999px');
		});
	}
});

function ControlVersion()
{
	var version;
	var axo;
	var e;

	try {
		// version will be set for 7.X or greater players
		axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
		version = axo.GetVariable("$version");
	} catch (e) {
	}

	if (!version)
	{
		try {
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
			version = "WIN 6,0,21,0";
			axo.AllowScriptAccess = "always";
			version = axo.GetVariable("$version");
		} catch (e) {
		}
	}

	if (!version)
	{
		try {
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
			version = axo.GetVariable("$version");
		} catch (e) {
		}
	}

	if (!version)
	{
		try {
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
			version = "WIN 3,0,18,0";
		} catch (e) {
		}
	}

	if (!version)
	{
		try {
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
			version = "WIN 2,0,0,11";
		} catch (e) {
			version = -1;
		}
	}
	
	return version;
}

function GetSwfVer(){
	var flashVer = -1;
	
	if (navigator.plugins != null && navigator.plugins.length > 0) {
		if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
			var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
			var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
			var descArray = flashDescription.split(" ");
			var tempArrayMajor = descArray[2].split(".");			
			var versionMajor = tempArrayMajor[0];
			var versionMinor = tempArrayMajor[1];
			var versionRevision = descArray[3];
			if (versionRevision == "") {
				versionRevision = descArray[4];
			}
			if (versionRevision[0] == "d") {
				versionRevision = versionRevision.substring(1);
			} else if (versionRevision[0] == "r") {
				versionRevision = versionRevision.substring(1);
				if (versionRevision.indexOf("d") > 0) {
					versionRevision = versionRevision.substring(0, versionRevision.indexOf("d"));
				}
			}
			var flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
		}
	}
	// MSN/WebTV 2.6 supports Flash 4
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;
	// WebTV 2.5 supports Flash 3
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;
	// older WebTV supports Flash 2
	else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;
	else if ( isIE && isWin && !isOpera ) {
		flashVer = ControlVersion();
	}	
	return flashVer;
}

function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision)
{
	versionStr = GetSwfVer();
	if (versionStr == -1 ) {
		return false;
	} else if (versionStr != 0) {
		if(isIE && isWin && !isOpera) {
			// Given "WIN 2,0,0,11"
			tempArray         = versionStr.split(" "); 	// ["WIN", "2,0,0,11"]
			tempString        = tempArray[1];			// "2,0,0,11"
			versionArray      = tempString.split(",");	// ['2', '0', '0', '11']
		} else {
			versionArray      = versionStr.split(".");
		}
		var versionMajor      = versionArray[0];
		var versionMinor      = versionArray[1];
		var versionRevision   = versionArray[2];

        	// is the major.revision >= requested major.revision AND the minor version >= requested minor
		if (versionMajor > parseFloat(reqMajorVer)) {
			return true;
		} else if (versionMajor == parseFloat(reqMajorVer)) {
			if (versionMinor > parseFloat(reqMinorVer))
				return true;
			else if (versionMinor == parseFloat(reqMinorVer)) {
				if (versionRevision >= parseFloat(reqRevision))
					return true;
			}
		}
		return false;
	}
}

function showFlash(whatMovie,paramString,movieName,W,H,BG,Win,Alignment,whatScale,whatVersion,alternateContent,whatAccess)
{
	var requiredMajorVersion = whatVersion;
	if(whatScale == null || whatScale == '')
	{
		whatScale = 'showAll';
	}
	if(whatAccess == null || whatAccess == '')
	{
		whatAccess = 'sameDomain';
	}
	var hasRightVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);
	if(hasRightVersion)
	{  // if we've detected an acceptable version
    var oeTags = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'
    + ' width="'+W+'" height="'+H+'" id="'+movieName+'"'
    + ' codebase="https://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab">'
    + '<param name="movie" value="'+whatMovie+paramString+'" />'
    + '<param name="menu" value="false" />'
    + '<param name="quality" value="high" />'
    + '<param name="wmode" value="'+Win+'" />'
    + '<param name="bgcolor" value="#'+BG+'" />'
    + '<param name="scale" value="'+whatScale+'" />'
    + '<embed src="'+whatMovie+paramString+'" menu="false" quality="high"'
    + ' wmode="'+Win+'" bgcolor="#'+BG+'"'
    + ' scale="'+whatScale+'"'
    + ' width="'+W+'" height="'+H+'" name="'+movieName+'" align="'+Alignment+'"'
    + ' play="true"'
    + ' loop="false"'
    + ' quality="high"'
    + ' allowScriptAccess="'+whatAccess+'"'
    + ' swliveconnect="true"'
    + ' type="application/x-shockwave-flash"'
    + ' pluginspage="https://www.macromedia.com/go/getflashplayer">'
    + '<\/embed>'
    + '<\/object>';
    document.write(oeTags);   // embed the flash movie
  } 
	else 
	{
		document.write(alternateContent);
  }
}

function getFlash(whatMovie,paramString,movieName,W,H,BG,Win,Alignment,whatScale,whatVersion,alternateContent,whatAccess)
{
	var requiredMajorVersion = whatVersion;
	if(whatScale == null || whatScale == '')
	{
		whatScale = 'showAll';
	}
	if(whatAccess == null || whatAccess == '')
	{
		whatAccess = 'sameDomain';
	}
	var hasRightVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);
	if(hasRightVersion)
	{
    var oeTags = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'
    + ' width="'+W+'" height="'+H+'" id="'+movieName+'"'
    + ' codebase="https://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab">'
    + '<param name="movie" value="'+whatMovie+paramString+'" />'
    + '<param name="menu" value="false" />'
    + '<param name="quality" value="high" />'
    + '<param name="wmode" value="'+Win+'" />'
    + '<param name="bgcolor" value="#'+BG+'" />'
    + '<param name="scale" value="'+whatScale+'" />'
    + '<embed src="'+whatMovie+paramString+'" menu="false" quality="high"'
    + ' wmode="'+Win+'" bgcolor="#'+BG+'"'
    + ' scale="'+whatScale+'"'
    + ' width="'+W+'" height="'+H+'" name="'+movieName+'" align="'+Alignment+'"'
    + ' play="true"'
    + ' loop="false"'
    + ' quality="high"'
    + ' allowScriptAccess="'+whatAccess+'"'
    + ' swliveconnect="true"'
    + ' type="application/x-shockwave-flash"'
    + ' pluginspage="https://www.macromedia.com/go/getflashplayer">'
    + '<\/embed>'
    + '<\/object>';
    return oeTags;
  } 
	else 
	{
		return alternateContent;
  }
}



var altMenu = '<div id="topMenu">';
altMenu += '<a href="/" class="topMenuLink" title="Home" style="width:53px; border:none;">SECO</a>';
altMenu += '<a href="/consulting/" class="topMenuLink" title="Consulting" style="width:82px;">Consulting</a>';
altMenu += '<a href="/lift-inspections/" class="topMenuLink" title="Lift Inspections" style="width:109px;">Lift Inpections</a>';
altMenu += '<a href="/parts-and-maintenance/" class="topMenuLink" title="Parts &amp; Maintenance" style="width:143px;">Parts &amp; Maintenance</a>';
altMenu += '<a href="/product-list/" class="topMenuLink" title="Product List" style="width:89px;">Product List</a>';
altMenu += '<a href="/photo-gallery/" class="topMenuLink" title="Photo Gallery" style="width:98px;">Photo Gallery</a>';
altMenu += '<a href="/contact/" class="topMenuLink" title="Contact" style="width:63px;">Contact</a>';
altMenu += '</div>';

function verify(f)
{
  var empty_fields = "";
  var fCount = 0;
  var empty_options = "";
  var oCount = 0;
	var empty_checks = '';
	var cCount = 0;
  var errors = "";
  var eCount = 0;
  var msg = "";
	var checkedSets = new Array();

  for(var i = 0; i < f.length; i++)
  {
    var e = f.elements[i];
    if(((e.type == "text") || (e.type == "textarea") || (e.type == "password")) && !e.optional)
    {
      if (((e.value == null) || (e.value == "") || isblank(e.value)) && !e.conditional)
      {
        empty_fields += "\n" + replace(e.name,"_"," ") + " is required";
        fCount += 1
        continue;
      }
		}

		//CHECKBOXES
		if(e.type == 'checkbox' && !e.optional && !e.conditional)
		{
			var setName = e.name;
			var setChecked = false;
			if(!Array.indexOf)
			{
					for(var cs=0; cs<checkedSets.length; cs++)
					{
						if(checkedSets[cs]==setName)
						{
							setChecked = true;
							break;
						}
					}
			}
			if(Array.indexOf)
			{
				if(checkedSets.indexOf(setName) > -1)
				{
					setChecked = true;
				}
			}
			if(!setChecked)
			{
				var checkVal = false;
				var currentSet = f[setName];
				for(zz=0;zz<currentSet.length;zz++)
				{
					if(currentSet[zz].checked)
					{
						checkVal = true;
						break;
					}
				}
				if(!checkVal)
				{
	        empty_checks += "\n" + replace(e.id,"_"," ") + " selection is required";
	        cCount = cCount + 1;
				}
				checkedSets.push(setName);
			}
		}	//END OF CHECKBOXES

		//RADIOS
		if(e.type == 'radio' && (!e.optional || !e.conditional))
		{
			var setName = e.name;
			var currentSet = f[setName];
			var setChecked = false;
			if(!Array.indexOf)
			{
					for(var cs=0; cs<checkedSets.length; cs++)
					{
						if(checkedSets[cs]==setName)
						{
							setChecked = true;
							break;
						}
					}
			}
			if(Array.indexOf)
			{
				if(checkedSets.indexOf(setName) > -1)
				{
					setChecked = true;
				}
			}
			if(!setChecked)
			{
				var checkVal = false;
				var currentSet = f[setName];
				for(zz=0;zz<currentSet.length;zz++)
				{
					if(currentSet[zz].checked)
					{
						checkVal = true;
						break;
					}
				}
				if(!checkVal)
				{
		       empty_checks += "\n" + replace(e.id,"_"," ") + " selection is required";
		       cCount = cCount + 1;
				}
				checkedSets.push(setName);
			}
		}	//END OF RADIOS
		
		//CONDITONAL FIELDS
    if(e.conditional)
    {
			var triggered = false;
			var failed = false;
			//FIRST CHECK IF THE CONDITONAL FIELD IS REQUIRING THIS TO HAVE A VALUE
			var conditionField = e.condition;
			if(regExTest(conditionField,/[\d]/))
			{
				var whatField = f.elements[conditionField];
			}
			else
			{
				var whatField = f[conditionField];
			}
			var fieldType = whatField.type;
			var fieldName = whatField.id;
			//WHAT TYPE OF FIELD WAS SELECTED TO TRIGGER THIS
			if(fieldType == 'checkbox' && whatField.checked)
			{
				triggered = true;
			}
			if(fieldType == 'radio' && whatField.checked)
			{
				triggered = true;
			}
			if(fieldType == 'text' && ((whatField.value != null) || (whatField.value != "") || !isblank(whatField.value)))
			{
				triggered = true;
			}
			if(whatField.options)
	    {
				//LAST OPTION FOR "OTHER" FIELD
      	if (whatField.selectedIndex == (whatField.length-1))
      	{
					triggered = true;
				}
			}
			if(triggered == true)
			{
				//CHECK THAT THE CONDITION IS MET
				if ((e.options) && !e.optional)
    		{
      		var which = e.options.selectedIndex;
      		var choice = e.options[which].value;
      		if ((choice == null) || (choice == ""))
					{
						failed = true;
					}
				}
				if((e.type == "text") || (e.type == "textarea"))
				{
					if((e.value == null) || (e.value == "") || isblank(e.value))
					{
						failed = true;
					}
				}
				if(failed == true)
				{
        	empty_fields += "\n" + replace(e.id,"_"," ") + " is required: " + replace(fieldName,"_"," ") + " = " + whatField.value + " selected";
          fCount += 1
				}
			}
    }
		
		if(e.time)
		{
			if(regExTest(e.value,"[^0-9:]") == true)
			{
			  errors += "\nA valid " + replace(e.name,"_"," ") + " is required. Format as: xx:xx";
			  eCount += 1;
			}
    }
		
    if(e.phone)
    {
			var rangePattern = /[^0-9\s\(\)\.-]/;
			if(regExTest(e.value,rangePattern) == true)
			{
         errors += "\n" + replace(e.name,"_"," ") + " must be numeric. Format as: (xxx)xxx-xxxx";
         eCount = eCount + 1;
			}
    }
		
    if(e.money)
    {
			var moneyPattern = /[^0-9\$\.\,]/;
			if(regExTest(e.value,"[^0-9\.\$,]") == true)
			{
         errors += "\n" + replace(e.name,"_"," ") + " must be dollars and cents";
         eCount = eCount + 1;
			}
    }
		
    if(e.numeric)
    {
			var numPattern = /[^0-9\.\,]/;
			if(regExTest(e.value,numPattern) == true)
			{
         errors += "\n" + replace(e.name,"_"," ") + " must be numeric";
         eCount = eCount + 1;
			}
    }
		
    if(e.numericRange)
    {
			var rangePattern = /[^0-9\s\$\.\,-]/;
			if(regExTest(e.value,rangePattern) == true)
			{
         errors += "\n" + replace(e.name,"_"," ") + " must be numeric";
         eCount = eCount + 1;
			}
    }
		
		if(e.date)
		{
			var datePattern = /\d{1,2}\/\d{1,2}\/\d{4}/;
			if(regExTest(e.value,datePattern) == false)
			{
			  errors += "\nA valid " + replace(e.name,"_"," ") + " is required. Format as: xx/xx/xxxx";
			  eCount += 1;
			}
    }
			
    if(e.count != null)
    {
	    if (e.value.length < e.count)
      {	  
  	    errors += "\n" + replace(e.name,"_"," ") + " must be at least " + e.count + " characters in length";
        eCount = eCount + 1;
      }
    }
    if(e.min != null)
    {
		  var v = parseFloat(e.value);
      if (isNaN(v) || ((e.min != null) && (v < e.min)))
      {	  
        errors += "\n" + replace(e.name,"_"," ") + " must be greater than " + e.min;
        eCount = eCount + 1;
      }
    }
    if(e.max != null)
    {
		  var v = parseFloat(e.value);
      if (isNaN(v) || ((e.max != null) && ( v > e.max)))
      {	  
        errors += "\n" + replace(e.name,"_"," ") + " must be less than " + e.max;
        eCount = eCount + 1;
      }
    }
    if(e.email)
    {
			if(regExTest(e.value,"^[\\w-_\.]*[\\w-_\.]\@[\\w]\.+[\\w]+[\\w]$") == false)
			{
			  errors += "\nA valid email address is required";
			  eCount += 1;
			}
    }

    if (e.options && !e.optional)
    {
      var which = e.options.selectedIndex;
      var choice = e.options[which].value;
      if ((choice == null) || (choice == "") && !e.conditional)
      {
        empty_options += "\n" + replace(e.name,"_"," ") + " selection is required";
        oCount = oCount + 1;
        //continue;
      }
    }
  }

  if ((!empty_fields) && (!empty_options) && (!empty_checks) && !errors)
  {
    return true;
  }
  else
  {
    msg = "Please be sure to complete all selections or fill in all required fields.\n";
    if (empty_fields)
    {
      fieldsVar = "field"
      if(fCount > 1){fieldsVar += "s"}
      msg += "\n" + fCount + " required " + fieldsVar + " left blank.";
      msg += empty_fields += "\n";
    }
    if (errors)
    {
      fieldsVar = "field"
      if(eCount > 1){fieldsVar += "s"}
      msg += "\n" + eCount + " " + fieldsVar + " with invalid entries.";
      msg += errors += "\n";
    }
    if (empty_options)
    {
      choicesVar = "drop-down selection"
      if (oCount > 1)
        {choicesVar += "s"}
      msg += "\n" + oCount + " required " + choicesVar + " not completed.";
      msg += empty_options += "\n";
    }
    if (empty_checks)
    {
      choicesVar = "checkbox\/radio option"
      if (cCount > 1)
        {choicesVar += "s"}
      msg += "\n" + cCount + " required " + choicesVar + " not chosen.";
      msg += empty_checks += "\n";
    }
    alert(msg);
    return false;
  }
}

function isLetter(str)
{
  var fieldErrors = ""
  var rex = /[^a-zA-Z\s]/

  if ((str == "") || (str == null))
  {
  fieldErrors = "You must enter text.\n";
  }

  if(rex.test(str))
  {
  fieldErrors += "Invalid data was entered.";
  }

  if (fieldErrors)
  {
  return false;
  }
  else
  {
  return true;
  }
}

function isAlphaNum(str)
{
  var fieldErrors = ""
  var rex = /[^\w]/

  if ((str == "") || (str == null) || isblank(str))
  {
  fieldErrors = "You must enter something.\n";
  }

  if(rex.test(str))
  {
  fieldErrors += "Check that you have only entered letters and-or numbers.";
  }

  if (fieldErrors)
  {
  return false;
  }
  else
  {
  return true;
  }
}

function isblank(s)
{
  for(var i = 0; i < s.length; i++)
  {
    var c = s.charAt(i);
    if ((c != ' ') && (c != '\n') && (c != '\t')) return false;
  }
  return true;
}

function replace(string,text,by) 
{
    var strLength = string.length, txtLength = text.length;
    if ((strLength == 0) || (txtLength == 0)) return string;

    var i = string.indexOf(text);
    if ((!i) && (text != string.substring(0,txtLength))) return string;
    if (i == -1) return string;

    var newstr = string.substring(0,i) + by;

    if (i+txtLength < strLength)
        newstr += replace(string.substring(i+txtLength,strLength),text,by);

    return newstr;
}

function regExTest(whatString,whatPattern)
{
	var regX = new RegExp(whatPattern);
	return regX.test(whatString);
}

function autoTab(input,len, e)
{
	var keyCode = (isNN) ? e.which : e.keyCode; 
	var filter = (isNN) ? [0,8,9] : [0,8,9,16,17,18,37,38,39,40,46];

	if(input.value.length >= len && !containsElement(filter,keyCode)) 
	{
		input.value = input.value.slice(0, len);
		input.form[(getIndex(input)+1) % input.form.length].focus();
	}
}

function containsElement(arr, ele)
{
	var found = false
	var index = 0;
	while(!found && index < arr.length)
	{
		if(arr[index] == ele)
		{
			found = true;
		}
		else
		{
			index++;
		}
	}
	return found;
}

function getIndex(input) 
{
	var index = -1
	var i = 0
	var found = false;
	while (i < input.form.length && index == -1)
	{
		if (input.form[i] == input)
		{
			index = i;
		}
		else 
		{
			i++;
		}
	}
	return index;
}

function submitForm(formName,whereTo)
{
	var whatForm = document.getElementById(formName);
	if(formName == 'requestForm')
	{
		whatForm.Your_Email.email=true;
		whatForm.Phone.phone=true;
		whatForm.Manufacturer.optional=true;
		whatForm.Model_Number.optional=true;
		whatForm.Serial_Number.optional=true;
		whatForm.Comments.optional=true;
	}
	if(formName == 'emailForm')
	{
		whatForm.Email.email=true;
		whatForm.Area_Code.numeric=true;
		whatForm.Phone_Prefix.numeric=true;
		whatForm.Phone_Number.numeric=true;
	}
	var whatReturn = verify(whatForm); 
	if(whatReturn != false)
	{
		whatForm.action = whereTo;
		whatForm.submit();
	}
}
