var in_array = function(needle, haystack) { for (var i=0, n = haystack.length; i<n; i++) if (haystack[i]==needle) return true; return false; }

var getRequest = function() {
    var request;
	try { request = new XMLHttpRequest();} catch (e) {}
	if (!request) try { request = new ActiveXObject("Msxml2.XMLHTTP");   } catch (e) {}
	if (!request) try { request = new ActiveXObject("Microsoft.XMLHTTP");} catch (e) {}
	return request;
};

function openVSDInfo() { var newWin=window.open("/apply/vsdinfo.asp", "VSDService", "width=560, height=280, location=no, menubar=no, status=no, toolbar=no, scrollbars=yes, resizable=no"); return false;}
function openPurposeOfVisitInfo(){var newWin=window.open("/Apply/purposeinfo.asp", "VSDService", "width=560, height=460, location=no, menubar=no, status=no, toolbar=no, scrollbars=yes, resizable=no"); return false;}
function openRegInfo(){ var newWin=window.open("reginfo.asp","Registration", "width=560, height=520, location=no, menubar=no, status=no, toolbar=no, scrollbars=yes, resizable=no"); return false;}
function openDeliveryInfo(){var newWin=window.open("/apply/bdeliveryinfo.asp", "VSDService", "width=560, height=575, location=no, menubar=no, status=no, toolbar=no, scrollbars=yes, resizable=no"); return false;}
function openTerms(){ var newWin=window.open("/termsandconds2.asp","terms", "width=500, height=500, location=no, menubar=no, status=no, toolbar=no, scrollbars=yes, resizable=yes"); return false; }

var dateParser = {
    ddmmyyyy: function(dateStr){
        var dt = new Date();
        var arr = dateStr.split('/');
        dt.setFullYear(arr[2]*1);
        dt.setMonth(arr[1]*1-1, arr[0]*1);
        return dt;
    }
    ,ddMMMMyyyy: function(dateStr){
        var dt = new Date();
        var arr = dateStr.split(' ');
        dt.setFullYear(arr[2]*1);
        dt.setMonth({January:0, February:1, March:2, April:3, May:4, June:5, July:6, August:7, September:8, October:9, November:10, December:11}[arr[1]], arr[0]*1);
        return dt;
    }
    ,ddMMmmyyyy: function(dateStr){
        var dt = new Date();
        var arr = dateStr.split('.');
        dt.setFullYear(arr[2]*1);
        dt.setMonth(arr[1]*1-1, arr[0]*1);
        return dt;
    }
};

function trim(str) { return ltrim(rtrim(str, " "), " "); }
function ltrim(str, chars) {chars = chars || "\\s";  return str.replace(new RegExp("^[" + chars + "]+", "g"), ""); }
function rtrim(str, chars) {chars = chars || "\\s";  return str.replace(new RegExp("[" + chars + "]+$", "g"), ""); }

function setSelected(elemID, what){
    if(!what) return false;
    elem = document.getElementById(elemID);
    for(var i=0; i<elem.options.length;i++){
        if(elem.options[i].value==trim(what)){elem.selectedIndex = i; break;}
    }
}

function setSelectedByText(elemID, what){
    if(!what) return false;
    elem = document.getElementById(elemID);
    for(var i=0; i<elem.options.length;i++){
        if(elem.options[i].text==trim(what)){elem.selectedIndex = i; break;}
    }
}

var homeAddressCountryChanged = function(){
    var newCountry = document.getElementById("homeAddressCountry").options[document.getElementById("homeAddressCountry").selectedIndex].text;
    if (newCountry == "United Kingdom") document.getElementById("state").disabled = false; else document.getElementById("state").disabled = true;
};

function isDate(day,month,year) {
//alert(((month==3 || month==5 || month==8 || month==10) && day==31));
    if ((month==3 || month==5 || month==8 || month==10) && day==31) { return false; } 
    if (month == 1) { 
        var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)); 
        if (day > 29 || (day==29 && !isleap)) { return false; } 
    } 
    return true; 
} 

