// Generic function to validate forms
// requires 'validate' attribute in input element, with function and upto 2 parameters.
// (c) c360uk Ltd.  2003-2005
function checkAge() {
	/* the minumum age you want to allow in */
	var min_age = 18;

	/* change "age_form" to whatever your form has for a name="..." */
	var year = parseInt(document.forms["age_form"]["year"].value);
	var month = parseInt(document.forms["age_form"]["month"].value) - 1;
	var day = parseInt(document.forms["age_form"]["day"].value);

	var theirDate = new Date((year + min_age), month, day);
	var today = new Date;

	if ( (today.getTime() - theirDate.getTime()) < 0) {
		alert("You are too young to enter this site!");
		return false;
	}
	else {
		return true;
	}
}

function charactersCheck(strString,val) {
    
    var strValidChars = window[val];
    var strChar;
    var blnResult = true;
    var charId;
    
    if (strString.length == 0) return false;

    // test strString consists of valid characters listed above
    for (i = 0; i < strString.length && blnResult == true; i++)
    {
        strChar = strString.charAt(i);
        if (strValidChars.indexOf(strChar) == -1)
        {
            blnResult = false;
        }
    }
    return blnResult;
}

function validate(formObj)
{
    var booErrorFound = false;
    
    for (var i = 0; i<formObj.elements.length; i++)
    {
    	var ele=formObj.elements[i];
    	if(ele.getAttribute("validate"))
    	{
    
    	    var arrValidation = validationType = ele.getAttribute("validate").split(",");
    		validationMethod = arrValidation[0];
    		validationParam1 = arrValidation[1];
    		validationParam2 = arrValidation[2];						
    		//alert(ele.getAttribute("name"));
    		switch (validationMethod)
    		{
				case "age":
                    var intMinimumAge   = parseInt(validationParam1);
                    arrDateValue = ele.value.split('-');
                    var year  = parseInt(arrDateValue[0],10);
                    var month = parseInt(arrDateValue[1],10) - 1;
                    var day   = parseInt(arrDateValue[2],10);
                    var theirAge = new Date((year + intMinimumAge), month, day);
                    var today    = new Date;
                    
                    if(theirAge.getTime()>0) {
                    
						if (document.getElementById('err'+ele.getAttribute("name"))) {
							document.getElementById('err'+ele.getAttribute("name")).style.display='none'; 
						}
                        
                        timeDifference = today.getTime() - theirAge.getTime();
                        
                        if (timeDifference < 0) {
                            
                            if(document.getElementById(validationParam2).checked) {  // Age is lower than required, checkbox ticked!
                            	if (document.getElementById('err'+validationParam2)) { 
                    	            document.getElementById('err'+validationParam2).style.display='none';
                        	    }
                            }
                            else { // Age is lower than required, checkbox not ticked!
                                booErrorFound = true;
                            	if (document.getElementById('err'+validationParam2)) { 
                    	            document.getElementById('err'+validationParam2).style.display='block'; 
                        	    }
                            }
                        }
                        else { // Age fits the requirement!
                            if (document.getElementById('err'+validationParam2)) { 
                   	            document.getElementById('err'+validationParam2).style.display='none'; 
                       	    }
                        }
                    }
                    else { // Date entered is incorrect!
                    	booErrorFound = true;
						if (document.getElementById('err'+ele.getAttribute("name"))) {
							document.getElementById('err'+ele.getAttribute("name")).style.display='block'; 
						}
                    }
				    break;
			    case "date":
                    arrDateValue = ele.value.split('-');
                    if(arrDateValue[0]=='YYYY' || arrDateValue[0]=='0000' || arrDateValue[0]==''
                       || arrDateValue[1]=='MM' || arrDateValue[1]=='00' || arrDateValue[1]==''
                       || arrDateValue[2]=='DD' || arrDateValue[2]=='00' || arrDateValue[2]=='') 
                    { 
                        booErrorFound = true; 
                        if (document.getElementById('err'+ele.getAttribute("name"))) { 
                            document.getElementById('err'+ele.getAttribute("name")).style.display='block' 
                        }
                    } else if (document.getElementById('err'+ele.getAttribute("name"))) {
					    document.getElementById('err'+ele.getAttribute("name")).style.display='none'
					}
                    break;
				case "mobile":
					//alert("Validate Mobile");
					if (!isValidMobile(ele.value)) 
					{
                        ele.className="textboxerror";
                        booErrorFound = true;
                        if (document.getElementById('err'+ele.getAttribute("name"))) { 
                            document.getElementById('err'+ele.getAttribute("name")).style.display='block' 
                        }
                    } else if (document.getElementById('err'+ele.getAttribute("name"))) {
					    document.getElementById('err'+ele.getAttribute("name")).style.display='none'
					}	
					break;
				case "populated":
				    if (ele.value.length<1 || ele.value==' ' || ele.value=='  ' || ele.value=='   ')
					{
						ele.className="textboxerror";
						if (document.getElementById('err'+ele.getAttribute("name"))) {document.getElementById('err'+ele.getAttribute("name")).style.display='block'}
						booErrorFound = true;
					}
					else {
					    if (typeof validationParam1 != "undefined") {
					        if (charactersCheck(ele.value,validationParam1)) {
					        }
					        else {
					            booErrorFound = true;
					        }
					    }
					    ele.className="";
					    if (document.getElementById('err'+ele.getAttribute("name"))) {document.getElementById('err'+ele.getAttribute("name")).style.display='none'}
					}
					break; 
                case "radio":
                    var radioSelected = -1;
                    var radioGroup    = ele.name;
                    var radioButtons  = formObj.elements[radioGroup];
                    for (j=0;j<radioButtons.length; j++) {
                        if (radioButtons[j].checked ) {
                            radioSelected = j;
                        }
                    }
                    if (radioSelected == -1) {
                        ele.className="textboxerror";
                        booErrorFound = true;
                        if (document.getElementById('err'+ele.getAttribute("name"))) { 
                            document.getElementById('err'+ele.getAttribute("name")).style.display='block' 
                        }
						
                    } else if (document.getElementById('err'+ele.getAttribute("name"))) {

						document.getElementById('err'+ele.getAttribute("name")).style.display='none'
					}
                    break; 
				case 'dropdownbox':
					if (ele.value == "") {
						ele.className="textboxerror";
						if (document.getElementById('err'+ele.getAttribute("name"))) {document.getElementById('err'+ele.getAttribute("name")).style.display='block'}
						booErrorFound = true;
					}
					else {
					    ele.className="";
						if (document.getElementById('err'+ele.getAttribute("name"))) {document.getElementById('err'+ele.getAttribute("name")).style.display='none'}
					}
					break;
                case "length":
                    if (ele.value.length<validationParam1 || ele.value.length>validationParam2)
                    {
                        ele.className="textboxerror";
                        booErrorFound = true;
                    }
                    break;
                case "email":
                    if (!isValidEmail(ele.value,validationParam1))
                    {
                        ele.className="textboxerror";
                        booErrorFound = true;
                        if (document.getElementById('err'+ele.getAttribute("name"))) { 
                            document.getElementById('err'+ele.getAttribute("name")).style.display='block' 
                        }
                    } else if (document.getElementById('err'+ele.getAttribute("name"))) {
					    document.getElementById('err'+ele.getAttribute("name")).style.display='none'
					}
                    break;
                case "equals":
					//alert("Come to equal");
                    if (validationParam1 == "element")
                    {
                        var ele2 = document.getElementById(validationParam2);
                        if (ele.value != ele2.value)
                        {
							//alert("Not equal");
                            ele.className="textboxerror";
                            booErrorFound = true;
							if (document.getElementById('err'+ele.getAttribute("name"))) { 
                         	   document.getElementById('err'+ele.getAttribute("name")).style.display='block' 
                        	}
                        } else {
							if (document.getElementById('err'+ele.getAttribute("name"))) { 
								document.getElementById('err'+ele.getAttribute("name")).style.display='none' 
							}
						}
                    }
                    else if (validationParam1 == "value")
                    {
                        if (ele.value != validationParam2)
                        {
                            ele.className="textboxerror";
                            booErrorFound = true;
                        }
                    }
                    break;
    		}
        }
    }
    
    if (booErrorFound == true)
    {
        alert("You have not filled in all required fields correctly.");
        return false;
    }
    else {
        return true;
    }
}

