/*

function getElementsByClassName(classname) {

  var rl = new Array();

  var re = new RegExp('(^| )'+classname+'( |$)');

  var ael = document.getElementsByTagName('*');

  var op = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;

  if (document.all && !op) ael = document.all;

  for (i=0, j=0; i<ael.length; i++) {

    if (re.test(ael[i].className)) {

      rl[j]=ael[i];

      j++;

    }

  }

  return rl;

}

*/

function getElementsByClassName(classname, node) {

  if(!node) node = document.getElementsByTagName("body")[0];

  var a = [];

  var re = new RegExp('\\b' + classname + '\\b');

  var els = node.getElementsByTagName("*");

  for(var i=0,j=els.length; i<j; i++) if(re.test(els[i].className))a.push(els[i]);

  return a;

}





function attachExternals() {

  as = document.getElementsByTagName('a');

  for (var i=0; i<as.length; i++) {

    if (as[i].className.indexOf('external') >= 0) {

      as[i].target = '_blank';

    }

  }

}



fnCustomAutoloadFormatter = function(oResultItem, sQuery) { 

	var sKey = oResultItem[0]; 

	var nQuantity = oResultItem[1]; 

	var sKeyQuery = sKey.substr(0, sQuery.length); 

	var sKeyRemainder = sKey.substr(sQuery.length); 

	var aMarkup = ["<div class='sample-result'><div class='sample-quantity'>", 

		nQuantity, 

		"</div><span class='sample-query'>", 

		sKeyQuery, 

		"</span>", 

		sKeyRemainder, 

		"</div>"]; 

	return (aMarkup.join("")); 

} 



function openSelectedTab(tabset) {

  tabs = tabset.getElementsByTagName('UL')[0].getElementsByTagName('LI');

  for (var j=0; j<tabs.length; j++) {

    document.getElementById(tabs[j].childNodes[0].href.split('#')[1]).style.display = 'none';

    if (tabs[j].className.indexOf('selected') != -1) {

      document.getElementById(tabs[j].childNodes[0].href.split('#')[1]).style.display = 'block';

    }

  }

}

function attachTabSets() {

  tabsets = getElementsByClassName('tabset',0);

  for (var i=0; i<tabsets.length; i++) {

    tabsets[i].getElementsByTagName('UL')[0].getElementsByTagName('LI')[0].className += ' selected';

    openSelectedTab(tabsets[i]);

    tabs = tabsets[i].getElementsByTagName('UL')[0].getElementsByTagName('LI');

    for (var j=0; j<tabs.length; j++) {

      tabs[j].childNodes[0].onclick = function() {

        temptabs = this.parentNode.parentNode.getElementsByTagName('LI');

        for (var k=0; k<temptabs.length; k++) {

          temptabs[k].className = temptabs[k].className.replace('selected','');

        }

        this.parentNode.className += ' selected';

        openSelectedTab(this.parentNode.parentNode.parentNode);

        return false;

      };

    }

  }

}



function attachBrowseTags() {

  var browsetagsets = getElementsByClassName('browsetagset',0);

  for (var i=0; i<browsetagsets.length; i++) {

    browsetagsets[i].style.display = 'none';

    var toggle = document.createElement('a');

    toggle.className = 'expand';

    toggle.onclick = function() {

      if (this.className == 'expand') {

        this.parentNode.getElementsByTagName('ul')[0].style.display = 'block'

        this.className = 'contract';

      } else {

        this.parentNode.getElementsByTagName('ul')[0].style.display = 'none'

        this.className = 'expand';

      }

      return false;

    };

    browsetagsets[i].parentNode.insertBefore(toggle,browsetagsets[i].parentNode.firstChild);

    var allinputs = browsetagsets[i].parentNode.getElementsByTagName('input');

    for (var j=0; j<allinputs.length; j++) {

      allinputs[j].onclick = function() {

        var childinputs = this.parentNode.getElementsByTagName('input');

        if (this.checked) {

          for (var k=0; k<childinputs.length; k++) {

            childinputs[k].checked = true;

          }

          var childlis = this.parentNode.parentNode.getElementsByTagName('li');

          var ok = 1;

          for (var k=0; k<childlis.length; k++) {

            if (this.parentNode.parentNode == childlis[k].parentNode) {

              if (!childlis[k].getElementsByTagName('input')[0].checked) {

                ok = 0;

              }

            }

          }

          if (ok) {

            this.parentNode.parentNode.parentNode.getElementsByTagName('input')[0].checked = true;

          }

        } else {

          for (var k=0; k<childinputs.length; k++) {

            childinputs[k].checked = false;

          }

          var parentli = this.parentNode.parentNode.parentNode;

          while (parentli.tagName == 'LI') {

            parentli.getElementsByTagName('input')[0].checked = false;

            parentli = parentli.parentNode.parentNode;

          }

        }

      };

    }

  }

}