function dateDifference(strDate1,strDate2){
     datDate1= Date.parse(strDate1);
     datDate2= Date.parse(strDate2);
     return((datDate2-datDate1)/(24*60*60*1000));
     
}

function formatDate(unformatted){
   var formated = new Date(unformatted);
   var day = formated.getDate();
   var month = "January,February,March,April,May,June,July,August,September,October,November,December".split(',')[formated.getMonth()];
   var year = formated.getFullYear();
   return day + " " + month + " " + year;
}

var hlite = function(obj){
        try{ obj.focus(); } catch(e) {};
  };

function IsNumeric(sText){
   var ValidChars = "0123456789., ";
   var IsNumber=true;
   var Char;
   for (i = 0; i < sText.length && IsNumber == true; i++) { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) {IsNumber = false;  }
   } return IsNumber;
}

function digitsNotOKJS(p, msg){
  var temp="";
  if(trim(p.value) != "") {
    temp = p.value.replace(" ","");
	temp = temp.replace("(","");
	temp = temp.replace(")","");
	if(!IsNumeric(temp)) {
	    alert("'" + msg + "' can only contain numbers and spaces. Please correct this and click continue.");
		hlite(p);
		return true;
    }
  }
  return false;
}

function fieldEmptyJS(fieldCheck, msg){
    if(trim(fieldCheck.value) == ""){
	    alert("Please enter a value for the '" + msg + "' field.");
	    fieldCheck.focus();
	    return true;
	}else 
	    if(fieldCheck.value.indexOf("'")>-1){
		    alert("The '" + msg + "' field may not contain '" + "\n" + "Please correct this and try again.");
		    fieldCheck.focus();
	        return true;
	    } else return false;
}

function fieldBiggerThanJS(fieldCheck, size, msg) {
    if((trim(fieldCheck.value)).length > size) {
	    alert("The '" + msg + "' field may only contain a maximum of " + size + " characters." + "\n" + "Please correct this and try again.");
        //hlite(fieldCheck);
        fieldCheck.focus();
	    return true;
	}
    else {
	    if(fieldCheck.value.indexOf("'") > -1) {
		    alert("The '" + msg + "' field may not contain '" + "\n" + "Please correct this and try again.");
		    fieldCheck.focus();
		    return true;
		    //hlite(fieldCheck);
		    
	    } else return false;
    }
}

function nothingOrBigJS(fieldCheck, size, msg) {
    var nothingOrBig = false;
    if(trim(fieldCheck.value)==""){
        alert("Please enter a value for the '" + msg + "' field.");
        nothingOrBig = true;
        hlite(fieldCheck);
        return nothingOrBig;
    }
    if((trim(fieldCheck.value)).length > size){
        alert("The '" + msg + "' field may only contain a maximum of " + size + " characters." + "\n" + "Please correct this and try again.");
        nothingOrBig = true;
        hlite(fieldCheck);
        return nothingOrBig;
    }
    if(fieldCheck.value.indexOf("'")>-1){
        alert("The '" + msg + "' field may not contain '" + "\n" + "Please correct this and try again.");
        nothingOrBig = true;
        hlite(fieldCheck);
        return nothingOrBig;
    }
}

function yearField_onfocusin(f) {if(f.value=="Year"){ f.value = ""} }
function yearField_onfocusout(f) {if(f.value==""){ f.value = "Year"}}

var countryOfBirthChange = function (){
    if(this.options[this.selectedIndex].text=="Russian Federation"){
        alert("As you have indicated that you were born in Russia then we may only be able to assist you in obtaining a Russian visa if you emigrated from Russia before 1992, or you can provide copies of documents that prove you are now no longer, or never have been, a Russian citizen. In any event the consulate may want to interview you and examine your documents in detail, as such it may be more appropriate if you applied directly to the consulate and not through an agency.");
    }
}

