var tandcOpened = false;
var formValidators = new Array();
function ValidateForm(f){
  //return true;
  
  for (var i = 0; i < formValidators.length; i++){
    var fn = formValidators[i];
    if (!fn(f)) return false;
  }
  return true;
}

function thickPopup(l){
  var sep = l.href.match(/\?/) ? '&' : '?';
  tb_show(null, l.href + sep + 'inlinePopup=1&TB_iframe=true&height=540&width=600', false);
  return false;
}

function setContextOpen(clickArr, showArr, changeArr) {
	var i, j, k, m;
	for (j in clickArr) {
		for(i=1; i<200; i++) {
		    var Obj = document.getElementById(clickArr[j] + i);
		    if (!Obj) break;
		    for(k in showArr) {
			    var sObj = document.getElementById(showArr[k] + i);
			    if (!sObj) break;
			    Obj.showObj = sObj;
			    Obj.openView = false;
			    for(m in changeArr) {
			        var cElemFir = document.getElementById(changeArr[m][0]+i);
			        var cElemSec = document.getElementById(changeArr[m][1]+i);
				    if (cElemFir && cElemSec) {
				        Obj.cElemFir = cElemFir;
				        Obj.cElemSec = cElemSec;
				    }
				}
			    Obj.onclick = function() {
			        if (this.openView) {
			           this.showObj.style.display = "none";
			           this.openView = false;
			           if (this.cElemFir) {
			           	   this.cElemFir.style.display = "block";
			           	   this.cElemSec.style.display = "none";
			           }
			        } else {
			           this.showObj.style.display = "block";
			           this.openView = true;
			           if (this.cElemFir) {
			           	   this.cElemFir.style.display = "none";
			           	   this.cElemSec.style.display = "block";
			           }
			        }
			    }
			}
		}
  }
}

	// popup functions for the quote_table popups
function show_content(content, defined_top, defined_left) {
 var defined_top = defined_top;
 var defined_left = defined_left;
	var link = content;
	content = content + "_div";
	show_div = document.getElementById(content);
	show_link = document.getElementById(link);
	
		if(show_div.style.display == "block") {
			show_div.style.display = "none";
		} else {
			
			if(content == 'cv_code_div') {
				show_div.style.display = "block";
				show_div.style.marginTop = "-" + parseInt(show_div.offsetHeight / 2) + "px";
				var input_pos = document.getElementById('credit_card_cv2');
				var new_left = findPosX(input_pos);
				new_left = new_left - 355;				
				show_div.style.left = new_left + 'px';
				//center(show_div);
			}	else {
				if(defined_top != undefined && defined_left != undefined) {
					getElementByClass('popup_info');
					show_div.style.display = "block";
					var new_top = defined_top;
					var new_left = defined_left;
					
					show_div.style.top = new_top + 'px';
					show_div.style.left = new_left + 'px';
				} else {
				getElementByClass('popup_info');
				show_div.style.display = "block";
				var new_top = '50';
				show_div.style.top = new_top + 'px';			
				}
			}
		}
	}

function center(object) {
  object.style.marginLeft = "-" + parseInt(object.offsetWidth / 2) + "px";
  object.style.marginTop = "-" + parseInt(object.offsetHeight / 2) + "px";
 }
 
 	
function findPosX(obj) {
    var curleft = 0;
    if(obj.offsetParent)
        while(1) 
        {
          curleft += obj.offsetLeft;
          if(!obj.offsetParent)
            break;
          obj = obj.offsetParent;
        }
    else if(obj.x)
        curleft += obj.x;
    return curleft;
  }
  
function findPosY(obj) {
    var curtop = 0;
    if(obj.offsetParent)
        while(1)
        {
          curtop += obj.offsetTop;
          if(!obj.offsetParent)
            break;
          obj = obj.offsetParent;
        }
    else if(obj.y)
        curtop += obj.y;
    return curtop - 190;
  }
  
function getElementByClass(theClass) {
var allHTMLTags = new Array();
var allHTMLTags=document.getElementsByTagName('*');

	for (i=0; i<allHTMLTags.length; i++) {
		if (allHTMLTags[i].className==theClass) {
		allHTMLTags[i].style.display='none';
		}
	}
}

