var AUSExtention = ".com";
var NZExtention = ".co.nz";
var UAEExtention = ".ae";
var UkExtention = ".co.uk";
var EUROExtention = ".eu";
var NZAddressMandatory = "Address1,suburb,postcode";
//pn commented var AUSAddressMandatory = "street";
var AUSAddressMandatory = "Address1,city,state,postcode"; 
var UAEAddressMandatory = "Address1,postcode";
var UkAddressMandatory = "Address1,city,postcode"; 
var DefaultAddressMandatory = "Address1,postcode";
var FileUploadValidationText = "Uploaded file will be placed here.";
var UAEUSCountry = "United States";


/////////////////////////////////////////////////////////////
//Client side error handling function starts from here.
/////////////////////////////////////////////////////////////
function __ErrorHandler()
{
	this.prefix = "";
	this.header = "";

	oDiv = document.getElementById("divError");
	if(oDiv == "undefined")
	{
		alert("'divError' not defined on this page.");
	}
}
__ErrorHandler.prototype = 
{
	isBlank: function()
	{
		return oDiv.innerHTML == "";
	},
	showError: function()
	{
		if(this.isBlank() != true)
		{
			oDiv.style.display = "block";
		}
	},
	hideError: function()
	{
		oDiv.style.display = "none";
	},
	clearError: function()
	{
		oDiv.innerHTML = "";
		this.hideError();
	},
	addError: function(str)
	{
	  var strHTML = "";

	  if(this.isBlank())
	  {
		strHTML += this.header;
		strHTML += "</p>";
	  }
	  else
	  {
      	strHTML += "<br>";
	  }

	  strHTML += this.prefix + ' ' + str;
	  oDiv.innerHTML += strHTML;
	}
}

function fnDo(str)
{
	var oName = document.getElementById("txtName");
	var oErr = new __ErrorHandler();
	
	oErr.prefix = "-";
	switch (str)
	{
		case 'add':
			{
				oErr.addError('An Error was added');
			}
		case 'show':
			{
				oErr.showError();
				break
			}
		case 'clear':
			{
				oErr.clearError()
				break;
			}
		case 'hide':
			{
				oErr.hideError()
				break;
			}
		default:
			break;
	}
	document.getElementById("txtdebug").innerText =  document.getElementById("divError").innerHTML;

}
/////////////////////////////////////////////////////////
//End
////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////
//Used to check whether the email address is in correct format or not.
//////////////////////////////////////////////////////////////////////
function CheckMailAddressFormat( sEmailAddress )
{
    //Check whether the specified email address is in correct format or not.
    var sEmail = new String( sEmailAddress );
    var emailValid = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9_\.\-])+\.)+([a-zA-Z0-9]{2,4})$/;

    if( emailValid.test( sEmail ) == false)
    {
        return false;
    }
    
    return true;
}

/////////////////////////////////////////////////////////
//Used to trim the string.
////////////////////////////////////////////////////////
function Trim(tstrInput)
{
	return (tstrInput.replace(/^ *| *$/g,""));
}

///////////////////////////////////////////////////////
//Used this function to allow only characters.
////////////////////////////////////////////////////////
function fnAllowOnlyCharacters( eObj )
{
    var oKey;
    
	if( navigator.userAgent.toLowerCase().indexOf("msie") != -1 )
	{ 
		oKey = eObj.keyCode;
	}
	else if( navigator.product == "Gecko" )
	{
		oKey = eObj.which;
	}
		
	if( ( oKey > 47) && ( oKey < 58) )
	{
		return false;
	}
	return true;
}

////////////////////////////////////////////////////////
//Used this function to allow only numeric values.
////////////////////////////////////////////////////////
function fnAllowOnlyNumerics( eObj )
{
    var oKey;
    
	if( navigator.userAgent.toLowerCase().indexOf("msie") != -1 )
	{ 
		oKey = eObj.keyCode;
	}
	else if( navigator.product == "Gecko" )
	{
		oKey = eObj.which;
	}
		
	if( (( oKey > 47) && ( oKey < 58)) || oKey == 8 || oKey == 0 )
	{
		return true;
	}
	return false;
}


