/*
Mala Biblioteka - JavaScript
by CarlPettitt.com
*/

// Preload CSS hover images
if (document.images) {
  var pic1= new Image(27,25); 
  pic1.src="core/images/aprev.png";
  var pic2= new Image(27,25); 
  pic2.src="core/images/anext_off.png";
  var pic3= new Image(70,33); 
  pic3.src="core/images/button1_down.png";
  var pic4= new Image(91,33); 
  pic4.src="core/images/button2_down.png";
  var pic5= new Image(146,33); 
  pic5.src="core/images/button3_down.png";
  var pic6= new Image(102,33); 
  pic6.src="core/images/button4_down.png";
}

// Get DOM object
if (!document.getElementById) {
  if (document.all) {
    accessObj = function() {
      if (typeof document.all[arguments[0]]!="undefined") {
	return document.all[arguments[0]];
      } else {
	return null;
      }
    }
  } else if (document.layers) {
    accessObj = function() {
      if (typeof document[arguments[0]]!="undefined") {
	return document[arguments[0]];
      } else {
	return null;
      }
    }
  }
} else {
  accessObj = function() {
    return document.getElementById(arguments[0]);
  }
}

// Form validation
function check_email(email) {
  var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
  if (filter.test(email)) {
    return true;
  } else {
    return false;
  }
}

function checkSearchForm() {
  var frm = accessObj("searchform");
  
  if (frm.search.value == "" || frm.name.value == "Name") {
    frm.name.focus();
    alert("Please enter your name");
    return false;
  }
  
  if (!check_email(frm.email.value)) {
    frm.email.focus();
    alert("Please enter valid email address");
    return false;
  }
  
  if (frm.telephone.value == "" || frm.telephone.value == "Telephone") {
    frm.telephone.focus();
    alert("Please enter your telephone number");
    return false;
  }
  
  if (frm.message.value == "" || frm.message.value == "Type your message here") {
    frm.message.focus();
    alert("Please type your message");
    return false;
  }
  
  if (frm.company.value == "" || frm.company.value == "Company") {
    frm.company.focus();
    alert("Please enter your company name");
    return false;
  }
  
  return true;
}