function attachPrintLink() {

  if (document.getElementById('info')) {

    printtext = document.createTextNode('Print Phone Profile');

    printlink = document.createElement('a');

    printlink.href = '#';

    printlink.onclick = function() {

      window.print();

      return false;

    };

    printlink.appendChild(printtext);

    printitem = document.createElement('li');

    printitem.className = 'print';

    printitem.appendChild(printlink);

    document.getElementById('info').appendChild(printitem);

  }

}



function showHideTagList(id)

{ 

  if (document.getElementById)

  {

  	taglist = document.getElementById(id);

  }

  else if (document.all)

  {

	  taglist = document.all[id];

  }

  else if (document.layers)

  {

    taglist = document.layers[id];

  }



  if(taglist.style.display == '' || taglist.style.display == 'block')

  {

    taglist.style.display = 'none';

  }

  else

  {

    taglist.style.display = 'block';

  }

  return false;

}







var pricePhones = new Array();



function attachGraphChecks() {



	if(!is_ie || is_ie7up) {

		items = getElementsByClassName('graphCheckspan',0);

		for (var i=0; i<items.length; i++) {

			items[i].style.display = 'inline';

		}

	

		items = getElementsByClassName('graphCheck',0);

		for (var i=0; i<items.length; i++) {

			pricePhones.push(items[i].name);

			items[i].disabled = false;

			items[i].style.display = 'inline';

			items[i].onclick = function(){

				tempitems = $('input.graphCheck:checked');

				if(tempitems.length < 1 ){

					alert('At least one phone needs to be selected');

					return false;

				}

				

				var chartObj = getChartFromId('phonePriceChartDiv');

				if(this.checked==1){

					pricePhones.push(this.name);

				} else {

					pricePhones.splice(indexOf(pricePhones, this.name),1);

				}

				if(new String(location).indexOf('compare_detailed.html')>-1){

					chartObj.setDataURL('compare_detailed.html'+'?items='+pricePhones.toString());

				} else if(new String(location).indexOf('compare_all_full.html')>-1){

					chartObj.setDataURL('compare_all_full.html'+'?items='+pricePhones.toString());

				} else if(new String(location).indexOf('compare_all.html')>-1){

					chartObj.setDataURL('compare_all.html'+'?items='+pricePhones.toString());

				} else {

					chartObj.setDataURL('compare_detailed.html'+'?items='+pricePhones.toString());

				}

			}

		}

	}

	

}



function indexOf(test, value) {

            for(var i=0, l=test.length; i<l; i++)

                if(test[i] === value)

                    return i;

            return -1;

}









function attachMenuSpans(rootNode) {



	if(rootNode){

		x = rootNode;

	} else {

		x = '#navmenu';

	}

	

	$(x).find('.expander').css('cursor','pointer');

	

	$(x).find('.expander').click(function(){

		if($(this).hasClass('opened')){

			

			$(this).removeClass('opened');

			$(this).addClass('closed');

			

			$(this).parent().children('ul').remove();

			



		} else {

			re = new RegExp('folder_([0-9]*)');

			m = re.exec(this.className);

			

			re2 = new RegExp('folder_groupname');

			m2 = re2.exec(this.className);

			

			re3 = new RegExp('folder_featurename');

			m3 = re3.exec(this.className);

			

			if((m && m[1]) || m2 || m3){

				if(m && m[1]){

					itemid = m[1];

				} else {

					itemid = $(this).attr('title');

				}

				

				$(this).removeClass('closed');

				$(this).addClass('opened');

				

				url = location.toString();

				if(url.indexOf('?')!=-1){

					url = url.substring(0,url.indexOf('?'));

				}

				if(url.indexOf('#')!=-1){

					url = url.substring(0,url.indexOf('#'));

				}

				

				if(m2){

					url = url+"?ajax=menufeatures&item1="+itemid;

				} else if(m3) {

					url = url+"?ajax=menufeatures&item2="+itemid;

				} else {

					url = url+"?ajax=menumodels&item="+itemid;

				}

				

				

				msg = $.ajax({

					url: url,

					async: false

				}).responseText;

				$(this).parent().append(msg);

				attachMenuSpans($(this).parent().children('ul'));

			}

		}

		

	});



}



