//  common.js


//  The following functions will hide or show the passed tag's area
//
//  e2_tag_hide			Hide the tag
//  e2_tag_show			Show the tag
//  e2_tag_hide_and_show	Hide the first tag, Show the second tag
//  e2_tag_hide_show_toggle	Toggle the tag to the other Hide/Show setting
//
//  See each function below for its required arguments.
//
//  To show or toggle a tag, pass the tag's ID and CLASS names (tag needs to have both).
//  To hide a tag, pass the tag's ID name.

function e2_tag_hide(elm){
   var item = document.getElementById(elm);
   var hide = 'noDisplay';
   if(item){
      item.className = hide;
   }
}

function e2_tag_show(elm, elmClass){
   var item = document.getElementById(elm);
   var unhide = elmClass;
   if(item){
      item.className = unhide;
   }
}

function e2_tag_hide_and_show(elmHide, elmShow, elmClassShow){
   var itemHide = document.getElementById(elmHide);
   var itemShow = document.getElementById(elmShow);
   var hide = 'noDisplay';
   var unhide = elmClassShow;
   if(itemHide){
      itemHide.className = hide;
   }
   if(itemShow){
      itemShow.className = unhide;
   }
}

function e2_tag_hide_show_toggle(elm, elmClass){
   var item = document.getElementById(elm);
   var hide = 'noDisplay';
   var unhide = elmClass;
   if(item){
      item.className = (item.className==hide)?unhide:hide;
   }
}

function e2_swapText(elm, hideText, showText){
   var item = document.getElementById(elm);
   if(item){
      item.innerHTML = (item.innerHTML==showText)?hideText:showText;
   }
}

function e2_expand_collapse(elm, elmText, elmClass){
   e2_tag_hide_show_toggle(elm, elmClass);
   e2_swapText(elmText, "Expand", "Collapse");
}

//Hide All Elements with class except the element with id elm and toggle
function e2_toggle_all_but_show(elm, elmClass){
   var item = document.getElementById(elm);
   var hide = 'none';
   var unhide = '';
   var hideElements = getElementsByClass(elmClass);
   for (i=0; i<hideElements.length; i++) {
      hideElements[i].style.display=(hideElements[i].style.display==hide)?unhide:hide;
   }
   if(item){
      item.style.display = (item.style.display==hide)?unhide:hide;
   }
}

//Hide all elements with class elmClass except the element with id elm
function e2_hide_all_but_show(elm,elmClass){
   var item = document.getElementById(elm);
   var hide = 'noDisplay';
   var unhide = elmClass;
   var hideElements = getElementsByClass(elmClass);
   for (i=0; i<hideElements.length; i++) {
      hideElements[i].className=hide;
   }
   if(item){
      item.className = (item.className==hide)?unhide:hide;
   }
}

function getElementsByClass(searchClass,node,tag) {
   var classElements = new Array();
   if (node == null)
      node = document;
   if (tag == null)
      tag = '*';
   var els = node.getElementsByTagName(tag);
   var elsLen = els.length;
   var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
   var j = 0;
   for (i = 0; i < elsLen; i++) {
      if (pattern.test(els[i].className) ) {
         classElements[j] = els[i];
         j++;
      }
   }
   return classElements;
}



//Used for hiding elements for yarn search criteria
function hideFields(theElement){
   var v = document.getElementById(theElement).value;
   var x = ['knitg', 'crochetg', 'yarnyard', 'yarnounce', 'yarnmeter', 'yarngram'];
   if(v > 0){
	
      if(theElement == 'yarnyard' || theElement == 'yarnounce'){
         x.splice(2, 2);
      }
	  
      else if( theElement == 'yarnmeter' || theElement == 'yarngram'){
         x.splice(4, 2);
      }
		
      else{
         var index = x.indexOf(theElement);
         x.splice(index, 1);
      }
		
      for(var i = 0;i<x.length;i++){
         document.getElementById(x[i]).disabled = true;
      }
		
   }else{
      for(var i = 0;i<x.length;i++){
         document.getElementById(x[i]).disabled = false;
      }
   }
}

/** Remember Login Cookies**/
function createCookie(name,value,days) {	
   if (days) {
      var date = new Date();
      date.setTime(date.getTime()+(days*24*60*60*1000));
      var expires = "; expires="+date.toGMTString();
   }
   else var expires = "";
   document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
   var nameEQ = name + "=";
   var ca = document.cookie.split(';');
   for(var i=0;i < ca.length;i++) {
      var c = ca[i];
      while (c.charAt(0)==' ') c = c.substring(1,c.length);
      if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
   }
   return null;
}

function eraseCookie(name) {
   createCookie(name,"",-1);
}

function rememberMe(){
   var r = document.getElementById("remember").checked;
   var ecookie = readCookie("email");
   if(r){
      var e = document.getElementById("email").value;
      createCookie("email", e, 7);
   }
	 
}

function getCookie(){
   var ecookie = readCookie("email");
   if(ecookie != null){
      document.getElementById("email").value = readCookie("email");
   }
}

//Admin erratum script
function showServer(script, getstr, changeID){
   document.getElementById(changeID).value = str2;
   var str2 = getstr.options[getstr.selectedIndex].value;
   //Change value for other select box
   document.getElementById(changeID).value = str2;
   var str1 = 'sku';
   var str = str1 + '=' + str2;   
   //initialize XHConn (if XHConn isn't created successfully, 
   //the client doesnt' support Ajax)
   var ajaxConn = new XHConn();
   //post to server.php with args foo and baz
   ajaxConn.connect(script, "POST", str, fnWhenDone);
}
//when the server responds, javascript 
//will trigger this callback function