var numExistingFields = 0;

function moreFields() {
  if(numExistingFields < 5) {
    numExistingFields++;
    
    var newFields = document.getElementById('formScheme').cloneNode(true);
    newFields.id = '';
    newFields.style.display = 'block';
    var newField = newFields.childNodes;
    for (var i=0;i<newField.length;i++) {
      var theName = newField[i].name
      if (theName)
        newField[i].name = theName + numExistingFields;
    }
    var insertHere = document.getElementById('insertFormElement');
    insertHere.parentNode.insertBefore(newFields,insertHere);
    
    updateFieldsInfo();  
    document.getElementById('numFields').value = numExistingFields;
  }
  
  updatePriceInfo();
}


function controlQuoteForm(numNewFields) {
  var lastSelectedNumItems = document.getElementById('lastSelectedNumItemsRadio').value;
  getQuoteFormFrameObj = document.getElementById('getQuoteFormFrame');
  if(getQuoteFormFrameObj.style.display == 'none') {
    getQuoteFormFrameObj.style.display = 'block';
  }
  if (!lastSelectedNumItems) lastSelectedNumItems = numExistingFields;
  if(numNewFields > numExistingFields) {
    var addFields = numNewFields - numExistingFields;
      if(addFields > 0) {
        for(i = 0; i < addFields; i++) {
          moreFields();
        }
      }
  } else if ((numNewFields < numExistingFields) && (lastSelectedNumItems > numNewFields)) {
    var rowsToBeRemoved = numExistingFields - numNewFields;
    var removedRows = 0;
    fieldsFrame = document.getElementById('newElementsFrame');  
    var rows = getElementsByClassName('row', fieldsFrame);
    for(n = 0; n < rows.length; n++) {
      var rowNotEmpty = false;
      var allInputs = rows[n].getElementsByTagName('input');
      var numInputs = allInputs.length;
      for(l = 0; l < numInputs; l++) {
        if((allInputs[l].value != '' && allInputs[l].value != '0') && rowNotEmpty == false) {
          rowNotEmpty = true;
        }        
        if(rowNotEmpty == false && l >= numInputs -1 && removedRows < rowsToBeRemoved) {
          removedRows++;
          allInputs[l].parentNode.parentNode.parentNode.parentNode.removeChild(allInputs[l].parentNode.parentNode.parentNode);
          updateFieldsInfo(1);
          if(numExistingFields < 5 && document.getElementById('addAnotherItemLink').style.display == 'none') {
            document.getElementById('addAnotherItemLink').style.display = 'block';
          }
        }
      }
    }
    updatePriceInfo();
  } else {
    updatePriceInfo();
  }
  document.getElementById('lastSelectedNumItemsRadio').value = numNewFields;
  updateSlectBoxes();
  initFormFieldTracking();
  
}