var tips = getTips();



function hideSearchBox(){

	if($('#mainSearchContainerDiv').length>0){

		$('#mainSearchContainerDiv').slideUp('slow',function(){

			$('#mainSearchContainerDiv').remove();

			$('#mainSearchContainer').hide();

		});

	}

}





var tipvallength = 0;



function searchTipsContent(event){

	mycontent = new String();

	newrun = 1;

	if($('#mainSearchContainerDiv').length==0){

		$('#mainSearchContainer').append('<div id="mainSearchContainerDiv"></div>');

		$('#mainSearchContainerDiv').hide();

		$('#mainSearchContainer').css('display','inline');

	} else {

		newrun = 0;

	}

	mycontent += '<ul>';

	

	j = 0;

	

	searchValue = $('#articlesearchtext').val();

		

	if(tipvallength > searchValue.length) {

		tips = getTips();

	} 

		

	tipvallength = searchValue.length;

	

	tipsTmp = new Array();

	testlength = tips.length;

	for(i=0;i<testlength;i++){

		tip = tips.shift();

		

		re = new RegExp('^('+searchValue+')','i');

		

		tipMatch = tip.match(re);

		

		if(tipMatch){

			j++; 

			if(j<=10){

				mycontent += '<li><a class="searchLinkClick" title="'+ tip +'">'+ tip.replace(re,'<span class="matched">$1</span>') +'</a></li>';

			}			

			tipsTmp.push(tip);

		}

	}

	tips = tipsTmp;

	

	mycontent += '</ul>';

	

	if(newrun!=0){

		$('#mainSearchContainerDiv').append(mycontent);

		$('#mainSearchContainerDiv').slideDown('slow');

	} else {

		$('#mainSearchContainerDiv').children('ul').replaceWith(mycontent);

	}

	$('.searchLinkClick').click(function(){

		

		$('#articlesearchtext').val(this.title);

		$('#articlesearchtext').focus();

		return false;

	});

}



function updateSearchBox(event){

	searchTipsContent();

}







function attachSearchBox(){

	

	$('#articlesearchtext').blur(hideSearchBox);

	$('#articlesearchtext').focus(function(){

		if(this.value=='Enter keywords here'){

			this.value = '';

		}

	});

	$('#articlesearchtext').keyup(function(event){

		updateSearchBox(event);

	});

	

	$('#mainSearchContainer').hide();



}









function attachBrowseFeatures() {

  var browsetagsets = getElementsByClassName('browsefeatureset');



  for (var i=0; i<browsetagsets.length; i++) {

    browsetagsets[i].style.display = 'none';

    var toggle = document.createElement('a');

    toggle.className = 'expand';

    toggle.onclick = function() {

      if (this.className == 'expand') {

        this.parentNode.getElementsByTagName('ul')[0].style.display = 'block'

        this.className = 'contract';

      } else {

        this.parentNode.getElementsByTagName('ul')[0].style.display = 'none'

        this.className = 'expand';

      }

      return false;

    };

    browsetagsets[i].parentNode.insertBefore(toggle,browsetagsets[i].parentNode.firstChild);

    var allinputs = browsetagsets[i].parentNode.getElementsByTagName('input');

    for (var j=0; j<allinputs.length; j++) if(allinputs[j].type=='checkbox') {

      allinputs[j].onclick = function() {

        var childinputs = this.parentNode.getElementsByTagName('input');

        if (this.checked) {

          for (var k=0; k<childinputs.length; k++) {

            childinputs[k].checked = true;

          }

          var childlis = this.parentNode.parentNode.getElementsByTagName('li');

          var ok = 1;

          for (var k=0; k<childlis.length; k++) {

            if (this.parentNode.parentNode == childlis[k].parentNode) {

              if (!childlis[k].getElementsByTagName('input')[0].checked) {

                ok = 0;

              }

            }

          }

          if (ok) {

            this.parentNode.parentNode.parentNode.getElementsByTagName('input')[0].checked = true;

          }

        } else {

          for (var k=0; k<childinputs.length; k++) {

            childinputs[k].checked = false;

          }

          var parentli = this.parentNode.parentNode.parentNode;

          while (parentli.tagName == 'LI') {

            parentli.getElementsByTagName('input')[0].checked = false;

            parentli = parentli.parentNode.parentNode;

          }

        }

      };

    }

  }

}