function fnWhenDone(XML)
{
   document.getElementById('pattern').innerHTML = XML.responseText;
}


//Common script for Project Colour Changer
function showProject(script, getstr,elementId, yarnIndex, elmIndex){
   var elmId = elementId + yarnIndex + elmIndex;
   e2_highlight('swatchLink', 'addBackground',elmId);
   replaceInstructions(elementId, yarnIndex, elmIndex);
   //initialize XHConn (if XHConn isn't created successfully,
   //the client doesnt' support Ajax)
   var ajaxConn = new XHConn();
   //post to server.php with args foo and baz
   ajaxConn.connect(script, "POST", getstr, ProjectChanger);
}
//when the server responds, javascript 
//will trigger this callback function
function ProjectChanger(XML)
{
   document.getElementById('pattern').innerHTML = XML.responseText;
}

function replaceInstructions(elementId, yarnIndex, elementIndex){
   var elmIndex = yarnIndex + elementIndex;
   var elmProjectId = 'PatternInstructions' + yarnIndex;
   var productId = 'SwatchInstr' + elmIndex;
   var yarnDetails = 'YarnInstr' + elmIndex;
   var product = document.getElementById(productId).value;
   var yarn = document.getElementById(yarnDetails).value;
   var Project = document.getElementById(elmProjectId);
   getReplace('yarn', Project, yarn);
   getReplace('swatch', Project, product);
}

function getReplace(searchClass, node, replaceValue){
   var elements = getElementsByClass(searchClass, node, 'var');
   for (i=0; i<elements.length; i++) {
      elements[i].innerHTML=replaceValue;
   }
}


function e2_highlight(elmClass, elmClassChange, elmId){
   var elmType = 'a';
   var x = document.getElementsByTagName(elmType);
   for(var i = 0;i<x.length;i++){
      var getClass = x[i].className;
      if(getClass == elmClassChange){
         x[i].className = elmClass;
      }
   }
   document.getElementById(elmId).className=elmClassChange;
}

//Compare two array elements using javascript
function e2_count_compare_array_elements(elmName1, elmName2){
   var elmLength1 = document.getElementsByName(elmName1).length;
   var elmLength2 = document.getElementsByName(elmName2).length;
   if(elmLength1 == elmLength2){
      return true;
   }
   else{
      return false;
   }
}

function validateAdditionalImages(){
   var x = e2_count_compare_array_elements('ThumbnailImage[]', 'AlternateImage[]');
   if(x){
      return true;
   }
   else{
      document.getElementById('errorMessage').className = 'errormessage';
      return false;
   }
}

function e2_show_alternate_image(elmId, img){
   if(img){
      document.getElementById(elmId).innerHTML = img;
   }
}

/** Member Login Used For Project Colour Changer **/
function member_login(elmId){
   var getstr = "?";
   var obj = document.getElementById(elmId);
   for (i=0; i<obj.childNodes.length; i++){
      if (obj.childNodes[i].tagName == "INPUT") {
         getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
      }
   }
   var ajaxConn = new XHConn();
   //post to server.php with args foo and baz
   ajaxConn.connect('member.php', "POST", getstr, MemberLogin);
}

function MemberLogin(XML){
   var lgc = XML.responseText;
   if(lgc != 'Login Failed'){
      var x = document.getElementById("ProjectColourChangerLogin");
      x.innerHTML = '';
      var id2 = 'PatternInstructions' + lgc;
      document.getElementById(id2).className = '';
      document.getElementById('loginTag').value = 'LoggedIn';
      document.getElementById('signIn').innerHTML = '<a class="signUp" href="member.php?MEMBER_LOGOUT=1">Logout</a>';
   }else{
      document.getElementById('ProjectColourChangerError').className = 'alreadyMember';
   }
}

/** Pattern Instructions For Project Colour Changer Page **/
function showPatternInstructions(elmId,elmId2){
   var loginTag = document.getElementById('loginTag').value;
   if(loginTag == 'LoggedIn'){
      e2_tag_show(elmId);
   }
   else{
      showLoginForm(elmId2);
   }
}

/** Display Login Form, if member is not already logged in using ajax **/
function showLoginForm(lgc){
   getstr = 'member_login=1&lgc=' + lgc;
   var ajaxConn = new XHConn();
   //post to server.php with args foo and baz
   ajaxConn.connect('patterncolourimage.php', "get", getstr, LoginForm);
}

function LoginForm(XML){
   document.getElementById('ProjectColourChangerLogin').innerHTML = XML.responseText;
}

function LoadImage(img){
   largh=100;
   altez=100;
   stringa="width="+largh+",height="+altez;
   finestra=window.open(img,"",stringa);
}

//This function is for display of additional images on pattern book detail page
function toggleAdditionalImages(elm, elmName, elmAddImages, elmImagesText){
   e2_toggle_all_but_show(elm, elmName);
   e2_tag_hide_show_toggle(elmAddImages, '');
   e2_swapText(elmImagesText, 'More Images', 'Back')
}

function deleteLangPDF(pdfLang, pid, pdfLangName){
   var con = "Do you really want to delete this " + pdfLangName + " pdf?";
   var to_delete = confirm(con);
   if(to_delete==true){
      getstr = 'PATTERN_PDF_DELETE=1&PDF_LANG=' + pdfLang + '&PatternID=' + pid;
      var ajaxConn = new XHConn();
      //post to server.php with args foo and baz
      ajaxConn.connect('pattern.php', "get", getstr, DelPDF);
   }else{
      return false;
   }
}

function DelPDF(XML){
   if(!XML.responseText){
      location.reload();
   }
}