/////////////////////////////////////////////////////////////////////////////////
//Used to allow custom characters. Pass all the custom chars in seconde parameter.
//Example if you want to allow '(' and ')' then call this function as 
//                  fnAllowCustomChars( event , '('')' )
/////////////////////////////////////////////////////////////////////////////////

function fnAllowCustomChars( eObj , sChars )
{
    var oKey;
    
	if( navigator.userAgent.toLowerCase().indexOf("msie") != -1 )
	{ 
		oKey = eObj.keyCode;
	}
	else if( navigator.product == "Gecko" )
	{
		oKey = eObj.which;
	}
    
    
	if( ( oKey > 64 && oKey < 91 ) || ( oKey > 96 && oKey <123 ) || ( oKey > 47 && oKey < 58 ) || oKey == 8 || oKey == 0 )
	{
		return true;
	}
	else 
	{
	    var sAllowChars = new String( sChars );  
	    var cChar       = "'" + String.fromCharCode( oKey ) + "'";
	    
	    if( sAllowChars.indexOf( cChar ) != -1 )
	    {
	        return true;
	    }
	}
	return false;
}


//////////////////////////////////////////////////////////////////
//Trim the editor content.
/////////////////////////////////////////////////////////////////
function TrimEditor( strValue )
{

    var sValue = new String(strValue);
    sValue = sValue.replace( /&nbsp;/g, "");
    sValue = sValue.replace( /<p>/g, "");
    sValue = sValue.replace( /<\/p>/g, "");
    sValue = sValue.replace( /<P>/g, "");
    sValue = sValue.replace( /<\/P>/g, "");
    sValue = sValue.replace( /<br>/g, "");
    sValue = sValue.replace( /<BR>/g, "");
    
//    if ( sValue.indexOf("<p>") == 0 )
//        sValue = sValue.substring( 3 );
//    if( sValue.lastIndexOf("</p>") == sValue.length - 4 )
//        sValue = sValue.substring( 0 ,  sValue.lastIndexOf("</p>") );
//    if( sValue.lastIndexOf("<br>") == sValue.length - 4 )
//        sValue = sValue.substring( 0 ,  sValue.lastIndexOf("<br>") );
    
    return sValue;
}


function TextEditorValidator(objifr,ErrorMessage)
{
    //alert("TextEditorINN");
    ifr = objifr;
    if (ifr)
    {
        var ifrDoc = ifr.contentWindow ? ifr.contentWindow.document : ifr.contentDocument;
        var edittd = ifrDoc.getElementById("xEditingArea");
        
        if( edittd.childNodes[0].tagName == "IFRAME")
        {
            ifr = ifrDoc.documentElement.getElementsByTagName("IFRAME")[0] ;
            ifrDoc = ifr.contentWindow ? ifr.contentWindow.document : ifr.contentDocument;
            
            var ifrbdy = ifrDoc.documentElement.getElementsByTagName('body').item(0);
            if (ifrbdy) 
            { 
              if( Trim( TrimEditor( ifrbdy.innerHTML ) ) == "" )
              {
                  //ErrorObj.addError(ErrorMessage);
                  //ErrorObj.showError();
                  return false;
              }
            }
        }
        else
        {
            if( Trim( TrimEditor( edittd.childNodes[0].value ) )  == "" )
            {
                //ErrorObj.addError(ErrorMessage);
                //ErrorObj.showError();
                return false;
            }
        }
    }
}
     