function updateFieldsInfo(remove) {
if(remove == 1) {
  numExistingFields = numExistingFields - 1;
  document.getElementById('numFields').value = numExistingFields;
  
  var selectedRadioBtn = getSelectedItemsNumRadio();
  
  if(numExistingFields < selectedRadioBtn) {
    if(selectedRadioBtn > 1) {
      updateRadioBtn = selectedRadioBtn - 2;
      document.getElementById('num_items_' + updateRadioBtn).checked = true;
    }
  }
}

  fieldsFrame = document.getElementById('newElementsFrame');  
  numItemsSpan = fieldsFrame.getElementsByTagName('span');
  var allSpans = numItemsSpan.length;          
  if(allSpans > 0) {
    for(k = 0; k < allSpans; k++) {
      numItemsSpan[k].innerHTML = k + 1;
    }
  }
  
}
function updateSlectBoxes(){
  var selectedRadioBtn = getSelectedItemsNumRadio();
  if(numExistingFields < 5) {
    document.getElementById('priceInformationRow').style.display = 'block';
  } else {
    document.getElementById('priceInformationRow').style.display = 'none';
  }

  var itemCounter = 0;
  $("#newElementsFrame").find(".rowStaticFields").each(function(){
    itemCounter++;
    var sel = $(this).find(".itemSelect");
    if (selectedRadioBtn == 1 || itemCounter > selectedRadioBtn){
        if (sel.val() == 'Laptop'){
            $(this).find(".priceSelectLaptop").show();
            $(this).find(".priceSelect").hide();
            $(this).find(".priceSelectIphone").hide();
        } else if (sel.val() == 'iPhone'){
            $(this).find(".priceSelectIphone").show();
            $(this).find(".priceSelectLaptop").hide();
            $(this).find(".priceSelect").hide();
        } else {
            $(this).find(".priceSelect").show();
            $(this).find(".priceSelectLaptop").hide();
            $(this).find(".priceSelectIphone").hide();
        }
        $(this).find(".priceSelectBundle").hide();
        //sel.find("option[value='Laptop']").removeAttr("disabled");
        //var opt = $("<option></option>").attr("value", 'Laptop').text('Laptop');
        //$('div.main > div.sub:eq(2)').after('<div class="sub"></div>');

        if (sel.find("option[value='Laptop']").length == 0){
            if ($.browser.msie) {
                sel[0].add(new Option('Laptop', 'Laptop'), 1);
            } else {
                sel.find("option[value='']").after('<option value="Laptop">Laptop</option>');
            }
        }
        if (sel.find("option[value='iPhone']").length == 0){
            if ($.browser.msie) {
                sel[0].add(new Option('iPhone', 'iPhone'), 1);
            } else {
                sel.find("option[value='']").after('<option value="iPhone">iPhone</option>');
            }
        }

        //sel.find("option[value='iPhone']").removeAttr("disabled");
    } else {
        $(this).find(".priceSelectBundle").show();
        $(this).find(".priceSelect").hide();
        $(this).find(".priceSelectLaptop").hide();
        $(this).find(".priceSelectIphone").hide();
        if (sel.val() == 'Laptop' || sel.val() == 'iPhone'){
            sel.find("option[value='']").attr("selected","selected");
        }
        if (sel.find("option[value='iPhone']").length != 0)
            sel[0].remove(1);
        if (sel.find("option[value='Laptop']").length != 0)
            sel[0].remove(1);
        /*
        sel.find("option[value='Laptop']").remove();
        sel.find("option[value='iPhone']").remove();
        */
        //sel.find("option[value='Laptop']").attr("disabled","disabled");
        //sel.find("option[value='iPhone']").attr("disabled","disabled");
    }
  });
}
function showOtherTextBox(select) {
  // finds the number of the row containing the active select box
  fieldsFrame = select.parentNode.parentNode;  
  numItemsSpan = fieldsFrame.getElementsByTagName('span');
  var allSpans = numItemsSpan.length;          
  selectedRow = numItemsSpan[0].innerHTML;
  selectedRow = selectedRow - 1;

  if(select.options[select.selectedIndex].value == 'Other') {
    
    var newTextBox = document.createElement('div');
    newTextBox.setAttribute('class','OtherTextBox');
    newTextBox.innerHTML = "<input type='text' name='other_freetext_"+ selectedRow +"' id='other_freetext_"+ selectedRow +"' />";
    select.parentNode.appendChild(newTextBox);    
  } else {
    if(select.options[select.selectedIndex].value == 'Mobile phone') {
      alert('iPhones are not included as an item insured under the standard mobile phone category. If you wish to insure an iPhone please select iPhone from the drop down box. Please close this box to continue.');
    }
    removeTextBox = 'other_freetext_' + selectedRow;
    removeTextBox = document.getElementById(removeTextBox);
    if(removeTextBox != null) {
      removeTextBox.parentNode.removeChild(removeTextBox);
    }
  }
  updateSlectBoxes();
}