function isValidMobile(mob) {
	if((!IsNumeric(mob)) || mob.length != "11" || mob.substring(0,2) != "07") {
		return false;
	}
	return true;
}

function IsNumeric(strString)
	// check for valid numeric strings
{
	var strValidChars = "0123456789.-";
	var strChar;
	var blnResult = true;
	
	if (strString.length == 0) return false;
	
	// test strString consists of valid characters listed above
	for (i = 0; i < strString.length && blnResult == true; i++)
	{
		strChar = strString.charAt(i);
		if (strValidChars.indexOf(strChar) == -1)
		{
			blnResult = false;
		}
	}
	return blnResult;
} 

function isValidPeriod(beginDate, endDate) {
	return (endDate >= beginDate);
}
// Check that an email address is valid based on RFC 821
function isValidEmail(address, optional) {
   if (address != '' && address.search) {
      if (address.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1) return true;
      else return false;
   }
   // allow empty strings to return true if optional
   else return optional;
}

function openWindow(url, width, height, scrollbars, menubar, windowName) {
    var Win = window.open(url,windowName,'width=' + width + ',height=' + height + ',resizable=yes,scrollbars=' + scrollbars + ',menubar=' + menubar );
    Win.creator=self;
}

function addToQuery(varName, varValue, varURI)
{
	var objParams = new Array();
	var objValues = new Array();
	var arrNewQuery = new Array();
        var booMatched = false;
        var strOutput;
	
	this.URI = arguments[2];
    if (this.URI==null)  // not specified
      this.URI = window.location;

	var q = this.URI.search;
	
	if(q.length > 1) 
	{
	    q = q.substring(1, q.length);
	}
	else 
	{
	    q = null;
    }


    keyValuePairs = new Array();

    if(q) 
	{
        for(var i=0; i < q.split("&").length; i++) 
		{
            keyValuePairs[i] = q.split("&")[i];

			var strName  = keyValuePairs[i].split("=")[0];
			var strValue = keyValuePairs[i].split("=")[1];
			objParams[i] = strName;
			//alert (varName + " " + strName);
			if (varName==strName)
			{
				//alert (varValue);
				objValues[i] = varValue;
                                booMatched = true;
			}
			else
			{
			    objValues[i] = strValue;			
			}
			arrNewQuery[i] = strName + "=" + objValues[i];
		}
	}
	
	if (booMatched==false)
	{
		arrNewQuery.push(varName + "=" + varValue + "&");
	}
	
        strOutput = arrNewQuery.join("&");	

	strOutput = this.URI.protocol + "//" + this.URI.hostname + this.URI.pathname + "?" + strOutput;
	
        //alert(strOutput);
	return strOutput;
}