function CheckAll(){



/*

	if (document.getElementById)

        var form = document.getElementById("comparisonform");

    else if (document.all)

        var form = document.all["comparisonform"];

    else if (document.layers)

        var form = document.layers["comparisonform"];

        

	for (i = 0; i < form.length; i++)

	{

		if(form[i].type == "checkbox")

			form[i].checked = true;

	}

	*/

	$('#comparisonform').find("input[type='checkbox']").attr('checked','checked');

}

function UnCheckAll(){

	$('#comparisonform').find("input[type='checkbox']").attr('checked','');

}



function checkAllFromForm(formname,state){



/*

	if (document.getElementById)

        var form = document.getElementById("comparisonform");

    else if (document.all)

        var form = document.all["comparisonform"];

    else if (document.layers)

        var form = document.layers["comparisonform"];

        

	for (i = 0; i < form.length; i++)

	{

		if(form[i].type == "checkbox")

			form[i].checked = true;

	}

	*/

	if(state==1)

		$('#'+formname).find("input[type='checkbox']").attr('checked','checked');

	else

		$('#'+formname).find("input[type='checkbox']").attr('checked','');

}









function createSelectAll(){



/*

	$('#selectAllInsert').append('<input type="checkbox" id="selectAllInsertCheck" value="1" /> &nbsp; <label for="selectAllInsertCheck">Check/uncheck all phones</label>');

	

	$('#selectAllInsertCheck').click(function(){

		if($('#selectAllInsertCheck').attr('checked')==1){

			state = 1;

		} else {

			state = 0;

			$('#selectAllInsertCheck').attr('checked','checked');

		}

		checkAllFromForm('comparisonform',state);

		

	});

*/

  $('#selectAllInsert').append('<div style="margin-top:-10px; padding-top:10px; border-top:1px solid #ddd;"><a id="selectAllInsertLink" class="button">Select/deselect all phones</a><input type="hidden" id="selectAllInsertCheck" value="0" /></div>');

	

	$('#selectAllInsertLink').click(function(){

	  if($('#selectAllInsertCheck').val() == '1'){

			state = 1;

			$('#selectAllInsertCheck').val('0');

		} else {

			state = 0;

			$('#selectAllInsertCheck').val('1');

		}

		checkAllFromForm('comparisonform',state);

		

	});

}







function attachFG(){

	

	$('th.fgbar').hover(

			function(){ $(this).css('cursor', 'pointer'); },

			function(){ $(this).css('cursor', 'default'); }

	);

	$('th.fgbar').click(function(){

		$('tr.'+ new String($(this).attr('class')).match(/fg([0-9])+/g)).toggle();

		

		if($(this).find('img').attr('src') == '/_images/tf-menu-open.jpg'){

			$(this).find('img').attr('src', '/_images/tf-menu-closed.jpg')

		} else {

			$(this).find('img').attr('src', '/_images/tf-menu-open.jpg')

		}

	});

	

}







function formValidation(){

	$('form.formValidate').submit(function(){

		

		dvals = $('.dateValidate');

		err = 0;

		for(i=0;i<dvals.length;i++){

			

			if( !(

				dvals[i].value=='' 

				|| dvals[i].value=='dd/mm/yyyy' 

				|| new String(dvals[i].value).match('^[0-9]{2}\/[0-9]{2}\/[0-9]{4}$') 

			)) {

				err++;

				$(dvals[i]).css('color','red');

				$(dvals[i]).click(function(){

					$(this).css('color','#333');

				});

			}

		}

		

		if(err>0)

			return false;

	});

	

	

}





function init() {

  attachExternals();

  attachTabSets();

  attachBrowseTags();

  attachBrowseFeatures();

  attachPrintLink();

  attachGraphChecks();

  attachMenuSpans(null);

  $('#articlesearchtext').attr('autocomplete','off');

  attachSearchBox();

  formValidation();

  createSelectAll();

  attachFG();

}
