//
// Coverpage loads at the beginning of the front page. 
//
       
var pageContent = document.getElementsByTagName('body')[0],
    pageInfo = document.getElementsByTagName('head')[0],
    wrapper = document.createElement('div'),
    logo = document.createElement('img'),
    header = document.createElement('h1'),
    title = document.createElement('h3'),
    content =document.createElement('p'),
    button = document.createElement('a'),
    footer = document.createElement('div'),
    loaded = false,
    values = [],
    cssUrl = '/css/coverpage/coverpage.css',
    wrapperId = 'coverWrapper',
    footerId = 'footerWrapper',
    logoAltText = 'InMarkit.com - Save. Share. Find out.',
    buttonTitleText = 'Click here to contact InMarkit',
    titleHTML = 'Thanks for visiting us',
    //headerHTML = 'Save. Share. Find out.',
    footerHTML = '&copy; 2010 InMarkit Inc. All trademarks appearing hereon are the property of their owners.'
    contentHTML = 'We are busy building a brand new way for shoppers to have conversations about their favorite products with friends and networks. While shopping online, in a store or on-the-go, InMarkit is sure to be the interactive shopping experience everyone\'s going to enjoy.';

//utility functions


function getId(id){
    return document.getElementById(id);
}

function addEvent(obj, type, fn ) {
    if (obj.addEventListener) {
            obj.addEventListener( type, fn, false );
            EventCache.add(obj, type, fn);
    }
    else if (obj.attachEvent) {
            obj["e"+type+fn] = fn;
            obj[type+fn] = function() {obj["e"+type+fn]( window.event );}
            obj.attachEvent( "on"+type, obj[type+fn] );
            EventCache.add(obj, type, fn);
    }
    else {
            obj["on"+type] = obj["e"+type+fn];
    }
}

var EventCache = function(){
    var listEvents = [];
    return {
        listEvents : listEvents,
        add : function(node, sEventName, fHandler){
            listEvents.push(arguments);
        },
        flush : function(){
            var i, item;
            for(i = listEvents.length - 1; i >= 0; i = i - 1){
                item = listEvents[i];
                if(item[0].removeEventListener){
                    item[0].removeEventListener(item[1], item[2], item[3]);
                }
                if(item[1].substring(0, 2) != "on"){
                    item[1] = "on" + item[1];
                }
                if(item[0].detachEvent){
                    item[0].detachEvent(item[1], item[2]);
                }
                item[0][item[1]] = null;
            }
        }
    };
}();

function centerModalBox(overlayId, boxId){
    var cbBox = getId(boxId);
    var overlay = getId(overlayId);
    var leftPos = window.innerWidth ? (window.innerWidth / 2) - (parseInt(cbBox.offsetWidth) / 2) : (document.documentElement.offsetWidth / 2) - (parseInt(cbBox.offsetWidth) / 2);
    var topPos = window.innerHeight ? (window.innerHeight / 2) - (parseInt(cbBox.offsetHeight) / 2) : (document.documentElement.offsetHeight / 2) - (parseInt(cbBox.offsetHeight) / 2);
    var scroll = document.all ? document.documentElement.scrollTop : window.pageYOffset;
    var wH = document.all ? document.documentElement.offsetHeight +  document.documentElement.scrollTop : window.innerHeight + window.pageYOffset;
    var wW = document.all ? document.documentElement.offsetWidth +  document.documentElement.scrollTop : window.innerWidth + window.pageXOffset;

    cbBox.style.left = leftPos+'px';
    cbBox.style.top = (topPos + scroll)+'px';
    overlay.style.width = wW+'px';
    overlay.style.height = wH+'px';
}

function _readCookie (){
    var cookieString = document.cookie;
    var paramPairs = cookieString.split("; ");
    var i,splitPair;
    for (i=0; i<paramPairs.length; i++) {
        splitPair = paramPairs[i].split("=");
        if (splitPair.length == 2) {
            values.push({
                name:unescape(splitPair[0]),
                value:unescape(splitPair[1])
            });
        }
    }
    loaded = true;
}

function getCookieByName(name){
    if (!loaded) {
        _readCookie();
    }
    for (var i=0; i < values.length; i++) {
        if (values[i].name == name) {
            return values[i].value;
        }
    }
    return "";
}