function maxlengthTextarea(obj){
    var mlength=obj.getAttribute? parseInt(obj.getAttribute("maxlength")) : ""
    if (obj.getAttribute && obj.value.length>mlength)
    obj.value=obj.value.substring(0,mlength)
}

function textCounter(field,cntfield,maxlimit) {
    if (field.value.length > maxlimit) {
        field.value = field.value.substring(0, maxlimit);
    } else {
        cntfield.value = maxlimit - field.value.length;
    }
    }
    
function scrollDiv(objDiv,intScroll) {
    
    var divHeight    = objDiv.scrollHeight; // Actual Div Height
    
	var divPosition  = objDiv.scrollTop;
	var scrollTarget = divPosition + intScroll;
	
	if (scrollTarget > divHeight) {
	    var scrollTarget = divHeight;
	}
	else if (scrollTarget < 0) {
	    var scrollTarget = 0;
	}
	//alert('DivHeight = '+divHeight+', Scroll target is '+scrollTarget+' (moving from '+divPosition+' by '+intScroll+')');
	var intStep = scrollTarget - divPosition;
	if (intStep >= 0) {
    	if (intStep > 10) {
    	    var realStep = 6;
    	}
    	else if (intStep >6) {
    	    var realStep = 3;
    	}
    	else if (intStep > 2) {
    	    var realStep = 2;
    	}
    	else if (intStep > 0) {
    	    var realStep = 1;
    	} 
    	else {
    	    var realStep = 0;
    	}
	} else {
    	if (intStep < -10) {
    	    var realStep = -6;
    	}
    	else if (intStep < -6) {
    	    var realStep = -3;
    	}
    	else if (intStep < -2) {
    	    var realStep = -2;
    	}
    	else if (intStep < 0) {
    	    var realStep = -1;
    	}
    	else {
    	    var intStep = 0;
    	}
	}
	
    objDiv.scrollTop = divPosition + realStep;
    
    if(objDiv.scrollTop != scrollTarget) {
        var toScroll = intScroll - realStep;
        //alert('Left to scroll '+toScroll+' Scroll target:'+scrollTarget+' Current position: '+objDiv.scrollTop);
        scrollTimer  = setTimeout("scrollDiv(document.getElementById('" + objDiv.id+ "')," + toScroll + ")",10);
    }
}


