// general functions
function addLoadEvent(func) {	
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      oldonload();
      func();
    }
  }
}

function pageLoad(sender, args) {
      if(args.get_isPartialLoad()){   
         tb_init('a.thickbox');   
    }   
 }
 
function getElementByClass(classname){ 
     var messages=new Array();
     var inc=0; 
     var alltags=document.all? document.all : document.getElementsByTagName("*"); 

     for (i=0; i<alltags.length; i++){
        if (alltags[i].className.match(classname)){ 
         messages[inc++]=alltags[i]; 
         }
     }
     if(messages != null){return messages;}
     else {return null;}
} 

function getAbsX(elt) {return (elt.x) ? elt.x : getAbsPos(elt,"Left");}
function getAbsY(elt) {return (elt.y) ? elt.y : getAbsPos(elt,"Top");}
function getAbsPos(elt,which) {
    var iPos = 0;
    while (elt != null) {
     iPos += elt["offset" + which];
     elt = elt.offsetParent;
    }
    return iPos;
}

function enlargeImageThumb(x) {
    var eleMainImage = document.getElementById('ctl00_cph_content_main_img');  
    var eleMainLnk = document.getElementById('ctl00_cph_content_main_lnk');
    var eleMainZoomLnk = document.getElementById('ctl00_cph_content_main_zoomlnk');
    var eleThumbImage = getElementByClass('thumb'); 
    
    if (eleMainLnk!=null){ 
        var s = x.href.split("?hi-res=");
        //alert(s[1]);
        eleMainZoomLnk.href = s[1];      
        eleMainLnk.href = s[1];
        eleMainImage.src = x.href;        
    }
    return false;    
}

function applyEventsToImages() {
    var eleThumbLnk = getElementByClass('thumblnk');
    if (eleThumbLnk!=null){
            for (var intCounter = 0; intCounter < eleThumbLnk.length; intCounter++) {
            eleThumbLnk[intCounter].onmouseover = function ()
	                {enlargeImageThumb(this);
	                return false;}  
	        eleThumbLnk[intCounter].onclick = function ()
	                {return false;}                  			
                }
            }
} 

function validatePostCode(value, strDefault)
{
    var postcodeFilter=/^[A-Za-z]{1,2}[0-9A-Za-z]{1,2}[ ]?[0-9]{0,1}[A-Za-z]{2}$/;
    
    if (!postcodeFilter.test(value) && value == '' || value == strDefault) 
    {
        return true;
    }
    else
    {
        return false;
    }	
}

function checkPostCode(toCheck) {

  // Permitted letters depend upon their position in the postcode.
  var alpha1 = "[abcdefghijklmnoprstuwyz]";                       // Character 1
  var alpha2 = "[abcdefghklmnopqrstuvwxy]";                       // Character 2
  var alpha3 = "[abcdefghjkstuw]";                                // Character 3
  var alpha4 = "[abehmnprvwxy]";                                  // Character 4
  var alpha5 = "[abdefghjlnpqrstuwxyz]";                          // Character 5
  
  // Array holds the regular expressions for the valid postcodes
  var pcexp = new Array ();

  // Expression for postcodes: AN NAA, ANN NAA, AAN NAA, and AANN NAA
  pcexp.push (new RegExp ("^(" + alpha1 + "{1}" + alpha2 + "?[0-9]{1,2})(\\s*)([0-9]{1}" + alpha5 + "{2})$","i"));
  
  // Expression for postcodes: ANA NAA
  pcexp.push (new RegExp ("^(" + alpha1 + "{1}[0-9]{1}" + alpha3 + "{1})(\\s*)([0-9]{1}" + alpha5 + "{2})$","i"));

  // Expression for postcodes: AANA  NAA
  pcexp.push (new RegExp ("^(" + alpha1 + "{1}" + alpha2 + "?[0-9]{1}" + alpha4 +"{1})(\\s*)([0-9]{1}" + alpha5 + "{2})$","i"));
  
  // Exception for the special postcode GIR 0AA
  pcexp.push (/^(GIR)(\s*)(0AA)$/i);
  
  // Standard BFPO numbers
  pcexp.push (/^(bfpo)(\s*)([0-9]{1,4})$/i);
  
  // c/o BFPO numbers
  pcexp.push (/^(bfpo)(\s*)(c\/o\s*[0-9]{1,3})$/i);
  
  // Overseas Territories
  pcexp.push (/^([A-Z]{4})(\s*)(1ZZ)$/i);

  // Load up the string to check
  var postCode = toCheck;

  // Assume we're not going to find a valid postcode
  var valid = false;
  
  // Check the string against the types of post codes
  for ( var i=0; i<pcexp.length; i++) {
    if (pcexp[i].test(postCode)) {
    
      // The post code is valid - split the post code into component parts
      pcexp[i].exec(postCode);
      
      // Copy it back into the original string, converting it to uppercase and
      // inserting a space between the inward and outward codes
      postCode = RegExp.$1.toUpperCase() + " " + RegExp.$3.toUpperCase();
      
      // If it is a BFPO c/o type postcode, tidy up the "c/o" part
      postCode = postCode.replace (/C\/O\s*/,"c/o ");
      
      // Load new postcode back into the form element
      valid = true;
      
      // Remember that we have found that the code is valid and break from loop
      break;
    }
  }
  
  // Return with either the reformatted valid postcode or the original invalid 
  // postcode
  if (valid) {return postCode;} else return false;
}

function ismaxlength(obj) {
    var mlength = obj.getAttribute ? parseInt(obj.getAttribute("maxlength")) : ""
    if (obj.getAttribute && obj.value.length > mlength)
        obj.value = obj.value.substring(0, mlength)
}