function checkCookie(){
   var imi_cookie = getCookieByName('imi_cu');
   if(imi_cookie == 'undefined' || imi_cookie == null || imi_cookie.length != 32){
       return;
   } else {
       setTimeout(function(){
            var search = getId('search'),
               nav = getId('nav'),
               signup = getId('signup'),
               unav = getId('utility_nav'),
               pnav = getId('primary_nav');
            if (search != 'undefined' && search != null){
                search.style.display = 'block';
            }
            if (nav != 'undefined' && nav != null){
                nav.style.display = 'block';
            }
            if (signup != 'undefined' && signup != null){
                signup.style.display = 'block';
            }
            if (unav != 'undefined' && unav != null){
                unav.style.display = 'block';
            }
            if (pnav != 'undefined' && pnav != null){
                pnav.style.display = 'block';
            }
        },1000);
   }
   /*if(imi_cookie == 'undefined' || imi_cookie == null || imi_cookie.length != 32){
       pageContent.innerHTML = '';
       executeCoverpage();
   }
   setTimeout(function(){
       //pageContent.style.display = 'block';
   },1000);*/
}

function insertResource(type, source){
    var resource = null;
    if(type == 'link')
    {
        resource = document.createElement('link');
        resource.setAttribute('href', source);
        resource.setAttribute('type', 'text/css');
        resource.setAttribute('rel', 'stylesheet');
        pageInfo.appendChild(resource);
    }
    else if(type == 'script')
    {
        resource = document.createElement('script');
        resource.setAttribute('src', source);
        resource.setAttribute('type', 'text/javascript');
        pageContent.appendChild(resource);
    }
}

function createClearRow(rowParent){
    var clearDiv = document.createElement('div');
    clearDiv.className = 'clearDiv';
    rowParent.appendChild(clearDiv);
    return clearDiv;
}

function createOption(selectboxId, optionId, optionValue, html){
    var opt =  document.createElement('option');
    var htm = html ? html : optionValue;
    var optionTrim = optionValue.replace('- ','');
    opt.setAttribute('id', optionId );
    opt.setAttribute('value', optionTrim);
    opt.innerHTML = htm;
    getId(selectboxId).appendChild(opt);
}

function insertErrorBlock(par,type){
   var errBlock = createClearRow(par);
   var errId = 'error_'+type;
   errBlock.className += ' error';
   errBlock.setAttribute('id', errId);
}

function trimStr(value){
    if (value.trim) {
        return value.trim();
    }
    return value.replace(/^\s+|\s+$/g, '');
}

function getApiUrl(){
    var imi = IMI.Coverpage,
        host = imi.hostname.replace('#','') || '',
        api_env = imi.server_location || '',
        url = host+'/';
    if (api_env == 'dev'){
        url += 'api_dev.php';
    }
    else if (api_env == 'qa'){
        url += 'api_qa.php';
    }
    if(url.indexOf('//') > 0){
        url = url.replace(url.lastIndexOf('//'),'/');
    }

    return url;
}

//create main cover page components

function createMainWrapper(container){
    wrapper.setAttribute('id',container);
    pageContent.appendChild(wrapper);
}

function createFooter(FooterId, html){
    footer.setAttribute('id',FooterId);
    pageContent.appendChild(footer);
    footer.innerHTML = html;
}

function createLogo(altTxt){
    logo.setAttribute('alt',altTxt);
    logo.setAttribute('src','/images/inmarkit_logo_coverup.png');
    logo.setAttribute('id','coverLogo');
    wrapper.appendChild(logo);
}

function createHeader(html){
    wrapper.appendChild(header);
    header.innerHTML = html;
    header.setAttribute('id','coverHeader');
}

function createTitle(html){
    wrapper.appendChild(title);
    title.innerHTML = html;
    title.setAttribute('id','coverTitle');
}

function createContent(html){
    wrapper.appendChild(content);
    content.innerHTML = html;
    content.setAttribute('id','coverContent');
}

function createButton(titleTxt){
    button.setAttribute('href','#');
    button.setAttribute('title',titleTxt);
    button.setAttribute('id','coverContactButton');
    wrapper.appendChild(button);
}