function updatePriceInfo() {
    
  return;

  var selectedRadioBtn = getSelectedItemsNumRadio();

 

  if(numExistingFields < 5) {
    document.getElementById('addAnotherItemLink').style.display = 'block';
  } else {
    document.getElementById('addAnotherItemLink').style.display = 'none';
  }

  if(selectedRadioBtn == 1) {
    switch(numExistingFields){
      case 1:
        document.getElementById('priceInformationText').innerHTML = "(" + caseOnePriceMessages[0] + ")";
        break;
      case 2:
        document.getElementById('priceInformationText').innerHTML = "(" + caseOnePriceMessages[1] + ")";
        break;
      case 3:
        document.getElementById('priceInformationText').innerHTML = "(" + caseOnePriceMessages[2] + ")";
        break;
      case 4:
        document.getElementById('priceInformationText').innerHTML = "(" + caseOnePriceMessages[3] + ")";      
        break;
      case 5:
        document.getElementById('priceInformationText').innerHTML = "(" + caseOnePriceMessages[4] + ")";      
        break;
    }
  } else if(selectedRadioBtn == 3) {
    switch(numExistingFields){
      case 1:
        document.getElementById('priceInformationText').innerHTML = "(" + caseThreePriceMessages[0] + ")";
        break;
      case 2:
        document.getElementById('priceInformationText').innerHTML = "(" + caseThreePriceMessages[1] + ")";
        break;
      case 3:
        document.getElementById('priceInformationText').innerHTML = "(" + caseThreePriceMessages[2] + ")";
        break;
      case 4:
        document.getElementById('priceInformationText').innerHTML = "(" + caseThreePriceMessages[3] + ")";      
        break;
      case 5:
        document.getElementById('priceInformationText').innerHTML = "(" + caseThreePriceMessages[4] + ")";      
        break;
    }
  } else if(selectedRadioBtn == 5) {
    switch(numExistingFields){
      case 1:
        document.getElementById('priceInformationText').innerHTML = "(" + caseFivePriceMessages[0] + ")";
        break;
      case 2:
        document.getElementById('priceInformationText').innerHTML = "(" + caseFivePriceMessages[1] + ")";
        break;
      case 3:
        document.getElementById('priceInformationText').innerHTML = "(" + caseFivePriceMessages[2] + ")";
        break;
      case 4:
        document.getElementById('priceInformationText').innerHTML = "(" + caseFivePriceMessages[3] + ")";      
        break;
      case 5:
        document.getElementById('priceInformationText').innerHTML = "(" + caseFivePriceMessages[4] + ")";      
        break;
    }
  }
  
}
function getElementsByClassName(theClass, Object) {
  var allHTMLTags=Object.getElementsByTagName('div');
  var retElementsByClass = [];
  var numDivs = allHTMLTags.length;
  
    for (i=0; i<numDivs; i++) {
      if(allHTMLTags[i].className == theClass) {
        retElementsByClass.push(allHTMLTags[i]);
      }
    }
  return retElementsByClass;
}

function getSelectedItemsNumRadio() {
    if(document.getElementById('num_items_1').checked == true) {
    var selectedRadioBtn = 1;
  } else if(document.getElementById('num_items_3').checked == true) {
    var selectedRadioBtn = 3;
  } else if(document.getElementById('num_items_5').checked == true) {
    var selectedRadioBtn = 5;
  }
  
  return selectedRadioBtn;
}
function catOn(img, n){
  img.src = eval('catImgOn'+n).src;
}
function catOff(img, n){
  img.src = eval('catImg'+n).src;
}
function initFormFieldTracking(){
    $(":input").blur(function(){
        var arr = document.location.href.split('/');
        var pageName = arr[3];
        var tmp = pageName.split('?');
        pageName = tmp[0];
        if ($(this).val() != ''){
            var formName = $(this).parents("form").attr("name");
            var elemName = $(this).attr("name");
            if (
                document.forms[formName].elements["productName"] && 
                document.forms[formName].elements["productName"].value != ''
            ){
                pageName = document.forms[formName].elements["productName"].value;
            }
            //alert('/forms/'+pageName+'/'+formName+'/'+elemName);
            //prompt('?','/forms/'+pageName+'/'+formName+'/'+elemName);
            pageTracker._trackPageview('/forms/'+pageName+'/'+formName+'/'+elemName);
        }
    });
}