function Toggle(theDiv) {
document.getElementById("div1").style.display = "none";
document.getElementById("div2").style.display = "none";
document.getElementById(theDiv).style.display = "block";
}

/**
 * SWFObject v1.4.4: Flash Player detection and embed - http://blog.deconcept.com/swfobject/
 *
 * SWFObject is (c) 2006 Geoff Stearns and is released under the MIT License:
 * http://www.opensource.org/licenses/mit-license.php
 *
 * **SWFObject is the SWF embed script formerly known as FlashObject. The name was changed for
 *   legal reasons.
 */
if(typeof deconcept=="undefined"){var deconcept=new Object();}
if(typeof deconcept.util=="undefined"){deconcept.util=new Object();}
if(typeof deconcept.SWFObjectUtil=="undefined"){deconcept.SWFObjectUtil=new Object();}
deconcept.SWFObject=function(_1,id,w,h,_5,c,_7,_8,_9,_a,_b){if(!document.getElementById){return;}
this.DETECT_KEY=_b?_b:"detectflash";
this.skipDetect=deconcept.util.getRequestParameter(this.DETECT_KEY);
this.params=new Object();
this.variables=new Object();
this.attributes=new Array();
if(_1){this.setAttribute("swf",_1);}
if(id){this.setAttribute("id",id);}
if(w){this.setAttribute("width",w);}
if(h){this.setAttribute("height",h);}
if(_5){this.setAttribute("version",new deconcept.PlayerVersion(_5.toString().split(".")));}
this.installedVer=deconcept.SWFObjectUtil.getPlayerVersion();
if(c){this.addParam("bgcolor",c);}
var q=_8?_8:"high";
this.addParam("quality",q);
this.setAttribute("useExpressInstall",_7);
this.setAttribute("doExpressInstall",false);
var _d=(_9)?_9:window.location;
this.setAttribute("xiRedirectUrl",_d);
this.setAttribute("redirectUrl","");
if(_a){this.setAttribute("redirectUrl",_a);}};
deconcept.SWFObject.prototype={setAttribute:function(_e,_f){
this.attributes[_e]=_f;
},getAttribute:function(_10){
return this.attributes[_10];
},addParam:function(_11,_12){
this.params[_11]=_12;
},getParams:function(){
return this.params;
},addVariable:function(_13,_14){
this.variables[_13]=_14;
},getVariable:function(_15){
return this.variables[_15];
},getVariables:function(){
return this.variables;
},getVariablePairs:function(){
var _16=new Array();
var key;
var _18=this.getVariables();
for(key in _18){_16.push(key+"="+_18[key]);}
return _16;},getSWFHTML:function(){var _19="";
if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.length){
if(this.getAttribute("doExpressInstall")){
this.addVariable("MMplayerType","PlugIn");}
_19="<embed type=\"application/x-shockwave-flash\" src=\""+this.getAttribute("swf")+"\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\"";
_19+=" id=\""+this.getAttribute("id")+"\" name=\""+this.getAttribute("id")+"\" ";
var _1a=this.getParams();
for(var key in _1a){_19+=[key]+"=\""+_1a[key]+"\" ";}
var _1c=this.getVariablePairs().join("&");
if(_1c.length>0){_19+="flashvars=\""+_1c+"\"";}_19+="/>";
}else{if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","ActiveX");}
_19="<object id=\""+this.getAttribute("id")+"\" classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\">";
_19+="<param name=\"movie\" value=\""+this.getAttribute("swf")+"\" />";
var _1d=this.getParams();
for(var key in _1d){_19+="<param name=\""+key+"\" value=\""+_1d[key]+"\" />";}
var _1f=this.getVariablePairs().join("&");
if(_1f.length>0){_19+="<param name=\"flashvars\" value=\""+_1f+"\" />";}_19+="</object>";}
return _19;
},write:function(_20){
if(this.getAttribute("useExpressInstall")){
var _21=new deconcept.PlayerVersion([6,0,65]);
if(this.installedVer.versionIsValid(_21)&&!this.installedVer.versionIsValid(this.getAttribute("version"))){
this.setAttribute("doExpressInstall",true);
this.addVariable("MMredirectURL",escape(this.getAttribute("xiRedirectUrl")));
document.title=document.title.slice(0,47)+" - Flash Player Installation";
this.addVariable("MMdoctitle",document.title);}}
if(this.skipDetect||this.getAttribute("doExpressInstall")||this.installedVer.versionIsValid(this.getAttribute("version"))){
var n=(typeof _20=="string")?document.getElementById(_20):_20;
n.innerHTML=this.getSWFHTML();return true;
}else{if(this.getAttribute("redirectUrl")!=""){document.location.replace(this.getAttribute("redirectUrl"));}}
return false;}};
deconcept.SWFObjectUtil.getPlayerVersion=function(){
var _23=new deconcept.PlayerVersion([0,0,0]);
if(navigator.plugins&&navigator.mimeTypes.length){
var x=navigator.plugins["Shockwave Flash"];
if(x&&x.description){_23=new deconcept.PlayerVersion(x.description.replace(/([a-zA-Z]|\s)+/,"").replace(/(\s+r|\s+b[0-9]+)/,".").split("."));}
}else{try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");}
catch(e){try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
_23=new deconcept.PlayerVersion([6,0,21]);axo.AllowScriptAccess="always";}
catch(e){if(_23.major==6){return _23;}}try{axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash");}
catch(e){}}if(axo!=null){_23=new deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","));}}
return _23;};
deconcept.PlayerVersion=function(_27){
this.major=_27[0]!=null?parseInt(_27[0]):0;
this.minor=_27[1]!=null?parseInt(_27[1]):0;
this.rev=_27[2]!=null?parseInt(_27[2]):0;
};
deconcept.PlayerVersion.prototype.versionIsValid=function(fv){
if(this.major<fv.major){return false;}
if(this.major>fv.major){return true;}
if(this.minor<fv.minor){return false;}
if(this.minor>fv.minor){return true;}
if(this.rev<fv.rev){
return false;
}return true;};
deconcept.util={getRequestParameter:function(_29){
var q=document.location.search||document.location.hash;
if(q){var _2b=q.substring(1).split("&");
for(var i=0;i<_2b.length;i++){
if(_2b[i].substring(0,_2b[i].indexOf("="))==_29){
return _2b[i].substring((_2b[i].indexOf("=")+1));}}}
return "";}};
deconcept.SWFObjectUtil.cleanupSWFs=function(){if(window.opera||!document.all){return;}
var _2d=document.getElementsByTagName("OBJECT");
for(var i=0;i<_2d.length;i++){_2d[i].style.display="none";for(var x in _2d[i]){
if(typeof _2d[i][x]=="function"){_2d[i][x]=function(){};}}}};
deconcept.SWFObjectUtil.prepUnload=function(){__flash_unloadHandler=function(){};
__flash_savedUnloadHandler=function(){};
if(typeof window.onunload=="function"){
var _30=window.onunload;
window.onunload=function(){
deconcept.SWFObjectUtil.cleanupSWFs();_30();};
}else{window.onunload=deconcept.SWFObjectUtil.cleanupSWFs;}};
if(typeof window.onbeforeunload=="function"){
var oldBeforeUnload=window.onbeforeunload;
window.onbeforeunload=function(){
deconcept.SWFObjectUtil.prepUnload();
oldBeforeUnload();};
}else{window.onbeforeunload=deconcept.SWFObjectUtil.prepUnload;}
if(Array.prototype.push==null){
Array.prototype.push=function(_31){
this[this.length]=_31;
return this.length;};}
var getQueryParamValue=deconcept.util.getRequestParameter;
var FlashObject=deconcept.SWFObject;
var SWFObject=deconcept.SWFObject;