function fnValidateDate(stringFormat)
{
    var str = stringFormat.split("/")
    if(str.length == 0)
    {
        return false;
    }
    else
    {
        if(str.length != 3)
        {
            return false;
        }
        else
        {
            try
            {
                
                if(isNaN(str[0]) || isNaN(str[1]) || isNaN(str[2]))
                {
                    return false
                }
                //alert("dd");
                if(str[1] == "08")
                {
                    m = 8;
                }
                else if(str[1] == "09")
                {
                    m = 9;
                }
                else
                {
                    m = parseInt(str[1]);
                }
                if(str[0] == "08")
                {
                    d = 8;
                }
                else if(str[0] == "09")
                {
                    d = 9;
                }
                else
                {
                    d = parseInt(str[0]);
                }
                
                y = parseInt(str[2]);
                if(str[2].length != 4)
                {
                    return false;
                }
                monthValid = false;
                
                if(m >=1 && m <=12)
                {
                    monthValid = true;
                }

                dayValid = false;
                
                if( (m==1 || m==3 || m==5 || m==7 || m==8 || m==10 || m==12) && ( d >= 1 && d <= 31 ) )
                {
                    dayValid=true;
                }
                else if( (m==4 || m==6 || m==9 || m==11 ) && ( d >= 1 && d <= 30 ) )
                {
                    dayValid=true;
                }
                else if( m == 2 && ( d >= 1 && d <= 29 ) )
                {
                   // dayValid=true;
                   //alert(d);
                   if(d == 29)
                   {
                        if(y%4==0 && y%100 != 0)
                        {
                            dayValid=true;
                        }
                        else
                        {
                            if(y%400 == 0)
                            {
                                dayValid=true;
                            }
                        }
                    }
                    else
                    {   
                        if( m == 2 && ( d >= 1 && d <= 28 ) )
                        {
                            dayValid=true;
                        }
                    }
                    
                }
                
                if(monthValid == false || dayValid == false)
                {
                    return false;
                }
                return true;
             }
             catch(ex)
             {
                return false;
             }
        }
    }
}




function TextEditorValidator(objifr,ErrorMessage)
{
    //alert("TextEditorINN");
    ifr = objifr;
    if (ifr)
    {
        var ifrDoc = ifr.contentWindow ? ifr.contentWindow.document : ifr.contentDocument;
        var edittd = ifrDoc.getElementById("xEditingArea");
        
        if( edittd.childNodes[0].tagName == "IFRAME")
        {
            ifr = ifrDoc.documentElement.getElementsByTagName("IFRAME")[0] ;
            ifrDoc = ifr.contentWindow ? ifr.contentWindow.document : ifr.contentDocument;
            
            var ifrbdy = ifrDoc.documentElement.getElementsByTagName('body').item(0);
            if (ifrbdy) 
            { 
              if( Trim( TrimEditor( ifrbdy.innerHTML ) ) == "" )
              {
                  //ErrorObj.addError(ErrorMessage);
                  //ErrorObj.showError();
                  return false;
              }
            }
        }
        else
        {
            if( Trim( TrimEditor( edittd.childNodes[0].value ) )  == "" )
            {
                //ErrorObj.addError(ErrorMessage);
                //ErrorObj.showError();
                return false;
            }
        }
    }
}

/* QAS Address validation fucntions - By Abhsihek */
function fnQASAddressValidation(ClientID)
{
    var URL = document.location.href;

    if(URL.indexOf(EUROExtention) > -1)
    {
        return fnQASsetAddressMandatory(DefaultAddressMandatory,ClientID);
    }
    if(URL.indexOf(NZExtention) > -1)
    {
        return fnQASsetAddressMandatory(NZAddressMandatory,ClientID);
    }
    if(URL.indexOf(UAEExtention) > -1)
    {
        return fnQASsetAddressMandatory(UAEAddressMandatory,ClientID);
    }
    if(URL.indexOf(UkExtention) > -1)
    {
        return fnQASsetAddressMandatory(UkAddressMandatory,ClientID);
    }
    if(URL.indexOf(AUSExtention) > -1)
    {

	if((URL.toLowerCase().indexOf("australia") > -1))
        {
	
            return fnQASsetAddressMandatory(AUSAddressMandatory,ClientID);
        }
        else
        {

		if(URL.toLowerCase().indexOf("brochure") > -1)
{
	            return fnQASsetAddressMandatory(AUSAddressMandatory,ClientID);	
}
else
{
            return fnQASsetAddressMandatory(DefaultAddressMandatory,ClientID);
}
        }
    }
    
    
}