//create contact box components

function createCBWrapper(idStr){
    var cb_wrapper = document.createElement('div');
    cb_wrapper.setAttribute('id',idStr);
    createOverlay();
    pageContent.appendChild(cb_wrapper);
}

function createOverlay(){
    var overlay = document.createElement('div');
    overlay.setAttribute('id','coverPageOverlay');
    pageContent.appendChild(overlay);
}

function createCBHdr(){
    var hdrDiv = createClearRow(getId('coverPageContactBoxWrapper'));
    var cbHdr = document.createElement('h3');
    cbHdr.setAttribute('id','cb_titleHdr');
    cbHdr.innerHTML = 'Contact Us';
    hdrDiv.appendChild(cbHdr);
}

function createCBForm(actionUrl){
    var cbFrm = document.createElement('form');
    cbFrm.setAttribute('method','get');
    cbFrm.setAttribute('id','cb_form');
    cbFrm.setAttribute('name','cb_form');
    cbFrm.setAttribute('action',actionUrl);
    getId('coverPageContactBoxWrapper').appendChild(cbFrm);
}

function createCBRequestField(){
    var reqFieldDiv = createClearRow(getId('cb_form'));
    var cbReqLabel = document.createElement('label');
    var cbReqSelect = document.createElement('select');
    cbReqLabel.setAttribute('for','cb_requestField');
    cbReqLabel.className = 'cb_label';
    cbReqLabel.innerHTML = 'Type of Request';
    cbReqSelect.setAttribute('name','cb_requestField');
    cbReqSelect.setAttribute('id','cb_requestField');
    reqFieldDiv.appendChild(cbReqLabel);
    reqFieldDiv.appendChild(cbReqSelect);
    createOption('cb_requestField', 'cb_topic', 'Choose a Topic');
    createOption('cb_requestField', 'cb_sales', '- sales');
    createOption('cb_requestField', 'cb_support', '- support');
    createOption('cb_requestField', 'cb_registration', '- registration');
    createOption('cb_requestField', 'cb_newaccount', '- account');
    createOption('cb_requestField', 'cb_retailsupport', '- retail');
    createOption('cb_requestField', 'cb_sales', '- service');
    createOption('cb_requestField', 'cb_support', '- privacy');
    createOption('cb_requestField', 'cb_registration', '- other');
    createOption('cb_requestField', 'cb_newaccount','iphonesupport','- iPhone');
    createOption('cb_requestField', 'cb_sms', '- sms');
    insertErrorBlock(reqFieldDiv,'typeofrequest')
}

function createCBNotesField(){
    var notesFieldDiv = createClearRow(getId('cb_form'));
    var notesLabel = document.createElement('label');
    var notesTxtArea = document.createElement('textarea');
    notesLabel.setAttribute('for','cb_notes');
    notesLabel.className = 'cb_label';
    notesLabel.innerHTML = 'Notes';
    notesTxtArea.setAttribute('name','cb_notes');
    notesTxtArea.setAttribute('id','cb_notes');
    notesTxtArea.setAttribute('rows','4');
    notesTxtArea.setAttribute('cols','37');
    notesFieldDiv.appendChild(notesLabel);
    notesFieldDiv.appendChild(notesTxtArea);
    insertErrorBlock(notesFieldDiv,'notes')
}

function createCBRequestButton(){
    var btnFieldDiv = createClearRow(getId('cb_form'));
    var reqBtnLink = document.createElement('a');
    reqBtnLink.setAttribute('id','cb_sendRequestBtn');
    reqBtnLink.setAttribute('href','#');
    btnFieldDiv.appendChild(reqBtnLink);
}

function createCBTxtField(txt){
    var fieldDiv = createClearRow(getId('cb_form'));
    var fieldLabel = document.createElement('label');
    var fieldInput = document.createElement('input');
    var txtUpdated = txt.toLowerCase();
    var finalTxt = txtUpdated.replace(' ','');
    var fieldId = 'cb_'+finalTxt+'Field';
    fieldLabel.setAttribute('for','cb_nameField');
    fieldLabel.className = 'cb_label';
    fieldLabel.innerHTML = txt;
    fieldInput.setAttribute('type','text');
    fieldInput.className = 'cb_txtBox';
    fieldInput.setAttribute('value','');
    fieldInput.setAttribute('id',fieldId);
    fieldInput.setAttribute('name',fieldId);
    fieldDiv.appendChild(fieldLabel);
    fieldDiv.appendChild(fieldInput);
    insertErrorBlock(fieldDiv,finalTxt);
}