// jQuery stuff
jQuery(document).ready(function() {
  
  /* Homepage author slider
  ------------------------------------------ */
  // Get width/qty of slider items to determine width of container
  var itemWidth = $(".window").width();
  var itemTotal = $(".slider .item").size();
  var containerWidth = itemWidth * itemTotal;
  var currentItem = 0;
  
  // Adjust the slider to its new size
  $(".slider").css({'width':containerWidth});
  
  // Slider Function
  doSlide = function() {
	  
	  $(".controls a").removeClass('dim');
	  if (currentItem == 0) {
		  $(".prev_button").addClass('dim');
	  }
	  if (currentItem == itemTotal-1) {
		  $(".next_button").addClass('dim');
	  }
	  
	  var containerPosition = currentItem * itemWidth;
	  
	  //Slide!
	  $(".slider").animate({left:-containerPosition}, 500 );
	  
  };  
  
  $(".controls a").click(function() {
	  var sign = parseInt($(this).attr("rel"));
	  if (currentItem+sign < 0 || currentItem+sign > itemTotal-1) {
		  return false;
	  }
	  currentItem += sign;
	  doSlide();
	  return false;
  });
  
  doSlide();
  
  /* Hide overlays
  ------------------------------------------ */
  $('.hover_content').css('display','none');
  
  /* Preview page overlays
  ------------------------------------------ */
  $('#preview_author .item').hover(function() {
	$('.hover_content', this).fadeIn("fast");
	}, function() { $('.hover_content', this).fadeOut("fast");
  });
  
  $('#preview_similar .item').hover(function() {
	$('.hover_content', this).fadeIn("fast");
	}, function() { $('.hover_content', this).fadeOut("fast");
  });  
  
  /* Author Profile page overlays
  ------------------------------------------ */
  $('#author_items .item').hover(function() {
	$('.hover_content', this).fadeIn("fast");
	}, function() { $('.hover_content', this).fadeOut("fast");
  });

  $('#author_items_portrait .item').hover(function() {
	$('.hover_content', this).fadeIn("fast");
	}, function() { $('.hover_content', this).fadeOut("fast");
  });

  $('#author_items_landscape .item').hover(function() {
	$('.hover_content', this).fadeIn("fast");
	}, function() { $('.hover_content', this).fadeOut("fast");
  });
  
  /* More/Less expand - CPdelights
  ------------------------------------------ */
  $(".info_more").hide();
  $(".moreless2").hide();
  $(".moreless1, .moreless2").click(function() {
	// From href, get parent class containing '.info_less' & '.info_more' elements
	// (strips preceeding '#more-')
	var containerClass = "."+this.hash.slice(6);
	var moreContent = $(".info_more", containerClass);
    var lessContent = $(".info_less", containerClass);
	$(".moreless1").toggle();
	$(".moreless2").toggle();
	moreContent.toggle();
	lessContent.toggle();
  });
  
  /* Hide/Show - My Account Page
  ------------------------------------------ */
  $(".more1-marbles, .more2-marbles, .more1-userdata, .more2-userdata").click(function() {
	// From chosen class name, get '.XXXX-more' element to toggle
	// (strips preceeding '.moreX-')
	var chosen = $(this).attr("class").slice(6);
	var information = "." + chosen + "-more";
	var link1 = ".more1-" + chosen;
	var link2 = ".more2-" + chosen;
	$(information).toggle();
	$(link1).toggle();	
	$(link2).toggle();
  });
  
  /* Category list selection for AJAX
  ------------------------------------------ */
  $('#catslist a').click(function () {
	// Switch class="active" for tabs
	$('#catslist a').removeClass('active');
	$(this).addClass('active');
	
	// Assign value of the rel attribute
	var thisTarget = $(this).attr('rel');
	ajax_helper_changeCategory2(thisTarget,1);
	$('#random_items').removeClass('search');
  });  

  /* Category list toggle for AJAX
  ------------------------------------------ */
  $('#category_filters a').click(function () {
	// Switch class="active" for buttons
	$('#category_filters a').removeClass('active');
	$(this).addClass('active');
	
	// Assign value of the rel attribute
	var thisTarget = $(this).attr('rel');
	alert('filter list by: '+thisTarget)
	//ajax_helper_changeCategory(thisTarget);
  });  

  /* Homepage Category selection for AJAX
  ------------------------------------------ */
  $('#cats a, #tabs a').click(function () {
	// Switch class="active" for tabs
	$('#cats a, #tabs a').removeClass('active');
	$(this).addClass('active');
	
	// Assign value of the rel attribute
	var thisTarget = $(this).attr('rel');
	ajax_helper_changeCategory(thisTarget);
  });
  
  
  // Custom nyroModal hide function (no anim)
  hideModal = function(elts, settings, callback) {
	elts.contentWrapper.hide();
	callback();
  };
  
  /* Modal window settings
  ------------------------------------------ */
  initNyroModal = function() {
	$('.nyroModal').nyroModal({
	  bgColor:'#001420',
	  windowResize:false,
	  hideContent:hideModal
	});
  };
  
  /* Init homepage overlays + modal
  ------------------------------------------ */
  initHomepage = function() {
	
	/* Homepage overlays */
  	$('.hover_content').css('display','none');
	
	$('#categories .item').hover(function() {
	  $('.hover_content', this).fadeIn("fast");
	  }, function() { $('.hover_content', this).fadeOut("fast");
	});
  
	$('#author .item').hover(function() {
	  $('.hover_content', this).fadeIn("fast");
	  }, function() { $('.hover_content', this).fadeOut("fast");
	});
	
	$('#recent .item').hover(function() {
	  $('.hover_content', this).fadeIn("fast");
	  }, function() { $('.hover_content', this).fadeOut("fast");
	});
	
	/* init Modal window */
	initNyroModal();
	
  };
  
  // This function should be called after each AJAX call
  initHomepage();
  
});