function fnQASsetAddressMandatory(AddressFormat,ClientID)
{
        Message = "";

        if(AddressFormat.indexOf("street") > -1)
        {
            Message = fnQASStreetValid(ClientID);

            if(Message != "")
            {
                return Message;
            }
        }
        
        if(AddressFormat.indexOf("Address1") > -1)
        {
            Message = fnQASAddress1Valid(ClientID);
            if(Message != "")
            {
                return Message;
            }
        }
        if(AddressFormat.indexOf("suburb") > -1)
        {
            Message = fnQASSuburbValid(ClientID);
            if(Message != "")
            {
                return Message;
            }
        }
        if(AddressFormat.indexOf("city") > -1)
        {
            Message = fnQASCityValid(ClientID);
            if(Message != "")
            {
                return Message;
            }
        }
      //added new state msg by pn
        if(AddressFormat.indexOf("state") > -1)
        {
            Message = fnQASStateValid(ClientID);
            if(Message != "")
            {
                return Message;
            }
        }

        if(AddressFormat.indexOf("postcode") > -1)
        {
            Message = fnQASPostCodeValid(ClientID);
            if(Message != "")
            {
                return Message;
            }
        }
       
       
        return Message;
}

function fnQASAddress1Valid(ClientID)
{
    objAddress1 = document.getElementById(ClientID + "_QAS_txtAddress1");
   
    
    if(objAddress1 != null)
    {
        if(objAddress1.value == "")
        {
            return "Address Line 1 is a mandatory field";
        }
        else
        {
            return "";
        }
    }
    else
    {
        return "";
    }
}

function fnQASSuburbValid(ClientID)
{
    
    objSuburb = document.getElementById(ClientID + "_QAS_txtSuburb");
    
    
    if(objSuburb != null)
    {
        if(objSuburb.value == "")
        {
            return "Suburb is a mandatory field";
        }
        else
        {
            return "";
        }
    }
    else
    {
        return "";
    }
}

function fnQASPostCodeValid(ClientID)
{
    
    objPostcode = document.getElementById(ClientID + "_QAS_txtPostCode");
    lblCountry = document.getElementById(ClientID + "_QAS_lblCountryDisplay");
    if(objPostcode != null)
    {
        if(objPostcode.value == "")
        {
            if(document.location.href.indexOf(UAEExtention) > -1)
            {
                var o = UAEUSCountry.split(",");
                for(i=0;i<=(o.length-1);i++)
                {
                    if(o[i].toLowerCase() == lblCountry.innerHTML.toLowerCase())
                    {
                        return "Postcode is a mandatory field";
                    }
                }
                return "PO Box is a mandatory field";
            }
            else
            {
                return "Postcode is a mandatory field";
            }
        }
        else
        {
            return "";
        }
    }
    else
    {
        return "";
    }
}


function fnQASCityValid(ClientID)
{
    
    objCity = document.getElementById(ClientID + "_QAS_txtCity");
    
    if(objCity != null)
    {
        if(objCity.value == "")
        {
            return "City is a mandatory field";
        }
        else
        {
            return "";
        }
    }
    else
    {
        return "";
    }
}

// added new func for state msg by pn
function fnQASStateValid(ClientID)
{
    
    objState = document.getElementById(ClientID + "_QAS_txtState");
    
    if(objState != null)
    {
        if(objState.value == "")
        {
            return "State is a mandatory field";
        }
        else
        {
            return "";
        }
    }
    else
    {
        return "";
    }
}


function fnQASStreetValid(ClientID)
{
    
    var oStreet = document.getElementById(ClientID + '_QAS_txtStret');

    if(oStreet != null)
    {

        if(oStreet.value == "")
        {
            return "Street Number and Name is a mandatory field";
        }
        else
        {
            return "";
        }
    }
    else
    {
        return "";
    }
}