function createCBCloseButton(){
    var closeDiv = createClearRow(getId('coverPageContactBoxWrapper'));
    var closeButton = document.createElement('a');
    closeButton.setAttribute('href','#');
    closeButton.setAttribute('id','cb_close');
    closeDiv.appendChild(closeButton);
}

//execute elements

function executeContactBox(){
    createCBWrapper('coverPageContactBoxWrapper');
    createCBCloseButton();
    createCBHdr();
    createCBForm('');
    createCBRequestField();
    createCBTxtField('Name');
    createCBTxtField('Email');
    createCBTxtField('Phone Number');
    createCBTxtField('Your Company');
    createCBNotesField();
    createCBRequestButton();
    hidePhoneText();
}

function executeCoverpage(){
    //addEvent(window,'load',function(){
        /*insertResource('link', cssUrl);
        insertResource('script', '/js/jquery.js');
        createMainWrapper(wrapperId);
        createLogo(logoAltText);
        //createHeader(headerHTML);
        createTitle(titleHTML);
        createContent(contentHTML);
        createButton(buttonTitleText);
        createFooter(footerId, footerHTML);
        executeContactBox();

        executeCoverpageBehaviors();*/
    //});
}

//screen behaviors and events

function showPhoneText(){
    if(getId('cb_phonenumberField').value == 'ex: 123-456-7890'){
        getId('cb_phonenumberField').value = '';
    }
}

function hidePhoneText(){
    if(trimStr(getId('cb_phonenumberField').value) == ''){
        getId('cb_phonenumberField').value = 'ex: 123-456-7890';
    }
}

function checkContactFormForErrors(){
    var emailRegEx = /^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$/;
    var phoneRegEx = /^(1\s*[-\/\.]?)?(\((\d{3})\)|(\d{3}))\s*([\s-./\\])?([0-9]*)([\s-./\\])?([0-9]*)$/;
    var hasErrors = true;
    var selectBox = getId('cb_requestField');
    var selIndex = selectBox.selectedIndex;
    var selectBoxTxt = selectBox.options[selIndex].text;

    var nameInput = getId('cb_nameField');
    var emailInput = getId('cb_emailField');
    var phonenumberInput = getId('cb_phonenumberField');
    var yourcompanyInput = getId('cb_yourcompanyField');
    var notesInput = getId('cb_notes');

    var name = getId('error_name');
    var email = getId('error_email');
    var phonenumber = getId('error_phonenumber');
    var yourcompany = getId('error_yourcompany');
    var notes = getId('error_notes');
    var typeofrequest = getId('error_typeofrequest');
    
    var submit = true;

    typeofrequest.innerHTML = "";
    name.innerHTML = "";
    email.innerHTML = "";
    phonenumber.innerHTML = "";
    yourcompany.innerHTML = "";
    notes.innerHTML = "";

    if(selectBoxTxt == 'Choose a Topic'){
        typeofrequest.innerHTML = 'A Topic is required';
        submit = false;
    }
    if(trimStr(nameInput.value) == ''){
        name.innerHTML = 'A Name is required';
        submit = false;
    }
    if(trimStr(emailInput.value) == ''){
        email.innerHTML = 'An Email is required';
        submit = false;
    }
    if(trimStr(notesInput.value) == ''){
        notes.innerHTML = 'Notes are required';
        submit = false;
    }
    if(!emailRegEx.match(emailInput.value)){
        email.innerHTML = 'A valid Email is required';
        submit = false;
    }
        
    if(phonenumberInput.value != '' && phonenumberInput.value != 'ex: 123-456-7890'){
        if(!phoneRegEx.match(phonenumberInput.value)){
            phonenumber.innerHTML = 'A valid Phone Number is required';
            submit = false;
        }
    }
    if(submit == true){
        hasErrors = false;
    }
    return hasErrors;
}