/* Form Validation
------------------------------------------ */

var pass = "";
var email = "";
var secret = "";
var valid = true;
var check_sec = true;

function validate(value, target)
{
		switch(target)
		{
		case "preporucib_biblioteku":
			warning(result(validateEmail(value), target), target);
		case "preporuci_knjigu":
		case "klikere_email":
		case "promeni_email":
		case "pokloni_knjigu":
		case "email":
			email = value;
			warning(result(validateEmail(value), target), target);
		break;
		case "ponovi":
		case "confirm":
			warning(result(validateConfirm(value),target), target);
		break;
		case "reg_password":
			pass = value;
			warning(result(min(value,6), target), target);
		break;
	    case "new_username":    
			if (value<1) return;
			warning(result(ajax_helper_validate_username(value),target), target);
		break;	  
		case "repeatpassword":
			warning(result(confirm(value), target), target);
		break;
		case "promeni_korisnicko":
			warning(result(confirmsecret(value), target), target);
		break;
		case "promeni_ime":
			warning(result(confirmsecret(value), target), target);
		break;
		case "secret_confirm":
			if(check_sec)
			{
				warning(result(confirmsecret(value), target), target);
			}
		break;
		case "korisnicko":
			warning(result(min(value,6), target), target);
		break;
		case "username":
		case "password":
			warning(empty(value),target);
		break;
		case "country":
		case "reg_username":
		case "predlozi":
		case "pokloni_knjigu_sel":
		case "ime":
		case "promeni_zemlja":
		case "zemlja":
		case "promeni_adresa":
		case "adresa":
		case "klikere":
		case "pokloni":
		case "prezime":
		case "lastname":
		case "firstname":
		case "postcode":
		case "voucher":
			warning(result(empty(value),target), target);
		break;
		case "promeni_prezime":
			secret = value;
			warning(result(min(value,6),target), target);
		break;
		case "lozinku":
			secret = value;
			warning(result(min(value,6),target), target);
		break;
		case "secret":
			if(check_sec)
			{
				secret = value;
				//warning(result(min(value,6),target), target);
				warning(result(empty(value),target), target);
			}
		break;
		case "pitanje":
			warning(result(empty(value),target), target);		
		break;
		case "dob":
			warning(result(dob(value),target), target);
		break;
		case "confirmationofconditions":
			warning(checked(target),target);
		break;
		}
}

function text(value)
{
	var obj1 = accessObj("poruke");
	var obj2 = accessObj("predlog");
	var obj3 = accessObj("pitanje");

	if(obj1.value == "" && obj2.value == "" && obj3.value == "")
	{
		valid = false;
		return false;
	}
	return true;
}

function checked(target)
{
	var obj = accessObj(target);
	if(obj.checked)
	{
		return true;
	}
	else
	{
		valid = false;
		return false;
	}
}

function trim(s)
{
  return s.replace(/^\s+|\s+$/, '');
}

