var preLoaded = new Array();
var ecardContentWiped=0;
var rated=0;
// ---- sync/async transfer -------//
function rSyncHttpPost(strURL,qstr,elem) {
    var HttpReq = false;
    var self = this;
    // Mozilla/Safari
    if (window.XMLHttpRequest) {
        self.HttpReq = new XMLHttpRequest();
    }
    // IE
    else if (window.ActiveXObject) {
        self.HttpReq = new ActiveXObject("Microsoft.XMLHTTP");
    }
    self.HttpReq.open('POST', strURL, false);
    self.HttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    self.HttpReq.onreadystatechange = function() {
        if (self.HttpReq.readyState == 4) {
           updatepage(self.HttpReq.responseText,elem);
        }
    }
    self.HttpReq.send(qstr);
}
function xmlhttpPost(strURL,qstr,elem) {
    var xmlHttpReq = false;
    var self = this;
    // Mozilla/Safari
    if (window.XMLHttpRequest) {
        self.xmlHttpReq = new XMLHttpRequest();
    }
    // IE
    else if (window.ActiveXObject) {
        self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
    }
    self.xmlHttpReq.open('POST', strURL, true);
    self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    self.xmlHttpReq.onreadystatechange = function() {
        if (self.xmlHttpReq.readyState == 4) {
            updatepage(self.xmlHttpReq.responseText,elem);
        }
    }
    self.xmlHttpReq.send(qstr);
}
function updatepage(str,e){
    document.getElementById(e).innerHTML = str;
}

// --- Image Preload --- //
function preloadImg() {
  for (var i = 0; i < arguments.length; i++){
    preLoaded[i] = document.createElement('img');
    preLoaded[i].setAttribute('src',arguments[i]);
  }
}

// ---------- e-card -----//
function showEcard () {
  var height = Math.max(document.body.scrollHeight,document.body.clientHeight);
  var prepage=document.getElementById('prepage');
  if (prepage) {
    prepage.style.height=height+'px';
    prepage.className='opacity';
    prepage.style.display='block';
  }
  var ecard=document.getElementById('ecard');
  if (ecard) {
    var pos=document.body.scrollTop+20;
    ecard.style.top=pos+'px';
    ecard.style.display='inline';
    var tmp = document.getElementById('sName');
    if (tmp) { tmp.focus(); }
  } 
}
function RestorePage() {
  var prepage=document.getElementById('prepage');
  if (prepage) {
    prepage.style.display='none';
  }
  var ecard=document.getElementById('ecard');
  if (ecard) {
    ecard.style.display='none';
  }
  var dialog = document.getElementById('dialog');
  if (dialog) {
    dialog.style.display='none';
    var dialogmsg = document.getElementById('dialogmsg');
    if (dialogmsg) {
      dialogmsg.innerHTML='<br><h2>Please wait ...</h2>';
    }
  }
}
function sendEcard() {
  if (ecardContentWiped == 0) {
    alert('Please enter message you want to deliver, in the right side of the image');
    return;
  }
  var pid=document.getElementById('pid');
  var sName=document.getElementById('sName');
  var rName=document.getElementById('rName');
  var sEmail=document.getElementById('sEmail');
  var rEmail=document.getElementById('rEmail');
  var ecardContent=document.getElementById('ecardContent');
  if (pid && sName && rName && sEmail && rEmail && ecardContent) {
    var re = /^[a-z\-\.\s]+$/i;
    if (sName.value == '') {
      alert('Please enter your name.');
      return;
    }
    if (sName.value.match(re) == null) {
      alert('Your name is invalid. Please try again');
      return;
    }
    if (rName.value == '') {
      alert('Please enter recipient\'s name.');
      return;
    }
    if (rName.value.match(re) == null) {
      alert('Recipient\'s name is invalid. Please try again');
      return;
    }
    re = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/i;
    if (sEmail.value == '') {
      alert('Please enter your e-mail address.');
      return;
    }
    if (sEmail.value.match(re) == null) {
      alert('Your e-mail address is invalid. Please try again');
      return;
    }
    if (rEmail.value == '') {
      alert('Please enter recipient\'s e-mail address.');
      return;
    }
    if (rEmail.value.match(re) == null) {
      alert('Recipient\'s e-mail address is invalid. Please try again');
      return;
    }
    if (ecardContent.value.length < 10) {
      alert('Your message must be at least 10 characters long');
      return;
    }
    var ecardBox=document.getElementById('ecard');
    var dialog = document.getElementById('dialog');
    if (dialog) {
      if (ecardBox) { ecardBox.style.display='none'; }
      dialog.style.display='inline';
    }
    var params='p='+pid.value+'&sn='+sName.value+'&rn='+rName.value;
    params=params+'&se='+sEmail.value+'&re='+rEmail.value;
    params=params+'&t='+ecardContent.value;
    xmlhttpPost('/sendcard.php',params,'dialogmsg');
    sName.value='';
    sEmail.value='';
    rName.value='';
    rEmail.value='';
    ecardContent.value='';
  }
}   
function fillDetails(eV,fld) {
  var dElem = document.getElementById(fld);
  if (dElem) {
    dElem.style.color='#000000';
    dElem.innerHTML=eV+'&nbsp;';
  }
}
function wipeEcardContent() {
  if (ecardContentWiped == 0) {
    var dElem = document.getElementById('ecardContent');
    if (dElem) {
      dElem.style.color='#000000';
      dElem.value='';
      ecardContentWiped=1;
    }
  }
}
// ------------ Rating ---------- //