function sendAJAXForm(){
    var hasErrors = checkContactFormForErrors();
    if(hasErrors == false){
        submitData();
    }
}

function showMessage(){
    if(getId('successMessage') == null || getId('successMessage') == 'undefined'){
        var message = document.createElement('p');
        message.setAttribute('id','successMessage');
        message.innerHTML = 'Thanks for contacting InMarkit. Your feedback and comments are important to us. A customer service representative will be contacting you soon with a response to your email.';
        getId('coverPageContactBoxWrapper').appendChild(message);
        getId('successMessage').style.display = 'block';
        getId('cb_form').style.display = 'none';
    }
    else {
        getId('successMessage').style.display = 'block';
        getId('cb_form').style.display = 'none';
    }
    getId('coverPageContactBoxWrapper').className = 'thankyouMsg';
    centerModalBox('coverPageOverlay','coverPageContactBoxWrapper');

}

function hideMessage(){
    if(getId('successMessage') != null && getId('successMessage') != 'undefined'){
        getId('successMessage').style.display = 'none';
    }
    getId('cb_form').style.display = 'block';
    getId('coverPageContactBoxWrapper').className = '';
    centerModalBox('coverPageOverlay','coverPageContactBoxWrapper');
}

function submitData(){
    jQuery.noConflict();

    var selectBox = getId('cb_requestField');
    var selIndex = selectBox.selectedIndex;
    var selectBoxTxt = selectBox.options[selIndex].value;
    var phoneNumVal = getId('cb_phonenumberField').value;
    var formFields = {
        'phone' : phoneNumVal == 'ex: 123-456-7890' ? '' : phoneNumVal,
        'email' :  getId('cb_emailField').value,
        'company_name' :  getId('cb_yourcompanyField').value,
        'sender_name' :  getId('cb_nameField').value,
        'subject' : selectBoxTxt,
        'message' :  getId('cb_notes').value,
	'api_key': IMI.Coverpage.apikey || INMARKIT.apikey
    };
    /*
     var formFieldsQS =
        '?phone='+(phoneNumVal == 'ex: 123-456-7890' ? '' : phoneNumVal)+
        '&email='+getId('cb_emailField').value+
        '&company_name='+getId('cb_yourcompanyField').value+
        '&sender_name='+getId('cb_nameField').value+
        '&subject='+selectBoxTxt+
        '&message='+getId('cb_notes').value+
	'&api_key='+IMI.Coverpage.apikey || INMARKIT.apikey;
     */
    
    var api_url = getApiUrl()+'/mail/ContactUs/json';
     jQuery.ajax({
         type: 'POST',
         dataType: 'json',
         url : api_url,//+formFieldsQS,
         cache: false,
         data: formFields,
         success: function(returnData){
             showMessage();
             //setTimeout(hideContactBox,4000);
         },
         error: function(returnData){
             alert(returnData.toString());
             //alert('There was an error in sending your message. Please try again.');
         }
    });
}

function hideContactBox(){
    getId('coverPageContactBoxWrapper').style.display = 'none';
    getId('coverPageOverlay').style.display = 'none';
}

function showContactBox(){
    hideMessage();
    getId('coverPageContactBoxWrapper').style.display = 'block';
    getId('coverPageOverlay').style.display = 'block';
    centerModalBox('coverPageOverlay','coverPageContactBoxWrapper');
}

function executeCoverpageBehaviors(){
    //var body = jQuery('body').html();
    //jQuery('body').html('<div id="oldBody">'+body+'</div>');
    //jQuery('#oldBody').hide();
    addEvent(window,'unload',EventCache.flush);
    /*addEvent(window,'resize',function(){centerModalBox('coverPageOverlay','coverPageContactBoxWrapper');});
    addEvent(getId('coverContactButton'),'click',showContactBox);
    addEvent(getId('cb_close'),'click',hideContactBox);
    addEvent(getId('cb_sendRequestBtn'),'click',sendAJAXForm);
    addEvent(getId('cb_phonenumberField'),'focus',showPhoneText);
    addEvent(getId('cb_phonenumberField'),'blur',hidePhoneText);
    addEvent(window,'scroll', function(){centerModalBox('coverPageOverlay','coverPageContactBoxWrapper');});*/
}

checkCookie();
//})();