function validateEmail(value) {
    var tfld = trim(value);                        // value of field with whitespace trimmed off
    var emailFilter = /^[^@]+@[^@.]+\.[^@]*\w\w$/ ;
    var illegalChars= /[\(\)\<\>\,\;\:\\\"\[\]]/ ;
   
    if (value == "") {
		valid = false;
		return false;
    } else if (!emailFilter.test(tfld)) {            //test email for illegal characters
		valid = false;
		return false;
    } else if (value.match(illegalChars)) {
		valid = false;
		return false;
    } else {
        return true;
    }
}

function validateConfirm(value)
{
    var tfld = trim(value);                        // value of field with whitespace trimmed off
    var emailFilter = /^[^@]+@[^@.]+\.[^@]*\w\w$/ ;
    var illegalChars= /[\(\)\<\>\,\;\:\\\"\[\]]/ ;

    if (value == "") {
		valid = false;
		return false;
    } else if (!emailFilter.test(tfld)) {              //test email for illegal characters
		valid = false;
		return false;
    } else if (value.match(illegalChars)) {
		valid = false;
		return false;
    } else if(value==email)
	{
		return true
	}
	else
	{
		valid = false;
		return false;
	}
}

function confirm(value)
{
	if(pass == value && value != "")
	{
		return true;
	}
	else
	{
		valid = false;
		return false;
	}
}

function confirmsecret(value)
{
	if(secret == value && value != "")
	{
		return true;
	}
	else
	{
		valid = false;
		return false;
	}
}

function result(res, target)
{
	var tar = accessObj("valid_"+target);

	if(!res)
	{
		tar.innerHTML = "<img src='core/images/signup-invalid.png' alt='Invalid'/>"
		return false;
	}
	else
	{
		tar.innerHTML = "<img src='core/images/signup-valid.png' alt='Valid'/>"
		return true;
	}
}

function warning(x, target)
{
	if(x==false)
	{
		accessObj("warning_"+target).style.display = "";
	}
	else
	{
		accessObj("warning_"+target).style.display = "none";
	};
}

function min(value, x)
{
	if(value.length<x)
	{
		valid = false;
		return false;
	}
	return true;
}

function empty(value)
{
	if(value=="")
	{
		valid = false;
		return false;
	}
	return true;
}

function phone(value) {

	var stripped = value.replace(/[\(\)\.\-\ ]/g, '');    

   if (value == "") {
		valid = false;
		return false;
    } else if (isNaN(stripped)) {
		valid = false;
		return false;
    } else if (!(stripped.length == 11)) {
		valid = false;
		return false;
    }
		return true;
}

function postcode(value) {
	var postcodeRegEx = /[A-Z]{1,2}[0-9]{1,2} ?[0-9][A-Z]{2}/i;
	if(postcodeRegEx.test(value))
	{
		return true;
	}
	else
	{
		valid = false;
		return false;
	}
}


function dob(value)
{
	var dobRegEx = /(0[1-9]|[12][0-9]|3[01])[- \/.](0[1-9]|1[012])[- \/.](19|20)\d\d/;
	if(dobRegEx.test(value))
	{
		return true;
	}
	else
	{
		valid = false;
		return false;
	}
}


function validate_final(test1,test2,formv)
{
	
	var check1 = accessObj(test1);
	var check2 = accessObj(test2);
	var check_all = accessObj(formv);

	for(var x=1; x<=check_all.elements.length-1; x++)
	{
		validate(check_all.elements[x].value, check_all.elements[x].id)
	}
	
	if(valid)
	{
		if(check1.value != "" || check2.value != "")
		{
			return false;
		}
		else
		{
			return true;
		}
	}else
	{
		//$("#accordion").accordion("destroy");
		valid = true;
		return false;
	}

}

var showing1 = false;
var showing2 = false;

function validate_pass_data(which)
{
	switch(which)
	{
		case 1:
			showing1 = !showing1;
			var obj = accessObj("pass_hide");
			if(showing1)
			{
				obj.style.display = "block";
			}
			else
			{
				obj.style.display = "none";
			}	
		break;
		case 2:
			showing2 = !showing2;
			var obj = accessObj("parent_hide");
			if(showing2)
			{
				obj.style.display = "block";
			}
			else
			{
				obj.style.display = "none";
			}
		break;
	}
}

function parent_pass(state) {

  var obj = accessObj("parent_pass");
  
  if (state=="hide") {
	obj.style.display = "none";
	var obj = accessObj("secret");
	obj.value="";
	var obj = accessObj("secret_confirm");
	obj.value="";	
  } else if (state=="show") {
	obj.style.display = "block";
  }
  
}