function showRate(val,txtIn) {
  var elem;
  var txt=Array();
  txt[1]='Poor';
  txt[2]='Nothing special';
  txt[3]='Worth seeing';
  txt[4]='Pretty cool';
  txt[5]='Awesome';
  if (rated == 0 ) {
    for (i=1;i<=5;i++) {
      elem=document.getElementById('ri'+i);
      if (elem) {
        if(i <= val) 
          elem.src='/images/rating-full.jpg';
        else
          elem.src='/images/rating-empty.jpg';
      }
    }
  } else {
    txtIn='You rated this picture.';
  }
  elem=document.getElementById('rateText');
  if (elem) {
   if (txtIn != '') 
     elem.innerHTML=txtIn;
   else 
     elem.innerHTML=txt[val];
  }
}

function setRate(val,pic) {
  if (rated == 0){
    xmlhttpPost('/rate.php','r='+val+'&p='+pic,'rateText');    
    rated = 1;
  }
}

// ------------ Comments ---------------- //
function addComment(pid) {
  var cName   = document.getElementById('cname');
  var cUrl    = document.getElementById('curl');
  var cContent= document.getElementById('ccontent');
  if (cName && cUrl && cContent) {
    if (cName.value.length < 4) {
      alert('Your name must have at least 4 characters.');
      return false;
    }
    if (cContent.value.length < 16) {
      alert('Comment must have at least 16 characters.');
      return false;
    }
    if (cUrl.value.length > 0 && !cUrl.value.match(/^http[s]?\:\/\/\w+([\.\-]?\w+)*(\.\w{2,4})+(\:\d+)?(\/.*)?$/i)) {
      alert('Website must start with http:// and must be according to web standards.');
      return false;
    }
    xmlhttpPost('/post.comment.php','pid='+pid+'&name='+cName.value+'&url='+cUrl.value+'&content='+cContent.value,'comments');
    var cForm = document.getElementById('commentform');
    if (cForm) {
      cForm.innerHTML = '<center><b> Please wait, posting your comment ... </b></center>';
    }
  } else {
    alert('One of the required fields is missing. Aborted');
  }
  return false;
}
function showAllComments(pid) {
  xmlhttpPost('/show.comments.php','pid='+pid,'comments');
  return false;
}
function showLessComments(pid) {
  xmlhttpPost('/show.comments.php','pid='+pid+'&f=1','comments');
  return false;
}
